《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的NAND Flash控制接口電路設(shè)計(jì)
基于FPGA的NAND Flash控制接口電路設(shè)計(jì)
摘要: 1引言隨著存儲(chǔ)技術(shù)的不斷進(jìn)步,F(xiàn)lashMemory的存儲(chǔ)容量越來(lái)越大,讀寫數(shù)度越來(lái)越快。性能價(jià)格比越來(lái)越高。但是,NANDFlash本身存在缺點(diǎn),歸納起來(lái)有兩點(diǎn):讀寫控制時(shí)序復(fù)雜和位交換(o、1反轉(zhuǎn))問(wèn)題。NANDFlash器
關(guān)鍵詞: 接口IC 存儲(chǔ) Flash Memory
Abstract:
Key words :

1 引言
隨著存儲(chǔ)技術(shù)的不斷進(jìn)步,Flash Memory的存儲(chǔ)容量越來(lái)越大,讀寫數(shù)度越來(lái)越快。性能價(jià)格比越來(lái)越高。但是,NAND Flash本身存在缺點(diǎn),歸納起來(lái)有兩點(diǎn):讀寫控制時(shí)序復(fù)雜和位交換(o、1反轉(zhuǎn))問(wèn)題。NAND Flash器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,從而節(jié)省了引腳數(shù)量,但引腳不僅承擔(dān)著數(shù)據(jù)總線的功能,還承擔(dān)著地址及指令總線的功能,所以造成接口控制時(shí)序復(fù)雜。位反轉(zhuǎn)的問(wèn)題更多見于NAND Flash,NAND Flash的供應(yīng)商建議使用NAND Flash的同時(shí)使用EDC/ECC校驗(yàn)算法。

本文實(shí)現(xiàn)的NAND Flash控制器放置在CPU和NANF Flash器件之間,實(shí)現(xiàn)了NAND Flash的無(wú)粘接接口,可以大大簡(jiǎn)化CPU對(duì)NAND Flash的操作時(shí)序,提高CPU的使用效率。ECC功能可以保證存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性,ECC模塊和主控模塊相對(duì)獨(dú)立,在不需要ECC功能的時(shí)候,只需不使能ECC模塊,方便靈活。

2 控制接口電路的功能特性
整個(gè)控制接121電路分為兩大功能模塊:第一個(gè)功能模塊為主控制器模塊,該模塊簡(jiǎn)化NAND Flash的接口時(shí)序,可以為NAND Flash設(shè)計(jì)一個(gè)無(wú)粘接接口(Glueless Inter一face),從而使得對(duì)NAND Flash操作的時(shí)序復(fù)雜程度大大降低,使得NAND Flash接口映射為一個(gè)類似于SRAM的無(wú)粘結(jié)接口。第二個(gè)功能模塊是ECC模塊,該模塊對(duì)512個(gè)字節(jié)能糾正單比特錯(cuò)誤和檢測(cè)雙比特錯(cuò)誤,但對(duì)單比特以上的錯(cuò)誤無(wú)法糾正。對(duì)兩比特以E的錯(cuò)誤不保證能檢測(cè)。

兩個(gè)功能模塊相對(duì)獨(dú)立,ECC功能模塊位于主控制器模塊與NAND Flash芯片之間,可以選擇工作與不工作,主控制器模塊的所有命令都會(huì)通過(guò)ECC模塊傳給NANDFlash芯片。當(dāng)令ECC模塊不工作時(shí)。ECC模塊就相當(dāng)于連接主控制器模塊與NAND Flash芯片的導(dǎo)線;當(dāng)ECC模塊工作時(shí)。只會(huì)在豐控制器模塊的操作中加入一些步驟,并不會(huì)打亂主控制器模塊的操作時(shí)序。

