?

多通道NAND Flash存儲芯片控制器的設計與實現

2018-08-23 02:11陳萬培
無線電工程 2018年9期
關鍵詞:存儲芯片緩沖區命令

陶 莉,陳萬培

(揚州大學 信息工程學院,江蘇 揚州 225000)

0 引言

隨著信息產業的飛速發展,各個行業對數據存儲的要求越來越高,基于閃存技術的NAND Flash存儲芯片由于價格低、體積小以及效率高的優勢,廣泛應用于現代數碼產品以及固態硬盤等媒體設備。作為高密度靜態可擴展存儲器,NAND Flash存儲芯片在大容量高速數據存儲系統中占據主流地位[1-2]。

采用NAND Flash存儲芯片作為存儲介質的固態盤,比傳統的存儲設備更能承受溫度的變化、機械的振動和沖擊,同時具有耗電少、存儲密度提升快、可靠性更高的優點,易于實現高速度大容量的存儲[3-8]。NAND Flash存儲芯片結構每比特成本低,具有更高的性能,并且能像磁盤一樣可以通過接口輕松升級[9-13]。另外,NAND Flash存儲芯片的封裝尺寸在不斷減少,而存儲容量每年會提高3~4倍[14-17]。由于NAND Flash存儲芯片復雜的接口操作,設計了一種與其時序相吻合的NAND Flash存儲芯片控制器。為了提高數據存儲容量和存取速度,文獻[18-20]采用的是多個控制器來操作多片NAND Flash存儲芯片,這樣設計方案在多個控制器之間同步問題比較明顯,接口復雜性也較高?;诖?,本文提出了以單個控制器為基礎,進行數據總線擴展,從而并行地控制多片NAND Flash存儲芯片。同時加入了流水線技術和乒乓操作,進一步提高數據存取速度。

1 NAND Flash控制器結構

基于FPGA可擴展的NAND Flash存儲芯片控制器的設計與測試系統結構如圖1所示。

圖1 NANDFlash控制器結構

整個測試系統由主機控制模塊和NAND Flash存儲芯片控制器模塊組成。NAND Flash存儲芯片控制器作為設計的核心包括1個邏輯控制模塊、2個數據緩沖區以及寄存器組。主機控制模塊相當于用戶端,用來發送命令給NAND Flash存儲芯片控制器。NAND Flash存儲芯片控制器主要產生與NAND Flash存儲芯片相吻合的時序并且直接控制NAND Flash存儲芯片。為了能夠并行操作4組NAND Flash存儲芯片,將NAND Flash存儲芯片控制器與外設NAND Flash存儲芯片之間的控制信號及狀態信號均擴展為4組,數據線擴展為32 bit。將測試系統下載到FPGA里,通過板卡上的高速接口與NAND Flash存儲芯片連接,即可方便地進行復位、讀ID、擦除、寫和讀的基本操作。

2 NAND Flash控制器總體設計

NANDFlash存儲芯片控制器主要采用狀態機并且利用Verilog HDL語言設計完成的。邏輯控制模塊是控制器的關鍵,用于產生符合要求的操作時序以及狀態間的轉換,2個數據緩沖區模塊用于數據的緩存以及實現乒乓操作,寄存器組用于存放NAND Flash存儲芯片的內設命令、狀態、地址和配置參數。

2.1 主狀態機設計

主狀態機主要由6個狀態組成,如圖2所示,分別是空閑狀態、復位狀態、讀ID狀態、擦除狀態、編程狀態和讀狀態。

圖2 主狀態轉移

在系統完成復位狀態之后,主狀態將進入空閑狀態,等待使能信號的到來從而進入下一個狀態。當接收到使能信號后,狀態具體的轉移是由命令碼的值(cmd_code)決定的。如果命令碼cmd_code=A2,那么狀態跳轉到編程狀態并且執行相應的子狀態,在該狀態完成之后發出完成標志done信號給主狀態,這時主狀態會進入空閑狀態并且等待下一個使能信號的到來。如果命令碼cmd_code=A3或者A4,流程和命令碼cmd_code=A2執行過程類似。

