《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > 動態(tài)部分可重構(gòu)方法在SDRAM控制器中的應(yīng)用

動態(tài)部分可重構(gòu)方法在SDRAM控制器中的應(yīng)用

2009-07-09
作者:翁穎方, 徐德民, 苗 勝

  摘??要: 動態(tài)部分可重構(gòu)方法應(yīng)用于FPGA系統(tǒng)設(shè)計(jì)中,充分利用了FPGA芯片提供的可重配置功能,減小了FPGA芯片的配置時(shí)間。通過對可重構(gòu)方法的研究,提出了基于模塊化動態(tài)可重構(gòu)方法應(yīng)用到SDRAM控制器設(shè)計(jì)中,給出了重構(gòu)流程,并對實(shí)驗(yàn)結(jié)果進(jìn)行了分析。該方法提高了FPGA芯片的利用率,有效地提高了可重配置計(jì)算系統(tǒng)的整體性能。
  關(guān)鍵詞: 動態(tài)部分可重構(gòu); FPGA; 模塊化; SDRAM控制器

?

  動態(tài)部分可重構(gòu)(Dynamic Partial Reconfigurable)配制結(jié)合了傳統(tǒng)的ASIC技術(shù)和通用處理器技術(shù)的特點(diǎn),既具有通用處理器的靈活性,又具有ASIC的計(jì)算速度。隨著FPGA[1]應(yīng)用領(lǐng)域的不斷擴(kuò)大,即使采用百萬門級的FPGA,也很難一次容納所有的電路設(shè)計(jì)。動態(tài)部分可重構(gòu)是將任務(wù)劃分成更細(xì)粒度的功能模塊,根據(jù)任務(wù)執(zhí)行的階段分別下載,動態(tài)地重配置相應(yīng)的部分電路,而不需要重新配置的固定模塊部分則不受影響。基于此技術(shù)設(shè)計(jì)的可重構(gòu)系統(tǒng)在高速數(shù)字濾波器、圖像壓縮、硬件演化計(jì)算、定值計(jì)算、嵌入式系統(tǒng)等方面,都有著廣泛的應(yīng)用前景。
  在系統(tǒng)分析研究現(xiàn)有各種動態(tài)部分可重構(gòu)方法的基礎(chǔ)上,結(jié)合FPGA設(shè)計(jì)模塊化的特點(diǎn),本文提出一種基于模塊化的動態(tài)部分可重構(gòu)的SDRAM控制器設(shè)計(jì)方法,依靠強(qiáng)大的FPGA軟件工具生成相應(yīng)的配制模塊,并通過了板級驗(yàn)證。
1 基于模塊的動態(tài)部分可重構(gòu)方法
  在該方法中,任務(wù)被劃分為相互獨(dú)立的子模塊,這些子模塊的總大小一般要超過FPGA芯片的最大容量,運(yùn)行時(shí)只需將當(dāng)前任務(wù)執(zhí)行所需要的子模塊配置到芯片上。因此,這種方法不受硬件資源的限制,可以完成任意規(guī)模的任務(wù)。任務(wù)模塊之間的通信使用總線宏來完成,總線宏允許信號穿越模塊的邊界而保持正確通信。動態(tài)指令集計(jì)算機(jī)[2]就是利用基于模塊的動態(tài)重配置方法實(shí)現(xiàn)的,它是在FPGA中的二維配置邏輯單元按照行的方式構(gòu)成一維線性硬件模型下實(shí)現(xiàn)的可重定位硬件的系統(tǒng)結(jié)構(gòu),提供了面向應(yīng)用的指令集,每個(gè)指令都作為一個(gè)獨(dú)立的電路模塊實(shí)現(xiàn)。其中的重配置模塊按照水平方向布局,每個(gè)模塊的寬度等于芯片的寬度,由于模塊所占用的FPGA邏輯陣列的高度可以改變,因此,指令模塊庫中的各模塊可以按照其功能的需求被設(shè)計(jì)成不同的尺寸。靜態(tài)的全局控制器和通信網(wǎng)絡(luò)構(gòu)成了一維線性模型上的全局上下文,在整個(gè)任務(wù)的執(zhí)行過程中保持不變。通信網(wǎng)絡(luò)起到了總線宏的作用,實(shí)現(xiàn)了重配置模塊之間以及重配置模塊與全局資源之間的通信。動態(tài)指令空間存放著完成特定任務(wù)的動態(tài)重配置模塊,可重定位硬件使得任意一個(gè)指令模塊都可以被配置到動態(tài)指令空間的任意部分,實(shí)現(xiàn)了“虛擬硬件”的概念,從而可以利用有限的資源完成更大規(guī)模的計(jì)算任務(wù)。而且,還實(shí)現(xiàn)了計(jì)算和指令模塊重配置的重疊,隱藏了配置時(shí)間,有效地提高了系統(tǒng)的整體性能。
