fpga在线升级 linux_Xilinx FPGA程序升级

Xilixn FPGA提供了一种在线升级的方式,可以通过ICAP指令实现。ICAP(Internal Configuration Access Port) 指的是内部配置访问端口,其主要作用是通过内部配置访问端口(ICAP),用户可以在FPGA逻辑代码中直接读写FPGA内部配置寄存器(类似SelectMAP),从而实现特定的配置功能,例如Multiboot。FPGA实现IPROG通常有两种方式,一种是通过ICAP配置,一种是把相关指令嵌入bit文件中。与通过bit文件实现IPROG相比,通过ICAP更灵活。对Xilinx FPGA的升级其实是Multiboot的操作。如下图所示,基地址存放的是Golden Image(bootloader),而高地址存放的是MultiBoot Image。小编会在本文对Xilinx 7系列的MulTIboot做一些简单介绍。

fpga在线升级 linux_Xilinx FPGA程序升级_第1张图片程序在启动的过程中,首先会加载MultiBoot Image,然后判断配置是否成功,这一步一般都是由外部电路决定,如果成功,则FPGA芯片上运行的是MultiBoot Image,如果失败,程序会自动返回到Golden Image。

1.STARTUP原语

我们都知道fpga掉电程序会丢失,一般使用外部flash存储代码,flash有spi、bpi、qspi等接口,外部存储器的时钟管脚一般与fpga的CCLK_0连接(BANK0),当使用远程更新时,首先fpga内部有控制flash的驱动(即逻辑控制flash时序)的时钟,当然flash时钟也需要控制了,但这时时钟管脚已经连接到CCLK_0,这时候就需要用STARTUPE2(7系列),SPANTAN系列使用STARTUPE原语,而UltraScale系列使用STARTUPE3原语,小编使用的是xc7k325的器件,所以:

STARTUPE2 #(

.PROG_USR("FALSE"), // Activate program event security feature. Requires encrypted bitstreams.

.SIM_CCLK_FREQ(0.0) // Set the Configuration Clock Frequency(ns) for simulation

)

STARTUPE2_inst

(

.CFGCLK(), // 1-bit output: Configuration main clock output

.CFGMCLK(), // 1-bit output: Configuration internal oscillator clock output

.EOS(), // 1-bit output: Active high output signal indicating the End Of Startup.

.PREQ(), // 1-bit output: PROGRAM request to fabric output

.CLK(0), // 1-bit input: User start-up clock input

.GSR(0), // 1-bit input: Global Set/Reset input (GSR cannot be used for the port name)

.GTS(0), // 1-bit input: Global 3-state input (GTS cannot be used for the port name)

.KEYCLEARB(1), // 1-

你可能感兴趣的:(fpga在线升级,linux)