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

?

基于AMBA APB總線NandFlash控制器的設(shè)計研究

2011-07-13 06:02:46劉衛(wèi)東
電子設(shè)計工程 2011年20期
關(guān)鍵詞:寄存器時序引擎

王 洋 , 劉衛(wèi)東 ,, 于 崗

(1.中國海洋大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島 266100;2.海信電器股份有限公司 山東 青島 266071)

隨著SOC技術(shù)的發(fā)展,集成SOC的整機系統(tǒng)規(guī)模越來越大,功能越來越強大。在這些整機系統(tǒng)中,NandFlash得到了廣泛的應(yīng)用。為了支持NandFlash通信,在SOC中必須設(shè)計NandFlash控制器接口。

筆者設(shè)計的NandFlash控制器支持AMBA APB接口和數(shù)據(jù)校驗、糾錯功能。經(jīng)Modelsim仿真和FPGA驗證表明,本設(shè)計完全滿足NandFlash的時序和通信功能要求。

1 NandFlash簡介

Flash內(nèi)存主要有 NandFlash和NorFlash兩種,NorFlash技術(shù)由Intel公司1988年首先推出,NorFlash特點是工作電壓低、隨機讀取快、功耗低、穩(wěn)定性高;1989年,東芝公司發(fā)表了NandFlash結(jié)構(gòu)。其強調(diào)降低每比特的成本和更高的性能。NandFlash存儲器具有容量較大、改寫速度快等優(yōu)點,適用于大量數(shù)據(jù)的存儲,因而在嵌入式產(chǎn)品中得到了廣泛的應(yīng)用,如數(shù)碼相機、MP3隨身聽記憶卡、體積小巧的U盤等。

2 NandFlash控制器的設(shè)計

圖1 NandFlash控制器整體框架Fig.1 Entire architecture of NandFlash controller

2.1 NandFlash控制器整體框架

NandFlash控制器的整體框架[1-3]如圖1所示。其主要模塊有:寄存器控制文件模塊、Flash訪問周期選擇模塊、Flash控制器引擎控制模塊、2 k字?jǐn)?shù)據(jù)緩存控制模塊、ECC控制模塊、邏輯控制模塊、Reed-Solomon控制引擎模塊、Flash數(shù)據(jù)多路選擇模塊。

NandFlash控制器的讀寫擦除的操作都是來自AMBA APB總線的請求,本控制器的主要功能是把來自于AMBA APB總線的請求轉(zhuǎn)化為符合NandFlash時序要求的控制信號。該控制器適用于從64 M bits到32 G bits的所有類型的NandFlash。

2.2 NandFlash控制器的具體模塊功能

2.2.1 寄存器控制文件模塊

寄存器控制文件模塊是面向AMBA APB總線的接口設(shè)計的,所有被AMBA APB總線訪問的控制寄存器都是通過本模塊進行配置的。其主要的作用是通過AMBA APB總線配置本設(shè)計的寄存器。

2.2.2 Flash訪問周期選擇模塊

本模塊主要作用是為NandFlash讀寫產(chǎn)生一個適當(dāng)?shù)脑L問時鐘周期,本模塊主要實現(xiàn)了一個可編程的(3~10個系統(tǒng)時鐘)分頻器,也就是說可以通過寄存器控制文件模塊配置寄存器,實現(xiàn)3~10倍的分頻,從而產(chǎn)生適合Flash訪問的時鐘周期。

2.2.3 Flash控制器引擎控制模塊

Flash控制器引擎控制模塊是整個控制器非常重要的部分。它把APB總線的請求轉(zhuǎn)換成NandFlash設(shè)備的訪問時序,如命令鎖存周期、地址鎖存周期、數(shù)據(jù)讀/寫周期、數(shù)據(jù)擦除周期等,從而實現(xiàn)控制NandFlash設(shè)備的目的。

由于NandFlash的控制指令比較多,為了能夠靈活控制各款NandFlash芯片,本模塊采用了狀態(tài)機[4]的設(shè)計。本模塊的狀態(tài)機主要分為7個狀態(tài):空閑狀態(tài)、寫命令狀態(tài)、寫地址狀態(tài)、寫數(shù)據(jù)狀態(tài)、等待狀態(tài)、Flash忙狀態(tài)、讀Flash狀態(tài)。狀態(tài)之間的轉(zhuǎn)換如圖2所示。

圖2 NandFlash的狀態(tài)轉(zhuǎn)換Fig.2 State transition of NandFlash

在空閑狀態(tài)時,當(dāng)開始啟動NandFlash進入寫命令狀態(tài),其他條件下保持在空閑狀態(tài)。

在寫命令狀態(tài)時,當(dāng)cpu重啟時返回到空閑狀態(tài);當(dāng)要進行塊擦除或者讀Flash的狀態(tài)時進入等待狀態(tài),其他條件下進入寫地址狀態(tài)。