2 基于高速數(shù)據(jù)采集卡的SDRAM控制器設(shè)計(jì)
  該SDRAM控制器是基于高速數(shù)據(jù)采集卡所設(shè)計(jì)的。數(shù)據(jù)采集卡以FPGA為主控制芯片,外圍電路包括SDRAM存儲電路、時(shí)鐘電源電路、模擬電路以及上位機(jī)與板通信的UART接口、數(shù)據(jù)采集卡對數(shù)據(jù)采集目標(biāo)進(jìn)行數(shù)據(jù)通信的PCI總線接口。
  在整個(gè)系統(tǒng)中,SDRAM電路能進(jìn)行部分動態(tài)重構(gòu)替換,以實(shí)現(xiàn)硬件電路與FPGA重構(gòu)功能之間的相互適應(yīng)。此系統(tǒng)采用Micron公司的32位SDRAM芯片,根據(jù)芯片的時(shí)序工作特點(diǎn)把SDRAM控制器分為3個(gè)模塊:控制接口模塊、命令模塊、數(shù)據(jù)模塊。SDRAM控制器的接口結(jié)構(gòu)如圖1所示。

  SDRAM 具有多種工作模式,內(nèi)部操作是一個(gè)非常復(fù)雜的狀態(tài)機(jī),本文設(shè)計(jì)的SDRAM控制器包括以下一些狀態(tài):模式寄存器設(shè)置狀態(tài)、激活狀態(tài)、預(yù)充電狀態(tài)、寫狀態(tài)、讀狀態(tài)、自動刷新狀態(tài)和空閑狀態(tài)。在本控制器中還設(shè)計(jì)了2個(gè)FIFO、2個(gè)狀態(tài)機(jī)(1個(gè)寫,另1個(gè)必定在讀),當(dāng)寫FIFO寫滿1幀時(shí)就切換到讀FIFO[3];但由于讀寫的速度不同,這里需要對讀FIFO進(jìn)行多次讀,當(dāng)寫滿寫FIFO時(shí)自動切換狀態(tài)機(jī),這樣可以保證數(shù)據(jù)采集系統(tǒng)大數(shù)據(jù)量的讀寫,也保證了數(shù)據(jù)采集板數(shù)據(jù)采集的連續(xù)性。
