方式一 (bitstream):
若MultiBoot Image启动失败,则运行Golden Image;
MultiBoot Image起始地址为0x007FFFFF
;
Golden Image 的XDC配置:
#bit compress
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 2 [current_design]
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]
#8 MByte
set_property BITSTREAM.CONFIG.NEXT_CONFIG_ADDR 0X7FFFFF [current_design]
set_property BITSTREAM.CONFIG.NEXT_CONFIG_REBOOT Enable [current_design]
MultiBoot Image的XDC配置:
#bit compress
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.GENERAL.COMPRESS true [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 2 [current_design]
set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]
#FALLBACK
set_property BITSTREAM.CONFIG.CONFIGFALLBACK Enable [current_design]
注:这里用的是16MByte的Flash。
方式二(ICAP2):
module ICAP2_RTL(
input wire sclk //25MHZ
);
//延迟5秒后跳转到下一个IMAGE
localparam SECOND_TIME = 65535;
localparam FIVE_S = 1907;
reg [15:0] second_cnt = 'd0;
reg [10:0] five_s_cnt = 'd0;
reg setup_flag = 'd0;
reg setup_flag1= 'd0;
//----------------------------------------------------
localparam IDLE = 9'b0000_00001;
localparam DUMMY_WORD = 9'b0000_00010;
localparam SYNC_WORD = 9'b0000_00100;
localparam TYPE1_NO_OP0 = 9'b0000_01000;
localparam TWW_TO_WBSTAR = 9'b0000_10000;
localparam WBSA = 9'b0001_00000;
localparam TWW_TO_CMD =