• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      FPGA動(dòng)態(tài)局部可重構(gòu)中基于TBUF總線宏設(shè)計(jì)

      2010-05-13 08:46:00趙秋桂,段青亞
      現(xiàn)代電子技術(shù) 2009年12期

      趙秋桂,段青亞

      摘 要:FPGA動(dòng)態(tài)局部可重構(gòu)技術(shù)通常將系統(tǒng)劃分為固定模塊和可重構(gòu)模塊,可重構(gòu)模塊與其他模塊之間的通信都是通過使用特殊的總線宏實(shí)現(xiàn)的??偩€宏的正確設(shè)計(jì)是實(shí)現(xiàn)FPGA動(dòng)態(tài)局部可重構(gòu)技術(shù)的關(guān)鍵。在研究了FPGA動(dòng)態(tài)局部可重構(gòu)技術(shù)中基于三態(tài)緩沖器(Tri-state Buffer,TBUF)總線宏結(jié)構(gòu)的基礎(chǔ)上,采用Xilinx ISE FPGA Editor可視化的方法實(shí)現(xiàn)總線宏的設(shè)計(jì),并借助可重構(gòu)硬件平臺(tái)——XCV800驗(yàn)證板,通過設(shè)計(jì)動(dòng)態(tài)可重構(gòu)實(shí)驗(yàn),論證總線宏設(shè)計(jì)的正確性。

      關(guān)鍵詞:FPGA動(dòng)態(tài)局部可重構(gòu);總線宏;三態(tài)緩沖器;FPGA編輯器

      中圖分類號(hào):TP368.1文獻(xiàn)標(biāo)識(shí)碼:B

      文章編號(hào):1004-373X(2009)12-022-03

      Design of Bus Macro-based TBUF for FPGA Dynamic Reconfiguration

      ZHAO Qiugui,DUAN Qingya

      (Xi′an Microelectronics Technology Institution,Xi′an,710054,China)

      Abstract:FPGA dynamic partial reconfiguration always divides a system into static modules and reconfigurable modules.The communication between reconfigurable modules and the other modules should be implemented with the special bus macro.The bus macro correctly designed is the key to the implementation of FPGA dynamic partial reconfiguration.This paper researches structure of the bus macro which is based on TBUF for FPGA dynamic partial reconfiguration,implements its design with the method of Xilinx ISE FPGA Editor,and verifies the validity of the design through the experiment of dynamic reconfiguration,with the help of reconfigurable hardware platform of XCV800.

      Keywords:FPGA dynamic partial reconfiguration;bus macro;tri-state buffer;FPGA editor

      0 引 言

      FPGA動(dòng)態(tài)局部可重構(gòu)技術(shù)是指允許可重構(gòu)的器件或系統(tǒng)的一部分進(jìn)行重新配置,配置過程中其余部分的工作不受影響。動(dòng)態(tài)局部可重構(gòu)縮短了重構(gòu)的時(shí)間,減少了系統(tǒng)重構(gòu)的開銷,提高了系統(tǒng)的運(yùn)行效率。局部動(dòng)態(tài)可重構(gòu)技術(shù)中通常將系統(tǒng)劃分為固定模塊和可重構(gòu)模塊??芍貥?gòu)模塊與其他模塊之間的通信(包括可重構(gòu)模塊和固定模塊之間、可重構(gòu)模塊和可重構(gòu)模塊之間)都是由總線宏實(shí)現(xiàn)的[1]。

      動(dòng)態(tài)可重構(gòu)技術(shù)在FPGA中的實(shí)現(xiàn)是Xilinx公司首先提出的,并且提供了相應(yīng)的開發(fā)工具和開發(fā)流程。他們從Virtex系列器件開始支持動(dòng)態(tài)可重構(gòu)技術(shù),同時(shí)他們提供了現(xiàn)成的總線宏文件給動(dòng)態(tài)可重構(gòu)系統(tǒng)開發(fā)者使用,但是它們提供的總線宏設(shè)計(jì)與軟件版本的兼容性很差。Xilinx提供的總線宏可能因?yàn)檐浖姹镜膯栴}會(huì)無法正常使用,所以用戶需要借助正在使用的版本軟件設(shè)計(jì)總線宏,以實(shí)現(xiàn)FPGA動(dòng)態(tài)局部可重構(gòu)設(shè)計(jì)。

      在研究總線宏的結(jié)構(gòu)基礎(chǔ)上,采用FPGA Editor可視化的方法設(shè)計(jì)基于TBUF的總線宏,并通過FPGA動(dòng)態(tài)可重構(gòu)實(shí)驗(yàn)驗(yàn)證了該方法的正確性。

      1 基于TBUF的總線宏結(jié)構(gòu)

      在不同系列的Xilinx FPGA器件中,使用不同的總線宏來實(shí)現(xiàn)動(dòng)態(tài)局部可重構(gòu)技術(shù)。在Virtex,Virtex-E,Virtex-Ⅱ Pro X,Spartan-Ⅱ,Spartan-ⅡE和Spartan-3系列器件中所使用的總線宏都是基于TBUF的,可重構(gòu)模塊的位置固定不變;在Virtex4,Virtex5更高性能的器件中,所使用的總線宏是基于Slice的,可重構(gòu)模塊的位置是可變的;而Virtex-Ⅱ,Virtex-Ⅱ Pro所使用的總線宏既可以基于TBUF,也可以基于Slice[2,3]。

      目前,使用最多的總線宏[4],其物理實(shí)現(xiàn)是使用8個(gè)三態(tài)緩沖器(TBUF),實(shí)現(xiàn)4位的雙向通信。每個(gè)TBUF占用1位,每位使用1根TBUF長線,從FPGA 的最左側(cè)到最右側(cè),如圖1所示。TBUF的T端是三態(tài)使能端口;I端是數(shù)據(jù)輸入端口;O是數(shù)據(jù)輸出端口。相應(yīng)地,總線宏的T端(LT和RT)是方向控制端口,控制總線宏從左或從右輸出;I端(LI和RI)是數(shù)據(jù)輸入端口;O端(LO和RO)是數(shù)據(jù)輸出端口。

      總線宏的信息通信是雙向的,既可以從左到右,也可以從右到左。但是對于一個(gè)設(shè)計(jì)來說,一旦信息通信方向確定以后就不能再改變??偩€宏的位置精確地跨騎在模塊A和模塊B之間(A或B是可重構(gòu)模塊,或AB全是可重構(gòu)模塊),其中四柵三態(tài)緩沖器在模塊A內(nèi),另外四柵在B內(nèi)。對于Virtex-Ⅱ等系列器件,因內(nèi)部結(jié)構(gòu)不同,故兩柵跨騎在模塊A內(nèi),另外兩柵跨騎在模塊B內(nèi)。

      圖1 基于TBUF的總線宏的物理執(zhí)行

      2 基于TBUF的總線宏設(shè)計(jì)

      這里在深入研究Xilinx公司所提供的總線宏的基礎(chǔ)上,結(jié)合宏的設(shè)計(jì)技術(shù)[5,6],完善了總線宏的設(shè)計(jì)。

      (1) TBUF的內(nèi)部路由。圖2給出內(nèi)部路由后的TBUF電路結(jié)構(gòu)圖。TMUX的T端決定總線宏的控制端LT和RT高電平有效,而T_B端決定低電平有效。無論控制信號(hào)是高電平有效,還是低電平有效,在使用總線宏進(jìn)行通信時(shí),LT和RT的值必須是相反的,或者是同時(shí)無效的。例如,當(dāng)控制信號(hào)高有效時(shí),即T端為1時(shí),TBUF打開。如果總線宏是從左向右傳遞數(shù)據(jù),則必須將LT設(shè)為1,RT為0,反之亦然;如果總線宏不需要傳遞數(shù)據(jù),那么兩個(gè)控制信號(hào)應(yīng)同時(shí)為0,此時(shí)總線宏輸出為高阻態(tài)。

      圖2 路由后的TBUF內(nèi)部電路結(jié)構(gòu)

      (2) TBUF添加的方法。Virtex,Virtex-E,Spartan-Ⅱ,Spartan-ⅡE的內(nèi)部結(jié)構(gòu)類似,與TBUF添加的方法是相同的。在相應(yīng)的位置選擇一個(gè)可編程邏輯塊(Configurable Logic Block,CLB)中的一個(gè)TBUF作為總線宏的一個(gè)TBUF(1個(gè)CLB包含2個(gè)TBUF),依次選擇同一行相連下一個(gè)CLB中的一個(gè)TBUF,直至選夠8個(gè)TBUF為止;對于Spartan-3,Virtex-Ⅱ,Virtex-Ⅱ Pro和Virtex-Ⅱ Pro X系列器件;每一個(gè)CLB中的2個(gè)TBUF都作為總線宏的TBUF被選用,在同一行中依次選擇相連的4個(gè)CLB中的8個(gè)TBUF作為總線宏的TBUF,如圖3所示。

      (3) TBUF外部端口的命名規(guī)則。根據(jù)圖1的總線宏結(jié)構(gòu),對各個(gè)TBUF的外部端口T,I和O進(jìn)行相應(yīng)的命名,命名時(shí)要符合所使用版本軟件的要求。例如,若對端口進(jìn)行如下命名:LI<3>,LT<3>等,而端口在進(jìn)行物理設(shè)計(jì)規(guī)則檢查(Design Rule Check,DRC)時(shí)會(huì)出錯(cuò),根據(jù)所提示的出錯(cuò)信息將命名改為:LI(3),LT(3)等,即能順利通過DRC,完成端口的命名。

      圖3 不同類型器件TBUF的添加

      (4) 總線宏輸出端口的定義??偩€宏輸出端口的定義只能通過手工路由(Manual Route)方法,把相應(yīng)TBUF的輸出端口通過端口連線和TBUF長線連接起來。

      (5) 參考TBUF的設(shè)置。設(shè)計(jì)中通過約束參考TBUF的位置來決定整個(gè)總線宏的位置,若用戶沒有設(shè)置參考TBUF,則FPGA Editor工具會(huì)將用戶添加的第一個(gè)TBUF默認(rèn)為參考TBUF。

      至此,整個(gè)總線宏的設(shè)計(jì)完成,如圖4所示。

      3 總線宏的驗(yàn)證

      為了驗(yàn)證上述總線宏設(shè)計(jì)方法的正確與否,這里設(shè)計(jì)了一個(gè)功能簡單的FPGA動(dòng)態(tài)局部可重構(gòu)實(shí)驗(yàn)。電路重構(gòu)前實(shí)現(xiàn)的功能為:(A+B)*(C-D),重構(gòu)后實(shí)現(xiàn)的功能為:(A+B)(C-D)。根據(jù)電路功能將電路劃分為3個(gè)模塊。其中,加法(A+B)、減法(C-D)為固定模塊M1,M2;乘法/移位(*/)為可重構(gòu)模塊M3。M1與M3,M2與M3之間分別用總線宏BM1和BM2實(shí)現(xiàn)通信,如圖5所示。

      圖4 不同器件中總線宏設(shè)計(jì)

      圖5 FPGA資源劃分

      該實(shí)驗(yàn)采用的軟件開發(fā)平臺(tái):Xilinx ISE6.2i;硬件開發(fā)平臺(tái):可重構(gòu)硬件平臺(tái)——XCV800驗(yàn)證板。

      每一個(gè)總線宏只能傳遞4位的信號(hào)。當(dāng)可重構(gòu)模塊間需要多于4位的數(shù)據(jù)通信時(shí),可以通過多個(gè)總線宏的拼接實(shí)現(xiàn)。這種拼接只是簡單地將多個(gè)宏拼接為一個(gè)文件,而不是將多個(gè)宏拼接為一個(gè)宏,所以在使用約束語句,約束總線宏的位置時(shí),仍然必須單獨(dú)約束每個(gè)宏,而不是直接約束一個(gè)文件[7,8]。例如該實(shí)驗(yàn)中模塊M1與模塊M3之間的數(shù)據(jù)通信是8位,則需要2(8/4)個(gè)總線宏來實(shí)現(xiàn)模塊M1與M3間的通信,M2與M3之間也一樣[9]:

      INST BM1/bus1 LOC=TBUF_R1C9.0;

      INST BM1/bus2 LOC=TBUF_R5C9.0;

      INST BM2/bus1 LOC=TBUF_R1C65.0;

      INST BM2/bus2 LOC=TBUF_R5C65.0;

      按照FPGA動(dòng)態(tài)可重構(gòu)軟件設(shè)計(jì)流程[4,10]生成局部動(dòng)態(tài)可重構(gòu).bit文件;通過JTAG電纜下載到可重構(gòu)硬件平臺(tái)——XCV800驗(yàn)證板進(jìn)行調(diào)試驗(yàn)證;通過邏輯分析儀觀察結(jié)果,如圖6所示。

      A,B的和Q1作為總線宏BM1的數(shù)據(jù)輸入LI1;C,D的差Q2作為總線宏BM2的數(shù)據(jù)輸入RI2;BM1和BM2的方向控制端LT1,RT2為高(255),RT1,LT2為低(0);數(shù)據(jù)輸入端RI1,LI2懸空,R01,L02分別為總線宏的輸出;Q3為可重構(gòu)模塊M3的輸出。由實(shí)驗(yàn)結(jié)果可知,總線宏的設(shè)計(jì)是正確的。

      圖6 實(shí)驗(yàn)結(jié)果

      4 結(jié) 語

      目前,Xilinx公司提倡使用最新的EAPR(Early Access Partial Reconfiguration)方法實(shí)現(xiàn)FPGA動(dòng)態(tài)局部可重構(gòu)技術(shù)。該方法中用于可重構(gòu)模塊與其他模塊之間通信的總線宏是基于Slice的,但這個(gè)方法只適用于Virtex-Ⅱ,Virtex-Ⅱ Pro,Virtex-IV和Virtex-V等器件,對于Virtex,SpartanⅡ,Spartan Ⅲ等器件,只能使用基于TBUF的總線宏實(shí)現(xiàn)動(dòng)態(tài)可重構(gòu)技術(shù),因此該文對基于TBUF的總線宏研究是有意義的。

      參考文獻(xiàn)

      [1]周盛雨,孫輝先,陳曉敏,等.基于FPGA的動(dòng)態(tài)可重構(gòu)系統(tǒng)實(shí)現(xiàn)[J].電子器件,2007,30(2):646-650.

      [2]Xilinx Inc.Early Access Partial Reconfiguration User Guide For ISE 8.1.01i.UG208[EB/OL].http://www.xilinx.com/support,2006.

      [3]趙遠(yuǎn)寧,吳強(qiáng),鄒祎.基于Virtex-ⅡPro 系列FPGA的動(dòng)態(tài)部分可重構(gòu)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[EB/OL].http://www.paper.edu.cn,2008.

      [4]Xilinx Inc.Two Flows for Partial Reconfiguration:Module-based or Difference-based.XAPP290[EB/OL].http://www.xilinx.com/support,2008.

      [5]王誠,薛小剛,鐘信潮.FPGA/CPLD設(shè)計(jì)工具Xilinx ISE使用詳解[M].北京:人民郵電出版社,2005.

      [6]喬守明,祝洪珍,王偉.動(dòng)態(tài)重構(gòu)中總線宏的結(jié)構(gòu)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2007(13):145-147.

      [7]許駿,晏渭川,彭澄廉.基于模塊的動(dòng)態(tài)可重構(gòu)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(6):1 367-1 369,1 383.

      [8]Xilinx Inc.Xilinx Constraints Guide 8.1i[EB/OL].http://toolbox.xilinx.com,2007.

      [9]尚麗娜.FPGA動(dòng)態(tài)可重構(gòu)研究[D].杭州:浙江大學(xué),2006.

      [10]黃俊,朱明程.局部動(dòng)態(tài)重構(gòu)在SoPC中的應(yīng)用[J].深圳大學(xué)學(xué)報(bào):理工版,2006,23(4):351-355.

      作者簡介 趙秋桂 女,1983年出生,廣西合浦人,在讀碩士研究生。研究方向?yàn)镮C設(shè)計(jì)。

      段青亞 女,1970年出生,陜西大荔人,高級(jí)工程師,在讀博士研究生。研究方向?yàn)橛?jì)算機(jī)體系結(jié)構(gòu)技術(shù)。

      桐柏县| 新河县| 依安县| 岳阳市| 贵定县| 阿巴嘎旗| 汉沽区| 灵寿县| 永仁县| 门头沟区| 甘孜县| 崇阳县| 巴彦县| 昭苏县| 肃宁县| 克拉玛依市| 都昌县| 平泉县| 攀枝花市| 分宜县| 嫩江县| 中西区| 苗栗县| 恩施市| 滨州市| 金塔县| 庆元县| 伊宁县| 梁平县| 北辰区| 会理县| 柞水县| 新巴尔虎右旗| 岳池县| 武山县| 万荣县| 松江区| 潢川县| 阳春市| 遂宁市| 弥渡县|