APP下载

一种可靠的FPGA动态配置方法及实现

2012-08-04沈佐峰

通信技术 2012年3期
关键词:时序时钟芯片

陈 曦,沈佐峰

(中国电子科技集团公司第三十研究所,四川 成都 610041)

0 引言

现场可编程逻辑门阵列(FPGA,Field Programmable Gate Array)以其高灵活性、丰富的逻辑和 I/O资源在电子、通信领域应用越来越广泛。目前主流的FPGA基本都基于SRAM工艺,掉电后FPGA会失去所有逻辑关系,所以一般都配备一个EPROM芯片用于存放FPGA的配置数据,每次上电后对FPGA重新进行加载。这种加载方式不仅增加了系统成本,而且使系统灵活度大打折扣,配置过程中容易因环境因素导致配置失败。

随着FPGA在通信系统中的应用越来越广泛,多数场合要求 FPGA能够支持在线动态配置和加载。这种配置方式的优势主要体现在[1]:①节约系统成本、降低功耗、减小系统体积对于对成本和体积敏感的系统非常适用;②适用于某些对安全性要求较高的领域,FPGA的程序文件必须进行加密保存,上电解密后动态加载;③由于可以在不开箱的情况下实现快速的程序加载,应用灵活,在现场进行程序的升级和生产调试中显得尤为重要。

针对FPGA动态配置的优势,本文提出了一种基于处理器(CPU,Central Processing Unit)+复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)的FPGA快速动态加载方案,该方案具有灵活、安全和可靠的特点,在通信电子领域具有广泛的应用前景。

1 FPGA上电配置原理

目前主流FPGA生产厂家Altera公司和Xilinx公司生产的FPGA无论是在配置方法、专用配置引脚的功能设置以及配置接口时序上基本完全相同,配置方式主要分为主动式和被动式,数据宽度有 8位并行和串行方式2种。目前普遍采用的配置方式主要有几种:主动串行配置(AS)、被动串行配置(PS)、被动并行配置(PPS)及JTAG。Altera公司的Quartus II和Xilinx公司的ISE开发平台都可以根据选用的不同器件,生成大小、格式不同的配置文件。

FPGA的配置引脚主要分为专用和通用2类[2]:专用配置引脚接口时序可以由FPGA内部产生,也可以由外部提供,它一般只在配置过程中有效;通用配置引脚只在上电配置过程中作为配置引脚使用,当FPGA程序成功加载后可作为普通I/O使用。Altera公司 FPGA 专用配置引脚主要有[3]:nCONFIG、nSTATUS、CONF_DONE、DCLK、DATA。相对应Xilinx公司的配置引脚功能设置和接口时序基本完全一致,只是命名有所差别,分别是[4]:PROGRAM_B、INIT_B、DONE、CCLK、D_IN。

这里以Altera公司Cyclone III系列FPGA在主动串行模式下的配置原理为例说明FPGA的上电配置过程。配置电路原理图如图1所示,首先PC机通过JTAG口向串行配置芯片中写入数据,每次上电后由FPGA主动发起配置过程,从串行配置芯片中读取程序文件并完成配置过程。

图1 AS配置电路原理

FPGA采用AS配置过程主要包含以下3个步骤,上电配置时序图如图2所示。

①FPGA上电后首先进入复位状态,由 FPGA专用配置芯片给FPGA的nCONFIG引脚输入一个低电平,使得FPGA进入复位状态;之后信号变高,在脉冲上升沿 FPGA进入配置状态,FPGA的nSTATUS引脚产生一个低脉冲复位FPGA内存;②配置阶段开始后FPGA通过DCLK引脚发送时钟给串行配置芯片,配置时钟驱动串行配置芯片的地址计数器并读出数据,送到FPGA的DATA引脚;③FPGA在读取数据同时,会根据数据文件格式对数据进行 CRC校验。加载完成后,若校验正确,则FPGA的配置完成指示引脚CONF_DONE拉高,表示加载过程完成;若校验错误,CONF_DONE保持为低电平,同时会将nSTATUS引脚拉低报错。

