李耀南 王 谦
(西安电子工程研究所 西安 710100)
雷达总站进行联调时,某些分系统可能需要经常修改调试FPGA程序,而配置新程序时一般都需要断电、连接JTAG下载电缆;通电;配置;再断电;断开JTAG下载电缆;通电测试等一系列步骤。这样的步骤很繁琐,将大部分时间浪费在无意义的拔插JTAG下载电缆上。如果在雷达正常工作时,通过内部设备实时对FPGA在线配置新调试程序,将极大地提高调试的效率。针对以上问题,本文提出了一种利用系统内的单板机通过CPCI总线访问一片FPGA从而对另一片FPGA进行实时配置的方法。
FPGA配置模式[1]种类很多,依据 FPGA能否主动加载配置数据可分为主模式、从模式和JTAG模式。主模式是指由被配置FPGA内部产生配置所需的时钟信号(称为CCLK),且被配置FPGA主动加载片外非易失性存储器中的配置比特流数据。从模式是通过外部的主智能终端(如处理器或DSP等)建立配置所需的时序[2],将配置数据加载到FPGA中,FPGA在配置过程中是被动的。JTAG模式主要用于调试,可将计算机中的bit文件通过JTAG配置电缆加载到FPGA中,断电即丢失。
Xilinx FPGA的主配置模式可分为主串行(Master Serial)模式、主并行(Master SelectMAP)模式。在主配置模式中,FPGA的配置数据来自PROM,配置时钟CCLK由被配置FPGA内部产生。
从配置模式下,FPGA配置数据的存储介质不仅仅是PROM,还可以是FLASH、硬盘、网络,甚至在处理器的运行代码中[3],配置时钟CCLK来自外部设备。从模式依据配置比特流位宽分为从串行(Slave Serial)和从并行(Slave SelectMAP)模式,如图1所示。
图1 常用的从配置模式示意图
由此可见,若要利用单板机和外部FPGA对等待配置的FPGA的进行远程配置,则只可以使用从模式中的从串行和从并行模式。
FPGA的配置模式可通过FPGA的配置管脚M2、M1、M0的上拉或者下拉来选择,不同系列的FPGA的配置选择也不完全相同,下面以XILINX的VIRTEX4系列FPGA的配置为例,来讲述FPGA的从串行配置模式和从并行配置模式。
如图2所示,等待配置的 FPGA的型号为4vsx55(下面简称该FPGA为4vsx55),生成配置逻辑的FPGA型号为2vp40(下面简称该FPGA为2vp40)。要对4vsx55进行从串行配置,首先要将其配置管脚 M2、M1、M0 置为‘1’、‘1’、‘1’,硬件上的4vsx55 的 CCLK、DIN、PROG_B、INIT_B、DONE 等信号也要与2vp40的IO管脚连接,另外CCLK、PROG_B、INIT_B、DONE等信号还要进行相应的上下拉。
图2 FPGA从串行配置模式示意图
4vsx55的配置文件既可用最常用的.bit文件也可用.bin文件(.bit文件和.bin文件的区别就在于,.bin只包含配置数据,没有前面的header information),生成.bit或.bin文件时应选择相应的配置时钟,该配置时钟频率决定了CCLK的频率。该配置文件存放在单板机上。系统上电后,2vp40已经由PROM完成了主并配置且开始运行。对4vsx55配置前可先将配置文件通过CPCI总线传至2vp40,2vp40暂时将其存放在外挂的SDRAM中,从而保证了在CCLK时钟周期到来前4vsx55的DIN输入管脚的串行配置数据有足够的建立时间。
从串行配置时序如图3所示,2vp40通过给4vsx55的PROG_B一个脉宽大于300ns的负脉冲信号启动配置,在PROG_B的信号拉低后,INIT_B的信号会随之变低,当PROG_B的信号拉高后,同时开始检测INIT_B是否抬高,检测到INIT_B的上升沿时,表明4vsx55已经做好准备,开始接收向DIN传送的与CCLK同步的串行配置数据(注意:这里的CCLK在上升沿时刻采样配置数据)[4]。若数据全部正确接收完成后,DONE信号抬高,这时再多保持3个CCLK的时钟周期,以保证4vsx55配置完成后开始正常运行;否则INIT_B变低,说明配置出错才停止。整个配置过程需要比配置文件比特长度更多的时钟周期,而多余的部分时钟要用于建立时序,尤其当4vsx55被配置为等待DCM时。
图3 从串行配置时序
如图4所示,要对4vsx55进行从并行配置,首先要将其配置管脚 M2、M1、M0 置为‘1’、‘1’、‘0’,硬件上的 4vsx55 的 CCLK、DIN、PROG_B、CS_B、RDWR_B、INIT_B、DONE、BUSY 等信号也要与2vp40的IO管脚连接,另外 CCLK、PROG_B、INIT_B、DONE等信号还要进行相应的上下拉。
图4 FPGA从并行配置模式示意图
.bit文件和.bin文件并没有按字节进行位翻转,而并行加载要求位翻转,因此2vp40在向4vsx55送配置数据时应按字节进行位翻转之后再传送。
从并行配置时序如图5所示,2vp40通过给4vsx55的PROG_B一个脉宽大于300ns的负脉冲信号启动配置,在PROG_B的信号拉低后,INIT_B的信号会随之变低,当PROG_B的信号拉高后,同时开始检测INIT_B是否抬高,检测到INIT_B的上升沿时,表明4vsx55已经做好准备,CS_B相应地置低可使能并行数据总线,(若是不回读配置回报信息则RDWR_B可始终置为低),这时开始接收向D[7:0]传送的与CCLK同步的并行配置数据(注意:这里的CCLK在上升沿时刻采样配置数据,并行的配置数据是配置文件按字节进行位翻转之后的)。若数据全部正确接收完成后,DONE信号抬高,表明4vsx55配置完成后开始正常运行;否则INIT_B变低,说明配置出错才停止。整个配置过程可以始终保持CCLK时钟周期。
值得注意的是,对FPGA的PROM而言,串行模式的DIN和并行模式的D0是同一根线,而对FPGA而言却不一定,SPARTAN3系列是同一根线,而VIRTEX4系列是两根独立的信号线。
很明显可以看出,从串行模式用的是1根数据线配置,而从并行模式用的是8根数据线,所以从并行模式的配置速度几乎是从串行模式的八倍之多。
图5 从并行配置时序
本文提供的方法解决了产品运行时实时调试程序的问题,对工程设计有一定的借鉴意义。本方法进一步还可让FPGA在不同的模式下配置不同的程序,实现FPGA运行时重构[5],可应用于多种模式分时复用FPGA资源的场合,对于节约产品成本有一定帮助。
[1]Virtex-4 Configuration Guide[OL].www.xilinx.com,2008.
[2]刘瑞贤.基于分子计算的并行处理机设计与实现[D].北京:北京邮电大学,2009.
[3]郎永辉.基于多软核并行处理的数字图像处理算法的研究 [D].长春:长春工业大学,2010.
[4]张国斌等.FPGA开发全攻略[OL].wenku.baidu.com,2009.
[5]郑文荣,孙朝江,刘少伟 .复杂系统的多FPGA可重构设计与实现[J].电子测量技术,2012,35(9):96-98.