基于SPI FLASH的FPGA多重配置 下载本文

内容发布更新时间 : 2024/5/2 20:16:49星期一 下面是文章的全部内容请认真阅读。

基于 SPI FLASH 的 FPGA 多重配置

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

现代硬件设计规模逐渐增大,单个程序功能越来越复杂,当把多个功能 复杂的程序集成到一个 FPGA 上实现时,由于各个程序的数据通路及所占用的 资源可能冲突,使得 FPGA 控制模块的结构臃肿,影响了整个系统工作效率。 通过 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.2 软件设计 从软件设计的角度可以将 FPGA 多重配置主要分为两个部分。第一部分 是用户自己开发的程序,这一部分包括用户要在 FPGA 上边实现的功能,同时 也包括为重载模块提供时钟信号,以及触发信号,本文触发信号是通过用户程 序编写串口通信协议栈来接收 PC 端传输的数字作为触发信号。第二部分是 FPGA 重载配置模块。FPGA 多重配置首先要调用 ICAP 核,当满足触发条件后, 采用状态机编码的方式对 ICAP 核进行赋值配置。FPGA 多重配置的软件结构 图如图 2 所示。

tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!