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