3 模塊化動態(tài)可重構(gòu)方法的實(shí)現(xiàn)和驗(yàn)證
  本設(shè)計(jì)驗(yàn)證所使用的高速數(shù)據(jù)采集板卡是基于Xilinx[4] Virtex-II XC2V500的芯片,該系列芯片是Xilinx公司生產(chǎn)的支持動態(tài)可重構(gòu)的FPGA芯片。所采用的軟件是Xilinx ISE9.1i集成軟件包,其中包括用于確定模塊在FPGA芯片上的位置和形狀的Floorplanner軟件,iMPACT實(shí)現(xiàn)把動態(tài)部分可重構(gòu)位流下載到開發(fā)板上。在該可重構(gòu)設(shè)計(jì)過程中,總線宏起到重要的作用,保證了動態(tài)可重構(gòu)模塊和靜態(tài)固定模塊之間的正確通信。
  本設(shè)計(jì)是基于模塊化的動態(tài)可重構(gòu)設(shè)計(jì),在設(shè)計(jì)過程中采用如圖2的文件目錄結(jié)構(gòu),以便組織每個(gè)設(shè)計(jì)步驟所生成的文件,更好地體現(xiàn)了模塊化[5]的特點(diǎn)。

?

?

  在SDRAM控制器程序中,SDRAM芯片的初始化程序模塊(sdram_initial.v)作為靜態(tài)固定模塊,數(shù)據(jù)模塊(sdram_data.v)和命令模塊 (sdram_cmd.v)作為動態(tài)部分可重構(gòu)模塊。為了能體現(xiàn)可重構(gòu)模塊在重配制過程中不影響靜態(tài)模塊的工作,在重配制時(shí),SDRAM芯片仍然可以被初始化。
  (1)頂層模塊設(shè)計(jì)與綜合
  首先確定整個(gè)控制器的頂層模塊top.v,其中包括3個(gè)獨(dú)立的模塊sdram_initial.v、sdram_data.v、sdram_cmd.v、然后用XST工具對頂層設(shè)計(jì)進(jìn)行綜合,生成top.ngc文件,并存放在Initial文件目錄下。
  (2)總線宏[6]的設(shè)計(jì)
  為了促進(jìn)可重構(gòu)模塊之間的通信,需要保證穿過可重構(gòu)模塊邊界的布線資源是完全固定而且必須是靜態(tài)的,這就需要一種特殊的總線宏,它是模塊之間通信的“橋梁”。目前使用的總線宏由8個(gè)三態(tài)緩沖器組成,每個(gè)三態(tài)緩沖器傳輸1位信息。根據(jù)模塊設(shè)計(jì)劃分的要求,在FPGA Editor中設(shè)計(jì)總線宏,并保存在Initial文件目錄下,文件名為bus_macro.nmc。
  (3)初始化預(yù)算
  首先將top.ngc作為Ngdbuild命令的輸入,生成top.ngd文件,然后使用Floorplanner對其進(jìn)行位置和面積約束,產(chǎn)生約束文件top.ucf,并手動增加對總線宏位置、重配置模塊和物理管腳的約束,該約束文件用于每個(gè)模塊的具體實(shí)現(xiàn)。如有需要,使用Constraint Editor對整個(gè)設(shè)計(jì)做全局時(shí)序限制。最后,使用Ngdbuild命令重新生成tog.ngd文件,用于每個(gè)模塊的具體實(shí)現(xiàn)。
  (4)動態(tài)模塊的實(shí)現(xiàn)
  靜態(tài)固定模塊和動態(tài)可重構(gòu)模塊要通過頂層文件設(shè)計(jì)和約束來實(shí)現(xiàn)。首先將top.ucf和top.ngd文件拷貝到各模塊目錄下,并對每個(gè)模塊運(yùn)行Ngdbuild、Map、Par和Pimcreate命令,操作完成后將生成已布局布線的模塊并放在Pims目錄下。對可重構(gòu)模塊還要使用BitGen命令產(chǎn)生動態(tài)可重構(gòu)位流sdram_data.bit和sdram_cmd.bit。
  (5)可重構(gòu)流的生成和驗(yàn)證
  首先將top.ngc、top.ucf、bus_macro.nmc復(fù)制到Assemble,運(yùn)行Ngdbuild命令產(chǎn)生top.ngd,再運(yùn)行Map、Par命令,然后使用FPGA Editor來觀察最后頂層模塊的布局布線結(jié)果。最后使用BitGen命令得到配置位流文件top.bit,再使用iMPACT軟件通過并口的電纜線top.bit,在下載過程中用JTAP模式配置Virtex-II FPGA芯片。運(yùn)行SDRAM控制器的數(shù)據(jù)模塊和命令模塊的程序,用動態(tài)可重構(gòu)位流sdram_data.bit和sdram_cmd.bit配置芯片的命令接收和數(shù)據(jù)讀寫過程,而在動態(tài)可重構(gòu)配置過程中靜態(tài)固定模塊sdram_initial.v仍然能初始化SDRAM芯片,達(dá)到了動態(tài)部分可重構(gòu)的設(shè)計(jì)目的。圖3~圖5為在FPGA Editor中設(shè)計(jì)的3種模塊的區(qū)域約束對比圖。

