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