400-035-6699
当前位置: 首页 » 技术支持 » 博文资讯 »

FPGA多重配置技术:利用SPI FLASH实现灵活启动方案

随着现代硬件设计的规模不断扩大,单个程序的功能也日益复杂。当将这些复杂程序集成到一块FPGA上时,由于数据通路和资源占用可能发生冲突,导致FPGA的控制模块结构变得庞大,进而影响整个系统的工作效率
为了解决这一问题,FPGA的多重配置技术应运而生。通过这项技术,不仅可以有效简化控制结构的设计,还能让资源较少的FPGA器件实现原本需要大量资源的程序。本文以Virtex5系列开发板和SPI FLASH配置存储器为例,从硬件电路和软件设计两个角度对多重配置技术进行分析。
现代硬件程序设计规模逐渐增大,功能日益复杂。多个应用程序在同一个硬件平台上运行时,资源使用和数据通路的冲突使得控制电路设计变得更加复杂,给开发人员带来了额外的挑战。采用多重配置技术后,可以根据需求分时加载多个应用程序到FPGA中,这不仅简化了电路设计,还提高了系统的灵活性。此外,特定条件下,用户可以选择资源较少的FPGA来实现原本需要资源较多的程序,从而降低开发成本,提高FPGA的利用率。
Xilinx公司的Virtex5系列FPGA具备多重配置特性,允许用户在不掉电重启的情况下,根据不同时刻的需求,从FLASH中加载不同的比特文件,实现系统功能的切换。
在总体设计中,FPGA在上电自动加载初始化比特流后,可以通过触发内部的多重启动事件,从外部配置存储器自动下载新的比特流进行重新配置。本文采用基于ICAP核的状态机编码方式来实现多重配置,通过调用Xilinx自带的ICAP核,编写状态机按照特定的指令流程对ICAP核进行配置,从而控制FPGA的重新配置。这种方法在源代码中可以加入大量注释,方便后来的开发者理解ICAP核指令流顺序和多重配置地址计算方法
硬件电路主要包括FPGA板卡和贮存配置文件的FLASH芯片。FPGA选用Xilinx公司Virtex-5系列中的ML507,该产品针对多重配置增加了专用的内部加载逻辑。FLASH芯片选用Xilinx公司的SPI FLASH芯片M25P32,存贮空间为32 Mb,存贮文件数量与文件大小以及使用的FPGA芯片有关。
软件设计方面,FPGA多重配置主要分为两部分:用户自己开发的程序和FPGA重载配置模块。用户程序包括在FPGA上实现的功能,以及为重载模块提供时钟信号和触发信号的代码。触发信号可以通过编写串口通信协议栈接收PC端传输的数字作为触发信号。FPGA重载配置模块则调用ICAP核,当满足触发条件后,采用状态机编码方式对ICAP核进行配置。
通过以上分析,可以看出FPGA的多重配置技术在简化电路设计、提高系统灵活性和降低开发成本方面具有显著优势。随着硬件设计规模的持续增大,这一技术将在未来的硬件开发中发挥更加重要的作用。

  现代硬件设计规模逐渐增大,单个程序功能越来越复杂,当把多个功能复杂的程序集成到一个FPGA上实现时,由于各个程序的数据通路及所占用的资源可能冲突,使得FPGA控制模块的结构臃肿,影响了整个系统工作效率。

