支持ONFI同步模式的NAND Flash控制器設計
摘要:先對ONFI標準進(jìn)行了介紹,然后再設計了一種支持ONFI2.1標準源同步高速模式的NAND Flash控制器,包括狀態(tài)機的設計,接口的設計等。對設計中遇到的源同步模式下,信號的對齊問(wèn)題進(jìn)行了說(shuō)明,并提出了一種解決方法。同時(shí)設計中還會(huì )遇到數據跨時(shí)鐘域傳輸的問(wèn)題,本文也給出了解決辦法。最后仿真和綜合結果表明,本文的設計完全滿(mǎn)足標準要求,具有實(shí)際的使用價(jià)值。
關(guān)鍵詞:非易失閃存技術(shù);ONFI2.1;源同步;兩倍數據率;超大規模集成電路
0 引言
在當今的數字信息時(shí)代,人們對大容量數據存儲的需求日趨旺盛。作為非易失性存儲器的NAND Flash,由于其高容量低成本的特點(diǎn),逐漸在實(shí)際產(chǎn)品,比如固態(tài)硬盤(pán)、智能手機、平板電腦等消費類(lèi)電子產(chǎn)品中得到應用。
由于其特殊的內部結構,NAND Flash的操作方式與NOR Flash不太一樣,不支持隨機字節訪(fǎng)問(wèn),其讀、寫(xiě)操作均要以頁(yè)面(Page)為單位進(jìn)行,同一頁(yè)面在未擦除前不允許進(jìn)行多次寫(xiě)操作;而擦除操作必須以塊(Block)為單位進(jìn)行。因此,需要針對這一特性設計專(zhuān)用的控制器來(lái)完成各種操作。
本文根據這一目的,設計了一款NAND Flash控制器。該控制器不僅能夠完成前面提到的基本操作,還能支持ONFI2.1標準中的同步接口模式。使其能夠以200MB/s的速度對NAND Flash設備進(jìn)行讀寫(xiě)操作,遠遠快于其他同類(lèi)NAND Flash控制器。
1 ONFI標準
ONFI(Open NAND Flash Interface,開(kāi)放式NAND閃存接口)規范是一種Flash閃存接口的標準,它是Intel為統一當初混亂的閃存接口所倡導的標準。因為在此之前,市場(chǎng)上銷(xiāo)售的NAND閃存芯片在引腳定義上都不完全相同。這就使得為一家公司設計的控制器,很有可能無(wú)法用在另一家公司的產(chǎn)品上。比如為東芝芯片設計的控制器,就無(wú)法用在三星或海力士的產(chǎn)品上,這就給上游的主控設計商以及最終的產(chǎn)品設計人員帶來(lái)了很大的困難。
為此,Intel聯(lián)合多家NAND Flash廠(chǎng)商制定了ONFI標準,統一NAND Flash芯片的引腳定義,并在此基礎上采用新的技術(shù)以實(shí)現新的功能。2006年發(fā)布了ONFI1.O標準,使得接口的統一邁出了實(shí)質(zhì)性的一步。但是該版本速度較慢,最高速度只有34MB/s,不具有太大的競爭優(yōu)勢。為了提高速度,ONFI組織在2008年發(fā)布了ONFI2.0,將接口速度提升到了133MB/s。在該版本中,主要是通過(guò)兩項技術(shù)來(lái)提高傳輸速度。第一項就是在DRAM領(lǐng)域里常用的DDR(Double Data Rate,兩倍數據率)信號技術(shù)。第二項是使用源同步時(shí)鐘來(lái)精確控制鎖存信號,使其能夠達到更高的工作頻率。2009年,ONFI組織又推出了規格更高的ONFI2.1標準,把最高速度提高到了200MB/s。
2 控制器結構
本文設計的NAND Flash控制器是SOC芯片的一部分,作為AHB Slave被掛在總線(xiàn)上,接收來(lái)自CPU的讀、寫(xiě)和擦除等命令。其結構框圖如圖1所示。
其中AHB Slave接口模塊主要是負責處理與AHB總線(xiàn)協(xié)議相關(guān)的操作;ECC編譯碼模塊主要是負責對存入NAND Flash中的數據進(jìn)行糾錯編碼和對從NAND Flash中讀出的數據進(jìn)行糾錯碼譯碼的工作;異步FIFO模塊用來(lái)緩存數據,并承擔數據跨時(shí)鐘域的工作;主控模塊負責整個(gè)控制器的控制;異步收發(fā)接口模塊主要負責異步模式下的數據讀寫(xiě);同理,同步收發(fā)接口模塊主要負責同步模式下的數據讀寫(xiě)。本文的重點(diǎn)是與ONFI標準相關(guān)的接口設計,所以AHB Slave與ECC兩個(gè)模塊在此不再介紹,具體請參閱其他相關(guān)文獻。
主控模塊是整個(gè)控制器的中心控制模塊,由一個(gè)主狀態(tài)機和多個(gè)子狀態(tài)機構成。主狀態(tài)機有1個(gè)空閑狀態(tài)和8個(gè)工作狀態(tài),分別對應著(zhù)8種具體的操作。其狀態(tài)轉換如圖2所示。而每個(gè)工作狀態(tài)又對應1個(gè)子狀態(tài)機,負責每個(gè)操作的具體細節。由于篇幅所限,本文只列出Program操作的子狀態(tài)機狀態(tài)轉換圖,如圖3所示。其他子狀態(tài)機的狀態(tài)可以根據ONFI標準來(lái)確定。
評論