11.FPGA配置配置(configuration)是对FPGA的内容进行编程的过程。每次上电后都需要进行配置是基于SRAM工艺FPGA的一个特点,也可以说是一个缺点。FPGA配置过程如下:FPGA配置器件外部电路将配置数据载入片内配置RAM中外部电路FPGA配置完成配置RAM配置RAM中的配置数据:用于控制FPGA内部可编程的内部逻辑、内部寄存器和I/O寄存器初始化,I/O驱动器使能等。之后FPGA进入用户模式。21.1FPGA配置方式根据FPGA在配置电路中的角色,可以将配置方式分为三类:1.FPGA主动串行(AS----ActiveSerial)方式2.JTAG方式3.FPGA被动(Passive)方式EPCS系列配置数据FPGA主动串行(AS)方式1下载工具或智能主机JTAG方式2EPC系列FPGA仅输出响应信号FPGAFPGA被动(Passive)方式33根据FPGA在配置电路中的角色,可以将配置方式分为三类:1.FPGA主动串行(AS)方式2.JTAG方式3.FPGA被动(Passive)方式EPCS系列配置数据FPGA主动串行(AS)方式1下载工具或智能主机JTAG方式2EPC系列FPGA仅输出响应信号FPGAFPGA被动(Passive)方式3被动方式可分为下列几种方式:被动串行方式(PS)快速被动并行(FPP)方式被动并行异步(PPA)方式被动并行同步(PPS)方式被动串行异步(PSA)方式PS----PassiveSerialFPP----FastpassiveparallelPPA----PassiveparallelasynchronousPPS----PassiveparallelsynchronousPSA----PassiveSerialAsynchronous4FPGAEPCDeviceConfigurationControllerMemoryFPGAMAX®IIorExternalProcessorConfigurationControllerExternalFlashMemoryFPGAFPGAExternalMemoryInitiatesconfigurationprocessProvidesconfigurationdataConfigurationController主动(AS)方式被动(PS)方式被动(PS)方式JTAG方式5配置方式器件类别StratixIIStratix,StratixGXCycloneIICycloneAPEXIIAPEX20K,APEX20KE,APEX20KCMercuryACEX1KFLEX10K,FLEX10KE,FLEX10KAFLEX6000被动串行(PS)√√√√√√√√√√主动串行(AS)√√√快速被动并行(FPP)√√√被动并行同步(PPS)√√√√被动并行异步(PPA)√√√√√√√被动串行异步(PSA)√JTAG√√√√√√√√√仅支持边界扫描测试AlteraFPGA配置方式列表CycloneFPGA配置方式表配置方式描述主动串行配置(AS)采用串行配置器件(EPCS1、EPCS4、EPCS16、EPCS64)被动配置(PS)1.采用专用配置器件(EPC1、EPC2、EPC4、EPC8、EPC16);2.采用配置控制器(单片机、CPLD等)配合Flash;JTAG配置通过JTAG进行配置61.2FPGA配置过程FPGA的配置包括3各阶段:复位、配置和初始化。复位配置初始化进入用户模式配置过程波形图71.2FPGA配置过程FPGA的配置包括3各阶段:复位、配置和初始化。复位配置初始化进入用户模式配置数据写入到器件中器件内部逻辑和寄存器初始化,I/O缓冲使能配置过程波形图8FPGA配置流程图9Power-UpSequencetimevoltsPower-offPower-UpPower-OnDevicePowerSequencePORConfigurationPowersupplyramptime,TRAMPDeviceModeUser-ModePOR:Power-OnReset102.Cyclone及CycloneIIFPGA配置Cyclone以及CycloneIIFPGA使用SRAM单元来存储配置数据。FPGA中的SRAM是易失性的,每次上电之前,配置数据(或压缩的配置数据)必须重新下载到FPGA中。下面的2个条件均可使FPGA产生一次配置请求:给FPGA重新上电;FPGA的nConfig引脚上产生一个低电平到高电平的上升沿。11Cyclone及CycloneIIFPGA的配置方式包括:1.FPGA主动串行(AS)配置方式;2.FPGA被动(Passive)配置方式;3.JTAG配置方式。用户可以通过设置FPGA上的MSEL0、MESL1两个引脚的状态来选择配置方式。各种方式的MSEL0、MESL1设置如下表所列:12MSEL1MSEL0配置方式备注00AS主动(串行配置器件)20M10快速AS主动(串行配置器件)40M,只限CycloneII01PS被动(CPLD控制)00或1JTAG配置配置方式设置说明:1.在上表中,如果只采用一种配置方式,则可以直接将MSEL0、MESL1连接到VCC(注意要与FPGA的IO口的供电VCCIO相同)或GND;2.如果需要多种配置方式,那么MSEL要用控制器(单片机、CPLD等)来控制以进行切换;3.MSEL管脚在配置开始前必须处于一个固定的状态,因此不能将MSEL管脚悬空。13另外,不同型号FPGA的配置文件大小不同,下表中列出了FPGA在不压缩情况下二进制配置文件(.rbf)的最大大小。设计者可以根据配置文件的大小来选择合适的配置器件和其它存储器。并可使用压缩功能,来减小配置文件的大小。器件类型器件型号数据大小(Bits)数据大小(Bytes)CycloneEP1C3627,37678,422EP1C4924,512115,564EP1C61,167,216145,902EP1C122,326,528290,816EP1C203,559,608444,951CycloneIIEP2C51,265,792152,998EP2C81,983,536247,974EP2C203,892,496486,562EP2C356,858,656857,332EP2C509,963,3921,245,424EP2C7014,319,2161,789,902142.1主动串行配置主动串行配置方式(AS)是将配置数据事先存储在串行配置器件EPCS中,然后在系统上电时Cyclone及CycloneIIFPGA通过串行接口读取配置数据(如果是压缩数据,还会进行解压缩处理)对内部的SRAM单元进行配置。因为上述配置过程中FPGA控制配置接口,因此通常称为主动配置方式。15nCEnSTATUSnCONFIGCONFIG_DONEDATA0DCLKnCSOASDOnCEOMSEL0MSEL1Cylone(CycloneII)FPGAnCSDATAASDIDCLKEPCS串行配置器件10k10k10kVCCVCCVCCN.C.12345678910AS接口10kVCCloworhigh说明:1.因为FPGA上的nSTATUS、CONFIG_DONE管脚都是开漏结构,所以都要接上拉电阻。FPGA的片选脚nCE必须接地。主动串行配置的电路原理图16Multi-DeviceASConfigurationsMultiple-deviceASconfigurationnSTATUSCONF_DONEnCONFIGnCEDATA[0]nCEODCLKnCSOASDOMSEL[n..0]GNDVCCCONF_DONEnSTATUSnCEnCEOnCONFIGDCLKMSEL[n..0]DATA0SerialConfigurationDeviceDATADCLKnCSASDIVCCVCCBuffersVCCVCCVCCMultiple-devicePSconfigurationwhenbothdevicesreceivethesamedatanSTATUSCONF_DONEnCONFIGnCEDATA[0]nCEODCLKnCSOASDOMSEL[n..0]GNDCONF_DONEnSTATUSnCEnCEOnCONFIGDCLKMSEL[n..0]DATA0SerialConfigurationDeviceDATADCLKnCSASDIBuffersGNDMultiple-deviceASconfiguration,samedata17串行时钟(DCLK)在配置结束后内部振荡器关闭。下表列出了DCLK的输出频率。对于CycloneIIFPGA,通过MSEL[]可以选择时钟为20MHz或40MHz。配置的时间与配置文件大小以及DCLK的频率有关,关于AS方式配置时间的估算请见下一小节。器件最小典型最大单位Cyclone141720MHzCycloneII10132020264018用户可以在QuartusII软件中选择,用哪一个时钟来进行FPGA寄存器和用户I/O口的初始化、以及是否在配置出错后重新开始配置等内容。如下图所示的弹出窗口:功能复用引脚设置192.2主动串行配置(AS)的配置时间估算主动串行配置时间为串行配置器件数据传送到FPGA的时间,这取决于DCLK的频率以及配置文件的大小。以CycloneEP1C6器件为例,非压缩的.rbf格式配置文件的大小为1167216位、DCLK最低频率为14MHz(71ns),则最大配置时间为:1167216*71ns=82872336ns≈83ms当DCLK的典型频率为17MHz(59ns)时,配置时间为:1167216*59ns=68865744ns≈69ms20如果允许配置数据压缩,由于配置时要对数据进行解压缩,需要增加配置时间,一般要增加50%的配置时间,即EP1C6器件在采用压缩数据进行配置时需要约103.5ms的时间。此外,在配置完成后紧接着的FPGA寄存器和用户I/O口初始化也需要消耗一定的时间(Cyclone为136个时钟周期,CycloneII为299个时钟周期),当不采用CLKUSR管脚时钟,而使用FPGA内部10MHz时钟时,CycloneEP1C6消耗13.6us的初始化时间。212.3JTAG配置通过JTAG接口,利用QuartusII软件可以直接对FPGA进行单独的硬件重新配置。QuartusII软件在编译时会自动生成用于JTAG配置的.sof文件。如果同时使用AS方式和JTAG方式来配置FPGA,JTAG配置方式拥有最高的优先级,此时AS方式将停止,而执行JTAG方式配置。JTAG配置的电路原理图12345678910JTAG接口10k10kR1R2DATA0nCONFIGnCEMSEL0MSEL1DCLKCONF_DONEnSTATUSTCKTMSTDOTDICyclone(CycloneII)FPGAVCCVIO(3)N.C.N.C.VCCVCCVCCVCC(1)(2)(2)(2)(2)(2)R3Cyclone:R1-R310KCycloneII:R1-R31K22…Pin1DownloadCable10-PinMaleHeader(JTAGMode)nSTATUSnCONFIGCONF_DONEDCLKMSEL[n..0]nCETDITMSTCKTDOnSTATUSnCONFIGCONF_DONEDCLKMSEL[n..0]nCETDITMSTCKTDO…………………VCCVCCVCCVCCVCCVCCVIOJTAGConfigurationofMultipleDevices23管脚描述功能TDI测试数据输入指令、测试以及编程数据的串行输入。数据在TCK的上升沿移入。如果电路板上的JTAG不需要,可以将该管脚连接到VCC。TDO测试数据输出指令、测试以及编程数据的串行输出。数据在TCK的下降沿移出。在没有数据移出时,该管脚是高阻态。如果电路板上