文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.170744
中文引用格式: 張洪柳,張春. 一種可編程多路閃存控制器的設計與驗證[J].電子技術應用,,2017,,43(9):39-42.
英文引用格式: Zhang Hongliu,Zhang Chun. Design and verification method of one programmable multi-channel NAND Flash controller[J].Application of Electronic Technique,,2017,,43(9):39-42.
0 引言
固態(tài)硬盤相對于傳統(tǒng)機械硬盤,憑借其高讀寫性能,、低功耗,、低噪音,、體積小、抗震性強等諸多優(yōu)點,,近年來在消費類電子,、軍工、航空航天等領域得到迅猛發(fā)展,,并不斷搶占機械硬盤的原有市場份額,。
固態(tài)硬盤主要由主控芯片、閃存芯片和DRAM緩存芯片組成,。主控芯片作為固態(tài)硬盤的核心器件,,其好壞優(yōu)劣直接決定固態(tài)硬盤產品的性能和可靠性;閃存芯片目前主流應用的是15/16 nm的MLC顆粒,,雖然存儲容量單顆可達128 Gb,,接口性能可達400 MB/s,但數據保存性能較差,,需要主控芯片具有極強的數據糾錯能力,,同時配合主控芯片中的FTL(Flash Translation Layer)固件進行磨損均衡調度,以保證固態(tài)硬盤的整體壽命,。
固態(tài)硬盤主控芯片早期主要以PATA為接口,,經過多年的市場發(fā)展已經逐步升級為USB3.0(5 Gb/s)/SATAIII(6 Gb/s)接口,甚至在企業(yè)級已經升級為PCIE3.0(8 Gb/s)接口,,單盤容量最大可支持8 TB,。而閃存單顆粒無論是接口速度還是容量,都無法滿足固態(tài)硬盤的整體需求,,一般都是通過一顆主控加上多顆閃存陣列的方案實現,。閃存控制器作為固態(tài)硬盤主控的關鍵模塊,其兼容性,、糾錯能力,、吞吐量、閃存陣列組合方式等特性,,往往決定了最終固態(tài)硬盤產品的成本,、性能及穩(wěn)定性。本文所設計的閃存控制器可支持4路閃存通路,,共支持4×8片閃存片選,,最大容量可支持512 GB,支持更大容量可集成多個閃存控制器,;在110 nm工藝下,,閃存控制器接口速率可達4×200 MB/s,在55/40 nm工藝下,速率可達4×400 MB/s,;在兼容性方面,本文閃存控制器提出了一種可編程的命令編碼方式,,可有效保證對閃存各個廠商命令層的支持,。
1 閃存控制器總體架構
1.1 總體架構
本文閃存控制器對外接口主要包括一個AHB[1]配置從端口、一個AHB數據從端口和4路閃存主機端口,,每路閃存端口可外掛8片Flash片選[2],。如圖1所示。
閃存控制器只包含一個寄存器配置模塊,,用于控制4路通路的數據傳輸并反映當前狀態(tài),。4路通路模塊共用一個AHB數據從端口,AHB數據從端口通過地址譯碼產生選擇信號,,分別對4路通路進行數據讀寫,,通過共用AHB數據端口,可降低芯片頂層集成的繁瑣程度,,降低出錯概率,,便于驗證,且不影響數據傳輸帶寬,。4路通路模塊共用一個ECC解碼模塊,,ECC解碼模塊數據輸入輸出位寬為32位,保證與4路閃存8位端口總位寬相一致,,出于面積方面考慮,,與4個8位寬的ECC解碼模塊相比,采用32 bit位寬可通過優(yōu)化算法和DC綜合等方法有效降低閃存控制器整體面積,。
1.2 單通路模塊架構
單通路模塊是整個閃存控制器的核心模塊,,包含3個時鐘:AHB_CLK,NFC_CLK,NAND_CLK,。所以按時鐘域可分為總線時鐘域,、模塊時鐘域和閃存時鐘域。按照邏輯劃分可分為控制通路和數據通路,,控制通路包括流程控制模塊,、初始化模塊、地址生成模塊和指令控制模塊,;數據通路包括數據控制模塊,、加解擾模塊、取反模塊和閃存接口模塊,,閃存控制器單通路模塊架構如圖2所示,。
2 設計實現
2.1 指令編碼
由于閃存業(yè)界分為兩大陣營,各自支持ONFI[3]和Toggle兩種不同協議,如果通過硬件實現命令層的傳輸控制,,一旦閃存廠商協議升級或者變更,,則會存在命令層不兼容的風險,只有通過重新設計流片才能解決,,這樣無疑會增加固態(tài)硬盤主控廠商的成本,。
本文采用軟硬件結合的方式,提出了一種可編程的命令層實現方法,,即CPU根據指令集格式進行命令碼編程,,寫入閃存控制器內部指令SRAM中,閃存控制器根據指令SRAM中的指令進行閃存顆粒的讀寫,、擦除等操作,,如果需要重復操作,CPU無需再次寫入,,直接配置閃存控制器執(zhí)行上次操作即可,。
2.1.1 指令集格式
指令集共包含4條指令:控制指令、地址指令,、命令指令和數據指令,,如表1所示。
控制指令一般作為一個命令層操作的起始指令,,指令標志為0xf,,ce_num代表當前操作的閃存片選,i代表操作完成后是否報告中斷,,byte2和byte1保留,,byte0代表當前命令層操作總的word個數。
地址指令指令標志為0x1,,vn代表當前指令有效地址個數,,byte0-2分別代表當前操作的地址,比如閃存列地址為2個byte,,則vn為2,,byte0和byte1有效。
命令指令包含閃存spec定義的標準命令和自定義用戶命令,,指令標志為0x2,,su代表當前是spec命令還是用戶命令,command_code當su為1時由CPU寫入閃存標準命令,,當su為0時,,由CPU寫入用戶命令。用戶命令主要用于滿足閃存命令間的一些時序參數及狀態(tài)操作,,定義如表2,。
數據指令主要包含系統(tǒng)數據和空閑區(qū)數據的讀寫操作,,指令標志為0x4,ms表示當前是系統(tǒng)數據(main data)還是空閑區(qū)數據(spare data),,rw代表讀寫操作,,sector_count表示當前操作數據塊的個數。
2.1.2 命令層編碼
軟件通過CPU將閃存控制器指令進行編程后,,形成一套閃存命令層編碼,,可實現對閃存的讀寫擦除等各種操作。以閃存的擦除操作為例,,如表3。
2.2 流程控制
流程控制模塊主要負責命令層編碼的取址,、解析,、執(zhí)行以及數據通路模塊的控制等操作。
流程控制模塊的狀態(tài)機如圖3所示,。
其中初始化狀態(tài)主要負責檢測當前閃存控制器外掛閃存的數量,,通過輪詢單個閃存片選,發(fā)送復位指令后檢查閃存RB_n引腳狀態(tài),,如果發(fā)送指令后檢測到RB_n信號線下降沿,,則表示閃存外掛有效。CMDREC狀態(tài)主要記錄當前CPU配置的命令層編碼起始地址及命令層有效個數,,如果執(zhí)行完一個命令層編碼后,,需要在此狀態(tài)檢查命令層編碼的有效個數,如果有效個數為0才能跳轉至IDLE狀態(tài),。
2.3 加解擾
由于MLC工藝越來越先進,,閃存內部單元間的干擾效應(cell-cell-interference)越加明顯,如果一段數據全為0或者全為1,,則會加劇該效應,,以致超出ECC解碼模塊的糾錯能力,所以需要將明文數據離散化后存入到閃存介質中,,最大化降低單元干擾效應,。
本文采用線性反饋的方式實現數據的離散化,如圖4,。
3 驗證方法
前仿真主要分為模塊級前仿真芯片級前仿真及系統(tǒng)級前仿真,,系統(tǒng)級前仿真涉及技術層面太多,仿真效果精準但仿真速度慢,,往往花費大量時間和人力,,目前階段可實用性不強,本文主要進行了模塊級前仿真及芯片級前仿真,。
3.1 模塊級前仿真
模塊級前仿真通過Verilog或者SystemVerilog[4]等硬件描述語言完成仿真平臺及閃存模型的實現,,主要針對閃存控制器的功能性及代碼覆蓋率進行仿真,,仿真速度快,覆蓋率高,。如圖5所示,。
ONFI接口讀取多個sector波形圖如圖6,Toggle接口讀取多個sector波形圖如圖7,。
3.2 芯片級前仿真
芯片級前仿真主要基于SoC最小化平臺[5],,通過C語言編寫ARM CPU的驅動程序,對閃存控制器進行典型應用的激勵仿真,,主要驗證閃存控制器集成適用性及軟硬件結合的效率,。芯片級驗證平臺如圖8。閃存控制器讀取閃存數據波形如圖9,,閃存控制器寫入閃存數據波形如圖10,。
4 綜合結果
由于不同主控對閃存控制器的需求不同,集成參數不相同,,最終的綜合結果也各不相同,。本文中針對一般SATA類SSD主控的需求,后端綜合采用110 nm工藝庫,,閃存控制器典型配置參數如下:
閃存通路數:4
AHB接口位寬:32
閃存接口位寬:8
AHB_CLK/NFC_CLK:200 MHz
NAND_CLK:400 MHz
ECC糾錯格式:1/8/16/24/40/60/72
線負載模型:enG1000K
綜合結果總門數約為1 030 K邏輯門,,其中ECC解碼模塊占用490 K邏輯門,單路控制器門數約為135 K邏輯門,。功耗情況如下:
單元內部功耗:39.885 2 mW(89%)
線開關電源:4.929 6 mW(11%)
整體動態(tài)功耗:44.814 9 mW(100%)
單元漏電功耗:3.574 6 mW
5 結論
本文根據固態(tài)硬盤主控芯片對閃存控制的操作需求,,通過軟硬件結合可編程的方式,設計了一種高效且兼容性極強的專用固態(tài)硬盤閃存控制器,。該控制器可覆蓋支持各類閃存廠商的操作命令,,糾錯能力能夠滿足不同工藝下閃存顆粒的需求,在支持容量,、接口傳輸速率,、電路面積、動態(tài)功耗等方面也均可滿足固態(tài)硬盤主控芯片的要求,,具有廣泛的應用價值,,并已成功應用在固態(tài)硬盤設計中。
參考文獻
[1] ARM.AMBA@3 AHB-Lite Protocol V1.0 Specification.www.arm.com,,2006.
[2] 陳宏銘,,程玉華.針對固態(tài)硬盤應用的多通路閃存控制器實現[J].中國集成電路,2012(1):37.
[3] Intel,,Micron,,Phison,et al.Open NAND Flash Interface Specification Revision 3.2.www.onfi.org,,2013.
[4] Accellera,,SystemVerilog 3.1a Language Reference Manual.www.accellera.org,,2004.
[5] 張磊,李清江,,聶洪山,,等.基于SATA接口的固態(tài)硬盤設計[J].微處理機,2011(4):77-78.
作者信息:
張洪柳,,張 春
(清華大學 微電子學研究所,,北京1000861)