EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 如意qq 于 2018-8-30 17:21 编辑
7 G+ ]! U1 z; d1 e4 `# U$ W1 Y7 O9 G5 Q& t0 j% O2 ?! `
5 _- w( v' H+ j1 J) u
现代硬件设计规模逐渐增大,单个程序功能越来越复杂,当把多个功能复杂的程序集成到一个FPGA上实现时,由于各个程序的数据通路及所占用的资源可能冲突,使得FPGA控制模块的结构臃肿,影响了整个系统工作效率。 % [# ~7 H% I" }2 k! t( a
+ p, }" }- C( h' D: j 通过FPGA的 多重配置可以有效地精简控制结构的设计,同时可以用逻辑资源较少的FPGA器件实现需要很大资源才能实现的程序。以Virtex5系列开发板和配置存储器 SPI FLASH为基础,从硬件电路和软件设计两个方面对多重配置进行分析,给出了多重配置实现的具体步骤,对实现复杂硬件设计工程有一定的参考价值。
1 U0 |1 q; H0 E/ O" x* m' l# w! \
0引言
+ |) ^5 f& x3 y$ j
. d8 `- I( Z9 U5 R 现代硬件程序设计规模越来越大,功能越来越复杂,当多个应用程序同时在一个硬件平台上实现时,各个程序的资源使用和数据通路可能会冲突,这增加了控制电路设计的复杂程度,给开发人员增加了工作量和开发难度。通过多重配置,可以将多个应用程序根据需要分时加载到FPGA中,不仅精简了电路设计,而且使系统更加灵活。FPGA多重配置的特点可以让特定条件下的用户选择片上资源不多的FPGA去实现需要很多资源FPGA才能实现的功能,这大大降低了开发费用,同时提高了FPGA的利用率。 ( m+ j- \: F2 r5 F: V3 a
/ V$ V, f9 X# r/ d# c, R! l5 T Xilinx公司Virtex5系列的FPGA具有多重配置的特性,允许用户在不掉电重启的情况下,根据不同时刻的需求,可以从FLASH中贮存的多个比特文件选择加载其中的一个,实现系统功能的变换。 . J1 E: t# q% G" o
1总体设计 / x$ a% G) M4 j/ q5 k: A" `# |( i: }- V
' U1 z, s" s" K# H- i4 [7 P
当FPGA完成上电自动加载初始化的比特流后,可以通过触发FPGA内部的多重启动事件使得FPGA从外部配置存储器(SPI FLASH)指定的地址自动下载一个新的比特流来重新配置。FPGA的多重配置可以通过多种方式来实现。本文采用的是基于ICAP核的状态机编码方式。通过调用Xilinx自带的ICAP核,编写状态机按照一定的指令流程对ICAP核进行不断的配置,可以控制FPGA重新配置。这种方式可以在源代码中加很多注释,让后来的开发者很清楚地明白ICAP核指令流顺序,以及多重配置地址计算方法,是一种简单实用的实现方法。
# u3 C8 ? [/ v F
7 a% R7 i: d. b# O 1.1硬件电路
& m8 ~; {3 t- Y n) V% S9 z2 I0 j" [# s# b2 |0 t, L1 H$ b* w
多重配置的硬件主要包括FPGA板卡和贮存配置文件的FLASH芯片。FPGA选用XILINX公司 Virtex-5系列中的ML507,该产品针对FPGA多重配置增加了专用的内部加载逻辑。FLASH芯片选用XILINX公司的SPI FLASH芯片M25P32,该芯片存贮空间为32 Mb,存贮文件的数量与文件大小以及所使用的FPGA芯片有关。实现多重配置首先要将FPGA和外部配置存储器连接为从SPI FLASH加载配置文件的模式。配置电路硬件连接框图如图1所示。 ' M' h0 l3 _4 m; X4 F# a7 s
7 ?! C ]: m7 H+ G |