1 引言
隨著存儲技術(shù)的不斷進(jìn)步,,Flash Memory的存儲容量越來越大,讀寫數(shù)度越來越快。性能價(jià)格比越來越高,。但是,,NAND Flash本身存在缺點(diǎn),歸納起來有兩點(diǎn):讀寫控制時(shí)序復(fù)雜和位交換(o,、1反轉(zhuǎn))問題,。NAND Flash器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,,從而節(jié)省了引腳數(shù)量,,但引腳不僅承擔(dān)著數(shù)據(jù)總線的功能,還承擔(dān)著地址及指令總線的功能,,所以造成接口控制時(shí)序復(fù)雜,。位反轉(zhuǎ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的無粘接接口,可以大大簡化CPU對NAND Flash的操作時(shí)序,,提高CPU的使用效率,。ECC功能可以保證存儲數(shù)據(jù)的準(zhǔn)確性,ECC模塊和主控模塊相對獨(dú)立,,在不需要ECC功能的時(shí)候,,只需不使能ECC模塊,方便靈活,。
2 控制接口電路的功能特性
整個(gè)控制接121電路分為兩大功能模塊:第一個(gè)功能模塊為主控制器模塊,,該模塊簡化NAND Flash的接口時(shí)序,可以為NAND Flash設(shè)計(jì)一個(gè)無粘接接口(Glueless Inter一face),,從而使得對NAND Flash操作的時(shí)序復(fù)雜程度大大降低,,使得NAND Flash接口映射為一個(gè)類似于SRAM的無粘結(jié)接口。第二個(gè)功能模塊是ECC模塊,,該模塊對512個(gè)字節(jié)能糾正單比特錯(cuò)誤和檢測雙比特錯(cuò)誤,,但對單比特以上的錯(cuò)誤無法糾正。對兩比特以E的錯(cuò)誤不保證能檢測,。
兩個(gè)功能模塊相對獨(dú)立,,ECC功能模塊位于主控制器模塊與NAND Flash芯片之間,,可以選擇工作與不工作,,主控制器模塊的所有命令都會通過ECC模塊傳給NANDFlash芯片。當(dāng)令ECC模塊不工作時(shí),。ECC模塊就相當(dāng)于連接主控制器模塊與NAND Flash芯片的導(dǎo)線,;當(dāng)ECC模塊工作時(shí)。只會在豐控制器模塊的操作中加入一些步驟,并不會打亂主控制器模塊的操作時(shí)序,。
3 主控制器
3.1寄存器和緩存配置
主控制器的外部接口類似于SRAM的,,然而SRAM只有讀和寫兩種主要操作。而NAND Flash除r頁編程與讀操作之外還有ID讀取,、重置,、塊擦除和狀態(tài)讀取等操作,在不改變接口的情況下只能采用與NAND Flash類似的寫控制字的方式,。主控制器有16字節(jié)寄存器組,,可以從I/O總線上讀取指令和地址。指令寄存器采用存儲器映射(Memory Mapped Register)的編址方式,,也就是說,,寄存器的地址統(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í)鐘控制模塊,。對于這種讀寫使能都是低電平有效的芯片,,采用占空比為1:1的時(shí)鐘進(jìn)行讀寫操作對提高數(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)行重置,、塊擦除、頁讀取,、查錯(cuò),、讀ID。頁編程和狀態(tài)讀取指令的操作,,不支持對NAND Flash的隨機(jī)讀寫操作,。當(dāng)?shù)刂份斎霝?xFFA時(shí),指令寄存器中的命令字就會被讀取,,確定下一步要執(zhí)行的指令,,然后轉(zhuǎn)移到相應(yīng)的狀態(tài)。
4 ECC模塊
NAND Flash器件都受位交換現(xiàn)象的困擾,,在某些情況下一個(gè)比特位會發(fā)生反轉(zhuǎn),。本節(jié)論述了專用校驗(yàn)算法ECC(Error Correction Code,簡稱ECC的設(shè)計(jì)實(shí)現(xiàn)過程,。ECC模塊被置于NAND Flash器件和主控制器之間,,ECC模塊從主控制器接收各種信號,不需要工作時(shí)直接將收到的信號傳給NAND Flash,。需要工作時(shí)截取主控制器的控制信號,,加七自己的操作后再傳給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ù)將會被ECC碼生成模塊重新計(jì)算ECC碼,。當(dāng)主控制器讀完一頁的所有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)信號,。對于讀操作,計(jì)算一次ECC碼需要512字節(jié),,因此每次至少要讀出512字節(jié)的數(shù)據(jù),。為簡單起見,我們只對N趟蛔Flash進(jìn)行整頁的讀操作,,總線上傳輸前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ù)的正確性,。對于寫操作,與讀操作類似,,寫操作也要以整頁為單位進(jìn)行,。數(shù)據(jù)一邊傳入NAND Flash,ECC模塊同時(shí)計(jì)算ECC碼,。當(dāng)主控制模塊傳人第2 010字節(jié)數(shù)據(jù)后,,ECC模塊接管數(shù)據(jù)總線,將自己計(jì)算出的ECC碼傳人NAND Flash,。對于查錯(cuò)操作,,當(dāng)主控制器下0x23指令時(shí)進(jìn)入該狀態(tài)。將每頁2 048字節(jié)數(shù)據(jù)共產(chǎn)生的8字節(jié)錯(cuò)誤信息,,包括錯(cuò)誤的位置及種類傳送給主控制器,,對于其它操作指令直接傳給NAND Flash芯片。
5 控制接口電路的驗(yàn)證
對塊擦除指令,、頁讀取指令,、頁編程指令、重置指令進(jìn)行功能仿真,。地址0XFFA為指令寄存器,,0x6代表塊擦除,0x0代表頁讀取,,0x8代表頁編程,,0xF代表重置。仿真結(jié)果如圖5~圖8所示,。通過和NAND Flash器件要求的時(shí)序圖對比可以看出,,控制器輸出的信號完全符合器件的要求。
6 結(jié)束語
本文在分析了NAND Flash產(chǎn)品特性的基礎(chǔ)上,,給出了NAND Flash控制接口電路的設(shè)計(jì)方案和驗(yàn)證結(jié)果,。本文的創(chuàng)新點(diǎn)是采用同步設(shè)計(jì)和FSM設(shè)計(jì)方法,,控制接口電路能夠正確地將以SRAM時(shí)序輸入的塊擦除、頁讀取,、頁編程,、ID讀取、重置,、狀態(tài)讀取操作指令轉(zhuǎn)化為NANDFlash器件要求的操作時(shí)序,,大大簡化了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。