multiboot之ICAP
目錄
 0.前言
 1.ICAP的例化
 2.ICAP指令實現(xiàn)
 3.比特位交換
 4.跳轉(zhuǎn)與fallback約束
 5.生成mcs鏡像
 6.測試demo
0.前言
multiboot作為更新程序的一種方法,在FPGA的實現(xiàn)方法是將兩個bit文件合成為一個mcs鏡像。
 但是,flash默認只讀取第一個從0開始的bit。要跳轉(zhuǎn)到第二個bit文件時,可以用icap控制。
 
1.ICAP的例化
(1)使用原語:在vivado的Language template選項中可以找到標準語法,其中包括IP的調(diào)用,icap原語例化如下:
//icap核的調(diào)用ICAPE2 #(.DEVICE_ID(32'h362D093), // Specifies the pre-programmed Device ID value to be used for simulation// purposes..ICAP_WIDTH("X32"), // Specifies the input and output data width..SIM_CFG_FILE_NAME("NONE") // Specifies the Raw Bitstream (RBT) file to be parsed by the simulation// model.)ICAPE2_inst (.O(O), // 32-bit output: Configuration data output bus.CLK(sys_clk), // 1-bit input: Clock Input.CSIB(CE), // 1-bit input: Active-Low ICAP Enable.I(I), // 32-bit input: Configuration data input bus.RDWRB(WRITE) // 1-bit input: Read/Write Select input);(2)其中設(shè)備號需要查找USER GUIDE手冊,如7serials-user guider.pdf,以Artix A7-35T為例
 
(3)icap的指令也可以在用戶手冊找到,如圖:
 
2.ICAP指令實現(xiàn)
parameter DUMMY_WORD = 32'hffff_ffff; //偽指令,不進行操作,實際上為等待狀態(tài) parameter SYNC_WORD = 32'haa99_5566; //跳轉(zhuǎn)指令同步字 parameter T1WBS = 32'h3002_0001; //type1 寫入跳轉(zhuǎn)空間的字節(jié) parameter WBSA = 32'h0040_0000; //跳轉(zhuǎn)空間地址,可以根據(jù)bit大小修改 parameter T1CMD = 32'h3000_8001; //type1 寫入的控制指令字 parameter IPROG = 32'h0000_000f; //跳轉(zhuǎn)到下一個程序的控制指令 parameter T1NOOP = 32'h2000_0000; //中斷指令//實現(xiàn)指令的跳轉(zhuǎn)可以使用計數(shù)器或狀態(tài)機,以計數(shù)器為例always@(posedge sys_clk or negedge sys_rst_n) begin if(!sys_rst_n)I_reg<=DUMMY_WORD;//初始狀態(tài)下為等待狀態(tài) else if(work_en==1'b1)case(clk_cnt)0: I_reg <= DUMMY_WORD; 1: I_reg <= SYNC_WORD; 2: I_reg <= T1NOOP; 3: I_reg <= T1WBS; 4: I_reg <= WBSA; 5: I_reg <= T1CMD;6: I_reg <= IPROG; 7: I_reg <= T1NOOP; default:I_reg<=DUMMY_WORD; //在錯誤情況下進入等待狀態(tài)endcase elseI_reg<=DUMMY_WORD; //在非工作狀況下進入等待狀態(tài) end其中可以自己配置的是跳轉(zhuǎn)地址,具體兩個bit文件的地址可以查看prm文件
=================================== Configuration Memory information =================================== File Format MCS Interface SPIX1 Size 16M Start Address 0x00000000 End Address 0x00FFFFFFAddr1 Addr2 Date File(s) 0x00000000 0x0021728B Apr 24 23:41:53 2020 G:/Xilinx/practice/icap/golden_imag/golden/golden.runs/impl_1/top_icap.bit 0x00800000 0x0082F093 Apr 24 23:27:51 2020 G:/Xilinx/practice/icap/updated_imag/led2/led2.runs/impl_1/a_led.bit3.比特位交換
根據(jù)flash的讀寫特性,每一個byte內(nèi)高低位需要互換
 
 32位互換可以用賦值的方法
4.跳轉(zhuǎn)與fallback約束
 Golden Image是指穩(wěn)定工作的鏡像系統(tǒng),Updata Image是指升級的功能鏡像包,兩個工程中都需要添加約束
5.生成mcs鏡像
 將兩個工程的bit文件添加到一起,分別設(shè)置起始地址,即可生成mcs燒制到板上測試。
6.測試demo
以Arty A7-35T為例成功測試了一個完整的ICAP功能
總結(jié)
以上是生活随笔為你收集整理的multiboot之ICAP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java compiler类_Java_
- 下一篇: 十进制负数转化成二进制
