您好,欢迎访问三七文档
配置方案齐冶北京邮电大学电信工程学院,北京(100876)E-mail:colaqiye@gmail.com摘要:本文首先介绍了基于SRAM技术的FPGA配置方式;其次以Altera公司的Cyclone系列芯片为例,详细的论述了用微处理器来配置FPGA芯片的全过程,并辅以电路图和时序图进行说明;最后在文章的结尾给出了单片机中部分核心程序。实践表明,利用微处理器来配置FPGA是一种切实可行方法,该方法可以广泛地应用于不同领域。关键词:FPGA,微处理器,单片机,被动串行配置1.引言现场可编程门阵列(FieldProgrammableGateArray,FPGA)是目前市场上应用非常广泛的可编程逻辑器件。虽然这些器件应用广泛,但由于其内部采用SRAM工艺,每次系统上电时,必须重新配置数据。其数据配置方式主要有三种:由计算机通过下载电缆配置、利用专用配置芯片配置、采用微控制器控制的方法配置。第一种配置方式适用于设计与调试,可以频繁的下载配置数据,但由于其必须与一台计算机相连,故不适合应用于实际产品中。第二种和第三种配置方式在实际产品中应用较多。第二种配置方式的优点在于外围电路非常简单,体积较小,适用于不需要频繁升级的产品。第三种配置方式的优点在于成本较低,升级性能好。在笔者参与研发的一个仿真系统中,就采用了第三种配置方式,利用单片机AT89C2051来配置FPGAEP1C3T144C8。下面笔者就以此为例说明基于微处理器的FPGA配置方案。2.背景知识2.1Cyclone系列FPGA简介FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个新概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。AlteraCyclone系列的FPGA基于全铜1.5VSRAM工艺,容量从2910至20060个逻辑单元,具有多达294912比特嵌入RAM。此系列芯片支持单端I/O标准如LVTTL、LVCMOS、PCI和SSTL-2/3,通过LVDS和RSDS标准提供多达129个通道的差分I/O支持。每个LVDS通道高达640Mbps。它们还具有双数据速率(DDR)SDRAM和FCRAM接口的专用电路。此系列芯片中具有两个锁相环(PLLs)提供六个输出和层次时钟结构,以及复杂设计的时钟管理电路。Cyclone系列不同型号FPGA芯片的具体资源参见表1。是一个低电压,高性能CMOS8位单片机,片内含2KB的可反复擦写的只读存储器和128Byte的随机存储器。器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。AT89C2051是一个功能强大的单片机,它有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。在省电模式下,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。3.Cyclone系列FPGA的配置原理3.1配置方式Cyclone系列的FPGA芯片共有三种配置模式,它们分别是:AS模式,PS模式和JTAG模式。AS模式即主动串行配置模式(Activeserialconfiguration),在此模式中FPGA芯片处于控制方,控制着整个配置过程。此模式利用的配置芯片一般为串行配置芯片(如EPCS1,EPCS4等)。PS模式即被动串行配置模式(Passiveserialconfiguration),在此模式中FPGA芯片处于受控方,其利用的配置芯片一般为增强型配置芯片(如EPC4,EPC8等)或微处理器芯片。基于JTAG的配置模式一般利用PC机通过下载电缆来实现对FPGA的在线配置,此模式不需要额外的配置芯片。在FPGA芯片上,有两个引脚用来定义配置模式,它们分别是MSEL0和MSEL1,其引脚定义参见表2。表2FPGA配置模式的设定MSEL1MSEL0配置模式00AS01PS00or1JTAG3.2配置文件利用Altera公司的QuartusII开发平台,可以针对不同的配置模式生成相应文件格式的配置文件,并且对于不同系列的目标器件,其配置文件的大小也不尽相同[1]。但是对于固定的芯片而言,其配置文件的大小是固定的,不随源程序的大小和复杂度而改变。但是如果采用了压缩技术,那么每次编译后配置文件的大小就不尽相同了。Cyclone系列的芯片是第一款支持配置信息压缩技术的FPGA芯片。配置文件的大小一般通过rbf文件的大小来体现。rbf文件即二进制文件,该文件包括所有的配置数据。一个字节的rbf文件有8位配置数据,每一字节在配置时最低位先被装载。在QuartusII中一般不会自动生成rbf文件,我们可以手动利用sof文件生成rbf文件,步骤如下(以QuartusII6.0为例):1.在编译状态下点选菜单栏的FILE,然后在下拉菜单中选择ConvertProgrammingFiles...2.在OutputProgrammingFile对话框中选择Programmingfiletype为rbf文件格式,选择Mode为1-bitPassiveSerial。3.在Inputfilestoconvert对话框中选择要转换的文件,最后点击Generate即可生成一个rbf类型的配置文件。最后用生成的配置文件对FPGA进行配置[2]。4.硬件连接电路及配置时序由笔者参与研发的仿真系统中,FPGA采用了被动串行配置模式,其配置过程由一单片机来控制。FPGA芯片采用的是Cyclone的EP1C3T144C8,控制端采用的是AT89C2051加AT24C01。下面笔者就详细的分析整个配置过程。4.1存储端存储端采用了单片机加EEPROM的组合模式。由于目标芯片采用的是EP1C3T144C8,其利用QuartusII生成的未经压缩的二进制配置文件大小为76.5KB,故在EEPROM的使用上选择了1片AT24C01。对于不同的目标芯片可以根据生成配置文件的大小选择相应容量的存储器。硬件连接如下图[3]。图1由AT89C2051和AT24C01组成的存储电路AT24C01为存储配置文件的EEPROM,配置文件可以利用编程器烧入其中。AT24C01采用I2C总线与AT89C2051通信[4],虽然后者硬件不支持I2C总线,但可以编程模拟出I2C接口。4.2控制端在控制端,单片机可以配置一片或多片FPGA芯片[5],下面笔者分别对这两种情况加以论述,其中配置多片FPGA芯片以配置2片EP1C3T144C8为例。4.2.1单片FPGA芯片的配置单片FPGA芯片与单片机的硬件连接如下图。,3,6,7,8引脚分别与EP1C3T144C8的DATA0,DCLK,CONF_DONE,nSTATUS,nCONFIG引脚相连,在时钟周期DCLK的作用下,前者通过三个状态引脚CONF_DONE,nSTATUS,nCONFIG来控制配置数据的发送与停止。在原理图中,两个电阻的作用是将nCONFIG和nSTATUS引脚拉高。当AT89C2051要配置EP1C3T144C8时,前者先将nCONFIG信号拉低几个周期,此时nSTATUS也随着nCONFIG的变低而变低。几个时钟周期后AT89C2051释放nCONFIG引脚,同时nSTATUS也由此变高。当AT89C2051检测到nSTATUS由低变高后,开始通过DATA0引脚发送配置数据,EP1C3T144C8开始接收配置数据并进行配置。当EP1C3T144C8配置完毕后,释放CONF_DONE引脚,此引脚由低变高表明配置完成,AT89C2051停止发送配置信息,EP1C3T144C8进入了初始化状态。这时AT89C2051要继续发送时钟信号到DCLK引脚直到INIT_DONE引脚由低变高,这时表明EP1C3T144C8的初始化已经完成,进入了用户使用状态。其配置时序如下图:图3单片EP1C3T144C8的配置时序与单片机的硬件连接如下图。图4AT89C2051与两片EP1C3T144C8连接图图4是利用AT89C2051配置两片EP1C3T144C8,同配置一片EP1C3T144C8相比,此电路图的改变是把两块EP1C3T144C8的DATA0,DCLK,CONF_DONE,nSTATUS,nCONFIG进行了线与后连接到AT89C2051的2,3,6,7,8引脚上,这样的作用是只有当两片EP1C3T144C8同时释它们的CONF_DONE,nSTATUS引脚时,AT89C2051的6,7引脚才会收到高电平。与此同时还要把第一片EP1C3T144C8的nCEO连接在第二片EP1C3T144C8的nCE引脚,两片EP1C3T144C8的配置时序图如下:图5两片EP1C3T144C8的配置时序与配置一片EP1C3T144C8相比,配置两片EP1C3T144C8的不同之处在于当第一片EP1C3T144C8在配置时,会从它的nCEO引脚放出高电平给第二片EP1C3T144C8的nCE引脚,直到前者配置完成后nCEO才输出低电平,此时后者开始配置。当两块EP1C3T144C8都配置好后,CONF_DONE信号才出现高电平,AT89C2051停止发送配置信息,两片EP1C3T144C8同时进行初始化,初始化完成后进入用户模式。中,经由AT89C2051传送给EP1C3T144C8。AT24C01采用I2C总线与AT89C2051进行数据交换。AT24C01的读取方式共有三种,它们分别是现行地址读,指定地址读和序列读。这三种方式中,序列读最简单,速度也最快。因为在同一片AT24C01中,仅需写入一次读命令就可以按顺序从0地址开始直至读完整片AT24C01中的全部数据。向EP1C3T144C8写数据时,数据的传送以8位为1帧,首先传送的是数据的最低位,这与EP1C3T144C8对配置数据的接收方式一致,传送的速率固定为振荡频率的1/12[6][7]。核心源程序如下:sbitP3.0EP1C3_DATA0;sbitP3.1EP1C3_DCLK;sbitP3.2EP1C3_CONF_DONE;sbitP3.3EP1C3_nSTATUS;sbitP3.4EP1C3_nCONFIG;ucharEP1C3_INIT(ucharcounter)//初始化程序{EP1C3_nCONFIG=0;delay_ms(1);EP1C3_nCON
本文标题:FPGA的配置方案
链接地址:https://www.777doc.com/doc-3544623 .html