文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.009
中文引用格式: 李杰,任勇峰,李輝景. 基于存儲器映射的Flash高速低功耗驅動實現(xiàn)[J].電子技術應用,2016,42(3):31-34.
英文引用格式: Li Jie,Ren Yongfeng,Li Huijing. High speed and low power driver realization of Flash based on RAM mapping[J].Application of Electronic Technique,2016,42(3):31-34.
0 引言
在FPGA對Flash控制操作中,有限狀態(tài)機(Finite State Machine,F(xiàn)SM)與多進程描述方式相比有著層次分明、結構清晰、易于修改和移植的明顯優(yōu)勢而被廣泛應用。傳統(tǒng)狀態(tài)機在描述實現(xiàn)寄存器存儲狀態(tài)信息、組合邏輯產(chǎn)生下一個狀態(tài)和輸出值時,大量使用了FPGA的布線、查找表、寄存器等寶貴資源[1]。
為了實現(xiàn)FPGA的可編程性,在其內部使用了大量的可編程邏輯開關。由于可編程邏輯開關的電阻較金屬線大得多,而且引入了大量的寄生電容,從而增加了電路功耗,降低了電路速度[2](研究表明,總動態(tài)功耗中62%來自于可編程布線資源)。而且大量組合邏輯容易受到布局布線延遲,在查找表的輸出端產(chǎn)生“毛刺”,當系統(tǒng)時鐘頻率、操作密度大幅提高時,極易引起時序邏輯錯誤[3]。為此,研究了一種基于存儲器映射的有限狀態(tài)機邏輯實現(xiàn)方法,對FPGA資源進行選擇性使用,從而達到降低FPGA功耗、提高運行可靠性的目的。
1 NAND Flash芯片接口及底層驅動實現(xiàn)
NAND Flash芯片是通過異步高性能I/O與主控芯片通信的,8位復用總線傳輸操作指令、操作地址以及數(shù)據(jù),多個控制信號來區(qū)分總線接口狀態(tài)以及獲取芯片工作狀態(tài),如圖1。
NAND Flash芯片控制器主要完成初始化、無效塊檢測、塊擦除、頁編程和頁讀取共5個基本操作模式。其中初始化操作與無效塊校驗是在系統(tǒng)上電后需要率先完成的操作,隨后控制器將進入到空閑狀態(tài),并根據(jù)輸入的相應控制信號完成剩下的塊擦除、頁編程和頁讀取操作。各個操作模式都是狀態(tài)轉移實現(xiàn)一定時序的輸出與接收,并且用狀態(tài)機容易實現(xiàn)。以塊擦除為例,其中輸入信號有Erase_en、Earse_do和R/B 3個信號,輸出信號有CLE、ALE、WE、RE 4個信號,狀態(tài)轉移如圖2所示。
2 基于存儲器映射的有限狀態(tài)機設計
2.1 基于優(yōu)化資源配置的低功耗、高可靠設計思路
目前主流的FPGA芯片內部除含有查找表、觸發(fā)器、布線資源等基本邏輯資源外,還集成了塊RAM、分部式RAM、時鐘管理等多種豐富的資源。FPGA的可編程特性主要靠布線結構中的可編程開關連接可編程邏輯塊實現(xiàn)。
不同類型資源所消耗的動態(tài)功耗在FPGA總功耗中所占比例不同。其中總動態(tài)功耗的62%來自于布線資源,19%來自于時鐘網(wǎng)絡,而可編程邏輯塊只占動態(tài)功耗的19%[4]。
根據(jù)FPGA中各種資源性能、功耗不同的現(xiàn)象,提出了一種新的設計思路,即在滿足系統(tǒng)性能的前提下,對FPGA資源進行優(yōu)化選擇性使用,盡可能使用相對較低功耗的資源完成設計任務。將有限狀態(tài)機映射到FPGA內部RAM中執(zhí)行,不僅可以減少布線資源的使用,從而降低FPGA的動態(tài)功耗,而且能夠消除高速狀態(tài)下切換布線延遲產(chǎn)生的錯誤或者無效狀態(tài)[5]。
2.2 基于存儲器映射的有限狀態(tài)機設計方法
狀態(tài)機組合邏輯都可以抽象為一定輸入編碼與一定輸出編碼的對應,即當前狀態(tài)與輸入信號共同決定次態(tài)的編碼[6]。為了能在塊RAM中執(zhí)行有限狀態(tài)機,需要將狀態(tài)機的編碼及狀態(tài)轉移等信息映射到塊RAM中。具體方法為:塊RAM中每個存儲單元內容分為狀態(tài)機的狀態(tài)編碼信息與狀態(tài)機的輸出信息兩部分。由狀態(tài)機的當前編碼信息和狀態(tài)機的輸入信息一起構成下一個狀態(tài)編碼信息的存儲地址。
如果采用[D2:D0]表示Flash塊擦除狀態(tài)機的8個操作狀態(tài)、[D4:D3]表示分3次發(fā)送的操作塊地址信息、[D5]表示所用的兩個操作命令,則操作狀態(tài)編碼、地址編碼、命令編碼即可唯一確定該狀態(tài)機當前所處的狀態(tài)(具體編碼方式如圖3所示)。其中次態(tài)的高4位是狀態(tài)機向下一狀態(tài)轉化時的輸出值,用于對Flash芯片的控制;當前態(tài)的高3位是狀態(tài)機的輸入控制信號。采用這種編碼方式容易將圖2所示的有限狀態(tài)機表示為當前態(tài)與次態(tài)對應的真值表見表1。
將表1中當前態(tài)作為RAM的存儲地址,次態(tài)作為RAM中存儲的數(shù)據(jù),即可以將圖2所示的有限狀態(tài)機映射到存儲器上執(zhí)行,如圖4所示。狀態(tài)機進行轉化時,下一狀態(tài)的編碼信息存儲地址由當前狀態(tài)的編碼信息和狀態(tài)機的輸入信息共同決定。同樣,F(xiàn)lash操作中其他的操作模式均可以按這種方式編碼并映射為用存儲器執(zhí)行的有限狀態(tài)機。
實現(xiàn)有限狀態(tài)機到存儲映射所需要的存儲空間最大為:
M=2i×(O+S)
其中i表示狀態(tài)機輸入的位數(shù),O表示狀態(tài)機輸出的位數(shù),S是狀態(tài)編碼的位數(shù)。
當然,當有限狀態(tài)機越來越復雜時,其所需的存儲空間容量越來越大,也可以適當?shù)馗鶕?jù)實際情況通過邏輯控制對地址控制進行修正來減小存儲空間需求。
3 NAND Flash控制中的低功耗優(yōu)化設計
FPGA的功耗主要包含靜態(tài)功耗和動態(tài)功耗兩部分。靜態(tài)功耗主要取決于所選FPGA的型號;動態(tài)功耗是所有電容性節(jié)點充放電產(chǎn)生的組合功耗和電路轉換過程中的短路電流形成的功耗[7]。降低FPGA動態(tài)功耗的思路為:在保證滿足設計要求的情況下,通過降低內部信號的翻轉率來降低功耗。其手段包括對時鐘進行管理與增加防火墻寄存器。
3.1 基于時鐘管理模塊的低功耗優(yōu)化
在FPGA內部時鐘信號不斷翻轉,由時鐘信號派生出的信號通常運行在主時鐘頻率的較小分量[8](通常為12%~15%)。所以在所有高耗能信號中,時鐘是主要矛盾。通常情況下,一個狀態(tài)機會在某個時間段內保持同一個狀態(tài)不變,但其時鐘始終處于翻轉狀態(tài)。因此,關閉閑置模塊程序的時鐘可以降低時鐘資源產(chǎn)生的功耗[9]。在Flash操作中,當FPGA處于擦除模式時,初始化操作、無效塊校驗、頁編程和頁讀取模式均處于閑置狀態(tài)。圖4中時鐘管理模塊負責對FPGA內部各模塊的時鐘進行管理,只有該模塊處于工作狀態(tài)時時鐘信號才會翻轉。在設計中增加時鐘管理模塊非常簡單,可以在硬件描述語言中添加,也可以通過綜合工具自動添加。
3.2 增加防火墻寄存器的低功耗優(yōu)化
在FPGA程序設計中大量組合邏輯很容易受到布局布線延遲在查找表的輸出端產(chǎn)生“毛刺”?!懊獭痹诤罄m(xù)組合邏輯電路的傳播中,可能導致多米諾骨牌效應,致使系統(tǒng)變得不穩(wěn)定,而且增加了調試難度,消耗了大量的能量。研究表明,由“毛刺”在大量組合邏輯中的傳遞引起的動態(tài)功耗占總動態(tài)功耗的10%。用FPGA實現(xiàn)大多數(shù)電路功能時,F(xiàn)PGA內部大部分的基本邏輯單元中的觸發(fā)器(Flip-Flop,F(xiàn)F)沒有使用,將這些未用的FF添加到信號傳輸路徑上被稱作增加防火墻寄存器[10](如圖5)。通過在程序中添加防火墻寄存器來分割組合邏輯,把每個邏輯功能限制在相鄰的邏輯單元中,從而縮短布線長度和減小負載電容,將“毛刺”波的傳遞限制在最小范圍,達到降低功耗的目的。
4 仿真實驗結果及分析
為了比較分析傳統(tǒng)狀態(tài)實現(xiàn)方法與基于RAM映射的有限狀態(tài)機設計以及低功耗優(yōu)化方法的性能差別,對設計完成FPGA內部資源消耗情況、功耗評估以及理論最高工作頻率3方面進行測試。
整個試驗以Xilinx公司的Spartan-6系列FPGA XC6SLX150為目標器件,選用ISE13.1版本的綜合工具,并利用ISE中自帶的XPower進行功耗分析。XPower從布局和布線(.ncd)文檔中獲得FPGA設計信息,從Vcd文檔中獲得設計中所需的時鐘、開關活動等信息,該文件可在布局和布線時在Pwr文檔中得出功耗報告。仿真結果如表2。
從表中可以看出,基于RAM映射的有限狀態(tài)機設計僅僅增加一個片內Block RAM資源的使用就使內部其他資源占用率下降到傳統(tǒng)方式的1/3,總功耗也能下降到原來的50%以下,并且最大工作頻率有明顯提高。對基于RAM映射的有限狀態(tài)機進行低功耗優(yōu)化后僅僅增加了小部分閑置FFs資源的使用,使FPGA總功耗進一步下降到傳統(tǒng)狀態(tài)機設計的43.1%,而且最大工作頻率提高了65.6%。
5 結論
文章針對Flash控制應用中實現(xiàn)復雜狀態(tài)機的設計時存在高速可靠性與動態(tài)功耗的問題進行研究,提出了一種優(yōu)化FPGA內部資源使用方法,利用FPGA內部存儲資源構成有限狀態(tài)機的設計并進行了低功耗優(yōu)化。其將傳統(tǒng)方式下的狀態(tài)機電路結構中不斷變化的狀態(tài)機寄存器信息轉化成RAM中的固定模塊,減少了使用功耗較高的布線資源。不僅有效降低了FPGA動態(tài)功耗,而且能夠消除高速狀態(tài)下切換布線延遲產(chǎn)生的錯誤或者無效狀態(tài),特別適合大規(guī)模的復雜狀態(tài)機結構,使得各個狀態(tài)機切換具有等間隔的時間延遲。增加時鐘管理模塊關閉閑置模塊的運行以及添加防火墻寄存器限制“毛刺”傳播,進一步降低了FPGA的動態(tài)功耗,提高了系統(tǒng)可靠性。該方法很容易遷移到其他FPGA應用設計中,有較高的實用價值。
參考文獻
[1] 馬寅,安軍社,王連國.基于Scrubbing的空間SRAM型FPGA抗單粒子翻轉系統(tǒng)設計[J].空間科學學報,2012,32(2):270-276.
[2] SHANG L,KAVIANI A,BALHALA K.Dynamic power consumption in Vinex-I1 FPGA family[C].Proceedings of the 2002 ACM/SIGDA tenth international symposium on Field-programmable gate arrays.2002:157-164.
[3] CROMAR S,LEE J,CHEN D M.FPGA-targeted high-level binding algorithm for power and area reduction with glitch-estimation[C].Proc of the 46th Annual Design Automation Conference.New York:ACM Press,2009:838-843.
[4] 李列文.FPGA低功耗設計相關技術研究[D].長沙:中南大學信息科學與工程學院,2014.
[5] 吳強,張逸中.FPGA位流解析及電路還原方法[J].計算機工程,2013,39(5):714-726.
[6] 儲成群.存儲測試系統(tǒng)若干關鍵技術研究[D].太原:中北大學儀器與電子學院,2015.
[7] 李宏鈞,胡小龍.流水線的FPGA低功耗設計[J].計算機系統(tǒng)應用,2011(8):234-237.
[8] WANG Q,GUPTA S,ANDERSON J.Clock power reduction for Virtex-5 FPGAs[C].Proceedings of the ACM/SIGDA international symposium on Field programmable gate arrys.2009:13-22.
[9] 何艷霞,何永泰.FPGA低功耗的設計研究[J].楚雄師范學院學報,2012(6):22-25.
[10] 黃娟,楊海鋼,譚宜濤,等.防火墻寄存器技術的FPGA低功耗布線算法研究[J].計算機應用研究,2011(8):2954-2957.