基于DSP 和FPGA 系统的动态重构设计
文/邱伟
摘 要 DSP 和FPGA 在电子系统中被
广泛的配合使用以实现特定的信
号处理功能,随着电子系统向综
合化和集成化发展,越来越多的
系统需要实现功能的可动态重构。
这里根据实际应用的需求提出了
一种基于DSP+FPGA 系统的动态重
构设计方法,同时实现了DSP 和
FPGA 的动态加载。
【关键词】现场可编程阵列 动态加载 Slave
SelectMAP8 bootloader
近年来,现场可编程阵列(FPGA) 器件的
动态配置技术,由于其在电路系统设计灵活性
上的重大突破,逐步成为工程师们的研究热
点。目前的主流FPGA 基本都基于SRAM 工
艺,掉电后会失去所有逻辑关系,每次上电都
需要重新配置,所以FPGA 的配置数据必须保
持在非易失存储器中。常用保存FPGA 数据的
非易失存储器有FPGA 特用的PROM 和一般
的FLASH ROM,前者的优点是设计简单,但
只能静态的配置FPGA 和储存容量不大;而后
者设计比较复杂,但可以在系统不断电的情况
下配置FPGA 和可以储存数十个不同版本的
FPGA 配置数据。
DSP 同样也面临这个问题,也需要将引
导代码和用户代码保存在ROM、FLASH 或其
他非易失存储器中,以保证掉电时代码仍在。
如果用户代码存放在FLASH 或其他的非易失
存储器中,就必须解决DSP 引导加载问题。
这里设计了一种DSP+FPGA 的动态重构
系统,该系统在上电后,由DSP 自己加载后
再控制FPGA 加载,实现动态重构功能。DSP
的引导程序、DSP 用户程序和FPGA 的配置
数据通过JTAG 口下载到FLASH 中。
1 Xilinx FPGA配置原理
1.1 配置模式的选择
Xilinx 公司的Virtex-4 系列FPGA 需要
5 种配置模式,如表1 所示。本系统采用了
Slave SelectMAP8 模式。
Slave SelectMAP8 模式提供了与Virtex-4FPGA 之间的一个8 位双向数据总线接口,用
来配置和回读。在每个CCLK 的上升沿载入
1Byte 数据。两个外部的控制信号接在/CS 和
/WRITE 管脚,通过下拉电阻使其一直为低电
平。表2 为Slave SelectMAP8 管脚定义。
1.2 配置过程
FPGA 可以在Slave Serial 和Slave SelectMAP8
的从模式下实现由DSP 加载配置数据。本系
统中采用Slave SelectMAP8 模式实现。配置过
程如图1 所示。
1.2.1 上电
上电过程中/PROG 和/INIT 管脚都被
FPGA 置为低电平。上电完成后,配置器会被
自动清空。/PROG 的输入低电平也会复位配
置逻辑,使FPGA 保持在清空配置存储器的状
态。本设计采用CPLD 将/PROG 管脚拉低。
1.2.2 初始化
初始化过程中/PROG 变为高,/INIT 继续
保持低电平直到完全清空所有的配置存储器。
可以在外部使/INIT 引脚保持低电平以延时
FPGA 的配置,FPGA 在/INIT 信号上升沿检
测配置模式选择引脚。/INIT 信号变为高电平
后,配置开始。
1.2.3 载入配置数据
载入配置数据过程在/INIT 引脚变高,并
且/CS 和/WRITE 信号均为低电平时开始,
配置数据在配置时钟的每个上升沿被载入
FPGA。
在载入配置数据器件,载入的CRC 的值
和内部计算出的CRC 进行比较。如果CRC 值
不匹配,则/INIT 信号会变低,指示发生了
CRC 错误,这时启动被终止,FPGA 不被激活。
为了重新配置该器件,/PROG 引脚必须变低
以复位配置逻辑。
1.2.4 启动时序
当所有的配置数据载入完毕,并且CRC
校验成功后,FPGA 将进入启动时序。在这期间将会把DONE 引脚变为高电平,激活I/O,
停用GSR 以及确定GWE。在系统默认的状态
下,当DONE 变为高后,配置并没有完成,
还需要4 个CCLK 去完成启动时序。
2 TMS320C6455加载
TMS320C6455 复位和上电时的引导模式
主要有:NO BOOT 模式、主机引导模式、
FLASH 引导模式、主/ 从I2C 引导模式和
SRIO 引导模式。采用哪种引导模式,由复位
或上电时采用管脚BOOTMODE3-0 决定。
本系统采用FLASH 引导模式。
TMS320C6455 与其它C64 系列的DSP 不同,
它先从外部FLASH 中的程序搬移一个字节到
DSP 内部的RAM 首地址运行,然后再搬移下
一个字节到内部RAM 首地址覆盖上一个字节
并运行,以此类推,直到程序运行完成。DSP
内部的RAM 首地址中保存的是Bootloader 程
序的最后一个字节,而不是整个Bootloader 程序。加载完成后,DSP 运行用户程序代码,开
始进行相应波形的处理。
3 系统设计
3.1 硬件设计
系统采用1 片Xilinx Virtex-4 系统的600
万门的FPGA XC4VLX60 和1 片Spartan-3
AN 系列的20 万门的FPGA XC3S200 芯片;
主MCU 是TI 公司处理能力最强的定点的
TMS320C6455;DSP 主要完成低速数据的调
制解调、编译码、波形处理等工作,FPGA 完
成对中频信号进行调制解调,XC3S200 FPGA
主要用于完成上电后的初始化设置,时钟信号
的分配,FLASH 芯片高地址管理,以及DSP
的EMIF 总线接口与FPGA 加载控制接口之间
的配置。DSP 的EMIFA CE3,DDR2 EMIF 和
I2C 总线接口分别和存储器FLASH、SDRAM
和EEPROM 连接,一些通用接口连在FPGA
上作为以后功能拓展,4 对RIO 口和外部接口
连接。系统电路结构框图如图2 所示。
3.2 软件设计
本系统支持DSP 程序的加载和FPGA 程
序的加载。DSP 加载为系统上电时DSP 从位
于EMIFA CE3 低地址空间的片外程序FLASH
加载初始化程序。
FPGA 加载为DSP 更加主控计算机的加
载指令,通过接口控制可编程逻辑器件从本板
的大容量通用FLASH 加载FPGA 程序。通用
FLASH 的存储容量可达512Mbit 以上,可以
存储数十个版本的FPGA 程序。DSP 根据主
机控制指令,由EMIFA 总线将FLASH 待加
载数据读出,并通过接口控制可编程器件中的
数字总线控制接管FPGA 的加载接口,完成对
FPGA 的加载,如图3 所示。
4 结束语
引导加载是设计DSP 系统必须解决的问
题,动态配置FPGA 的应用领域也越来越广泛。
本系统设计了具有动态重构功能的DSP+FPGA
系统,已经成功的应用于某工程项目并验证了
该功能,本文的分析思路及设计方案同样适用
于其他的C6000 系列的DSP 和Virtex-4 系列
的FPGA,对DSP+FPGA 应用系统的设计具
有一定的参考价值。
参考文献
[1] 陈曦, 沈佐峰. 一种可靠的FPGA 动
态配置方法及实现[J]. 通信技
术,2012,45(03):105-107.
[2] 孟龙, 郄志鹏, 朱江. 基于CPCI 总
线的FPGA 加载设计[J]. 通信技
术,2013,46(05):127-129.
[3] 张玄, 李开航. 利用CPLD 实现FPGA 的快
速加载[J]. 现代电子技术,2012,35(22):
163-166.
[4] 吴冬梅, 何管清, 邱昊. 基于ARM 的DSP
与FPGA 动态配置方案的设计与实现[J].
舰船电子工程,2013,33(7):47-48.
[5] 佘佑军, 王丹.TMS320C6416EMI 总线下双
FPGA 加载设计[J]. 单片机与嵌入式系统
应用,2007,33(7):29-31.
[6] 吴海洲, 刘恒甫, 黄克武. 基于
TMS320C6455 的DSP 加载模式研究[J]. 电
子测量技术,2008,31(6):155-156.
作者简介
邱伟(1981-),男,四川省自贡市人。硕士学历。
工程师,主要研究方向为航空电子技术和数字
信号处理技术。
作者单位
中国西南电子技术研究所 四川省成都市
610036