以上步骤都由FPGA厂商固化在芯片中的程序决定,用户无法干预配置过程,只能通过示波器简单的测试配置引脚接口时序。如该过程中因为某些原因导致配置失败,没有任何信号发起重新加载过程,只有重新加电。

图2 AS配置时序

2 FPGA配置系统的设计与实现

2.1 系统架构设计

随着通信设备复杂化、多样化,同一套硬件设备可能应用于不同的环境。软件实现有灵活、扩展性强的特点,但是单纯软件实现对于处理速度高、并发性强的环境并不适合[5];硬件的并行、流水线处理方式可以极大程度上提高处理效率,但是单纯使用FPGA实现,从实现难度、成本、资源、灵活性方面都无法满足实际的应用需求。所以在设计中要充分发挥FPGA逻辑可变,相对于传统ASIC实现又具备一定灵活性的优点,在加电过程中动态的改变FPGA内部逻辑,使得设备能够满足“一机多能”的应用需求。

针对日益增长的这几类应用需求,本文提出了一种采用CPU+CPLD的硬件配置系统。CPU用于完成配置过程的控制,程序的加解密存储和读取,同时根据应用环境选择相应的 FPGA程序。CPLD用于完成对FPGA的被动加载接口时序,同时完成对FPGA和DSP的看门狗功能。

FPGA配置系统框图如图3所示,在该配置方案下,FPGA采用被动加载方式,本文选择被动并行配置(FPP)。这种加载电路支持在线加载和SD卡离线加载2种方式,同时支持加载程序的加密保存。原始的数据文件经过以太网接口或存储卡 SPI总线送入CPU,CPU根据命令选择是否将数据文件进行加密,并根据文件版本编号选择存储到板卡Flash相应的分片空间中。在完成了Flash程序更新后,每次上电时,CPU可以根据应用环境动态的选择从Flash相应的分片中读取配置数据,经解密处理后通过CPLD对FPGA进行在线动态加载。CPLD可以实时的监控FPGA的加载状态,若加载过程出错,由CPLD上报CPU,并重新发起配置过程。该系统配置方式灵活、可靠,应用广泛,同时具备保密、安全的特点。

图 3 FPGA配置系统框

2.2 系统配置流程

系统的配置流程图如图4所示,整个配置流程由CPU进行控制,下面简单的介绍配置流程。

图4 系统配置流程

首先CPU根据应用状态从本地程序存储Flash相应的分片中读取FPGA加载数据,并对数据进行解密。数据准备完成后,查询CPLD给出的硬件准备就绪标志。若CPU查询到该标志有效,则发送清空配置缓存命令,对CPLD进行复位处理,目的在于保证每次配置前清除缓存中的残留数据以提升配置的可靠性。完成以上过程后开始进行配置过程,CPLD先将FPGA的nCONFIG信号置1,接着开始检测nSTATUS信号,当检测到nSTATUS信号变高后,CPLD通知CPU开始发送数据,并将CPU发送的配置数据存放在本地缓存里,考虑到配置效率,CPLD每次取完 1KB的配置数据后再给 FPGA的DATA0-DATA7引脚发送数据,同时提供和数据同步的配置时钟信号。当CPU将配置数据发送完成后,通知CPLD停止接收数据,CPLD将缓存中剩余的数据一起发送到FPGA。配置过程结束后,CPLD启动定时器,延迟一定时间后检测 FPGA的CONF_DONE引脚是否拉高,如果拉高则配置成功,上报CPU;否则配置失败,通知CPU重启配置过程。

3 影响FPGA配置成功的因素分析

在实际的调试过程中发现,FPGA偶尔会出现配置失败的情况,其标志就是CONF_DONE信号一直为低电平,在这种情况下本系统会重启配置过程[6],但是在诸如航天、军工等应用背景下,对FPGA加载可靠性提出了很高的要求,下面就从3个方面讨论一下影响FPGA上电配置成功率的因素和解决措施。