2.2 擦除狀態的設計

NANDFlash存儲芯片控制器的塊擦除狀態轉移圖如圖3所示。對于NAND Flash存儲芯片來說,在寫入數據之前必須進行塊擦除操作。

首先,NAND Flash存儲芯片控制器接收到主機發送的命令字60H,表示開始對NAND Flash存儲芯片進行塊擦除操作。主機發出3 Byte地址來決定具體待擦除的塊,之后NAND Flash存儲芯片控制器內部發出命令字D0H,即真正的擦除操作開始,隨后狀態信號R/B#變為低電平,表明塊擦除操作正在進行中,當狀態信號R/B#變為高電平,說明擦除操作完成。

2.3 頁編程狀態的設計

NANDFlash存儲芯片控制器的頁編程狀態轉移圖如圖4所示。

圖4 頁編程狀態轉移

首先切換一個待編程的緩沖區,用來做數據的緩存,主機發送一頁數據8 KB給數據緩沖區,隨后發出命令80H給NAND Flash存儲芯片控制器表示開始頁編程操作,由于NAND Flash存儲芯片讀寫的最小單位是頁,所以只要發送3 Byte地址來表示需要編程的頁地址,NAND Flash存儲芯片控制器接收到地址和命令后,把數據緩沖區里的數據寫到NAND Flash存儲芯片的寄存器里。在NAND Flash存儲芯片控制器發出命令字10H后,NAND Flash存儲芯片將會自動編程,狀態信號R/B#將進入低電平并且在這個過程中R/B#信號一直保持低電平。在編程操作完成后,狀態信號R/B#進入高電平。通過狀態寄存器的值來檢測整個操作是否成功完成。

2.4 頁讀狀態的設計

NANDFlash存儲芯片控制器的讀頁狀態轉移如圖5所示。

圖5 頁讀狀態轉移

主機發送命令字00H給NAND Flash存儲芯片控制器開始讀頁操作,同時向NAND Flash存儲芯片控制器發出3 Byte頁地址,在NAND Flash存儲芯片控制器發送命令字30H后,NAND Flash存儲芯片進行內部處理,此時狀態信號R/B#變為低電平,在此過程中NAND Flash存儲芯片控制器從NAND Flash存儲芯片中將一頁數據加載到數據緩沖區里,一旦狀態信號R/B#變為高電平之后,表明控制器已經將整頁數據全部讀進數據緩沖區里,此時緩存區里的數據可以被主機取走,等待所有數據被主機讀完,操作完成。

2.5 乒乓操作

NANDFlash控制器內部采用了2個單端口的RAM作為雙數據緩沖區,來實現乒乓操作,這樣節省了用戶的等待時間,有效地提高了數據的訪問速度。本次設計中,每個緩沖區大小為8 KB,數據線I/O口大小為32 bit。例如,在寫操作時,對地址為0xFF8的寄存器的最低位設置為“0”,表示選擇緩沖區A,主機向其寫入8 KB后交給NAND Flash存儲芯片控制器操作,這時控制器對NAND Flash芯片進行寫操作,同時控制器將地址為0xFF8的寄存器的最低位設置為“1”,表示選中緩沖區B,主機向其寫入8 KB,等待上一周期的寫操作完成,一旦寫操作完成后,主機將緩沖區B交給控制器,控制器將緩沖區A交給主機,即進行緩沖區交換,這時控制器再次進入寫操作,需要將緩沖區B里的所有數據寫入NAND Flash芯片,此時主機向緩沖區A寫入8 KB,如此交替循環。

數據雙緩沖技術實現了輸入數據和輸出數據都是連續不斷地,因此非常適合對數據流進行流水線處理。

3 實驗和結果分析

3.1 實驗環境

本系統是基于Verilog HDL語言設計完成的,并且在FPGA開發板上進行了驗證。開發板選用的是Cyclone V,系統時鐘設定為50 MHz,NAND Flash芯片選用的型號是MT29F64G08。為了分析系統內部的實時數據,這里借助Signal Tap II邏輯分析儀來捕獲信號波形,將Signal Tap II邏輯分析儀的采樣時鐘設置為50 MHz,和開發板系統時鐘保持一致。整個實驗對整個系統分別進行了功能驗證和性能驗證。

