Xilinx FPGA 配置之ICAP

在網絡通信中ICAP通常指Internet Content Adaptation Protocol,但在Xilinx FPGA 中ICAP(Internal Configuration Access Port) 指的是內部配置訪問端口,其主要作用是通過內部配置訪問端口(ICAP),用戶可以在FPGA邏輯代碼中直接讀寫FPGA內部配置寄存器(類似SelectMAP),從而實現特定的配置功能,例如Multiboot。FPGA實現IPROG通常有兩種方式,一種是通過ICAP配置,一種是把相關指令嵌入bit文件中。與通過bit文件實現IPROG相比,通過ICAP更靈活。

ICAP目前爲止有三個版本,包括ICAPICAPE2以及ICAPE3。 UltraScale系列對應ICAPE3,7系列對應ICAPE2,7系列之前的對應ICAP。每個版本有少許區別。

以下以ICAPE3 爲例,ICAPE3 的接口如下:

在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述
每個UltraScale系列的FPAG包括2個ICAPE3,但實際使用時只能例化並使用一個,默認頂部ICAPE3, 初級玩家採用默認的即可。

通過ICAP發送IPROG指令實現Multiboot的步驟如下:
在這裏插入圖片描述
首先寫入同步頭 32’hAA995566, 然後將需要跳轉到的bit文件的起始地址寫入WBSTAR寄存器,最後寫入IPROG(internal PROGRAM_B)指令。

這裏需要注意一點,ICAP以及SelectMAP都存在位反轉(Bit Swapping),也就是說,上表中所有的數據需要進行位反轉之後才能接到ICAP的輸入接口,同理,ICAP輸出的值需要進行位反轉後才能與實際的值對應起來,位反轉的示例如下圖。

在這裏插入圖片描述
Bit Swapping 可參考以下Verilog語句

  genvar i,j;
  for (i=0; i<4; i=i+1) begin: GEN_ICAP_BIT_SWAP_I
    for (j=0; j<8; j=j+1) begin: GEN_ICAP_BIT_SWAP_J
      assign icap_din[i*8+j] = fsm_output[i*8+7-j];
      assign fsm_input [i*8+j] = icap_dout[i*8+7-j];
    end
  end

ICAPE3 例化示例如下(UG974)

// ICAPE3: Internal Configuration Access Port
// UltraScale
// Xilinx HDL Language Template, version 2019.1
ICAPE3 #(
.DEVICE_ID(32'h03628093),//pre-programmed Device ID value,used for simulation
// purposes.
.ICAP_AUTO_SWITCH("DISABLE"),//Enable switch ICAP using sync word
.SIM_CFG_FILE_NAME("NONE")//Raw Bitstream (RBT) file,parsed by the simulation
// model
)
ICAPE3_inst (
.AVAIL(AVAIL), // 1-bit output: Availability status of ICAP
.O(O), // 32-bit output: Configuration data output bus
.PRDONE(PRDONE),//1-bit output: Indicates completion of Partial Reconfiguration
.PRERROR(PRERROR),//1-bit output: Indicates Error during Partial Reconfiguration
.CLK(CLK), // 1-bit input: Clock input
.CSIB(CSIB), // 1-bit input: Active-Low ICAP enable
.I(I), // 32-bit input: Configuration data input bus
.RDWRB(RDWRB) // 1-bit input: Read/Write Select input
);
// End of ICAPE3_inst instantiation

參考文檔
UG974 UltraScale Architecture Libraries Guide
UG470 7Series_Config
UG570 ultrascale-configuration

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章