文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.009
中文引用格式: 李杰,任勇峰,李輝景. 基于存儲器映射的Flash高速低功耗驅動實現[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控制操作中,有限狀態機(Finite State Machine,FSM)與多進程描述方式相比有著層次分明、結構清晰、易于修改和移植的明顯優勢而被廣泛應用。傳統狀態機在描述實現寄存器存儲狀態信息、組合邏輯產生下一個狀態和輸出值時,大量使用了FPGA的布線、查找表、寄存器等寶貴資源[1]。
為了實現FPGA的可編程性,在其內部使用了大量的可編程邏輯開關。由于可編程邏輯開關的電阻較金屬線大得多,而且引入了大量的寄生電容,從而增加了電路功耗,降低了電路速度[2](研究表明,總動態功耗中62%來自于可編程布線資源)。而且大量組合邏輯容易受到布局布線延遲,在查找表的輸出端產生“毛刺”,當系統時鐘頻率、操作密度大幅提高時,極易引起時序邏輯錯誤[3]。為此,研究了一種基于存儲器映射的有限狀態機邏輯實現方法,對FPGA資源進行選擇性使用,從而達到降低FPGA功耗、提高運行可靠性的目的。
1 NAND Flash芯片接口及底層驅動實現
NAND Flash芯片是通過異步高性能I/O與主控芯片通信的,8位復用總線傳輸操作指令、操作地址以及數據,多個控制信號來區分總線接口狀態以及獲取芯片工作狀態,如圖1。
NAND Flash芯片控制器主要完成初始化、無效塊檢測、塊擦除、頁編程和頁讀取共5個基本操作模式。其中初始化操作與無效塊校驗是在系統上電后需要率先完成的操作,隨后控制器將進入到空閑狀態,并根據輸入的相應控制信號完成剩下的塊擦除、頁編程和頁讀取操作。各個操作模式都是狀態轉移實現一定時序的輸出與接收,并且用狀態機容易實現。以塊擦除為例,其中輸入信號有Erase_en、Earse_do和R/B 3個信號,輸出信號有CLE、ALE、WE、RE 4個信號,狀態轉移如圖2所示。
2 基于存儲器映射的有限狀態機設計
2.1 基于優化資源配置的低功耗、高可靠設計思路
目前主流的FPGA芯片內部除含有查找表、觸發器、布線資源等基本邏輯資源外,還集成了塊RAM、分部式RAM、時鐘管理等多種豐富的資源。FPGA的可編程特性主要靠布線結構中的可編程開關連接可編程邏輯塊實現。
不同類型資源所消耗的動態功耗在FPGA總功耗中所占比例不同。其中總動態功耗的62%來自于布線資源,19%來自于時鐘網絡,而可編程邏輯塊只占動態功耗的19%[4]。
根據FPGA中各種資源性能、功耗不同的現象,提出了一種新的設計思路,即在滿足系統性能的前提下,對FPGA資源進行優化選擇性使用,盡可能使用相對較低功耗的資源完成設計任務。將有限狀態機映射到FPGA內部RAM中執行,不僅可以減少布線資源的使用,從而降低FPGA的動態功耗,而且能夠消除高速狀態下切換布線延遲產生的錯誤或者無效狀態[5]。
2.2 基于存儲器映射的有限狀態機設計方法
狀態機組合邏輯都可以抽象為一定輸入編碼與一定輸出編碼的對應,即當前狀態與輸入信號共同決定次態的編碼[6]。為了能在塊RAM中執行有限狀態機,需要將狀態機的編碼及狀態轉移等信息映射到塊RAM中。具體方法為:塊RAM中每個存儲單元內容分為狀態機的狀態編碼信息與狀態機的輸出信息兩部分。由狀態機的當前編碼信息和狀態機的輸入信息一起構成下一個狀態編碼信息的存儲地址。
如果采用[D2:D0]表示Flash塊擦除狀態機的8個操作狀態、[D4:D3]表示分3次發送的操作塊地址信息、[D5]表示所用的兩個操作命令,則操作狀態編碼、地址編碼、命令編碼即可唯一確定該狀態機當前所處的狀態(具體編碼方式如圖3所示)。其中次態的高4位是狀態機向下一狀態轉化時的輸出值,用于對Flash芯片的控制;當前態的高3位是狀態機的輸入控制信號。采用這種編碼方式容易將圖2所示的有限狀態機表示為當前態與次態對應的真值表見表1。
將表1中當前態作為RAM的存儲地址,次態作為RAM中存儲的數據,即可以將圖2所示的有限狀態機映射到存儲器上執行,如圖4所示。狀態機進行轉化時,下一狀態的編碼信息存儲地址由當前狀態的編碼信息和狀態機的輸入信息共同決定。同樣,Flash操作中其他的操作模式均可以按這種方式編碼并映射為用存儲器執行的有限狀態機。
實現有限狀態機到存儲映射所需要的存儲空間最大為:
M=2i×(O+S)
其中i表示狀態機輸入的位數,O表示狀態機輸出的位數,S是狀態編碼的位數。
當然,當有限狀態機越來越復雜時,其所需的存儲空間容量越來越大,也可以適當地根據實際情況通過邏輯控制對地址控制進行修正來減小存儲空間需求。
3 NAND Flash控制中的低功耗優化設計
FPGA的功耗主要包含靜態功耗和動態功耗兩部分。靜態功耗主要取決于所選FPGA的型號;動態功耗是所有電容性節點充放電產生的組合功耗和電路轉換過程中的短路電流形成的功耗[7]。降低FPGA動態功耗的思路為:在保證滿足設計要求的情況下,通過降低內部信號的翻轉率來降低功耗。其手段包括對時鐘進行管理與增加防火墻寄存器。
3.1 基于時鐘管理模塊的低功耗優化
在FPGA內部時鐘信號不斷翻轉,由時鐘信號派生出的信號通常運行在主時鐘頻率的較小分量[8](通常為12%~15%)。所以在所有高耗能信號中,時鐘是主要矛盾。通常情況下,一個狀態機會在某個時間段內保持同一個狀態不變,但其時鐘始終處于翻轉狀態。因此,關閉閑置模塊程序的時鐘可以降低時鐘資源產生的功耗[9]。在Flash操作中,當FPGA處于擦除模式時,初始化操作、無效塊校驗、頁編程和頁讀取模式均處于閑置狀態。圖4中時鐘管理模塊負責對FPGA內部各模塊的時鐘進行管理,只有該模塊處于工作狀態時時鐘信號才會翻轉。在設計中增加時鐘管理模塊非常簡單,可以在硬件描述語言中添加,也可以通過綜合工具自動添加。
3.2 增加防火墻寄存器的低功耗優化
在FPGA程序設計中大量組合邏輯很容易受到布局布線延遲在查找表的輸出端產生“毛刺”?!懊獭痹诤罄m組合邏輯電路的傳播中,可能導致多米諾骨牌效應,致使系統變得不穩定,而且增加了調試難度,消耗了大量的能量。研究表明,由“毛刺”在大量組合邏輯中的傳遞引起的動態功耗占總動態功耗的10%。用FPGA實現大多數電路功能時,FPGA內部大部分的基本邏輯單元中的觸發器(Flip-Flop,FF)沒有使用,將這些未用的FF添加到信號傳輸路徑上被稱作增加防火墻寄存器[10](如圖5)。通過在程序中添加防火墻寄存器來分割組合邏輯,把每個邏輯功能限制在相鄰的邏輯單元中,從而縮短布線長度和減小負載電容,將“毛刺”波的傳遞限制在最小范圍,達到降低功耗的目的。
4 仿真實驗結果及分析
為了比較分析傳統狀態實現方法與基于RAM映射的有限狀態機設計以及低功耗優化方法的性能差別,對設計完成FPGA內部資源消耗情況、功耗評估以及理論最高工作頻率3方面進行測試。
整個試驗以Xilinx公司的Spartan-6系列FPGA XC6SLX150為目標器件,選用ISE13.1版本的綜合工具,并利用ISE中自帶的XPower進行功耗分析。XPower從布局和布線(.ncd)文檔中獲得FPGA設計信息,從Vcd文檔中獲得設計中所需的時鐘、開關活動等信息,該文件可在布局和布線時在Pwr文檔中得出功耗報告。仿真結果如表2。
從表中可以看出,基于RAM映射的有限狀態機設計僅僅增加一個片內Block RAM資源的使用就使內部其他資源占用率下降到傳統方式的1/3,總功耗也能下降到原來的50%以下,并且最大工作頻率有明顯提高。對基于RAM映射的有限狀態機進行低功耗優化后僅僅增加了小部分閑置FFs資源的使用,使FPGA總功耗進一步下降到傳統狀態機設計的43.1%,而且最大工作頻率提高了65.6%。
5 結論
文章針對Flash控制應用中實現復雜狀態機的設計時存在高速可靠性與動態功耗的問題進行研究,提出了一種優化FPGA內部資源使用方法,利用FPGA內部存儲資源構成有限狀態機的設計并進行了低功耗優化。其將傳統方式下的狀態機電路結構中不斷變化的狀態機寄存器信息轉化成RAM中的固定模塊,減少了使用功耗較高的布線資源。不僅有效降低了FPGA動態功耗,而且能夠消除高速狀態下切換布線延遲產生的錯誤或者無效狀態,特別適合大規模的復雜狀態機結構,使得各個狀態機切換具有等間隔的時間延遲。增加時鐘管理模塊關閉閑置模塊的運行以及添加防火墻寄存器限制“毛刺”傳播,進一步降低了FPGA的動態功耗,提高了系統可靠性。該方法很容易遷移到其他FPGA應用設計中,有較高的實用價值。
參考文獻
[1] 馬寅,安軍社,王連國.基于Scrubbing的空間SRAM型FPGA抗單粒子翻轉系統設計[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] 儲成群.存儲測試系統若干關鍵技術研究[D].太原:中北大學儀器與電子學院,2015.
[7] 李宏鈞,胡小龍.流水線的FPGA低功耗設計[J].計算機系統應用,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.