在寫地址狀態(tài)時,當(dāng)一直保持寫狀態(tài)時保持此狀態(tài);當(dāng)寫完地址需要寫數(shù)據(jù)時進入寫數(shù)據(jù)狀態(tài);當(dāng)要進行塊擦除時回到寫命令狀態(tài)。

在寫數(shù)據(jù)狀態(tài)時,當(dāng)一直保持寫數(shù)據(jù)狀態(tài)時保持此狀態(tài),其他條件下回到寫命令狀態(tài)。

在等待狀態(tài)時,當(dāng)一直保持等待狀態(tài)時保持此狀態(tài);當(dāng)讀Flash的狀態(tài)或讀NandFlash的ID號時進入讀Flash狀態(tài),其他條件下進入Flash忙的狀態(tài)。

在Flash忙的狀態(tài)時,當(dāng)超出Flash忙的最大時間并且cpu重新開始讀時回到空閑狀態(tài);當(dāng)超出Flash忙的最大時間并且讀Flash的狀態(tài)時進入寫命令狀態(tài);當(dāng)沒有超出Flash忙的最大時間并且Flash忙信號有效時則保持在此狀態(tài);當(dāng)沒有超出Flash忙的最大時間并且以上條件都不成立則進入讀Flash狀態(tài)。

2.2.4 2 k字?jǐn)?shù)據(jù)緩存控制模塊

2 k字?jǐn)?shù)據(jù)緩存控制模塊內(nèi)部是單端口同步的SRAM(靜態(tài)隨機存儲器),它主要的作用是為NandFlash讀/寫操作一頁的數(shù)據(jù)緩存。由于數(shù)據(jù)緩存被AMBA APB總線和NandFlash控制器訪問,所以設(shè)計了2 k字?jǐn)?shù)據(jù)緩存控制模塊控制所有的AMBA APB總線接口和NandFlash控制器。2 k字?jǐn)?shù)據(jù)緩存的具體分配如圖3所示。

圖3 2 k字?jǐn)?shù)據(jù)緩存分配Fig.3 2 k word data buffer allocation

2.2.5 ECC控制模塊

ECC控制模塊在其內(nèi)部提供了一種ECC(錯誤檢查和糾錯技術(shù))的算法,還為Reed-solomon控制引擎模塊提供接口,所以NandFlash根據(jù)Flash的要求選擇不同的錯誤檢查和糾錯的算法。

由于NandFlash所采用的工藝導(dǎo)致位翻轉(zhuǎn)的現(xiàn)象比較多,但是它的出錯一般不會造成整塊或者整頁不能讀取或者全部出錯,而是整個頁中的一位或者幾位出錯,因此在NandFlash處理中使用ECC算法糾正單比特錯誤、檢測雙比特錯誤。

當(dāng)ECC控制模塊使能后,ECC控制模塊開始接收數(shù)據(jù)并且進行計算,ECC控制模塊會根據(jù)寫入的數(shù)據(jù)判斷此時為數(shù)據(jù)區(qū)域或備份區(qū)域(spare area)。當(dāng)為寫操作時并且判斷為備份區(qū)域時,ECC控制模塊發(fā)送FIFO的寫數(shù)據(jù)使能,將ECC的結(jié)果寫入備份區(qū);當(dāng)為讀操作時,ECC會根據(jù)備份區(qū)讀出的ECC結(jié)果和計算的ECC結(jié)果相比較,定位錯誤的具體位置,寫入寄存器提供查找。

2.2.6 邏輯控制模塊

邏輯控制模塊的主要作用是控制ECC控制模塊和Reed-Solomon控制引擎模塊,以及從AMBA APB總線配置的控制信號。

2.2.7 Reed-Solomon控制引擎模塊

Reed-Solomon控制引擎模塊[5]可以實現(xiàn)4糾錯和8糾錯功能。在其內(nèi)部有兩個控制引擎分別是每503字節(jié)可以糾錯4字節(jié),另一個為每495字節(jié)可以糾錯8字節(jié),這兩個控制引擎能夠同時工作互不干擾。

2.3 NandFlash控制器內(nèi)部的數(shù)據(jù)通路

NandFlash控制器內(nèi)部的數(shù)據(jù)通路主要分為3種:APB總線-NandFlash設(shè)備、NandFlash設(shè)備-APB總線、APB總線-APB總線。

圖4 3種數(shù)據(jù)通路Fig.4 The flow direction of internal data

APB總線-NandFlash設(shè)備的數(shù)據(jù)通路:APB總線來的數(shù)據(jù)進入NandFlash控制器內(nèi)部的數(shù)據(jù)緩存經(jīng)過ECC編碼輸?shù)絅andFlash設(shè)備。

NandFlash設(shè)備-APB總線的數(shù)據(jù)通路:從NandFlash來的數(shù)據(jù)進入NandFlash控制器內(nèi)部的數(shù)據(jù)緩存經(jīng)過ECC解碼校驗得到正確的數(shù)據(jù)輸入到APB總線的數(shù)據(jù)。