3.2 功能性驗證

功能性驗證是基于單片NAND Flash芯片完成的,對讀、寫和擦除狀態進行了驗證,實驗結果如圖6、圖7和圖8所示。通過對結果進行分析,所設計的NAND Flash控制器的讀寫和擦除操作的時序完全吻合NAND Flash芯片的時序,即控制器能夠正確操作NAND Flash芯片,從而得出所設計的NAND Flash存儲芯片控制器在功能上符合要求。

由圖6可知,采樣點從144~148,主機發出第64塊的塊地址,同時發出擦除命令60H給NAND Flash存儲芯片控制器,經過若干個周期后,在采樣點9處NAND Flash芯片接收到控制器發來的擦除命令,并且開始執行塊擦除操作。

由圖7可知,在采樣點-8處,主機從地址為3FF9H的狀態寄存器中讀回狀態值為E0H,表示NAND Flash芯片是準備就緒的,采樣點-7~-3這4個時鐘周期里,主機發送3 Byte地址值(第64塊中的第2頁的地址)以及寫命令80H。當采樣點在-1處時,主機向控制器中的數據緩沖區寫入8 KB,在控制器發出命令10H后,NAND Flash芯片進入寫操作。

由圖8可知,在采樣點-9處,主機從地址為3FF9H的狀態寄存器中讀回狀態值為E0H,表示NAND Flash芯片是準備就緒的,采樣點-8~-4這4個時鐘周期里,主機發送3 Byte地址值(第64塊中的第2頁的地址)以及讀命令00H。3個時鐘周期后,控制器發送寫命令30H給NAND Flash芯片,NAND Flash芯片接收到命令之后開始進行讀操作,8 KB全部從緩沖區里正確讀出,這表明所設計的控制器完全符合系統功能要求。

圖6 擦除狀態采樣圖

圖7 寫狀態采樣圖

圖8 讀狀態采樣圖

3.3 性能評估

在完成功能測試與驗證之后,進一步地對NAND Flash存儲芯片控制器進行性能測試。針對讀寫操作,表1和表2分別給出了單片NAND Flash芯片頁寫操作和頁讀操作所用的時間。

表1 頁寫時鐘數

測試ID號時鐘數平均時鐘數133 743230 933333 762430 941530 989633 80132 361.5

從表1可以看出,在寫操作時,不同的頁需要的時間是不同的,因此時間平均值32 361.5作為衡量的指標參數,由于頁的大小是8 KB,時鐘頻率是50 MHz,因此寫操作的速度是12.7 MB/s。同樣,從表2可以看出,讀操作所用的時間平均值是2 617.8,速度是156.5 MB/s。對于多片NAND Flash芯片并行結構,寫速度可以達到50.8 MB/s,讀速度可以達到626 MB/s。

表2 頁讀時鐘數

測試ID號時鐘數平均時鐘數12 54522 54032 65942 64652 66662 6512 617.8

4 結束語

本文針對NAND Flash存儲芯片接口復雜、不適合直接對其進行數據的存儲與讀取的問題,提出了一種符合NAND Flash存儲芯片時序的控制器來對其直接操作,該控制器是基于FPGA設計的,采用狀態機思想實現。為了進一步加快數據存儲與讀取速度,并且加大數據的存儲量,本文采用了多片NAND Flash并行結構將數據位擴展到32位,設計了2個數據緩沖區,實現了雙數據緩沖。今后將針對提高NAND Flash存儲芯片的讀寫速度方面展開更為深入的研究。

猜你喜歡
存儲芯片緩沖區命令
只聽主人的命令
中國存儲芯片打破韓美日壟斷局面邁出堅實一步
移防命令下達后
基于單片機的點餐系統硬件設計
一類裝配支線緩沖區配置的兩階段求解方法研究
這是人民的命令
關鍵鏈技術緩沖區的確定方法研究
初涉緩沖區
基于單片機的存儲測試電路
嵌入式系統中無線通信技術的設計與實現
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合