3.1 PCB信号完整性

信号完整性(SI,Signal Integrity)是指信号在信号线上的质量。由于信号在传输过程中很容易出现反射、串扰、延时、过冲、边沿畸变等现象,导致信号的建立和保持时间不满足要求,引起误码,最终导致配置过程失败。配置FPGA的几个关键引脚,DCLK、DATA如果布线的信号完整性不好,就可能导致配置失败。

3.2 配置时钟

FPGA的配置时钟是配置过程的基准,任何FPGA都有配置时钟的有效范围[7],允许设计人员动态的选择配置速率,以Altera最新推出的Stratix IV系列芯片为例,支持的最大配置时钟为125 MHz。曾经遇到过配置频率过低时配置不成功的情况。在加载过程中,理论上讲配置时钟越高,配置时间越短,配置速度越快,但是也给配置过程带来一定的风险。因为时钟频率越高,信号的建立和保持时间越难满足要求,越容易出现时序风险。

在本设计中采取了措施有:①配置速率选定40 Mb/s;②严格采用同步时序设计。为了保证时钟跳变沿能够稳定的对数据进行采样,对配置时钟进行了反向后再提供给 FPGA,示波器上显示,采样时钟基本和数据中心对齐。

3.3 环境温度

当设备主要应用于野外环境时,设备的工作环境相对恶劣,对设备的在极端温度下的工作稳定性提出了很高的要求。一般芯片都有合理的工作温度范围,超过这个范围芯片工作稳定性会受较大影响。在本文设计中,选用工业级芯片,保证芯片的工作温宽。

4 实验和仿真

为了对本文设计的配置系统功能和性能进行验证,根据图3搭建了系统验证平台。对Altera公司生产的EP3C120F780芯片进行动态配置,选用的配置文件格式为.rbf的文件,配置文件大小为 1.14 MB,选用的配置时钟为40 MHz,采用FPP的配置方式,配置时间大致为3 s,根据配置结束后的在线示波器采样的信号时序,FPGA的CONF_DONE引脚拉高,配置成功。

5 结语

随着FPGA应用的越来越广泛,对FPGA程序的动态加载提出了更高的要求,同时要保证加载过程中的安全性、可靠性[8]。本文提出的动态 FPGA加载方案使得FPGA配置过程更加灵活、可靠,在通信电子、保密安全领域具有一定的参考价值。

[1] 张炜,杨虎,张尔扬. 一种灵活的实时FPGA数据配置方法[J]. 通信技术,2003(02):23-27.

[2] 姜韬,倪振涛,白立锋.利用CPLD实现多片FPGA的配置[J]. 信号与信息处理,2008(08):21-24.

[3] ALTERA. Stratix IV Device Handbook[EB/OL].(2009-02-11)[2011-12-15].http://www.altera.com,2009.

[4] XLINX.Virtex-5 FPGA Configuration User Guide[EB/OL].(2008-11-18)[2011-12-15].http://www.xil inx.com, 2008.

[5] 李庭胜. 基于DSP+FPGA系统在线重构技术[J]. 信息安全与保密通信,2005(11):62-64.

[6] 王文华,韩双丽,张宇,等. 航天应用FPGA配置可靠性研究[J]. 空间科学学报,2011(01):106-111.

[7] 吕书东,徐光辉. FPGA被动串行配置控制器的研究与实现[J]. 军事通信技术,2006(04):66-69.

[8] 徐新民,洪波. 改进的 FPP方式 FPGA配置电路及应用[J]. 电子技术,2004(11):27-29.

猜你喜欢

时序时钟芯片
芯片会议
清明
别样的“时钟”
人体微芯片
关于射频前端芯片研发与管理模式的思考
古代的时钟
基于不同建设时序的地铁互联互通方案分析
基于FPGA 的时序信号光纤传输系统
有趣的时钟
时钟会开“花”