徐彥峰,張麗娟,謝文虎
(1.中國電子科技集團公司第五十八研究所,江蘇無錫214072;2.無錫華普微電子有限公司,江蘇無錫214035)
基于FPGA的動態(tài)自重構(gòu)系統(tǒng)原理與實現(xiàn)
徐彥峰1,張麗娟2,謝文虎1
(1.中國電子科技集團公司第五十八研究所,江蘇無錫214072;2.無錫華普微電子有限公司,江蘇無錫214035)
現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)提供了強大的可編程接口,支持靈活的現(xiàn)場可編程能力。動態(tài)可重構(gòu)設(shè)計方法可以在尺寸、重量、功率和成本等方面優(yōu)化傳統(tǒng)的FPGA應(yīng)用。目前控制、存儲和接口組成的動態(tài)可重構(gòu)實現(xiàn)系統(tǒng),雖然可以實現(xiàn)對FPGA的動態(tài)可重構(gòu),但需要額外增加多個器件,反而使FPGA應(yīng)用系統(tǒng)更加復(fù)雜?;趧討B(tài)可重構(gòu)原理,提出了一種動態(tài)自重構(gòu)系統(tǒng)的原理和實現(xiàn)方法。該方法通過在靜態(tài)邏輯中添加自重構(gòu)模塊,對自身可重構(gòu)分區(qū)進行功能修改,從而實現(xiàn)對自身的動態(tài)重構(gòu)。設(shè)計了兩種LED燈的閃爍方式模塊,實驗結(jié)果證明:通過自重構(gòu)技術(shù),可以實現(xiàn)這兩種閃爍方式的切換,證明了自重構(gòu)技術(shù)的可行性。
FPGA;動態(tài)可重構(gòu);動態(tài)自重構(gòu)
目前,F(xiàn)PGA技術(shù)日益成熟,在為用戶提供大量高性能可編程資源的同時,也提供了強大的可編程接口,支持靈活的現(xiàn)場可編程能力[1]。動態(tài)可重構(gòu)進一步提高了FPGA的靈活性,成為目前應(yīng)用研究的熱點[2]。
動態(tài)可重構(gòu)類似于時分多路復(fù)用,將時間軸上不重疊的功能隔離并實現(xiàn)為可重新配置的模塊。該方法是:在完整的BIT文件配置FPGA之后,根據(jù)系統(tǒng)的需求加載局部資源的配置文件,修改FPGA中可重構(gòu)區(qū)域的功能,實現(xiàn)不同功能的靈活切換,且不影響未重新配置(靜態(tài)邏輯)區(qū)域功能的正常運行。動態(tài)可重構(gòu)設(shè)計方法可以在尺寸、重量、功率和成本等方面優(yōu)化傳統(tǒng)的FPGA應(yīng)用[4]。典型的應(yīng)用如網(wǎng)絡(luò)交換機:為了確保交換機支持多種接口協(xié)議,通常針對每個接口協(xié)議要求分別實現(xiàn)相應(yīng)的物理接口,從接口協(xié)議利用率的角度分析,該設(shè)計方法的效率比較低,因為每個端口同一時間只能使用一個接口協(xié)議。如果每個端口的接口協(xié)議設(shè)計為可重構(gòu)模塊,每次只將需要的接口協(xié)議模塊加載到可重構(gòu)模塊中,便可實現(xiàn)更高效的設(shè)計。這也大量削減了將多個協(xié)議引擎連接到一個端口時占用的邏輯資源。
傳統(tǒng)的動態(tài)可重構(gòu)實現(xiàn)方法是通過CPU等控制器讀取配置文件,并決定何時對FPGA進行重構(gòu);存儲器負責(zé)存儲需要的配置文件;此外還需要CPLD之類的控制芯片,負責(zé)將CPU傳輸?shù)呐渲帽忍亓鬟M行時序轉(zhuǎn)換,產(chǎn)生滿足FPGA配置時序的信號,從而實現(xiàn)對FPGA的重新加載[3~4]。這種控制、存儲和接口的組合適合絕大部分系統(tǒng),但缺點在于需要額外增加存儲器、CPU等多個器件,無形中增加了硬件的尺寸、重量、功率和成本。
本文基于目前的動態(tài)可重構(gòu)原理,提出改進型的硬件實現(xiàn)方案,即FPGA動態(tài)自重構(gòu)。該方法的原理是,通過在FPGA靜態(tài)邏輯塊中添加動態(tài)重構(gòu)的控制邏輯,在需要重構(gòu)時自動加載相應(yīng)局部資源的碼流文件,最終實現(xiàn)FPGA對自身的局部重構(gòu)。該方法的優(yōu)點在于可以在實現(xiàn)可重構(gòu)的前提下不增加額外的硬件開銷,有利于降低產(chǎn)品的成本、功率和重量。
常規(guī)SRAM工藝的FPGA都可以實現(xiàn)功能重配置,但并非都能實現(xiàn)動態(tài)可重構(gòu)。目前支持動態(tài)可重構(gòu)的器件主要為Xilinx公司的FPGA芯片。Xilinx公司FPGA芯片的配置文件格式主要有.mcs、.bin、.bit等,Xilinx公司的FPGA開發(fā)軟件直接生成的FPGA配置文件格式為.bit文件,然后可通過相應(yīng)的工具將.bit文件轉(zhuǎn)換成.bin、.mcs等其他格式。
動態(tài)可重構(gòu).bit配置文件生成流程如圖1所示,包含功能分區(qū),各分區(qū)不同功能模塊綜合生成網(wǎng)表,各功能模塊實現(xiàn)并生成可重構(gòu).bit文件。下面將結(jié)合圖1,介紹FPGA動態(tài)可重構(gòu)配置文件的生成方法。
圖1 動態(tài)可重構(gòu).bit配置文件生成流程
實現(xiàn)動態(tài)可重構(gòu)的FPGA設(shè)計類似于實現(xiàn)共享公共邏輯的多個非可重構(gòu)邏輯設(shè)計[2]。具體設(shè)計分為以下幾步。
首先需要完成對整體功能的分區(qū),將FPGA運行過程中不需要更改的邏輯劃分到靜態(tài)邏輯模塊,將需要更改的邏輯劃分到可重構(gòu)邏輯模塊中,并獲得可重構(gòu)模塊A、可重構(gòu)模塊B等可重構(gòu)模塊。分區(qū)用于確保多個設(shè)計之間的靜態(tài)邏輯相同。
完成分區(qū)后,需要使用專用綜合軟件將分區(qū)中的各個可重構(gòu)模塊綜合并生成網(wǎng)表文件(文件格式為EDIF或者NGC)。完成以上操作后便獲得了靜態(tài)邏輯網(wǎng)表和可重構(gòu)模塊網(wǎng)表。
在ISE工具中PlanAhead建立綜合后工程(post-synthesis Project)并注意勾選使能部分可重構(gòu)(Enable Partial Reconfiguration)。完成功能建立后導(dǎo)入頂層靜態(tài)網(wǎng)表和靜態(tài)網(wǎng)表約束文件。通過選擇已經(jīng)在頂層靜態(tài)邏輯中例化的可重構(gòu)模塊并使用“設(shè)置分區(qū)”(Set Partition)對話框菜單命令來導(dǎo)入可重構(gòu)分區(qū)的網(wǎng)表內(nèi)容。如該分區(qū)還需要加入其他網(wǎng)表,則在導(dǎo)入完第一個網(wǎng)表后,使用“加入可重構(gòu)模塊”(Add Reconfigurable Module)對話框菜單來導(dǎo)入該可重構(gòu)分區(qū)的其他網(wǎng)表內(nèi)容。此外還可以在該分區(qū)導(dǎo)入“黑盒子模塊”(Black Box Modules),只需在進入導(dǎo)入界面后選擇“將此可重配置模塊添加為不帶網(wǎng)表的黑盒”(Add this Reconfigurable Module as a black box without anetlist)選項即可。
在PlanAhead軟件中導(dǎo)入了所有可重配置分區(qū)的所有可重構(gòu)模塊網(wǎng)表后,下一步就是定義設(shè)計的物理布局。從主PlanAhead工具欄中,選擇“布局規(guī)劃模式”(Floorplanning mode)打開FPGA的物理約束選項卡和平面圖視圖,選擇Set PBlock Size命令并在FPGA的Device視圖中繪制一個矩形區(qū)域,要求該區(qū)域內(nèi)包含的資源數(shù)目略大于可重構(gòu)模塊所需資源的最大值。完成所有分區(qū)的設(shè)置后需運行DRC檢查,以保證設(shè)計合乎規(guī)則。
將所有模塊的網(wǎng)表文件導(dǎo)入相應(yīng)分區(qū)并設(shè)置了各分區(qū)大小后,系統(tǒng)會自動生成名為config_1的配置實現(xiàn),該配置實現(xiàn)中默認選擇每個可重構(gòu)分區(qū)中導(dǎo)入的第一個可重構(gòu)模塊。為了生成各分區(qū)中其他功能模塊的可重構(gòu)配置文件,需要建立多個配置實現(xiàn),并根據(jù)需要選擇每個分區(qū)包含的可重構(gòu)模塊。但是,無論創(chuàng)建多少個配置實現(xiàn)文件,都先運行一個配置實現(xiàn),實現(xiàn)后選擇Promote Partitions選項,產(chǎn)生可導(dǎo)入的靜態(tài)邏輯。創(chuàng)建其他配置實現(xiàn)時,靜態(tài)邏輯(static logic)部分選擇“導(dǎo)入”(Import),其他可重構(gòu)模塊可選擇“實現(xiàn)”(Implement)或“導(dǎo)入”(Import)。
所有需要的配置實現(xiàn)建成后,分別運行各個配置實現(xiàn)并生成.bit文件,生成的文件包含一個完整的.bit配置文件(圖1中的Full_1.bit、Full_2.bit等)和這個配置實現(xiàn)中選擇的模塊的可重構(gòu).bit文件(圖1中的RMA.bit、RMB.bit等)。如果有多個分區(qū),則會產(chǎn)生多個可重構(gòu).bit文件(可根據(jù)需要轉(zhuǎn)換成.mcs等其他形式)。
基于上述FPGA動態(tài)可重構(gòu)的實現(xiàn)過程,本文提出了一種FPGA動態(tài)自重構(gòu)方法。該方法的原理是,在FPGA的靜態(tài)邏輯中加入對存儲配置文件的控制模塊,并由FPGA根據(jù)外部控制器或內(nèi)部控制邏輯選擇需要重構(gòu)的分區(qū),并將該分區(qū)的文件寫入FPGA,實現(xiàn)FPGA自己對自己的重構(gòu)。其功能示意圖如圖2所示。
圖2 動態(tài)自重構(gòu)系統(tǒng)原理
在圖2中,存儲器內(nèi)部保存了所有的可重構(gòu)配置文件、存儲器的地址、讀寫控制信號以及存儲器的數(shù)據(jù)輸出端口連接FPGA的專用配置引腳。
FPGA芯片在上電初始化完成后通過BPI模式將完整的配置文件寫入FPGA,完整的配置文件里除包含靜態(tài)邏輯外(靜態(tài)邏輯中已經(jīng)包含動態(tài)自重構(gòu)功能模塊),還包含各分區(qū)被選擇的可重構(gòu)模塊。在完整配置文件完成對FPGA的配置后,F(xiàn)PGA便可以根據(jù)靜態(tài)邏輯中的自重構(gòu)功能,讀取配置文件并完成對自身的動態(tài)重構(gòu)。
根據(jù)以上原理,本文采用AMD公司型號為Am29LV640M的NOR FLASH芯片存儲可重構(gòu)文件和完整配置文件,動態(tài)自重構(gòu)的目標(biāo)FPGA器件選用Xilinx公司Virtex-5系列的XC5VSX95T。動態(tài)自重構(gòu)方案的驗證硬件示意圖如圖3所示。
FPGA設(shè)置為Master BPI-UP模式,其連接方式與正常配置FPGA連接方式相同,Am29LV640M的數(shù)據(jù)端口連接FPGA的配置端口,需要1路普通I/O連接FPGA的CCLK以保證在對自身進行自重構(gòu)時存在能夠接受數(shù)據(jù)的CCLK時鐘輸入。
圖3 動態(tài)自重構(gòu)方案的驗證電路
在上電且儲存器和FPGA完成初始化后,F(xiàn)PGA通過Master BPI-UP模式配置完整的配置文件。當(dāng)FPGA需要自重構(gòu)時,只需讀取預(yù)存在Am29LV640M的可重構(gòu)配置文件即可,由于FPGA是在CCLK的上升沿采集數(shù)據(jù),所以配置數(shù)據(jù)流需要在CCLK的下降沿更新,以保證配置數(shù)據(jù)流滿足建立保持時間。
根據(jù)以上驗證方案的硬件電路,本文設(shè)計了一個動態(tài)自重構(gòu)的演示工程。其中,該工程包含一個2輸入、4輸出的分區(qū)和實現(xiàn)自重構(gòu)功能的靜態(tài)邏輯;該分區(qū)含有2個可重構(gòu)模塊,每個模塊根據(jù)當(dāng)前的2個輸入din[1:0],產(chǎn)生不同形式的4個輸出dout[3:0]。第一個模塊為一個2位4位譯碼器,其輸出邏輯表達式為:
第二個模塊dout[0]輸出恒定為高,其他值的輸出表達式為:
靜態(tài)邏輯為每隔5.37 s讀取Am29LV640M數(shù)據(jù)對可重構(gòu)分區(qū)進行自重構(gòu),兩個可重構(gòu)模塊配置文件交替被讀?。淮送?,靜態(tài)邏輯還包含向可重構(gòu)分區(qū)提供輸入值的功能,該功能為每隔0.34 s更新一次輸入數(shù)據(jù),依次為2’b00,2’b01,2’b10,2’b11,周而復(fù)始。使用邏輯分析儀獲得的4個輸出數(shù)據(jù)如圖4所示。
在圖4中,通道A2(4~7)分別對應(yīng)dout[0~4]; FPGA芯片在約5.8 s完成完整配置文件的配置,完整配置文件中只有能夠?qū)崿F(xiàn)自重構(gòu)和向可重構(gòu)分區(qū)提供輸入的靜態(tài)邏輯,可重構(gòu)分區(qū)被例化為黑盒,所以此時dout的輸出為固定電平。在5.37 s后完成可重構(gòu)分區(qū)第一個模塊的自重構(gòu),其輸出結(jié)果與設(shè)定的邏輯相符。再經(jīng)過5.37 s,完成可重構(gòu)分區(qū)第二個模塊的自重構(gòu),輸出結(jié)果與設(shè)定的邏輯也相同。
圖4 動態(tài)自重構(gòu)系統(tǒng)輸出波形
本文在動態(tài)可重構(gòu)的原理基礎(chǔ)上,提出一種動態(tài)自重構(gòu)系統(tǒng)的原理和硬件實現(xiàn)方法。實驗結(jié)果證明:只需要將動態(tài)局部重構(gòu)的控制邏輯作為靜態(tài)邏輯分配到FPGA的邏輯資源中,可以非常簡單地實現(xiàn)FPGA對自身的動態(tài)重構(gòu)。本系統(tǒng)對航空航天、網(wǎng)絡(luò)等領(lǐng)域的系統(tǒng)應(yīng)用具有較大的參考價值,可以在實現(xiàn)FPGA動態(tài)可重構(gòu)的前提下,降低系統(tǒng)的復(fù)雜程度和整體功耗。
[1]周盛雨,孫輝先,陳曉敏,等.基于FPGA的動態(tài)可重構(gòu)系統(tǒng)實現(xiàn)[J].電子器件,2007,30(2):646-649.
[2]Xilinx Company.UG702 Partial Reconfiguration User Guide(v14.5)[EB/OL].https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/ug702.pdf,2017-04-26.
[3]盧振鈞,肖揚燦.基于FPGA部分動態(tài)可重構(gòu)的信號解調(diào)系統(tǒng)的實現(xiàn)[J].電子設(shè)計工程,2012,20(10):155-157.
[4]南希,龔龍慶,田衛(wèi),等.基于FPGA的動態(tài)可重構(gòu)系統(tǒng)設(shè)計與實現(xiàn)[J].電路設(shè)計,2009,6:4-6,11.
Principle and Implementation of Dynamic Self-Reconfiguration System Based on FPGA
XU Yanfeng1,ZHANG Lijuan2,XIE Wenhu1
(1.China Electronic Technology Group Corporation No.58 Research Institute,Wuxi 214072,China;2.Wuxi Hope Microelectronics Co.,Ltd.,Wuxi 214035,China)
FPGA provides a powerful programmable interface that supports flexible field-programmable capabilities.Dynamic reconfigurable design methods can optimize traditional FPGA applications in terms of size,weight,power,and cost.The dynamic reconfigurable implementation system,which is composed of control,storage and interface,can realize dynamic reconfiguration of FPGA,but it needs to add more devices,make FPGA application system become more complicated.Based on the current dynamic reconfigurable principle,this paper proposes the principle and implementation method of dynamic self-reconfiguration system. This method can modify the self-reconfigurable partition by adding self-reconfiguration module to the static logic,so as to realize the dynamic self-reconfiguration of itself.This paper designs two kinds of LED lights flashing mode module,the experimental results show that:through self-reconstruction technology,you can achieve these twoflashmode switching.Andprovesthe feasibilityofself-reconfigurationtechnology.
FPGA;dynamic reconfiguration;dynamic self-reconfiguration
TN402
:A
:1681-1070(2017)09-0015-04
2017-7-11
徐彥峰(1977—),男,遼寧朝陽人,高級工程師,從事集成電路設(shè)計工作,主要研究方向為FPGA架構(gòu)及內(nèi)部模塊的設(shè)計。