现场可编程门阵列FPGA(Field Programmable Gate Array)因其具有基于查找表技术、密度高、内部可用于时序逻辑的触发器比较多、采用静态随机访问存储器SRAM(Static Random Access Memory)架构等优良特点而被广泛应用在当今复杂数字系统设计中。FPGA能否启动取决于它内部有无配置数据,而其配置数据被载入其中是通过编程技术以某种配置方式实现的。
编程技术有反熔丝、SRAM和Flash[1]3种形式。其中,反熔丝编程技术因其不能实现重配置的局限性而在当今编程技术中逐渐被淘汰。SRAM编程技术因其配置速度快、重配置能力强等优点而成为迄今为止在线调试最常用的配置技术,但是,由于SRAM的易失性,一旦FPGA芯片掉电,其内部的配置信息就立即全部丢失,所以为了使FPGA能启动,就必须在FPGA每次上电时对其重新配置[2]。Flash编程技术可以长期存储配置数据,所以即使FPGA掉电,它也可以在FPGA下次加电时根据用户已经设计好的逻辑配置FPGA。一旦FPGA配置失败,它就无法启动,在这种情况下验证FPGA内部逻辑正确与否也就根本不可能实现。因此,研究并掌握FPGA的配置方式及其工程应用是很有必要的。
1 Cyclone IV器件的配置方式
Altera Cyclone IV系列器件都有联合测试行动组JTAG(Joint Test Action Group)配置方式;除此之外,从FPGA配置时所处的主从位置上划分有主动配置方式和被动配置方式;从FPGA配置时每个配置时钟周期所传输的配置数据位宽上又划分有串行配置方式(1 bit)和并行配置方式(8/16 bit)。综上所述,Altera Cyclone IV系列FPGA单独的配置方式经排列组合后有主动串行AS(Active Serial)、主动并行AP(Active Parallel)、被动串行PS(Passive Serial)、快速被动并行FPP(Fast Passive Parallel)和JTAG这5种配置方式。
Altera Cyclone IV系列器件的配置方式众多,用户可根据需要自行选择一种或多种配置方式,但是每次配置FPGA时只能使用一种配置方式,不可同时使用多种配置方式。其中,JTAG配置方式是配置优先级最高、最常用、最简单的一种配置方式,而且它的选择也与配置方式选择引脚MSEL所设置的电平值无关,其他的配置方式都必须通过设置MSEL的电平值来确定。
1.1 复用配置引脚
除JTAG配置方式外,其他几种配置方式都复用以下配置引脚。
(1)配置方式选择引脚——MSEL。MSEL的数据位宽取决于FPGA,不同型号的FPGA其MSEL的数据位宽也会有所不同,且不能被悬空。在设置MSEL信号的高低电平时还需注意器件所支持的配置电压标准(3.3 V/3.0 V/2.5 V/1.8 V/1.5 V)和上电复位延迟时间(快速/标准两种)[3]。例如,Cyclone IV GX50这种芯片,在AS配置方式下其MSEL[3:0]的电平值就可在3.3 V的配置电压标准和标准上电复位延迟时间下设为1001,而在3.3 V的配置电压标准和快速上电复位延迟时间下设为1101。
(2)配置使能引脚——nCE。其为FPGA的配置使能引脚,低电平有效。若只有一片FPGA,则该引脚必须始终为低电平[3]。
(3)级联时配置专用引脚——nCEO。它是多片FPGA级联时的专用输出引脚,FPGA配置完成后使其输出低电平,从而驱动下一级FPGA的nCE引脚。
(4)配置控制引脚——nCONFIG。其为控制配置过程的输入引脚,其从高电平到低电平的转换将复位FPGA;而从低电平到高电平的转换将启动芯片配置。
(5)配置状态引脚——nSTATUS。其为双向开漏引脚,其上电时为低电平,当控制引脚由低变高时,其变为高电平从而进入配置阶段。在配置过程中一旦其由高电平转换到低电平就表示配置出错,此时需要重新配置FPGA。
(6)配置完成状态引脚——CONF_DONE。其为双向开漏引脚,配置完成状态输出引脚,高电平有效。在配置前和配置期间,FPGA将其驱动为低电平。当所有配置数据被无误接收且初始化周期开始后,FPGA将其置为三态,因为其信号线上有上拉电阻存在,所以其又被上拉为高电平,此时表示配置成功。
(7)配置时钟引脚——DCLK。对于被动配置方式,FPGA采用外部源提供的时钟输入和时钟数据;对于主动配置方式,FPGA为配置接口提供时序。
(8)配置数据引脚——DATA。对于串行配置方式,使用DATA0引脚接收配置数据;对于并行配置方式,使用DATA[7:0]引脚接收配置数据。
1.2 AS配置方式
AS配置方式是Altera Cyclone IV系列FPGA配置方式中非常常用的方式,因其可由FPGA内部的晶振提供配置时钟,不需要外部时钟源再额外提供配置时钟,所以简化了配置电路,节省了配置成本。当然,配置时钟也可由外部时钟源通过芯片上的CLKUSR引脚提供,只是此时输入到该引脚的最大频率只能为40 MHz[3]。该配置方式下,FPGA与可擦除可编程配置存储器(EPCS)需要连接DCLK、NCSO、ASDO(主动串行数据输出)和DATA0这4个信号。DCLK信号给EPCS提供时钟;NCSO信号为EPCS的片选信号(低电平有效);ASDO信号向EPCS发送读/写命令和地址,以及写数据;DATA0信号给FPGA传输配置数据。当EPCS被选中时,在FPGA的配置阶段,EPCS在每一个DCLK周期向FPGA传输1 bit配置数据。配置结束后,这4个信号处于高阻状态。但是,在该配置方式下,配置时钟频率比较低,因为当其由内部晶振提供时只有20 MHz和40 MHz两种模式,当其由外部时钟源提供时最大也只有40 MHz,所以当配置数据比较大时,需要的配置时间就比较多,这样就有可能不满足某些通信系统的时序要求,从而导致系统配置失败。
AS配置方式下对EPCS编程又细分为3种方式。方式一,通过JTAG接口在Nios II中利用EPCS控制器实现对EPCS的编程,此时,最终编程数据格式为原始编程数据(rpd)格式;方式二,通过JTAG接口在Quartus II中利用串行Flash加载器SFL(Serial Flash Loader)实现对EPCS的编程,此时,最终编程数据格式为JTAG间接配置(jic)格式;方式三,通过AS接口在Quartus II中直接实现对EPCS的编程,此时,最终编程数据格式为编程对象文件(pof)格式。其中,前两种方式只需在PCB上焊接一个JTAG接口,既可实现对EPCS的编程,又可实现对FPGA的在线配置调试;而后一种方式则需在PCB上焊接AS专用接口才可以实现对EPCS的编程。其配置原理图如图1所示。
1.3 AP配置方式
Altera Cyclone IV E系列FPGA具有AP配置方式,其配置时钟仅由FPGA内部的晶振提供。该配置方式下,FPGA需与闪存连接的信号为:nRESET(控制闪存复位的信号)、DCLK(供给闪存的时钟信号)、FLASH_nCE(片选闪存的信号)、nOE(控制闪存输出的信号)、nAVD(地址有效信号)、nWE(给闪存的写使能信号)、DATA[15..0](传输配置数据的信号)和PADD[23..0](地址信号)。当选中闪存时,在FPGA的配置阶段,每一个DCLK周期闪存向FPGA传输16 bit配置数据。这种配置方式下编程闪存是通过FPGA的JTAG接口在Quartus II中利用并行Flash加载器PFL(Parallel Flash Loader)实现的,此时最终编程数据格式为pof格式。其配置原理图如图2所示。
1.4 PS配置方式
PS配置方式是Altera Cyclone IV系列FPGA配置方式中比较常用的方式。但是,在工程应用中若采用这种配置方式,FPGA需要连接一个智能主机(比如复杂可编程逻辑器件CPLD/微控制单元MCU等)以给其提供配置时钟和配置数据。在该配置方式下,智能主机在保证与存储配置数据的闪存通信无误的情况下,只需向FPGA提供一个DCLK信号和一个DATA0信号即可实现对FPGA的配置。另外,该DCLK信号还可以实现多种频率以满足用户对配置时间的需求,这是该配置方式的一大亮点。但是,这种配置方式需要首先配置智能主机,然后才能通过智能主机编程闪存,最后在配置阶段智能主机才能把闪存内的配置数据传输到FPGA内,这样就使得配置电路变得比较复杂,稍有不慎就会造成配置失败,而且该配置方式必须有智能主机,这样也就增加了配置成本。这种配置方式下,编程闪存是通过智能主机的JTAG接口在Quartus II中利用PFL实现的,此时,最终编程数据格式为pof格式。其配置原理图如图3所示。
1.5 FPP配置方式
FPP配置方式与PS配置方式类似,只是在FPGA与智能主机连接时,用来传输配置数据的数据线需连接DATA[7:0],从而使得智能主机在配置阶段的每一个DCLK周期向FPGA传输8 bit配置数据。其与PS配置方式相比,极大缩短了配置同一器件所需的配置时间,这就更能满足用户对某些系统配置时间的要求。这种配置方式下编程闪存也是通过智能主机的JTAG接口在Quartus II中利用PFL实现的,此时,最终编程数据格式也为pof格式。其配置原理图与图3非常相似,只是此时FPGA的配置数据总线为DATA[7:0]。
1.6 JTAG配置方式
JTAG配置方式是Altera Cyclone IV系列FPGA配置方式中最常用的方式,它连接简单、操作方便,广泛应用于在线调试。该配置方式下,FPGA只需与JTAG插头连接测试时钟(TCLK)、测试模式选择(TMS)、测试数据输入(TDI)和测试数据输出(TDO)这4个信号即可。若芯片只使用JTAG配置方式,则还须把芯片的nCONFIG引脚拉高,MSEL引脚接地,DCLK引脚和DATA0引脚根据PCB的方便接高或接低[3]。连接时须把TCLK下拉,以避免TCLK引脚上出现有效的上升沿而误触发对TMS和TDI的采样;须把TMS引脚上拉,以便JTAG接口能进入旁路状态,从而保证对FPGA的正常工作不造成任何影响;须把TDI引脚上拉,以便在FPGA正常工作时使JTAG接口能可靠地处于旁路状态[4]。这种配置方式下,FPGA不能长期保存配置数据,一旦FPGA掉电,其内部的配置信息就会丢失,在没有其他配置方式的支持下,FPGA就会永久无法启动,除非通过JTAG接口再次对FPGA芯片进行配置,此时,配置数据格式为静态存储器对象文件(sof)格式。其配置原理图如图4所示。
1.7 配置过程及配置时序
整个配置过程为:FPGA上电后,nCONFIG信号先置低以使芯片复位,然后再置高以启动芯片配置,当nSTATUS信号由低变高后,芯片就进入配置阶段并开始传输配置数据;当配置数据传输完成后,CONF_DONE信号变高,标志配置阶段完成,然后进入初始化阶段;当INIT_DONE信号变高时,标志初始化阶段完成,接着进入用户模式。配置时序如图5所示。
2 Cyclone IV系列在工程中的配置应用
图6为基于Nios II处理器的数据加密卡系统的配置电路原理图。Nios II处理器为Altera公司FPGA的软核,是该系统的控制核心。这里采用了JTAG、AS和FPP 3种配置方式的混合体。之所以有JTAG配置方式是因为它便于在系统编程和调试,而有FPP配置方式是为满足系统对配置时间的需求,以提供可靠的保障。当系统采用AS配置方式时,配置数据从EPCS中读取;当系统采用FPP配置方式时,配置数据从闪存中读取。FPGA在系统上电后实际采用哪一种配置方式是由配置方式控制器决定的[5]。该系统采用Altera的EPM570(MAX II系列)CPLD作为配置方式控制器。FPGA通过预先编程在MAX II内的配置方式选择控制电路选择上电后实际采用的配置方式。本次设计配置方式选择的依据是输入到MAX II内的MSEL3信号的电平值。当MSEL3信号为高电平时,FPGA选择AS配置方式;当MSEL3信号为低电平时,FPGA选择FPP配置方式。
综上所述,Altera Cyclone IV系列FPGA的配置方式灵活多变,用户可在具体的工程中根据实际需要选用合适的配置方式。当今,随着数字集成电路的发展,FPGA已成为复杂数字系统设计的主流之一,因此,掌握FPGA的配置方式及其工程应用是当代硬件工程师应具备的基本功。
参考文献
[1] 丛文,李新红.FPGA配置及Cyclone系列PS模式的工程应用[J].北京电子科技学院学报,2006(4):70-73.
[2] 张立哲,刘丽静.适应远程升级的FPGA配置方法[J].计算机与网络,2011(14):56-59.
[3] Altera Corporation. Cyclone IV device handbook, volume1[EB/OL]. http://www.altera.com/literature/hb/cyclone-iv/cyclone4-handbook.pdf.[2013.3.11]
[4] 王剑宇,苏颖.高速电路设计实践[M].北京:电子工业出版社,2012.
[5] 张小平,赵不贿.Altera新型FPGA器件的配置方式[J].微处理机,2006(4):93-95.