3 主控制器
3.1寄存器和緩存配置
主控制器的外部接口類似于SRAM的,然而SRAM只有讀和寫兩種主要操作。而NAND Flash除r頁(yè)編程與讀操作之外還有ID讀取、重置、塊擦除和狀態(tài)讀取等操作,在不改變接口的情況下只能采用與NAND Flash類似的寫控制字的方式。主控制器有16字節(jié)寄存器組,可以從I/O總線上讀取指令和地址。指令寄存器采用存儲(chǔ)器映射(Memory Mapped Register)的編址方式,也就是說(shuō),寄存器的地址統(tǒng)一編入內(nèi)存空間,從0xFF0到OxFFA。

3.2主控制器的實(shí)現(xiàn)
主控制器的結(jié)構(gòu)框圖見圖1。下面分別討論時(shí)鐘控制模塊和狀態(tài)控制模塊的設(shè)計(jì)實(shí)現(xiàn)。

(1)時(shí)鐘控制模塊。對(duì)于這種讀寫使能都是低電平有效的芯片,采用占空比為1:1的時(shí)鐘進(jìn)行讀寫操作對(duì)提高數(shù)據(jù)的存取速度并不劃算。比如,進(jìn)行讀取操作時(shí),RE_L至少要保證低電平35ns才能保證數(shù)據(jù)被正確讀取,RE_L上升為高電平后只要保證數(shù)據(jù)再被保持10ns的時(shí)間就行,這樣加上5ns的余量,時(shí)鐘周期至少也要為80ns。為r保證數(shù)據(jù)能夠被正確讀取,并盡量提高讀取速度,我們采用16.7MHz即周期為60ns,占空比為1:2的時(shí)鐘。這種情況下,低電平持續(xù)時(shí)間為40ns,35ns數(shù)據(jù)確信被讀取后,仍有5ns的余量,高電平有20ns時(shí)間,也很充裕,既保證了數(shù)據(jù)的正確讀取。又充分發(fā)揮了器件的性能。

(2)狀態(tài)控制模塊。如圖2所示,主控制器執(zhí)行可控制
NAND Flash進(jìn)行重置、塊擦除、頁(yè)讀取、查錯(cuò)、讀ID。頁(yè)編程和狀態(tài)讀取指令的操作,不支持對(duì)NAND Flash的隨機(jī)讀寫操作。當(dāng)?shù)刂份斎霝?xFFA時(shí),指令寄存器中的命令字就會(huì)被讀取,確定下一步要執(zhí)行的指令,然后轉(zhuǎn)移到相應(yīng)的狀態(tài)。