APB總線-APB總線的數(shù)據(jù)通路:APB總線來的數(shù)據(jù)進入輸入數(shù)據(jù)的緩存區(qū)經(jīng)過ECC控制引擎輸出到輸出數(shù)據(jù)的緩存區(qū)將其輸入到APB總線。

3 驗證結(jié)果

為了實現(xiàn)ModelSim對NandFlash控制器的功能級仿真,搭建了一個行為級系統(tǒng)模型。將NandFlash設(shè)備的行為級模型與NandFlash控制器進行連接,編寫了一個行為描述的任務(wù) (task)apb_write_fsc,它的主要作用是模擬了APB橋(APB主機)向APB總線發(fā)送數(shù)據(jù),通過APB總線配置NandFlash控制器的寄存器,實現(xiàn)控制NandFlash設(shè)備。

NandFlash讀一頁為例,仿真的結(jié)果如圖5所示。

圖5 NandFlash讀一頁的數(shù)據(jù)時序Fig.5 NandFlash timing of reading one Page

圖5為NandFlash讀一頁的數(shù)據(jù)的時序圖[6],可以看到當(dāng)CE為低電平時芯片啟動,CLE為指令鎖存使能信號,當(dāng)CLE為高電平時并且當(dāng)WE上升沿時將發(fā)出數(shù)據(jù)線IO上指令01H,表示要讀一頁的數(shù)據(jù),ALE為地址鎖存使能信號,當(dāng)其為高電平時并且當(dāng)WE上升沿時將讀數(shù)據(jù)的地址發(fā)出,表示要讀的地址,這里寫地址用了3個時鐘周期。當(dāng)RE為下降沿時將這一頁的數(shù)據(jù)讀出即IO端口。從上圖的時序可知和NandFlash標(biāo)準(zhǔn)的時序圖相一致。

4 結(jié)束語

文中設(shè)計的基于AMBAAPB總線的高速大容量NandFlash控制器,實現(xiàn)了將AMBA APB總線請求轉(zhuǎn)化為NandFlash存儲器的時序請求,在通信過程中能進行數(shù)據(jù)校驗和糾錯,能夠?qū)andFlash設(shè)備進行讀寫和擦除等基本操作。驗證表明,設(shè)計完全滿足系統(tǒng)要求。

[1]楊宗凱.數(shù)字專用集成電路的設(shè)計與驗證[M].北京:電子工業(yè)出版社,2004:197-205.

[2]West N.H E,Harris D.CMOS超大規(guī)模集成電路設(shè)計[M].汪東,澤.北京:中國電力出版社,2006.

[3]肖鵬,劉新寧,杜洪華.基于AMBA總線的NAND FLASH控制器軟硬件劃分設(shè)計[J].現(xiàn)代電子技術(shù),2008(2):1-3.

XIAO Peng, LIU Xin-ning, DU Hong-hua.NAND FLASH controller design with software/hardware partition based on AMBA general bus[J].Modern Electronics Technique,2008(2):1-3.

[4]劉思平,陳利學(xué).基于FPGA的NAND FLASH控制器[J].現(xiàn)代電子技術(shù),2007,30(9):134-135.

LIU Si-ping,CHEN Li-xue.NAND FLASH controller based on FPGA[J].Modern Electronics Technique, 2007,30(9):134-135.

[5]張建文,王宏遠(yuǎn).Reed-Solomon碼的原理和軟硬件實現(xiàn)[J].電視技術(shù),2001(7):13-15.

ZHANG Jian-wen,WANG Hong-yuan.Principles of reedsolomon codes and implementation of software and hardware[J].TV Engineering, 2001(7):13-15.

[6]Samsung Electronics Corporation.K9F1G08U0B NandFlash Memory Data Sheet[EB/OL]. (2006-09-07).http://www.samsung.com.cn.

猜你喜歡
寄存器時序引擎
基于時序Sentinel-2數(shù)據(jù)的馬鈴薯遙感識別研究
基于Sentinel-2時序NDVI的麥冬識別研究
Lite寄存器模型的設(shè)計與實現(xiàn)
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
分簇結(jié)構(gòu)向量寄存器分配策略研究*
一種毫米波放大器時序直流電源的設(shè)計
電子制作(2016年15期)2017-01-15 13:39:08
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發(fā)
DPBUS時序及其設(shè)定方法
河南科技(2014年15期)2014-02-27 14:12:36
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
新津县| 噶尔县| 墨竹工卡县| 柳江县| 东安县| 徐州市| 类乌齐县| 琼结县| 乌海市| 雅安市| 时尚| 长宁区| 神木县| 阿合奇县| 三门峡市| 铁岭县| 兴宁市| 浪卡子县| 屏东市| 淳安县| 武宁县| 九江县| 曲沃县| 行唐县| 凤城市| 南宫市| 华坪县| 吴川市| 福建省| 金塔县| 淅川县| 广河县| 溧水县| 石渠县| 永丰县| 北宁市| 小金县| 衡水市| 荆州市| 茌平县| 双峰县|