趙秋桂,段青亞
摘 要:FPGA動態局部可重構技術通常將系統劃分為固定模塊和可重構模塊,可重構模塊與其他模塊之間的通信都是通過使用特殊的總線宏實現的。總線宏的正確設計是實現FPGA動態局部可重構技術的關鍵。在研究了FPGA動態局部可重構技術中基于三態緩沖器(Tri-state Buffer,TBUF)總線宏結構的基礎上,采用Xilinx ISE FPGA Editor可視化的方法實現總線宏的設計,并借助可重構硬件平臺——XCV800驗證板,通過設計動態可重構實驗,論證總線宏設計的正確性。
關鍵詞:FPGA動態局部可重構;總線宏;三態緩沖器;FPGA編輯器
中圖分類號:TP368.1文獻標識碼:B
文章編號: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動態局部可重構技術是指允許可重構的器件或系統的一部分進行重新配置,配置過程中其余部分的工作不受影響。動態局部可重構縮短了重構的時間,減少了系統重構的開銷,提高了系統的運行效率。局部動態可重構技術中通常將系統劃分為固定模塊和可重構模塊。可重構模塊與其他模塊之間的通信(包括可重構模塊和固定模塊之間、可重構模塊和可重構模塊之間)都是由總線宏實現的[1]。
動態可重構技術在FPGA中的實現是Xilinx公司首先提出的,并且提供了相應的開發工具和開發流程。他們從Virtex系列器件開始支持動態可重構技術,同時他們提供了現成的總線宏文件給動態可重構系統開發者使用,但是它們提供的總線宏設計與軟件版本的兼容性很差。Xilinx提供的總線宏可能因為軟件版本的問題會無法正常使用,所以用戶需要借助正在使用的版本軟件設計總線宏,以實現FPGA動態局部可重構設計。
在研究總線宏的結構基礎上,采用FPGA Editor可視化的方法設計基于TBUF的總線宏,并通過FPGA動態可重構實驗驗證了該方法的正確性。
1 基于TBUF的總線宏結構
在不同系列的Xilinx FPGA器件中,使用不同的總線宏來實現動態局部可重構技術。在Virtex,Virtex-E,Virtex-Ⅱ Pro X,Spartan-Ⅱ,Spartan-ⅡE和Spartan-3系列器件中所使用的總線宏都是基于TBUF的,可重構模塊的位置固定不變;在Virtex4,Virtex5更高性能的器件中,所使用的總線宏是基于Slice的,可重構模塊的位置是可變的;而Virtex-Ⅱ,Virtex-Ⅱ Pro所使用的總線宏既可以基于TBUF,也可以基于Slice[2,3]。
目前,使用最多的總線宏[4],其物理實現是使用8個三態緩沖器(TBUF),實現4位的雙向通信。每個TBUF占用1位,每位使用1根TBUF長線,從FPGA 的最左側到最右側,如圖1所示。TBUF的T端是三態使能端口;I端是數據輸入端口;O是數據輸出端口。相應地,總線宏的T端(LT和RT)是方向控制端口,控制總線宏從左或從右輸出;I端(LI和RI)是數據輸入端口;O端(LO和RO)是數據輸出端口。
總線宏的信息通信是雙向的,既可以從左到右,也可以從右到左。但是對于一個設計來說,一旦信息通信方向確定以后就不能再改變。總線宏的位置精確地跨騎在模塊A和模塊B之間(A或B是可重構模塊,或AB全是可重構模塊),其中四柵三態緩沖器在模塊A內,另外四柵在B內。對于Virtex-Ⅱ等系列器件,因內部結構不同,故兩柵跨騎在模塊A內,另外兩柵跨騎在模塊B內。
圖1 基于TBUF的總線宏的物理執行
2 基于TBUF的總線宏設計
這里在深入研究Xilinx公司所提供的總線宏的基礎上,結合宏的設計技術[5,6],完善了總線宏的設計。
(1) TBUF的內部路由。圖2給出內部路由后的TBUF電路結構圖。TMUX的T端決定總線宏的控制端LT和RT高電平有效,而T_B端決定低電平有效。無論控制信號是高電平有效,還是低電平有效,在使用總線宏進行通信時,LT和RT的值必須是相反的,或者是同時無效的。例如,當控制信號高有效時,即T端為1時,TBUF打開。如果總線宏是從左向右傳遞數據,則必須將LT設為1,RT為0,反之亦然;如果總線宏不需要傳遞數據,那么兩個控制信號應同時為0,此時總線宏輸出為高阻態。
圖2 路由后的TBUF內部電路結構
(2) TBUF添加的方法。Virtex,Virtex-E,Spartan-Ⅱ,Spartan-ⅡE的內部結構類似,與TBUF添加的方法是相同的。在相應的位置選擇一個可編程邏輯塊(Configurable Logic Block,CLB)中的一個TBUF作為總線宏的一個TBUF(1個CLB包含2個TBUF),依次選擇同一行相連下一個CLB中的一個TBUF,直至選夠8個TBUF為止;對于Spartan-3,Virtex-Ⅱ,Virtex-Ⅱ Pro和Virtex-Ⅱ Pro X系列器件;每一個CLB中的2個TBUF都作為總線宏的TBUF被選用,在同一行中依次選擇相連的4個CLB中的8個TBUF作為總線宏的TBUF,如圖3所示。
(3) TBUF外部端口的命名規則。根據圖1的總線宏結構,對各個TBUF的外部端口T,I和O進行相應的命名,命名時要符合所使用版本軟件的要求。例如,若對端口進行如下命名:LI<3>,LT<3>等,而端口在進行物理設計規則檢查(Design Rule Check,DRC)時會出錯,根據所提示的出錯信息將命名改為:LI(3),LT(3)等,即能順利通過DRC,完成端口的命名。
圖3 不同類型器件TBUF的添加
(4) 總線宏輸出端口的定義。總線宏輸出端口的定義只能通過手工路由(Manual Route)方法,把相應TBUF的輸出端口通過端口連線和TBUF長線連接起來。
(5) 參考TBUF的設置。設計中通過約束參考TBUF的位置來決定整個總線宏的位置,若用戶沒有設置參考TBUF,則FPGA Editor工具會將用戶添加的第一個TBUF默認為參考TBUF。
至此,整個總線宏的設計完成,如圖4所示。
3 總線宏的驗證
為了驗證上述總線宏設計方法的正確與否,這里設計了一個功能簡單的FPGA動態局部可重構實驗。電路重構前實現的功能為:(A+B)*(C-D),重構后實現的功能為:(A+B)(C-D)。根據電路功能將電路劃分為3個模塊。其中,加法(A+B)、減法(C-D)為固定模塊M1,M2;乘法/移位(*/)為可重構模塊M3。M1與M3,M2與M3之間分別用總線宏BM1和BM2實現通信,如圖5所示。
圖4 不同器件中總線宏設計
圖5 FPGA資源劃分
該實驗采用的軟件開發平臺:Xilinx ISE6.2i;硬件開發平臺:可重構硬件平臺——XCV800驗證板。
每一個總線宏只能傳遞4位的信號。當可重構模塊間需要多于4位的數據通信時,可以通過多個總線宏的拼接實現。這種拼接只是簡單地將多個宏拼接為一個文件,而不是將多個宏拼接為一個宏,所以在使用約束語句,約束總線宏的位置時,仍然必須單獨約束每個宏,而不是直接約束一個文件[7,8]。例如該實驗中模塊M1與模塊M3之間的數據通信是8位,則需要2(8/4)個總線宏來實現模塊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動態可重構軟件設計流程[4,10]生成局部動態可重構.bit文件;通過JTAG電纜下載到可重構硬件平臺——XCV800驗證板進行調試驗證;通過邏輯分析儀觀察結果,如圖6所示。
A,B的和Q1作為總線宏BM1的數據輸入LI1;C,D的差Q2作為總線宏BM2的數據輸入RI2;BM1和BM2的方向控制端LT1,RT2為高(255),RT1,LT2為低(0);數據輸入端RI1,LI2懸空,R01,L02分別為總線宏的輸出;Q3為可重構模塊M3的輸出。由實驗結果可知,總線宏的設計是正確的。
圖6 實驗結果
4 結 語
目前,Xilinx公司提倡使用最新的EAPR(Early Access Partial Reconfiguration)方法實現FPGA動態局部可重構技術。該方法中用于可重構模塊與其他模塊之間通信的總線宏是基于Slice的,但這個方法只適用于Virtex-Ⅱ,Virtex-Ⅱ Pro,Virtex-IV和Virtex-V等器件,對于Virtex,SpartanⅡ,Spartan Ⅲ等器件,只能使用基于TBUF的總線宏實現動態可重構技術,因此該文對基于TBUF的總線宏研究是有意義的。
參考文獻
[1]周盛雨,孫輝先,陳曉敏,等.基于FPGA的動態可重構系統實現[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]趙遠寧,吳強,鄒祎.基于Virtex-ⅡPro 系列FPGA的動態部分可重構系統設計與實現[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設計工具Xilinx ISE使用詳解[M].北京:人民郵電出版社,2005.
[6]喬守明,祝洪珍,王偉.動態重構中總線宏的結構與實現[J].電腦知識與技術,2007(13):145-147.
[7]許駿,晏渭川,彭澄廉.基于模塊的動態可重構系統設計[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].杭州:浙江大學,2006.
[10]黃俊,朱明程.局部動態重構在SoPC中的應用[J].深圳大學學報:理工版,2006,23(4):351-355.
作者簡介 趙秋桂 女,1983年出生,廣西合浦人,在讀碩士研究生。研究方向為IC設計。
段青亞 女,1970年出生,陜西大荔人,高級工程師,在讀博士研究生。研究方向為計算機體系結構技術。