王维何菲玲陈卓
(1.第七一五研究所,杭州,310023;2.海军驻杭州地区军事代表室,杭州,310023)
基于TS201的FPGA配置设计
王维1何菲玲1陈卓2
(1.第七一五研究所,杭州,310023;2.海军驻杭州地区军事代表室,杭州,310023)
主要介绍了Xilinx公司FPGA的配置原理,并提出了一种基于DSP芯片TS201加载FPGA配置数据的方法。通过将DSP程序及配置数据存储在系统Flash中,利用DSP的外部数据总线和通用IO口完成对FPGA的配置;重点论述了以8 bit的被动并行模式配置FPGA的流程及软硬件设计实现。该设计可以实现对FPGA的动态重置,并能精简电路、减少成本。
FPGA;配置原理;TS201;被动并行模式
在很多高速实时信号处理系统中,常采用FPGA+DSP的硬件架构。绝大部分FPGA都是基于SRAM工艺。由于SRAM工艺的数据易失性,系统在上电时外部电路需要将FPGA配置数据载入到片内的配置RAM中。实现FPGA配置数据的加载主要有两种方式:一种是采用专用的配置器件来存储配置数据,并在系统上电时,一次性的加载到FPGA内部配置RAM中,并在系统运行过程中保持不变。另一种是利用微处理器外接的大容量FLASH存放多个FPGA配置数据,在上电后或者系统运行时由微处理器根据需要,动态加载相应的FPGA配置数据[1,2]。在FPGA+DSP 结构的信号处理系统中,DSP芯片可以作为FPGA配置电路中的微处理器。这样不仅实现了对FPGA的动态配置,同时也可以精简电路,减少系统成本。本文从FPGA的被动并行配置模式入手,介绍利用DSP芯片TS201来实现对Xilinx公司Virtex5 系列FPGA芯片XC5VFX70T的动态配置设计方法与实现。
1.1 Virtex5 FPGA的配置模式选择
Virtex5系列FPGA是Xilinx公司采用65 nm工艺制造,是面向高速逻辑、数字信号处理(DSP)、嵌入式处理和串行连接性应用等领域的高性能FPGA。本文设计中采用的FPGA芯片XC5VFX70T就是Virtex5系列其中的一款。它支持如表1所示的多种配置模式,在具体的实际的应用中,配置模式由芯片的模式引脚M[2:0]决定。
在本文设计中,DSP芯片TS201作为主控制芯片按照一定的时序加载FPGA的配置数据流,可以选择的配置模式只有被动-串行模式和被动-SelectMAP模式。两种模式中,被动-串行模式需要连接的配置管脚较少,但速度较慢;被动-SelectMAP模式需要连接的管脚多,配置速度较快[3]。利用TS201芯片的少量通用IO脚,再配合外围数据总线中的数据线和读写控制信号线,可以采用被动-SelectMAP模式实现对FPGA动态配置,以提高FPGA配置程序的加载速度。
表1 Virtex5 FPGA配置模式
1.2 FPGA配置管脚
在本文设计所使用的FPGA芯片中,与被动-SelectMAP模式有关的配置管脚主要有:(1) CCLK:配置时钟,上升沿有效;(2) PROGRAM_ B:异步复位信号,低电平有效,复位所有配置逻辑;(3) INIT_B:用于指示器件准备好接收配置数据和配置过程出错的情况,低电平有效;(4) D[7:0]:8位并行配置数据输入口;(5) DONE:配置完成指示信号,复位时为低电平,配置成功后输出高电平;(6) M[2:0]:模式选择,选择被动-SelectMAP模式时,M2、M1接上拉电阻,M0接下拉电阻。
除上述信号外,与被动-SelectMAP模式有关的配置管脚还有CS_B、RDWR_B及BUSY信号[4]。CS_B、RDWR_B分别用于使能配置数据总线和控制配置数据总线D[7:0]的写入或读回,由于在本设计中没有读回操作,因此这两个信号都直接下拉到GND。BUSY信号也只有在读回操作时才用到,因此无需考虑。
1.3被动并行模式配置时序
以8 bit被动并行(即被动-SelcetMAP)模式为例,其配置过程主要分为四个步骤:
(1)系统上电。此时,FPGA内部的配置控制状态机回到复位状态。
(2)器件初始化。外部控制器将PROGRAM_ B拉低,并保持一定的时间,从而复位FPGA内部配置存储器。在PROGRAM_ B被拉低后,FPGA随即也使INIT_B输出一个低电平信号直到配置存储器复位完成。
(3)配置数据加载。当INIT_B信号电平从低向高跳转时,模式选择脚M[2:0]被采样,以决定采取何种配置模式。在此之后,配置数据流信息在外部输入时钟信号CCLK的控制下,通过8位数据线D[7:0]并行输入到FPGA芯片中,并在每个CCLK的上升沿被采样。
(4)启动。当最后的CRC校验完成且无错误时,FPGA进入启动过程,DONE输出高电平,同时FPGA释放全局三态信号(GTS),激活IO脚,并且释放全局复位置位信号(GSR)和全局写使能(GWE),从而开始执行新的配置逻辑,进入正常工作状态。
本设计采用DSP芯片ADSP-TS201,是ADI公司的一款高性能通用信号处理器。ADSP-TS201最高工作主频为600 MHz,具备24 MB片内DRAM,拥有极强的浮点运算能力,峰值运算能力可达12 GFLOPS。除此之外,它还具有4路高速LINK口、14路独立DMA、SDRAM控制器,64位外部总线接口、4个可编程FLAG引脚等丰富和功能强大的外围支持电路。
TS201与FPGA的配置接口信号主要是PROG_B、CCLK、INIT、D[7:0]以及DONE这5种信号线[5],其硬件连接如图1所示。
在被动并行配置模式下,配置数据在CCLK的上升沿被采样,而且配置时钟信号CCLK可以是非连续的受控时钟,如图2所示,其时序与ADSP-TS201的外部总线在慢速设备协议下的写操作十分吻合。因此,可以用TS201的写信号RD和片选信号MS1的逻辑或输出可以模拟FPGA的配置时钟CCLK,可编程IO引脚FLAG1输出用于控制PROG_B信号,而FPGA的输出信号INIT_B和DONE信号分别连接到中断信号IRQ1和可编程IO脚FLAG2。
图1 被动-SelectMAP配置模式硬件连接
图2 SelectMAP模式非连续配置数据加载时序图
由于在ADSP-TS201中,外部总线是采用的little-endian模式,进行读操作时,其8位数据线的D7位为最高有效位,而Xilinx的FPGA配置数据总线使用的是big-endian模式,在接收配置数据时,D0位为最高有效位。为解决这一问题,有两种办法:一种软件方法,即在对FPGA加载配置数据前,通过ADSP-TS201软件程序将FPGA配置数据按字节变换位序;另一种是硬件方法,即直接将DSP端和FPGA端的数据总线硬件连接位序变换,即ADSP-TS201的D0接FPGA的D7,D7接FPGA的D0,以此类推。很显然,后者无需在DSP软件程序中增加任何额外的操作过程,操作更为简单。
系统采用16 MB的大容量FLASH作为DSP的程序和多个FPGA配置文件的存储器。为了简化设计,这里将FLASH的存储空间分为8 MB、4 MB、4 MB三部分,前8 MB空间用于存储DSP程序数据,后面两个4 MB空间用于存储FPGA配置数据。对于Xilinx的FPGA芯片来说,其配置文件的大小是相同的,不会因FPGA逻辑设计的改变而发生变化。具体到本文设计中使用的FPGA芯片XC5VFX70T,其对应的配置文件大小为3.22 MB,因此两个4 MB空间足够存储两个不同的FPGA设计的配置数据,以方便在信号处理系统运行过程中,根据设计需要通过DSP动态的加载FPGA配置数据,从而实现FPGA算法逻辑的实时切换。
3.1 FPGA配置数据的产生
在实现DSP对FPGA的动态加载配置之前,需要将FPGA设计的配置数据按照DSP可以识别的数据格式存入到DSP的外接FLASH器件中。Xilinx的集成开发软件可以根据需求将用户的FPGA设计生成多种格式的配置数据文件,常见的有mcs、bit和bin文件格式,本设计中选取只含有纯配置数据的bin文件格式文件。为了将配置数据写入Flash,首先要利用Matlab或其他软件将FPGA的bin格式的数据文件转换成dat文件,然后再编写DSP程序将配置数据分别写入到Flash的后面两个4 MB存储空间。
3.2 配置操作的DSP软件设计
TS201程序运行以后,将从Flash中读取配置数据转存至SDRAM。当DSP程序启动对FPGA的配置进程后,将按照图3所示的流程完成FPGA配置。
图3 TS201配置FPGA操作流程图
在这一过程中,TS201的程序必须确保在加载FPGA程序时,PROG_B、CCLK、DATA[7:0]等信号完全符合配置时序的要求,具体的配置过程如下:
(1)TS201置低FLAG0,使FPGA的PROGRAM_B保持为低,并保持2 μs以清除FPGA的配置存储器,完成初始化。
(2)等待外部中断IRQ1。IRQ1与FPGA的 INIT_B相连。如果FPGA初始化完成,INIT_B由低电平跳转为高电平,则触发TS201外部中断IRQ1。
(3)TS201通过数据总线将3378176字节FPGA配置数据按照字节顺序输出到FPGA配置数据管脚D[7:0]上,直至配置数据发送完成。
(4)TS201检测与FPGA的DONE信号相连的FLAG2,若其为高则表示配置成功,配置过程结束,若为低则跳转至第1步,重新开始配置,如果重新配置的次数超过5次则DSP程序放弃加载配置,并输出错误信息。
上述流程不仅适用于信号处理系统上电启动阶段,在系统运行的过程中,TS201也可以根据这一配置操作流程加载新的配置数据,实现对FPGA的动态加载。
本文介绍一种在TS201+FPGA信号处理系统上利用利用TS201外部总线和通用IO实现对FPGA动态加载配置的方法。采用该方法完成对FPGA芯片XC5VFX70T配置所需时间约为300 ms,满足系统设计的要求。如果需要进一步缩短FPGA的配置时间,可以考虑将配置数据输入口位宽改为16 bit或32 bit,同时还可以通过优化DSP程序设计,如采用DMA方式输出配置数据等方式,以提高配置数据的输出速度。
[1]董宏成,魏杨.基于ARM和NAND Flash的FPGA加载配置在TD-LTE中的实现[J].电子技术应用,2012,38(7):26-29.
[2]梅安华,田建生,刘欢,等.基于PCI总线的FPGA配置系统的设计[J].计算机测量与控制,2005,13(4):375-377.
[3]胡修林,席向清,张蕴玉.嵌入式系统中FPGA的被动串行配置方法[J].单片机及嵌入式应用,2004,(3):21-31.
[4]Xilinx lnc.Virtex-5 FPGA Configuration User Guide[EB].2008.
[5]Xilinx lnc.Application Note:Using a Microprocessor to ConfigureXilinx FPGAs[Z].2002.