新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于DSP的FPGA配置方法研究与实现

基于DSP的FPGA配置方法研究与实现

作者:时间:2012-03-30来源:网络收藏

摘要:在数字电路中,+的系统结构应用日益广泛。为了减小此种结构的体积和降低成本,对采用了被动并行的方式。上电后,首先完成自身程序的加载,之后充当的主处理器,从FLASH芯片中读取FPGA程序,按照时序完成FPGA的程序加载。在硬件设计上,创新性地采用了,FPGA,FLASH共用数据总线的方式,当DSP从FLASH芯片中读取FPGA程序时,FPGA可以直接抓取出现在总线上数据来完成加载。实践证明,此种配置方法结构简洁,工作稳定,在一定程度上了小型化和低成本。
关键词:FPGA;DSP;配置;被动并行;小型化

0 引言
在信号处理领域中,FPGA+DSP的结构设计已经是系统发展的一个重要方向。随着该系统设计的广泛应用,功能变得更加丰富,成本日趋低廉。而在某些小型化应用的场合中,对系统体积的要求越来越高,因此如何在硬件层次上缩小系统体积,已经是必须要考虑的重点。除了选用高集成度的芯片、布局更加紧凑的电路结构之外,优化系统的功能方式则能在更高层次上减小系统体积。
对于FPGA+DSP的基本架构,DSP电路模块的主要构成为DSP芯片和存储其程序的FLASH芯片,已经为最小结构,无法精简。FPGA电路模块常用的构成方式为FPGA芯片和相应的配置芯片。而FPGA有多种配置方式,不同的配置方式,所需芯片会有差异,因此采用芯片数量少的配置方式可以在一定程度上节省电路板的面积。
不同厂家、不同系列的FPGA芯片,配置方式都存在有差异。对于Xilinx公司的Virtex-Ⅱ系列FPGA来说,主要有主动串行、主动并行、被动串行、被动并行和边界扫描5种配置方式。其中,边界扫描方式只能烧写断电即丢失的.bit文件,不能在系统中单独使用;主动串行和主动并行的配置方式需要额外的配置芯片,不利于精简系统;被动并行和被动串行的配置方式都是依靠FPGA外部连接的微处理器来进行配置的,而FPGA+DSP结构中的DSP正好可以充当配置电路中的微处理器,这样就可以省去配置芯片和JTAG电路等相关模块,能在一定程度上缩小系统体积。本文选择了被动的并行配置方式,原因在于更高的配置速率,此种配置方法在工程实践中有着重要意义。

1 配置方法
1.1 配置文件格式
配置FPGA即是要把开发工具已经综合好的程序文件按一定的时序写入FPGA芯片中。而Xilinx的开发环境可以根据用户的选择产生多种文件格式,以不同的后缀名区分。不同的文件格式包含了不同的信息,有不同的用途。最常用的格式有.mcs格式、.bit格式和.bin格式,其中,.mcs文件是给FPGA的配置芯片烧写程序时使用的,而.bit和.bin文件都是直接给FPGA烧写程序时使用的。所不同的是,.bin只包含了最原始的配置数据,而.bit文件除包含有最原始的配置数据外,还在开头添加有头部冗余信息,里面包含了当前ISE工程的名字、器件型号、编译时间等。这部分信息是不应该烧写到FPGA芯片中去的,因此,本文选择使用.bin文件来对FPGA进行配置。一般的,此配置文件数据都是以Xilinx指定的16进制同步字符FF FF FF FF AA 99 55 66开头,并在重复4次16进制同步字符20 00 00 00后结束。
由于被动并行的配置方式省去了配置芯片,因此,FPGA程序需要和DSP程序共同存入FLASH芯片中。本文选择使用AD公司的DSP,其烧写FLASH用的程序文件格式为.ldr,每行是由16进制的0xXXXXXXXX数据组成。所以,应该对FPGA所用的.bin文件进行格式转换。利用Matlab工具,可以这一功能。要注意的是,.bin文件其实是ASCII码形式,要转换成ASCII码的二进制码才能使用。.bin文件是由若干个2位的16进制数据构成的,对每个数据a(i)首先分别提取高低位,可通过Matlab的函数floor(a(i)/16)和mod(a(i),16)来分别实现。然后对提取后的数据d进行格式码转换,相应的matlab程序如下:
if(d10)
d=d+48;
else
d=d+55;
end
1.2 配置管脚
与FPGA配置相关的管脚可以分为2类:专用管脚和可复用管脚。专用管脚的作用是固定的,而可复用管脚在配置阶段作为配置管脚,配置结束后可以配置为通用的IO管脚,也可以继续作为配置管脚。配置管脚主要有:异步复位PROG_B,初始化INIT_B,配置时钟CCLK,数据输入D0-D7,加载成功指示DONE,写信号RDWR_B,片选信号CS_B,模式选择M0~M2,忙指示BUSY(并行加载且钟速率大于50 MHz时才使用)等。需要注意的是,通常的微处理器数据格式是little endian格式,D0位为最低有效位,而Xilinx的FPGA采用了big endian格式,在接收程序数据时,D0位是最高有效位。而.bin文件仍采用littIe endian格式,其最高有效位是D7位,所以需要对数据进行位顺序转换。在本文中,为了简化操作,直接在硬件连接上进行了数据位的顺序转换,即DSP的D7位和FPGA的D0位相连,DSP的D6位和FPGA的D1位相连,以此类推。
1.3 配置流程
FPGA的上电配置过程大致可以分为4个阶段:上电、初始化、数据加载和启动。具体完成的操作如下:
(1)上电。内核供电VCCint大于2.5 V,管脚供电电压VCCO大于1.0V,上电即可完成。
(2)初始化。上电完成后,外部输入低电平PROG_B信号,复位配置寄存器,同时,FPGA拉低INIT_B信号,来指示其正在进行内部配置寄存器的清除。当PROG_B为高时,INIT_B仍要保持一段时间直至配置寄存器完全清除。PROG_B信号至少需要300ns,无最大值限制。本文中的PROG _B信号由DSP提供。
(3)数据加载。在INIT_B信号的上升沿,FPGA会采样它的配置模式管脚M0~M2来选择不同的配置方式,本文的被动并行模式,需要M0~M2值为:011。然后在INIT_B信号为高时,开始进行配置数据加载。在同步字符加载完成后,真正的配置逻辑数据开始被加载。在数据加载完毕并且做了2次正确的CRC检验之后,开始进入FPGA启动阶段,否则,FPGA输出INIT_B为低,并重新来进行配置。
(4)启动。CRC校验正确,则FPGA拉高指示信号DONE,然后再需要4个CCLK来激活所有的IO管脚,使能并初始化内部RAM、触发器等,最终完成FPGA的启动过程。
在生成FPGA的.bin文件时,可以设置加载FPGA时使用的时钟CCLK频率,但是,这个频率只对主动加载方式有效,被动方式时,CCLK时钟由外部供给,与此参数无关。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