基于SPI FLASH的FPGA多重配置
重載模塊首先要調(diào)用ICAP核。ICAP原語(yǔ)在Xilinx的編譯軟件ISE中調(diào)用,調(diào)用路徑為Edit→LanguageTemplates,VHDL/Verilog→Device Primitive Instantia-tion→Virtex5FPGA→Config/BSCAN Components→In-ternal Config Access Por(t ICAP_VIRTEX5)。
本文引用地址:http://www.ex-cimer.com/article/221428.htmICAP_VIRTEX5調(diào)用接口如下:
ICAP核支持X8,X16,X32三種數(shù)據(jù)帶寬模式。在整個(gè)FPGA重配置的過(guò)程中并沒(méi)有用到ICAP核的輸出,因此在重載模塊的狀態(tài)機(jī)控制程序中不關(guān)注BUSY,O信號(hào)的值,可以不對(duì)它們賦值。用戶(hù)程序在使用接口時(shí)只需對(duì)CE,CLK,I,WRITE4個(gè)信號(hào)不斷賦值來(lái)發(fā)送命令。
在調(diào)用了ICAP核接口之后,通過(guò)Verilog編碼的方式實(shí)現(xiàn)狀態(tài)機(jī)。通過(guò)狀態(tài)機(jī)發(fā)送IPROG指令給ICAP核,ICAP核在接收到這些指令后會(huì)根據(jù)指定的地址自動(dòng)加載配置文件。
IPROG指令的作用是對(duì)FPGA芯片進(jìn)行復(fù)位操作,該復(fù)位操作對(duì)FPGA內(nèi)部的應(yīng)用程序進(jìn)行復(fù)位,復(fù)位過(guò)程中除專(zhuān)用配置管腳和JTAG管腳,其他輸入/輸出管腳均為高阻態(tài)。完成復(fù)位操作后,將默認(rèn)的加載地址用熱啟動(dòng)地址寄存器(Warm Boot Start Address,WB-STAR)中的新地址替換。
在發(fā)送IPROG指令之前,需要對(duì)ICAP核進(jìn)行預(yù)配置。重載控制模塊在收到觸發(fā)信號(hào)后,第一個(gè)時(shí)鐘周期將ICAP核的WRITE信號(hào)和CE信號(hào)置高,第二個(gè)周期將WRITE信號(hào)置底,CE信號(hào)置高,第三個(gè)周期將WRITE信號(hào)置底,CE信號(hào)也置底。接著在下面的8個(gè)時(shí)鐘周期里,將指令隊(duì)列中的控制命令逐個(gè)發(fā)出。狀態(tài)機(jī)指令流程如圖3所示。
在狀態(tài)機(jī)發(fā)送IPROG指令的過(guò)程中,為了保證ICAP核接收到正確的指令,每一個(gè)發(fā)送出去的命令和數(shù)據(jù)必須遵循SelectMAP數(shù)據(jù)順序。SelectMAP數(shù)據(jù)順序是將每個(gè)指令都按字節(jié)劃分,劃分后每個(gè)字節(jié)的數(shù)據(jù)都按比特位翻轉(zhuǎn)。如果為“X32”模式,則劃分為4個(gè)字節(jié),每個(gè)字節(jié)進(jìn)行位翻轉(zhuǎn)。圖4以“X16”為例說(shuō)明Se-lectMAP數(shù)據(jù)順序。
fpga相關(guān)文章:fpga是什么
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論