Xilinx FPGA部分重配置操作流程

長弓的堅持發表於2016-11-03
部分重配置,既動態配置部分晶片時,晶片的其他部分可正常工作,且向晶片中下載部分
配置bit檔案時,晶片的DONE腳不被拉低。
使用FPGA的這一特性,可實現對晶片的分時複用。
首先做部分重配置的FPGA內部必須要有TBUF,因為在部分可重配置中,重配置模組和其它模組的連線要使用由TBUF構成的匯流排巨集(在設計中重配置模組不需要與其他模組連線的情況沒考慮過)。SpartanII, SpartanIIE, Virtex, Virtex2, Virtex2P, VirtexE 這些系列都可做部分重配置。
做部分重配置時生成的檔案很多,所以目錄的結構很重要。參考xilinx的應用文件,以只有一個重配置模組為例,實現部分重配置時使用如下目錄結構:
總目錄
|---ise_top 頂層設計的ISE工程
|---ise_top1 重配置後的頂層ISE工程
|---top 
| |---initial 生成整體約束
| |---assemble 組合各個模組
|
|---top1
| |---initial
| |---assemble
|
|---pims 各模組啟用後釋出在pims資料夾裡
| |---子模組名
| |---.......
|
|---module 各模組啟用過程使用的目錄
|---子模組名
|---...... 
具體操作(基於模組的部分重配置):
1、在ise_top工程中輸入設計的頂層檔案top.vhd,各模組必須是以“黑盒子”的形式出現,既各模組只宣告埠,內部沒有具體實現。綜合生成 top.ngc檔案。
2、將上面生成的ngc檔案拷貝到top資料夾中的initial資料夾中,在cmd中執行ngdbuild -modular initial top.ngc生成ngd檔案,再執行floorplanner top.ngd用ISE中的工具floorplanner對top.ngd進行區域和管教約束。之後儲存為ucf檔案,在ucf檔案中手動加入對匯流排巨集的約束。執行ngdbuild -modular initial -p xc2s50-5tq144 -uc top.ucf top。
3、在ise_top中綜合各個模組,注意在綜合時將綜合屬性對話方塊process properties中的xilinx specific options選項卡的 add i/o buffers項後的鉤取掉。將生成的ngc檔案和做好的匯流排巨集檔案拷貝到目錄module下的相應的資料夾中,在相應的資料夾目錄下執行如下操作:
ngdbuild -p xc2s50-5tq144 -modular module -active 子模組名 -uc ../../top/initial/top.ucf ../../top/initial/top.ngo,生成ngd檔案。
map top.ngd,對映。
par -w top.ncd top_routed.ncd,佈局佈線。
pimcreate -ncd top_routed.ncd -ngm top.ngm ../../Pims,釋出到pims資料夾中。
如果是重配置模組還需執行bitgen -d -w -g ActiveReconfig:Yes top_routed.ncd,生成可重配置的bit檔案。
4、各模組釋出完之後進行組合。將匯流排巨集拷貝到top資料夾中的assemble資料夾中,在此資料夾中執行如下命令實現組合:
ngdbuild -p xc2s50-5tq144 -modular assemble -pimpath ../../Pims -uc ../../top/initial/top.ucf ../../top/initial/top.ngo,生成整體的ngd檔案。
map top.ngd,對映。
par -w top.ncd top_routed.ncd,佈局佈線。
bitgen -w top_routed.ncd,生成bit檔案。
5、實現另一個重配置後的整體設計操作步驟與上同。

下載片子時,先下載整體的bit檔案,之後再下載部分重配置的bit檔案。

我做部分重配置時的步驟如上,最後生成的部分重配置bit檔案竟然和整體bit檔案大小一樣(應該是部分重配置bit檔案小於整體bit檔案),且下載部分重配置bit檔案時DONE腳被拉低了,顯然是不對的,不知是哪裡出了問題。思考......

相關文章