Xilinx的双镜像方案成为Multiboot。本文对Xilinx 7系列的MulTIboot做一些简单介绍。
MulTIboot直接操作的是两个镜像,但实际上可以用于多个镜像。为了便于描述,MulTIboot中的两个镜像分别为G镜像(Golden)和M镜像(MulTIboot)。
从上图可以看到,Xilinx 7系列FPGA的Multiboot方案是从基地址开始存放G镜像,后续存放M镜像。加载过程中是先加载M镜像,配置完成后如果成功,则运行M镜像;如果运行失败,则重新加载G镜像。
IRPOG命令序列是实现FPGA重加载的重要环节。IPROG命令的效果与在PROGRAM_B引脚产生一个脉冲的效果类似,但是IPROG命令不对重配置[4]逻辑进行复位。Kintex7内部ICAPE2模块能够执行IPROG命令,IPROG命令触发FPGA从SPI Flash中重新加载比特文件,加载地址是Kintex7中WBSTAR寄存器指定的地址。IPROG命令发送后,FPGA完成3个动作:发送同步字节(AA995566);向Kintex7的WBSTAR寄存器写入下一个加载地址(表1地址为00000000);发送IPORG命令(0000000F)。表1是通过ICAPE2向重配置模块发送IPROG命令的比特流,Multiboot[5]控制器用一个状态机向ICAPE2发送表1中的IPROG命令序列。一般情况下,重配置控制器等待外部的激励信号,当激励信号到达后,控制器向ICAPE2发送表1命令序列,在发送命令序列之前,控制器先把WRITE端口置为低电平,在下一个时钟的上升沿把CE端口置为低电平,接下来发送表1指令序列。
需要注意的是Flash的地址为24bit时候,需要将该Warm addr的高24位置为所需要的切换的镜像地址。