4 ECC模塊
NAND Flash器件都受位交換現(xiàn)象的困擾,在某些情況下一個(gè)比特位會(huì)發(fā)生反轉(zhuǎn)。本節(jié)論述了專用校驗(yàn)算法ECC(Error Correction Code,簡(jiǎn)稱ECC的設(shè)計(jì)實(shí)現(xiàn)過(guò)程。ECC模塊被置于NAND Flash器件和主控制器之間,ECC模塊從主控制器接收各種信號(hào),不需要工作時(shí)直接將收到的信號(hào)傳給NAND Flash。需要工作時(shí)截取主控制器的控制信號(hào),加七自己的操作后再傳給NAND Flash。ECC模塊結(jié)構(gòu)見圖3。

(1)校驗(yàn)碼生成模塊。ECC校驗(yàn)碼生成模塊有96比特(12字節(jié))的運(yùn)算寄存器供運(yùn)算時(shí)暫存數(shù)據(jù),分成四組每組三字節(jié)的寄存器,這些寄存器保存著奇偶校驗(yàn)值(也就是各位的異或值),每當(dāng)數(shù)據(jù)送人時(shí)這些寄存器的值就更新一次。這些奇偶校驗(yàn)標(biāo)志的計(jì)算基于每字節(jié)數(shù)據(jù)的順序位置及數(shù)據(jù)本身。

(2)糾錯(cuò)模塊。當(dāng)NAND Flash進(jìn)行讀操作時(shí),讀出的數(shù)據(jù)將會(huì)被ECC碼生成模塊重新計(jì)算ECC碼。當(dāng)主控制器讀完一頁(yè)的所有2 010字節(jié)數(shù)據(jù)后,ECC模塊開始讀取事先寫入的FffX2校驗(yàn)碼,這些校驗(yàn)碼按字節(jié)移人查錯(cuò)模塊的移位寄存器中。當(dāng)3字節(jié)校驗(yàn)碼移入寄存器后,查錯(cuò)模塊將其與新牛成的ECC碼做異或運(yùn)算并確定錯(cuò)誤類型及位置,同時(shí)將錯(cuò)誤信息存入一個(gè)14位的寄存器中。

(3)狀態(tài)控制模塊。ECC模塊的狀態(tài)控制部分控制整個(gè)ECC模塊的工作時(shí)序,見圖4,同時(shí)根據(jù)當(dāng)前的狀態(tài)信息輸出狀態(tài)信號(hào)。對(duì)于讀操作,計(jì)算一次ECC碼需要512字節(jié),因此每次至少要讀出512字節(jié)的數(shù)據(jù)。為簡(jiǎn)單起見,我們只對(duì)N趟蛔Flash進(jìn)行整頁(yè)的讀操作,總線上傳輸前2 048字節(jié)數(shù)據(jù)時(shí),ECC模塊計(jì)算ECC碼,傳后12字節(jié)數(shù)據(jù)時(shí),ECC模塊將其存下,待數(shù)據(jù)傳輸完畢后進(jìn)行校驗(yàn),將存下的E(℃碼與計(jì)算出的ECC碼進(jìn)行按位異或,確定數(shù)據(jù)的正確性。對(duì)于寫操作,與讀操作類似,寫操作也要以整頁(yè)為單位進(jìn)行。數(shù)據(jù)一邊傳入NAND Flash,ECC模塊同時(shí)計(jì)算ECC碼。當(dāng)主控制模塊傳人第2 010字節(jié)數(shù)據(jù)后,ECC模塊接管數(shù)據(jù)總線,將自己計(jì)算出的ECC碼傳人NAND Flash。對(duì)于查錯(cuò)操作,當(dāng)主控制器下0x23指令時(shí)進(jìn)入該狀態(tài)。將每頁(yè)2 048字節(jié)數(shù)據(jù)共產(chǎn)生的8字節(jié)錯(cuò)誤信息,包括錯(cuò)誤的位置及種類傳送給主控制器,對(duì)于其它操作指令直接傳給NAND Flash芯片。

5 控制接口電路的驗(yàn)證
對(duì)塊擦除指令、頁(yè)讀取指令、頁(yè)編程指令、重置指令進(jìn)行功能仿真。地址0XFFA為指令寄存器,0x6代表塊擦除,0x0代表頁(yè)讀取,0x8代表頁(yè)編程,0xF代表重置。仿真結(jié)果如圖5~圖8所示。通過(guò)和NAND Flash器件要求的時(shí)序圖對(duì)比可以看出,控制器輸出的信號(hào)完全符合器件的要求。

 

 

6 結(jié)束語(yǔ)
本文在分析了NAND Flash產(chǎn)品特性的基礎(chǔ)上,給出了NAND Flash控制接口電路的設(shè)計(jì)方案和驗(yàn)證結(jié)果。本文的創(chuàng)新點(diǎn)是采用同步設(shè)計(jì)和FSM設(shè)計(jì)方法,控制接口電路能夠正確地將以SRAM時(shí)序輸入的塊擦除、頁(yè)讀取、頁(yè)編程、ID讀取、重置、狀態(tài)讀取操作指令轉(zhuǎn)化為NANDFlash器件要求的操作時(shí)序,大大簡(jiǎn)化了NAND Flash的讀寫控制時(shí)序。另外,接口控制電路還能實(shí)現(xiàn)ECC功能,具有512個(gè)字節(jié)中發(fā)現(xiàn)2比特錯(cuò)誤、糾正l比特錯(cuò)誤的檢錯(cuò)糾錯(cuò)能力。接口控制電路的各個(gè)指令操作功能在Xilinx的Spartarr3 Board上得到了驗(yàn)證,工作最高頻率達(dá)到100MHz。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。