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