《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種可編程多路閃存控制器的設計與驗證
一種可編程多路閃存控制器的設計與驗證
2017年電子技術應用第9期
張洪柳,,張 春
清華大學 微電子學研究所,,北京1000861
摘要: 介紹了一種可應用于固態(tài)硬盤(Solid State Disk)主控芯片中的閃存控制器的設計實現方法。該閃存控制器最大支持4路閃存通路,,4路閃存通路共用一個ECC糾錯模塊,,提出一種新型可編程控制方法,,CPU可實現4路閃存數據的并發(fā)讀寫,并兼容多種品牌的閃存顆粒,。主要介紹了該閃存控制器的硬件架構及關鍵模塊的設計實現思路,,并最終給出了閃存控制器的驗證結果及綜合結果,在多種糾錯格式及4路通路的配置下,,閃存控制器的性能及成本均能滿足一般SSD主控芯片的使用需求,。
中圖分類號: TP216
文獻標識碼: 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.
Design and verification method of one programmable multi-channel NAND Flash controller
Zhang Hongliu,Zhang Chun
Tsinghua University Microelectronics Institute,,Beijing 1000861,,China
Abstract: An effective design and implementation method of NAND flash memory host controller that implemented in Solid State Disk controller was analyzed in this paper. The NAND flash memory host controller supports up to 4 channels NAND flash ports, with 4 channels NAND flash port sharing one ECC error correction module. By using a new type of programmable control method, the CPU can realize 4 channels read and write flash memory data concurrent, and is compatible with a variety of brands of NAND flash. The design philosophy of hardware architecture and critical modules was introduced. The verification and synthesis results were demonstrated finally. Considering of performance and cost evaluation, general SSD controllers could be satisfied by this controller which configured with 4 flash channels and multiple ECC coding formats.
Key words : NAND flash;multi channel,;programmable,;SSD

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所示。

wdz4-t1.gif

    閃存控制器只包含一個寄存器配置模塊,,用于控制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所示,。

wdz4-t2.gif

2 設計實現

2.1 指令編碼

    由于閃存業(yè)界分為兩大陣營,各自支持ONFI[3]和Toggle兩種不同協議,如果通過硬件實現命令層的傳輸控制,,一旦閃存廠商協議升級或者變更,,則會存在命令層不兼容的風險,只有通過重新設計流片才能解決,,這樣無疑會增加固態(tài)硬盤主控廠商的成本,。

    本文采用軟硬件結合的方式,提出了一種可編程的命令層實現方法,,即CPU根據指令集格式進行命令碼編程,,寫入閃存控制器內部指令SRAM中,閃存控制器根據指令SRAM中的指令進行閃存顆粒的讀寫,、擦除等操作,,如果需要重復操作,CPU無需再次寫入,,直接配置閃存控制器執(zhí)行上次操作即可,。

2.1.1 指令集格式

    指令集共包含4條指令:控制指令、地址指令,、命令指令和數據指令,,如表1所示。

wdz4-b1.gif

    控制指令一般作為一個命令層操作的起始指令,,指令標志為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,。

wdz4-b2.gif

    數據指令主要包含系統(tǒng)數據和空閑區(qū)數據的讀寫操作,,指令標志為0x4,ms表示當前是系統(tǒng)數據(main data)還是空閑區(qū)數據(spare data),,rw代表讀寫操作,,sector_count表示當前操作數據塊的個數。

2.1.2 命令層編碼

    軟件通過CPU將閃存控制器指令進行編程后,,形成一套閃存命令層編碼,,可實現對閃存的讀寫擦除等各種操作。以閃存的擦除操作為例,,如表3。

wdz4-b3.gif

2.2 流程控制

    流程控制模塊主要負責命令層編碼的取址,、解析,、執(zhí)行以及數據通路模塊的控制等操作。

    流程控制模塊的狀態(tài)機如圖3所示,。

wdz4-t3.gif

    其中初始化狀態(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,。

wdz4-t4.gif

3 驗證方法

    前仿真主要分為模塊級前仿真芯片級前仿真及系統(tǒng)級前仿真,,系統(tǒng)級前仿真涉及技術層面太多,仿真效果精準但仿真速度慢,,往往花費大量時間和人力,,目前階段可實用性不強,本文主要進行了模塊級前仿真及芯片級前仿真,。

3.1 模塊級前仿真

    模塊級前仿真通過Verilog或者SystemVerilog[4]等硬件描述語言完成仿真平臺及閃存模型的實現,,主要針對閃存控制器的功能性及代碼覆蓋率進行仿真,,仿真速度快,覆蓋率高,。如圖5所示,。

wdz4-t5.gif

    ONFI接口讀取多個sector波形圖如圖6,Toggle接口讀取多個sector波形圖如圖7,。

wdz4-t6.gif

wdz4-t7.gif

3.2 芯片級前仿真

    芯片級前仿真主要基于SoC最小化平臺[5],,通過C語言編寫ARM CPU的驅動程序,對閃存控制器進行典型應用的激勵仿真,,主要驗證閃存控制器集成適用性及軟硬件結合的效率,。芯片級驗證平臺如圖8。閃存控制器讀取閃存數據波形如圖9,,閃存控制器寫入閃存數據波形如圖10,。

wdz4-t8.gif

wdz4-t9.gif

wdz4-t10.gif

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)

此內容為AET網站原創(chuàng),未經授權禁止轉載,。