国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的NAND FLASH控制器的設(shè)計(jì)

2011-10-18 10:50:56李槐生
科學(xué)之友 2011年11期
關(guān)鍵詞:狀態(tài)機(jī)字節(jié)命令

李槐生

(太原理工大學(xué)信息學(xué)院,山西 太原 030024)

隨著科技的進(jìn)步,電子產(chǎn)品已經(jīng)以各種各樣的形式進(jìn)入到了千家萬(wàn)戶。如人們每天接觸的MP3、手機(jī)、數(shù)碼相機(jī)、移動(dòng)存儲(chǔ)設(shè)備等電子產(chǎn)品。數(shù)據(jù)的存儲(chǔ)是電子設(shè)備的關(guān)鍵技術(shù)之一。而目前應(yīng)用最為廣泛的存儲(chǔ)介質(zhì)就是NAND FLASH,它具有存儲(chǔ)容量大、價(jià)格低廉、速度快等優(yōu)點(diǎn)。對(duì)NAND FLASH的控制可以直接使用專用的控制芯片,這種方法比較簡(jiǎn)單,但是性價(jià)比較低,該芯片的部分功能得不到使用,造成浪費(fèi),兼容性較差。目前隨著FPGA(即現(xiàn)場(chǎng)可編程邏輯門陣列)技術(shù)的發(fā)展,越來(lái)越多的工程師選擇自己開發(fā)專用集成芯片。這種方法可以根據(jù)用戶特有的需求來(lái)量身打造,且IP核可以與其它系統(tǒng)很好地集成互聯(lián),兼容性好。本設(shè)計(jì)就是用FPGA來(lái)實(shí)現(xiàn)了NAND FLASH的控制器,并通過(guò)測(cè)試驗(yàn)證了該IP核。

1 NAND FLASH控制器實(shí)現(xiàn)

本控制器所實(shí)現(xiàn)的是對(duì)NAND FLASH的讀、寫、擦除以及壞塊處理等操作,其中利用FPGA內(nèi)部RAM資源設(shè)計(jì)出32 K緩存,用來(lái)暫存FLASH中的數(shù)據(jù),并留下控制端口,與MCU系統(tǒng)進(jìn)行互聯(lián),使得MCU等對(duì)NAND FLASH進(jìn)行操作時(shí)不需要考慮具體的控制時(shí)序以及壞塊等問(wèn)題,只需關(guān)注存儲(chǔ)數(shù)據(jù)以及存儲(chǔ)位置即可,使得MCU代碼開發(fā)者不需要過(guò)多地考慮物理底層的設(shè)計(jì),簡(jiǎn)化開發(fā)難度??刂破骰炯軜?gòu)框見圖1。

圖1 NAND FLASH控制器

本設(shè)計(jì)選用的NAND FLASH為三星公司的K9F5608U0B,其容量為32 M×8 Bit。它有2 048個(gè)塊,每塊32頁(yè),每頁(yè)有528個(gè)字節(jié),其中每頁(yè)的最后16個(gè)字節(jié)用來(lái)存儲(chǔ)ECC校驗(yàn)碼。FPGA選用的是Xilinx公司所生產(chǎn)的XC3S1000-4-FT256C。

1.1 FLASH控制模塊

該模塊作為整個(gè)控制器的核心模塊,起到了協(xié)調(diào)各個(gè)子模塊運(yùn)行以及實(shí)現(xiàn)與MCU通信的作用。主要實(shí)現(xiàn)以下功能:

(1)首先接收到MCU發(fā)送過(guò)來(lái)的讀寫命令以及起始地址和數(shù)據(jù)總數(shù)。

(2)根據(jù)接收到的上述數(shù)據(jù),該模塊計(jì)算出起始?jí)K地址、起始頁(yè)地址、終止塊地址、終止頁(yè)地址以及總共塊數(shù)、總共頁(yè)數(shù)。

(3)如果從MCU讀命令,則用one page read命令來(lái)啟動(dòng)FLASH讀模塊,按頁(yè)連續(xù)讀取。

(4)如果從MCU寫命令,啟動(dòng)FLASH寫模塊,并進(jìn)行如下操作:①首先將起始?jí)K中未涉及到的頁(yè)的內(nèi)容用Sequential Row Read命令讀取出來(lái),并放入緩沖中;②對(duì)終止塊中未涉及到的頁(yè)進(jìn)行上述處理;③對(duì)所涉及到的塊,用erase命令全部擦除;④將緩沖的數(shù)據(jù)再放回到FLASH中原先的位置中;⑤開始從MCU接收數(shù)據(jù),并用write命令,一頁(yè)一頁(yè)地寫進(jìn)FLASH中;⑥在寫完之后,啟動(dòng)壞塊處理模塊,對(duì)所涉及的塊進(jìn)行掃描,確定壞塊。

1.2 FLASH讀模塊

K9F5608U0B的讀命令種類比較多,有READ1與READ2兩種。Read2命令讀取的是spare area,即存放ECC校驗(yàn)位的區(qū)域;Read1又可分為Read one page與Sequential Row Read1 Operation兩種操作。Read one page即一次只能讀一頁(yè),而Sequential Row Read1 Operation則可以連續(xù)讀取多頁(yè)。連續(xù)讀取的范圍僅限于本塊當(dāng)中,即如果控制器不發(fā)送停止該讀命令的信號(hào),則在讀完本塊的最后一頁(yè)后Flash會(huì)自動(dòng)停止讀取。當(dāng)然,大部分的命令識(shí)別工作已經(jīng)由FLASH控制模塊實(shí)現(xiàn)了。讀操作模塊中所寫的狀態(tài)機(jī)部分代碼如下:

process(cu_st,read,r_b,counter_we,counter_re_cyc,counter_re)begin

case cu_st is

when por=>

when wait_cmd=>

when cmd_adr_input=>

when wait_busy=>

when wait_ready=>

when read_process=>

end case;

end process;

該狀態(tài)機(jī)與控制模塊配合便可實(shí)現(xiàn)FLASH讀命令的各種時(shí)序。

圖2 寫模塊流程圖

1.3 FLASH寫模塊

從控制模塊接收到啟動(dòng)命令,在接收了要寫入的地址以及數(shù)據(jù)之后,開始啟動(dòng)狀態(tài)機(jī)。寫命令之前要進(jìn)行塊擦除,這個(gè)是由控制模塊來(lái)協(xié)調(diào)的。流程見圖2。首先寫入write命令(80 H),之后輸入地址,由于地址有3個(gè)字節(jié),所以需要在3個(gè)WE周期將地址輸入。首先輸入列地址,之后兩個(gè)字節(jié)為行地址(即頁(yè)地址)。將ALE地址鎖存信號(hào)拉低,依次輸入一頁(yè)的數(shù)據(jù)。輸入program command(80 h),F(xiàn)LASH將R/B信號(hào)拉低,并開始寫入數(shù)據(jù)。寫完之后FLASH將R/B信號(hào)置高,F(xiàn)LASH控制器檢測(cè)到R/B的變化,則輸入read status command,從I/O 0口獲取反饋,如果是0,表明寫操作成功,否則失敗。

2 擦除模塊

塊擦除(Block erase)命令每次擦除一塊,所以在系統(tǒng)設(shè)計(jì)中,要設(shè)計(jì)一個(gè)32 K緩沖。當(dāng)要寫一塊數(shù)據(jù)時(shí)先將該塊中有用的數(shù)據(jù)存儲(chǔ)到緩沖中再進(jìn)行擦除,防止數(shù)據(jù)的丟失。塊擦除的工作流程見圖3。

圖3 擦除模塊流程圖

首先寫建立擦除命令(60 h),然后寫塊地址,這兒的地址為兩個(gè)字節(jié)。之后寫擦除指令(D0 h),在擦除的過(guò)程中,R/B信號(hào)為低,擦除完成之后置高。這時(shí)控制器檢測(cè)到R/B的高電位,輸入read status command命令來(lái)讀取狀態(tài)。如果I/O 0為低說(shuō)明擦除成功,為高則說(shuō)明擦除失敗。

每塊flash難免會(huì)有壞塊,但第一塊要確保是正常的。廠商在出廠時(shí)就會(huì)在壞塊上有相應(yīng)的標(biāo)記。Flash在使用之前,所有的字節(jié)都為FFH,但如果是壞塊的話,廠商會(huì)在其第1或第2頁(yè)的列地址為517處設(shè)置成non-FF,即spare field的第六個(gè)字節(jié)為非全1。

當(dāng)所設(shè)計(jì)的系統(tǒng)準(zhǔn)確度要求非常高的時(shí)候,對(duì)flash首先要做一次檢測(cè),確定有哪些壞塊,并建立一個(gè)表來(lái)存儲(chǔ)這些壞塊的地址。而且在以后正常使用后,還要在每次擦除以及寫操作之后讀取flash狀態(tài),如果是狀態(tài)為error的話就將這塊的地址存儲(chǔ)到壞塊表中。

3 仿真驗(yàn)證

分別通過(guò)對(duì)讀、寫以及擦除模塊的仿真,驗(yàn)證了該設(shè)計(jì)的正確性以及可行性。仿真結(jié)果見圖4。

圖4 仿真結(jié)果

4 結(jié)束語(yǔ)

NAND FLASH存儲(chǔ)器已經(jīng)成了存儲(chǔ)介質(zhì)的主流產(chǎn)品,而其控制器大部分是國(guó)外產(chǎn)品,加快集成電路設(shè)計(jì)行業(yè)的發(fā)展是我國(guó)的當(dāng)務(wù)之急,利用FPGA可以設(shè)計(jì)出具有自主知識(shí)產(chǎn)權(quán)的IP核,并且增強(qiáng)了兼容性與靈活性。

[1]K9F5608U0B FLASH MEMORY datasheet.http://www.samsung.com.2003.

[2]曾祥萍.ISE集成開發(fā)環(huán)境下基于FPGA的數(shù)字設(shè)計(jì).電腦知識(shí)與應(yīng)用,No.12P.156-158.2006.

[3]楊之廉.超大規(guī)模集成電路設(shè)計(jì)方法學(xué)導(dǎo)論(第二版).清華大學(xué)出版社,1999.

[4]徐欣,于紅旗等.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2005.

猜你喜歡
狀態(tài)機(jī)字節(jié)命令
只聽主人的命令
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
移防命令下達(dá)后
簡(jiǎn)談MC7字節(jié)碼
這是人民的命令
藍(lán)色命令
FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
安阳市| 霍林郭勒市| 桂阳县| 合阳县| 藁城市| 横山县| 响水县| 张北县| 永兴县| 略阳县| 绥芬河市| 新平| 邵阳县| 乳源| 法库县| 抚顺县| 绍兴县| 怀宁县| 宝丰县| 邹城市| 墨竹工卡县| 工布江达县| 外汇| 蒲城县| 资兴市| 绥化市| 巩留县| 犍为县| 台安县| 昭觉县| 深州市| 达州市| 东阳市| 洪雅县| 科技| 南城县| 怀安县| 常熟市| 巴彦淖尔市| 启东市| 星子县|