?


4 動態(tài)部分可重構(gòu)配置與全局配置比較
  傳統(tǒng)的全局配置在硬件電路升級時(shí)是把電路的所有模塊一起更新配置,這種配置方法在操作過程中把靜態(tài)的固定模塊又重新不變地配置了1次,使得在工程應(yīng)用中顯得效率不高。
  與全局配置方法相比,基于模塊化的動態(tài)部分可重構(gòu)方法是一種高效率的FPGA配置方法。它將各模塊的公共部分和全局控制部分設(shè)計(jì)為靜態(tài)模塊,在重配置時(shí)可以將系統(tǒng)運(yùn)行狀態(tài)和中間結(jié)果等存入該靜態(tài)電路中,既減少了相應(yīng)的路由選擇和控制等外圍電路所需要的硬件資源,又節(jié)省了向外傳送這些數(shù)據(jù)所需要的時(shí)間。
  使用普通的全局配制方法對SDRAM控制器進(jìn)行設(shè)計(jì),觀察實(shí)驗(yàn)數(shù)據(jù)結(jié)果,得出2種方法的對比情況如表1所示。從表中可看出,使用動態(tài)部分可重構(gòu)方法配置文件其容量減少,約為原來的1/4~1/3,配置時(shí)間大約為原來的3/5。

?


  綜上所述,把基于模塊化的動態(tài)部分可重構(gòu)方法應(yīng)用到SDRAM控制器的設(shè)計(jì)里,在任務(wù)的執(zhí)行過程中根據(jù)需求動態(tài)地進(jìn)行模塊替換,使得可重構(gòu)配置計(jì)算不再受到硬件資源的限制,既能提高硬件電路的能量消耗,又能提高硬件資源的利用率,本方法在實(shí)際工程中有很高的應(yīng)用價(jià)值。隨著FPGA技術(shù)和開發(fā)工具的不斷完善,必將更好地支持和推動可重構(gòu)技術(shù)的發(fā)展。

參考文獻(xiàn)
[1] ?朱明程. FPGA 原理及應(yīng)用設(shè)計(jì). 北京: 電子工業(yè)出版社,1994.
[2] ?李麗, 辛勤, 楊樂平.基于FPGA的可重構(gòu)系統(tǒng)的應(yīng)用[J].微處理機(jī),2001(3):11-13.
[3] ?張宇,時(shí)龍興,王學(xué)香,等.面向片上系統(tǒng)的高性能SDRAM控制器設(shè)計(jì)[J].固體電子學(xué)研究與進(jìn)展,2007(3).
[4] 徐 欣, 于紅旗, 易 凡,等. 基于FPGA嵌入式系統(tǒng)設(shè)計(jì)(Xilinx?Edition). 北京: 機(jī)械工業(yè)出版社, 2005.
[5] 劉杰,周建華,黃子強(qiáng). 基于SDRAM的視頻處理器設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子元器件應(yīng)用, 2006(7).
[6] Xilinx Inc. Two flows for partial?reconfiguration: module based or?difference based[EB/OL].? http://direct.xilinx.com/bvdocs/appnotes/xapp290.pdf, 2003.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。