
Multiboot
丫头教之风行天下版权所有
风丫头 第 1 页 共 10 页
1 重配置Multiboot的应用需求
当多个应用程序同时在一个硬件平台上实现时,各个程序的资源使用和数据通路可能会冲突,
这增加了控制电路设计的复杂程度,给开发人员增加了工作量和开发难度。通过多重配置,可以将
多个应用程序根据需要分时加载到 FPGA 中,不仅精简了电路设计,而且使系统更加灵活。FPGA
多重配置的特点可以让特定条件下的用户选择片上资源不多的 FPGA 去实现需要很多资源 FPGA
才能实现的功能,这大大降低了开发费用,同时提高了 FPGA 的利用率。
2 ICAP实现Multiboot的原理介绍
FPGA 具有多重配置的特性,允许用户在不掉电重启的情况下,根据不同时刻的需求,可以从
FLASH 中贮存的多个比特文件选择加载其中的一个,实现系统功能的变换。
当 FPGA 完成上电自动加载初始化的比特流后,可以通过触发 FPGA 内部的多重启动事件使得
FPGA 从外部配置存储器(SPI FLASH)指定的地址自动下载一个新的比特流来重新配置。FPGA 的
多重配置可以通过多种方式来实现。本文采用的是基于 ICAP 原语的状态机编码方式。通过调用
Xilinx 自带的 ICAP 原语,编写状态机按照一定的指令流程对 ICAP 原语进行不断的配置,可以控
制 FPGA 重新配置。
2.1 IPROG指令序列
在调用了 ICAP 原语接口之后,通过 Verilog/VHDL 编码的方式实现状态机。通过状态机发送
IPROG 指令给 ICAP 原语,ICAP 原语在接收到这些指令后会根据指定的地址自动加载配置文件。
IPROG 指令的作用跟外部 Program_B 管脚的作用类似,都是对 FPGA 芯片进行复位操作,该
复位操作对 FPGA 内部的应用程序进行复位,复位过程中除专用配置管脚和 JTAG 管脚,其他输入
/输出管脚均为高阻态,同时 IPROG 指令不能复位专用重配置逻辑,如 WBSTAR 寄存器、TIMER
寄存器、BSPI 寄存器和 BOOTSTS 寄存器。IPROG 指令能够触发 FPGA 开启初始化流程,同时拉
低 INIT 和 Done 信号。完成复位操作后,将默认的加载地址用热启动地址寄存器(Warm Boot Start
Address,WB-STAR)中的新地址替换。
2.1.1 IPROG指令包
评论1