EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 如意qq 于 2018-8-30 17:21 编辑
) o' y) r. w. k% N) E5 M2 M' Q; t5 R8 ~: U7 }" v
- }: X% m# Z- U 现代硬件设计规模逐渐增大,单个程序功能越来越复杂,当把多个功能复杂的程序集成到一个FPGA上实现时,由于各个程序的数据通路及所占用的资源可能冲突,使得FPGA控制模块的结构臃肿,影响了整个系统工作效率。
% _& v- n; J. J) J6 b* [6 e1 x' m5 A, \$ G' ?5 E
通过FPGA的 多重配置可以有效地精简控制结构的设计,同时可以用逻辑资源较少的FPGA器件实现需要很大资源才能实现的程序。以Virtex5系列开发板和配置存储器 SPI FLASH为基础,从硬件电路和软件设计两个方面对多重配置进行分析,给出了多重配置实现的具体步骤,对实现复杂硬件设计工程有一定的参考价值。 6 a' m4 {6 |" ~( v
8 B8 I, s1 u% ~9 I5 T8 |
0引言
1 ^1 ]7 j4 l6 F! v2 ]2 c# U0 y8 v; P
1 w9 R! v- h9 _# u6 |3 M 现代硬件程序设计规模越来越大,功能越来越复杂,当多个应用程序同时在一个硬件平台上实现时,各个程序的资源使用和数据通路可能会冲突,这增加了控制电路设计的复杂程度,给开发人员增加了工作量和开发难度。通过多重配置,可以将多个应用程序根据需要分时加载到FPGA中,不仅精简了电路设计,而且使系统更加灵活。FPGA多重配置的特点可以让特定条件下的用户选择片上资源不多的FPGA去实现需要很多资源FPGA才能实现的功能,这大大降低了开发费用,同时提高了FPGA的利用率。 1 K8 V% z" I6 y
# A) `$ k2 [7 ?$ S, t$ q. ? Xilinx公司Virtex5系列的FPGA具有多重配置的特性,允许用户在不掉电重启的情况下,根据不同时刻的需求,可以从FLASH中贮存的多个比特文件选择加载其中的一个,实现系统功能的变换。
' D* }% m" y4 s0 c+ Q ? 1总体设计 6 m9 h4 |, e, ]7 y5 E2 C
& U2 p+ ~0 h1 z ~7 k8 F* v
当FPGA完成上电自动加载初始化的比特流后,可以通过触发FPGA内部的多重启动事件使得FPGA从外部配置存储器(SPI FLASH)指定的地址自动下载一个新的比特流来重新配置。FPGA的多重配置可以通过多种方式来实现。本文采用的是基于ICAP核的状态机编码方式。通过调用Xilinx自带的ICAP核,编写状态机按照一定的指令流程对ICAP核进行不断的配置,可以控制FPGA重新配置。这种方式可以在源代码中加很多注释,让后来的开发者很清楚地明白ICAP核指令流顺序,以及多重配置地址计算方法,是一种简单实用的实现方法。 : T, j9 v: |4 z0 g" s
& U5 @2 F+ {- i" X 1.1硬件电路
* m' `( n' \6 T2 s2 A6 c& X
7 s" N, q5 a/ J, _8 R* ]( e 多重配置的硬件主要包括FPGA板卡和贮存配置文件的FLASH芯片。FPGA选用XILINX公司 Virtex-5系列中的ML507,该产品针对FPGA多重配置增加了专用的内部加载逻辑。FLASH芯片选用XILINX公司的SPI FLASH芯片M25P32,该芯片存贮空间为32 Mb,存贮文件的数量与文件大小以及所使用的FPGA芯片有关。实现多重配置首先要将FPGA和外部配置存储器连接为从SPI FLASH加载配置文件的模式。配置电路硬件连接框图如图1所示。 & V8 u1 R+ G4 y* K$ o" ^
: d: P- K- ^8 a2 G |