武健+杨媛媛+刘陈
摘要:针对FPGA动态重配置速率低,PROM容量受限等问题,设计了一种基于CPLD的FPGA动态重配置方法。详细介绍了该方法的硬件架构,CPLD程序设计和FPGA程序维护方法,实验证明该方法稳定可靠,简单易行,具有较为广阔的应用前景。
关键词:FPGA;动态重配置;CPLD
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)10-0056-03
随着FC网络在机载通信领域的广泛应用,作为接口设备的FC节点机需要满足多种主机接口和功能要求,一种支持多主机接口、动态可配置的FC通用节点机应运而生。该通用节点机可根据任务需求,选择和设置主机接口及设备加载程序来完成参数迥异的通信任务,其应用也大幅减少备品备件等后勤维护压力。
可编程逻辑器件功能和软件的动态重配置是FC通用节点机遇到的最大瓶颈。已有的重配置方法是在同一个逻辑代码中实现多种主机接口的通信程序,但存在如占用大量的FPGA逻辑资源,逻辑文件大,系统启动慢等多种问题[1-2]。文章通过设计一种基于CPLD的FPGA动态重配置方法,实现了多种FPGA程序的快速灵活加载。
1 典型的动态重配置技术分析
1.1 利用FPGA自身实现重配置功能
以Xilinx公司的Virtex-5系列芯片为例,该芯片增加了专用的内部加载逻辑(IPROG)用于实现多页FPGA程序的加载功能[1],IPROG指令具有与PROGRAM_B类似的功能,不同的是IPROG不会复位FPGA内部重配置专用逻辑。用户可以通过FPGA内部配置访问端口(ICAP)或者使用比特流的方式发送IPROG指令,FPGA根据以上指令,自动从热启动地址寄存器(WBSTAR)处进行数据加载,实现FPGA重配置功能。图1所示的是该方法的配置原理框图。这个方法加载速度快,硬件电路简单,但FPGA配置文件的大小非常依赖于PROM的容量。对于实现接口协议转换等功能的机载通信设备来说,FPGA程序规模往往会大于16MB,而目前Xilinx公司主流大容量PROM型号为XCF128X,容量仅为32MB,无法满足多个配置文件的加载。因此,利用FPGA自身实现重配置功能的方法不适用于机载通信设备。
1.2 利用通用大容量FLASH和CPLD实现重配置功能
该方法是将FPGA配置文件固化在通用FLASH中,CPU根据不同的应用场景选择相应的FPGA程序,完成配置过程的控制。CPLD完成FPGA的专用配置接口时序,将配置数据加载到FPGA中。配置原理框图如图2所示[2]。这种方法使用通用FLASH,可以存储多达十几个版本的FPGA程序,解决了PROM容量受限的问题,但加载速度慢,大型的FPGA程序加载时间甚至会达到秒级。对于设备启动要求几百毫秒的机载通信系统来说,该方法也不适用。
2 新型动态加载配置方法
以上两种重配置技术都无法解决机载系统中大规模FPGA程序的快速重配置问题。主要局限在存储容量受限和配置时间较长。针对这两点,文章设计了一种新型动态重配置方法。该方法通过CPLD芯片使FPGA与多个PROM连接,通过处理单元对CPLD的控制,选择存放不同逻辑文件的PROM,即可以完成不同功能的FPGA程序选择。PROM到FPGA的加载方式使用Slave SelectMap模式[1][3],满足了系统对加载时间的要求,不同PROM间的切换解决了对加载容量的要求。具体实现方法如下。
2.1 硬件平台
硬件平台框图如图3所示。主要是针对Xilinx公司的Virtex-5系列FPGA进行配置,其中CPLD选用CoolRunner-II系列的XC2C384,三片PROM均选用Xilinx的XCF128XF。CPLD芯片主要用于对加载初始阶段处理单元发起的操作进行响应,实现PROM选择,并控制FPGA重新发起加载流程。
在硬件电路设计中应注意以下几点,可在实现功能的同时,简化PCB走线,并满足时间指标要求:
1)将FPGA程序加载的数据线、地址线、读写等控制信号全部引入CPLD,由CPLD连接各个PROM,简化PCB走线,防止由于信号反射引入的信号完整性问题。
2)FPGA和PROM时钟统一由外部时钟源提供,严格按照数据手册进行布局布线,确保高速加载可靠性;
3)PROM选择电路中,PROM控制信号的端接必须在从FPGA进入CPLD前完成处理,确保上电工作状态的稳定和可控。
2.2 FPGA程序动态配置设计与实现
在文章描述的方法中,CPLD通过和处理单元相连的加载控制接口完成控制和选择,加载控制接口共3位,其中两位加载选择离散量组合对应最多四个不同的逻辑版本状态,一位加载控制离散量用于指示逻辑重加载,由处理单元控制,时序如图4所示。加载控制信号与加载选择信号由处理单元发出,加载控制信号低电平有效,加载选择信号要求在加载控制信号有效期间保持稳定。加载完成信号是FPGA程序加载完成后,FPGA释放DONE信号,由外部上拉电阻置高电平。
控制流程如下:
1)CPLD中设计默认状态选择PROM1,CPLD上电后固定加载PROM1中的FPGA程序;
2)处理单元启动后,根据系统要求,设置加载选择信号,以选择需要加载的FPGA程序,之后处理单元设置加载控制信号为低,启动重加载;
3)CPLD周期性判断加载控制信号和加载选择信号,当加载控制信号出现下降沿时,CPLD读取加载选择信号,对FPGA的PROGRAM_B和PROM的/RP管脚输出低电平,持续时间不少于50ns,同时CPLD内部将FPGA与所选PROM的数据线、地址线连通;
4)FPGA完成程序加载后,将DONE信号置为高,主机检测到该信号后,发起FPGA复位操作,复位结束后,将加载控制信号置高,以便再次对FPGA程序重新配置。
实际应用中,系统在复位或上电后可根据设计选择默认逻辑完成加载,也可由处理单元完成对FPGA加载逻辑状态的选择,实现可编程逻辑的动态选择加载。通过该方式,可以使用单一硬件兼容三种系统应用,而无需设计三种模块,在技术状态的管理上,也可以做到明确、清晰,和当前的系统应用具有良好的延续性。
2.3 FPGA程序维护和升级
在系统实际使用中,如果需要对FPGA程序进行维护操作,可以使用以下两种方式完成:
1)在有处理单元的平台上,通过处理单元完成对PROM的选择,之后使用JTAG接口完成FPGA程序升级维护操作,进行烧写、擦除、读取、校验等操作;
2)在没有处理单元的平台上,加载控制接口可以使用外部离散量控制板,通过跳线方式,选择对应的PROM,之后使用JTAG接口完成FPGA程序升级维护操作。
以上两种方式,虽然相比典型的FPGA程序升级操作维护步骤略有增加,但是考虑到模块技术状态稳定后,升级维护操作并不频繁,且增加的操作步骤简单易行,技术状态稳定后,并不会对模块的可维护性产生大的影响,相比模块种类增加所带来的设计、控制等一系列成本,该方式的优势更为明显。
3 实验与验证
对文章提出的方法进行功能和性能验证,根据图3搭建了系统验证平台。对Xilinx公司生产的Virtex-5系列芯片进行动态配置,选用的配置时钟CCLK为40MHz,选择PROM1为默认PROM,待处理单元启动后,通过加载控制接口选择PROM2进行重配置,重配置可以在200ms内完成。表示文章所提出的方法可以实现FPGA程序的重配置。
4 结束语
经过工程应用验证,使用该方法的硬件平台工作稳定可靠、简单易行使用灵活。该方法对于使用可编程逻辑实现主要功能,且FPGA外部电路一致的模块有着较好的借鉴作用,可以在具备该条件的模块设计中进行推广,既可以满足用户的需求,也能够有效减少模块种类,具有较为广阔的应用前景。
参考文献:
[1] Xilinx, Virtex-5 FPGA Configuration User Guide[R]. USA: Xilinx, 2009.
[2] 陈静,曹芳菊. FPGA动态高速加载设计与实现[J].计算机与网络,2011(5).
[3] 李吉锋,杨刚,王戈,等. 星载环境FPGA软件在轨重加载的一种方法[J], 现代电子技术,2012(5).