基于SPI FLASH的FPGA多重配置
當(dāng)狀態(tài)機(jī)從用戶程序接收到一個觸發(fā)條件后,會發(fā)送一系列如圖3所示的IPROG命令。Verilog編碼實現(xiàn)狀態(tài)機(jī)的過程中,必須按照圖3給出的指令順序發(fā)送這些IPROG命令,否則無法正確的與ICAP核通信。同時這些指令都具有自己特殊的定義而且必須服從Select-MAP數(shù)據(jù)順序,否則無法通信。IPROG指令的具體定義及說明如表1所示。
本文引用地址:http://www.ex-cimer.com/article/221428.htm在上述配置指令過程中,第五步Warm Boot StartAddress Register(WBSTAR)指定了滿足觸發(fā)條件的比特流在SPI FLASH中的起始地址,WBSTAR被賦值的地址必須和即將配置的bit流在SPI FLASH中的物理位置相同,否則FPGA就無法從外部讀取bit流。WBSTAR被賦值的數(shù)值都是提前根據(jù)程序的要求計算好的。計算WBSTAR值的時候需要了解WBSTAR寄存器每一位的具體含義,如圖5所示。
WBSTAR寄存器共31位,高三位是保留位,RS[1:0]
兩位指定了可以多重配置的bit流的個數(shù)。RS_TS_B是RS[1:0]的使能信號:0表示Disabled,1表示Enabled.
START_ADDR表示要回讀的比特流在外部配置存儲器的起始地址。狀態(tài)機(jī)在對WBSTAR進(jìn)行賦值時,要根據(jù)自己選擇的bit流個數(shù)以及對應(yīng)各個bit流在外部配置存儲器貯存的地址自行計算WBSTAR地址。這里以4個bit流為例說明WBSTAR地址的計算方法,如表2所示。狀態(tài)機(jī)使用的地址是服從SelectMAP數(shù)據(jù)順序的地址。FPGA專用配置邏輯在收到IPROG指令后,開始執(zhí)行內(nèi)部復(fù)位操作(JATG管角和重載控制部分不進(jìn)行復(fù)位操作),擦除板卡上原有的程序,從FLASH芯片中WBSTAR所指向的起始地址開始讀取新配置文件完成FPGA的重配置。
2多重配置的實現(xiàn)
Xilinx系列的FPGA需要將后綴名為mcs的內(nèi)存鏡像文件固化到外部配置存儲器中,F(xiàn)PGA上電后才能自動加載配置文件。一般的mcs文件只包含一個bit流文件,多重啟動的固化文件(。mcs)包含多bit流文件。在將多個bit流整合到mcs文件的過程中,需要指定每個bit流的起始地址,這樣FPGA專用配置邏輯才能根據(jù)地址找到對應(yīng)的bit流。首先將用戶開發(fā)的應(yīng)用程序和重載控制模塊添加到一個工程當(dāng)中,利用ISE編譯軟件生成位流文件(。bit)。由于Virtex5系列器件本身的特性,一般情況下生產(chǎn)的bit流文件大約為3 300 KB,而SPIFLASH的容量為32 Mb即4 MB,這個容量無法滿足在一個SPI FLASH上貯存多個bit流文件,需要對生成的bit流進(jìn)行壓縮。在用ISE軟件生成bit流文件時,當(dāng)完成了Synthesize-XST以及Implement Design后,執(zhí)行到最后一步Generate Programming File時,在Process Proper-ties中General Options選項中勾選Enable BitstreamCompression.通過這個壓縮設(shè)置可以對bit流進(jìn)行壓縮,壓縮后的bit流大約在500~600 KB之間,可以滿足在一個容量為32 Mb的SPI FLASH上貯存多個bit流文件。其次將需要進(jìn)行重配置的多個位流文件拷貝至一個工程目錄下,有兩種方法可以將多個bit流整合為一個mcs文件。第一種方法是通過ISE編譯軟件的命令行窗口,使用命令行命令將多個位流文件合并為一個FLASH存貯芯片M25P32中燒寫的內(nèi)存鏡像文件(。mcs)。第二種方法是用Impact軟件創(chuàng)建MultibootSPI FLASH,選擇相應(yīng)的FPGA型號和FLASH的容量以及要包含的bit流的個數(shù)(版本的個數(shù))。本文使用第一種方法來將多個bit流文件形成一個內(nèi)存鏡像文件(。mcs)。使用promgen命令的具體格式為:
promgen -spi -pmcs -oMulitBoot.mcs-s4096 -u0rev0.bit -u100000rev1.bit -u200000rev0.bit -u300000rev0.bit命令中各參數(shù)的說明如下所述。-spi:表示生成的mcs文件要固化到SPI FLASH中;-p mcs:生成文件的格式是mcs格式;-o ML507.mcs:要生成的文件名,可以根據(jù)需要修改;-s 4096:定義了外部存儲器的容量,4096表示32 Mb;- u 0rev0.bit:表示名字為rev0的比特流文件在外部存儲器的起始地址為0;-u 100000 rev1.bit:表示名字為rev1的比特流文件在外部貯存的起始地址為100000.在生成mcs文件后,通過IM-PACT軟件將mcs文件固化到SPI FLASH中。
FPGA上電自動從外部SPI FLASH加載一個初始化的bit流,當(dāng)需要執(zhí)行新的程序時,會根據(jù)觸發(fā)條件以及啟動地址重新配置。在實驗中,通過PC機(jī)串口終端發(fā)送指令當(dāng)做觸發(fā)條件實現(xiàn)多重配置。在實際應(yīng)用中,還可以根據(jù)具體硬件實現(xiàn),采用其他通信方式傳送控制指令來進(jìn)行觸發(fā)。
3結(jié)語
本文通過硬件電路和軟件設(shè)計兩個方面對FPGA的多重配置方法進(jìn)行了詳細(xì)介紹,本文所介紹的多重配置方法靈活方便、易于操作、電路簡單,在工程中有很高的應(yīng)用價值,同時關(guān)于bit流壓縮的方法也值得參考。
fpga相關(guān)文章:fpga是什么
存儲器相關(guān)文章:存儲器原理
評論