FPGA多重配置技术:利用SPI FLASH实现灵活启动方案

  通过FPGA的多重配置可以有效地精简控制结构的设计,同时可以用逻辑资源较少的FPGA器件实现需要很大资源才能实现的程序。以Virtex5系列开发板和配置存储器SPI FLASH为基础,从硬件电路和软件设计两个方面对多重配置进行分析,给出了多重配置实现的具体步骤,对实现复杂硬件设计工程有一定的参考价值。

  0引言

  现代硬件程序设计规模越来越大,功能越来越复杂,当多个应用程序同时在一个硬件平台上实现时,各个程序的资源使用和数据通路可能会冲突,这增加了控制电路设计的复杂程度,给开发人员增加了工作量和开发难度。通过多重配置,可以将多个应用程序根据需要分时加载到FPGA中,不仅精简了电路设计,而且使系统更加灵活。FPGA多重配置的特点可以让特定条件下的用户选择片上资源不多的FPGA去实现需要很多资源FPGA才能实现的功能,这大大降低了开发费用,同时提高了FPGA的利用率。

  Xilinx公司Virtex5系列的FPGA具有多重配置的特性,允许用户在不掉电重启的情况下,根据不同时刻的需求,可以从FLASH中贮存的多个比特文件选择加载其中的一个,实现系统功能的变换。

  1总体设计

  当FPGA完成上电自动加载初始化的比特流后,可以通过触发FPGA内部的多重启动事件使得FPGA从外部配置存储器(SPI FLASH)指定的地址自动下载一个新的比特流来重新配置。FPGA的多重配置可以通过多种方式来实现。本文采用的是基于ICAP核的状态机编码方式。通过调用Xilinx自带的ICAP核,编写状态机按照一定的指令流程对ICAP核进行不断的配置,可以控制FPGA重新配置。这种方式可以在源代码中加很多注释,让后来的开发者很清楚地明白ICAP核指令流顺序,以及多重配置地址计算方法,是一种简单实用的实现方法。

  1.1硬件电路

  多重配置的硬件主要包括FPGA板卡和贮存配置文件的FLASH芯片。FPGA选用XILINX公司Virtex-5系列中的ML507,该产品针对FPGA多重配置增加了专用的内部加载逻辑。FLASH芯片选用XILINX公司的SPI FLASH芯片M25P32,该芯片存贮空间为32 Mb,存贮文件的数量与文件大小以及所使用的FPGA芯片有关。实现多重配置首先要将FPGA和外部配置存储器连接为从SPI FLASH加载配置文件的模式。配置电路硬件连接框图如图1所示。

  多重配置电路图

  在FPGA配置模式中,M2,M1,M0为0,0,1,这种配置模式对应边界扫描加上拉,FPGA在这种模式下所有的I/O只在配置期间有效。在配置完成后,不用的I/O将被浮空[5].M2,M1,M0三个选择开关对应于ML507开发板上的SW3开关中的4,5,6位,在FPGA上电之前将上述开关拨为0,0,1状态。

  1.2软件设计

  从软件设计的角度可以将FPGA多重配置主要分为两个部分。第一部分是用户自己开发的程序,这一部分包括用户要在FPGA上边实现的功能,同时也包括为重载模块提供时钟信号,以及触发信号,本文触发信号是通过用户程序编写串口通信协议栈来接收PC端传输的数字作为触发信号。第二部分是FPGA重载配置模块。FPGA多重配置首先要调用ICAP核,当满足触发条件后,采用状态机编码的方式对ICAP核进行赋值配置。FPGA多重配置的软件结构图如图2所示。

  软件结构图

  重载模块首先要调用ICAP核。ICAP原语在Xilinx的编译软件ISE中调用,调用路径为Edit→LanguageTemplates,VHDL/Verilog→Device Primitive Instantia-tion→Virtex5FPGA→Config/BSCAN Components→In-ternal Config Access Por(t ICAP_VIRTEX5)。

  ICAP_VIRTEX5调用接口如下:

  

  ICAP核支持X8,X16,X32三种数据带宽模式。在整个FPGA重配置的过程中并没有用到ICAP核的输出,因此在重载模块的状态机控制程序中不关注BUSY,O信号的值,可以不对它们赋值。用户程序在使用接口时只需对CE,CLK,I,WRITE4个信号不断赋值来发送命令。

  在调用了ICAP核接口之后,通过Verilog编码的方式实现状态机。通过状态机发送IPROG指令给ICAP核,ICAP核在接收到这些指令后会根据指定的地址自动加载配置文件。

【限时免费】一键获取网络规划系统模板+传输架构设计+连通性评估方案

FPGA相关文章

服务电话:
400-035-6699
企服商城