□趙 鵬 申正義 張 勇
現(xiàn)階段,高密度FPGA 生產(chǎn)工藝實(shí)現(xiàn)難度增大,而且在使用時(shí)布線(xiàn)復(fù)雜度也呈幾何數(shù)上升,然而局部動(dòng)態(tài)可重構(gòu)(Dynamic Partial Reconfiguration,DPR)技術(shù)的提出解決了這個(gè)問(wèn)題。局部動(dòng)態(tài)可重構(gòu)是指重新配置時(shí)僅配置FPGA 部分區(qū)域,重構(gòu)過(guò)程中,F(xiàn)PGA 其余部分的工作不受影響。該方式減少了單元數(shù)目和重構(gòu)范圍,從而大大縮短了FPGA 的重構(gòu)時(shí)間。
局部動(dòng)態(tài)重構(gòu)中,系統(tǒng)被劃分為靜態(tài)模塊和動(dòng)態(tài)模塊,其中動(dòng)態(tài)模塊即是可重構(gòu)部分。靜態(tài)模塊間的通信可以通過(guò)簡(jiǎn)單的直接路由實(shí)現(xiàn),對(duì)于動(dòng)態(tài)與靜態(tài)模塊間和動(dòng)態(tài)與動(dòng)態(tài)模塊間的通信就由總線(xiàn)宏來(lái)實(shí)現(xiàn)。局部動(dòng)態(tài)重構(gòu)設(shè)計(jì),總線(xiàn)宏部分作為難點(diǎn)不易實(shí)現(xiàn),文獻(xiàn)[1]中提出了總線(xiàn)宏的分類(lèi)和結(jié)構(gòu)分析,文獻(xiàn)[2]中提出的總線(xiàn)宏設(shè)計(jì)流程是基于三態(tài)緩沖器(TBUF)針對(duì)老式芯片的設(shè)計(jì)方法,文獻(xiàn)[3]中提出了EAPR 設(shè)計(jì)流程中的基于slice 的總線(xiàn)宏設(shè)計(jì)方法,但其僅局限在靜態(tài)模塊和動(dòng)態(tài)模塊間的總線(xiàn)宏通信,未涉及動(dòng)態(tài)模塊間的總線(xiàn)宏設(shè)計(jì),所以局限了EAPR 設(shè)計(jì)的靈活性,不利于EAPR 應(yīng)用在更為復(fù)雜的電路設(shè)計(jì)。
本設(shè)計(jì)方法是以ML505 開(kāi)發(fā)板為硬件實(shí)驗(yàn)平臺(tái),以ISE9.1i 和PlanAhead9.2.7 系列軟件為依托進(jìn)行動(dòng)態(tài)模塊間的總線(xiàn)宏通信研究。與傳統(tǒng)的總線(xiàn)宏設(shè)計(jì)不同,EAPR 的總線(xiàn)宏不再需要復(fù)雜的編程,而是通過(guò)模塊例化,在軟件中進(jìn)行可視化的操作實(shí)現(xiàn)。下面通過(guò)一個(gè)實(shí)例具體解析動(dòng)態(tài)模塊間總線(xiàn)宏的實(shí)現(xiàn)過(guò)程。
(一)獲取官方總線(xiàn)宏nmc 文件。首先在Xilinx 官網(wǎng)注冊(cè)用戶(hù),進(jìn)入總線(xiàn)宏下載頁(yè)選則相應(yīng)芯片,由于這里采用的是ML505 開(kāi)發(fā)板,所以選擇XC5VLX50T 系列,而后下載得到busmacro_xc5v_async.nmc 文件[4]。
(二)總線(xiàn)宏模塊的例化與連線(xiàn)。在EAPR 設(shè)計(jì)方法中,總線(xiàn)宏必須在ISE9.1i 軟件中進(jìn)行HDL 設(shè)計(jì)描述和綜合,只有建立black box 并定義輸入輸出才可以在后續(xù)程序中調(diào)用。通過(guò)頂層文件對(duì)總線(xiàn)宏模塊的例化程序如下:
module busmacro_xc5v_async(input0,input1,input2,input3,output0,output1,output2,output3);
input input 0,input 1,input 2,input 3;
output out0,out1,out2,out3;
endmodule
通過(guò)前期實(shí)驗(yàn),針對(duì)動(dòng)態(tài)模塊間的通信僅使用一級(jí)總線(xiàn)宏,在步驟方法一致情況下會(huì)在最后的檢測(cè)分析中反復(fù)報(bào)錯(cuò),無(wú)法繼續(xù)進(jìn)行工程設(shè)計(jì),且在其他類(lèi)文獻(xiàn)中沒(méi)有相應(yīng)解決方法。嘗試性地為兩個(gè)動(dòng)態(tài)模塊各分配一級(jí)總線(xiàn)宏,在HDL 程序中,我們定義了bm2 和bm4 兩個(gè)總線(xiàn)宏的連線(xiàn),聲明了四個(gè)端口(bm2_bm4[0.1.2.3]),相應(yīng)Verilog 代碼如下:
busmacro_xc5v_async bm2(
.input0(prm_bm2[0]),
……
.input3(prm_bm2[3]),
.output0(bm2_bm4[0]),
……
.output3(bm2_bm4[3])
);
busmacro_xc5v_async bm4(
.input0(bm2_bm4[0]),
……
.input3(bm2_bm4[3]),
.output0(bm2_prm1[0]),
……
.output3(bm2_prm1[3])
);
(三)重構(gòu)區(qū)域的建立和總線(xiàn)宏設(shè)置。在經(jīng)過(guò)綜合后生成網(wǎng)表文件,進(jìn)入PlanAhead9.2.7 建立工程[5]。如圖1,利用該軟件可視化的優(yōu)點(diǎn)在芯片中分配兩個(gè)動(dòng)態(tài)可重構(gòu)區(qū)域PRM 和PRM1,區(qū)域大小取決于后續(xù)應(yīng)用于該動(dòng)態(tài)區(qū)域需要的硬件單元數(shù)量,且動(dòng)態(tài)區(qū)域相互獨(dú)立不能交集。
圖1 分配動(dòng)態(tài)可重構(gòu)區(qū)域
重構(gòu)區(qū)域設(shè)置完成后在Netlist 窗口下,選擇總線(xiàn)宏bm2,并通過(guò)單擊菜單欄中Create Site Constraint Mode圖標(biāo) 將其激活,然后將其拖置于動(dòng)態(tài)區(qū)域prm 中。bm4 的放置區(qū)域?yàn)閜rm1,放置方法同bm2,如圖2 中兩個(gè)總線(xiàn)宏都設(shè)置好后可以看到建立在動(dòng)態(tài)區(qū)域間的總線(xiàn)宏通信連線(xiàn)。
圖2 動(dòng)態(tài)模塊間總線(xiàn)宏連線(xiàn)
在端口和時(shí)鐘都設(shè)置成功后,EAPR 設(shè)計(jì)的檢測(cè)部分依然是在PlanAhead9.2.7 軟件環(huán)境下完成的。PlanAhead9.2.7包含有設(shè)計(jì)規(guī)則檢查工具(Design Rule Check,DRC),我們可以通過(guò)工具欄中“Tools -RunDRC”選項(xiàng),如果工程符合設(shè)計(jì)規(guī)則在DRC Results 中將顯示檢查通過(guò),如圖3,僅有四個(gè)警告是由于四個(gè)端口懸空造成,所以可以得出結(jié)論應(yīng)用此類(lèi)方法動(dòng)態(tài)模塊間的總線(xiàn)宏可以實(shí)現(xiàn)。
圖3 工程檢測(cè)與分析圖
本文提出了一種基于EAPR 技術(shù)的動(dòng)態(tài)模塊間總線(xiàn)實(shí)現(xiàn)方法。通過(guò)為兩個(gè)動(dòng)態(tài)模塊分別配置一級(jí)總線(xiàn)宏的方式完成了EAPR 設(shè)計(jì),并通過(guò)分析仿真驗(yàn)證了新方法的正確性,提高了EAPR 在工程上應(yīng)用的靈活性,拓寬其使用范圍,具有一定推廣性。
[1]喬守明,祝洪珍,王偉.動(dòng)態(tài)重構(gòu)中總線(xiàn)宏的結(jié)構(gòu)與實(shí)現(xiàn)[J].開(kāi)發(fā)研究與設(shè)計(jì)技術(shù),2007
[2]趙秋桂,段青亞.FPGA 動(dòng)態(tài)局部可重構(gòu)中基于TBUF 總線(xiàn)宏設(shè)計(jì)[J].嵌入式技術(shù),2009
[3]肖松,李躍華,張金林.一種DPR 中總線(xiàn)宏的設(shè)計(jì)方法[J].電子設(shè)計(jì)工程,2011
[4]Xilinx Inc.Early Access Partial Reconfiguration User Guide[EB/OL].2006 -3 -6.http://www.xilinx.com/.
[5]Brian Jackson.Partial Reconfiguration Design with PlanAhead 9.2[EB/OL].2007 -8 -2.http://www.xilinx.com/.