DSP和FPGA共用FLASH进行配置的方法 王宏义,董文娟,黄宗福,陈曾平
(国防科技大学ATR重点实验室,湖南 长沙 410073)
摘要:本文举例分析了DSP的引导装载过程和FPGA的配置流程,并据此提出了一种使用单个FLASH存储器实现上述两个功能的方法。 关键词:FLASH DSP 引导装载 FPGA 中图分类号:TP368.2 文献标识码:B
Using single FLASH to Bootload DSP and Configure FPGA
Wang Hongyi,Dong Wenjuan,Huang Zongfu,Chen Zengping
(ATR Lab, National University of Defense Technology, Changsha,Hunan 410073) Abstract:This paper discusses the bootloading of DSP and the configuring of FPGA, taking TMS320C6416 and XC3S1200E for example, and a way to achieve both bootloading and configuring using single FLASH is proposed. Keywords:FLASH DSP bootload FPGA
DSP编程灵活、使用方便,适合高速复杂运算的场合;而FPGA并行性好、实时性强,适合大规模并行运算的场合。将两者结合起来构建的基于DSP+FPGA结构的系统能够充分发挥各自的优势,能够满足很多实际的需求。
在实际的应用系统中,需要将DSP代码存储在一些非易失性存储器中,这样在系统上电或者DSP复位的时候就可以通过DSP的引导装载程序(bootloader)将代码调入DSP的高速存储器中全速运行[1]。同样,FPGA也需要通过外部的配置芯片进行配置才能正常工作[2],而配置芯片一般都是通过外部的编程器进行烧写的,如果程序稍有修改,就需要将电路板的封装盒或者机箱打开,然后插上编程器进行调试,这在实际的应用中很不方便。如果能够通过FLASH同时实现DSP的引导装载和FPGA的配置,不但简化了系统结构,适当降低了成本,也为系统的维护和更新带来了较大的方便。 1 DSP的引导加载过程
DSP芯片的片上引导装载程序用于在系统上电时将用户代码从外部非易失性慢速存储器(如ROM、FLASH等)或外部控制器(如ARM、MCU等)中装载到片内或者片外的高速存储器中高速运行。DSP芯片一般都提供多种引导装载模式,如Host引导装载、EMIF引导装载、I2C引导装载、Serial RapidIO引导装载等。相比其它几种模式而言,EMIF引导装载具有使用方便、存储容量大等优点,所以本文以TMS320C6416[3](下文简称C6416)的EMIF引导装载为例说明DSP的引导装载过程。
在系统上电或者DSP复位后,引导装载程序根据C6416的引导模式管脚
BOOTMODE[1:0]决定引导装载的过程。如果BOOTMODE[1:0]是10,那么选择
通过EMIF进行DSP程序的引导装载。这时位于DSP的BCE1空间的前1K字节数据会以EDMA的方式被复制到DSP的0地址处,DSP根据数据的端模式(Little Endian或者Big Endian)将8位数据组装成32位的指令,然后从地址0处开始执行。
由于通常的程序代码远不止1K字节,所以事实上BCE1空间的前1K字节的代码一般都是一个二次引导装载程序,也就是这1K字节代码的功能是将存储在FLASH的真正的用户程序复制到DSP的内部存储器中,然后跳转到程序入口执行程序[4]。DSP的其它引导装载模式可以参考相应的数据手册。
基金项目:国家高新技术863-703主题资助(2006AA703402B) 2 FPGA的配置过程
FPGA的功能可以根据需要进行定制,针对性强、集成度高,可以最大限度发挥硬件资源的效率。在系统中FPGA需要外部配置芯片进行配置才能正常工作,FPGA的配置模式也有几种,如主串模式、SPI模式、BPI模式、从串模式、从并模式、JTAG模式等。FPGA通过检测模式管脚M2、M1和M0来确定使用哪种配置模式。本例中我们使用的FPGA的型号是Xilinx公司的XC3S1200E[5],具体的配置模式可以参考相应的数据手册。
最常用的模式是主串模式与JTAG模式结合使用,在调试的时候通过JTAG下载器向FPGA或者配置芯片写入配置数据,固化好后则可以通过主串模式将配置数据从配置芯片调入FPGA内部的配置模块中,结构如图1所示。对于XC3S1200E,使用的配置芯片型号为XCF04S。
图 1 FPGA的主串配置和JTAG配置连接示意图 SPI模式和BPI模式可以直接使用
FLASH做为FPGA的配置芯片,不过这两种情况下一般都是先通过编程器把程序写入FLASH然后再把芯片装到电路板上,要再修改的话也不方便。从并模式[5]则可以使用外部主机,如微控制器、微处理机、DSP等作为主控机向FPGA直接写入8位的配置数据。因此可以使用从并模式,通过DSP从FLASH中调出FPGA的配置数据然后再对FPGA进行配置。
3 DSP与FPGA共用FLASH的实现方法 3.1系统的结构
由前述分析本文设计出一个DSP与FPGA共用FLASH的小系统,结构如图2所示。
图 2 DSP与FPGA共用FLASH的系统结构
其中的FLASH芯片我们采用Spansion公司的S29GL064M[6],容量高达64M bit,能够满足大多数DSP系统的应用需求。而XC3S1200E的配置容量不到4M bit,只占用FLASH芯片的很小一部分空间。对于由多片FPGA组成的复杂系统,相应的需要多片配置芯片来
配置FPGA,而使用本文提出的这种配置方法只需要一片FLASH就能满足要求。
在系统加电或者复位的时候,DSP首先加载自己的程序代码,然后从FLASH的相应地址中读取FPGA的配置数据,通过FPGA的配置接口写入FPGA的内部配置单元。
在需要更新FPGA的配置或者DSP的程序时,只需要通过PCI接口将合成好的数据(也就是DSP的代码和FPGA的配置数据)写入FLASH即可。 3.2 DSP与FPGA的接口设计
C6416为外部存储器提供了两套数据接口(External Memory Interface, 简称
EMIF),分别是EMIFA和EMIFB。两个接口都可以配置为异步或者同步工作模式,EMIFA的数据接口可以为64位,EMIFB的数据接口可以为16位。