<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種在片上系統中實(shí)現Nand Flash控制器的方法

一種在片上系統中實(shí)現Nand Flash控制器的方法

作者: 時(shí)間:2008-05-05 來(lái)源:南京郵電大學(xué)學(xué)報 收藏

  1 引 言

本文引用地址:http://dyxdggzs.com/article/82141.htm

  因為具有非易失性及可擦除性在數碼相機、手機、個(gè)人數字助理( PDA)、掌上電腦、MP3播放器等手持設備中得到廣泛的應用。自1989年?yáng)|芝公司發(fā)表了Nand 結構以來(lái), Nand 以其相對于Nor Flash具有更小的體積,更快的寫(xiě)入和擦除速度,更多次的可擦除次數,以及更低廉的每bit價(jià)格得到了迅速發(fā)展。大容量的Nand Flash特別適合現在數碼設備中大數據量的存儲攜帶,可以降低成本,提高性能。

  7TDMI是世界上廣泛使用的32位嵌入式RISC低端處理器內核,在基于7TDMI內核的( System on Chip )芯片中集成Nand Flash控制器將大大擴寬芯片應用范圍、降低芯片成本、提升產(chǎn)品性能。但是,Nand型閃存的使用相對于Nor型閃存在硬件設計和軟件控制上都有相當的難度,值得在技術(shù)上進(jìn)一步探索和研究。

  2 Nand Flash的結構特點(diǎn)對其讀寫(xiě)的限制

  筆者選用的Nand Flash是東芝TC58512FT(見(jiàn)圖1) ,該款的Nand Flash 以528個(gè)byte 組成一個(gè)頁(yè)(page) , 32個(gè)頁(yè)組成一個(gè)塊( block) ,由4096個(gè)塊組成整個(gè)Flash存儲器。在每頁(yè)中前512bytes是用于存儲數據,而后16bytes則用于存放ECC數據校驗碼,稱(chēng)為OOB(Out of Bank)區。對Nand Flash讀出和寫(xiě)入是以頁(yè)為單位,而對其擦除則是以塊為單位,在存儲組織上和硬盤(pán)采用的方式類(lèi)似。在讀出和寫(xiě)入時(shí)數據量都必須是頁(yè)大小的整數倍,這一點(diǎn)上和NorFlash可以隨機讀寫(xiě)的方式完全不同,但對于大數據量的讀寫(xiě)而言這正是Nand Flash其優(yōu)點(diǎn)的體現。

  基于Nand Flash特殊的組織結構,在設計時(shí)考慮了一種適合其讀寫(xiě)按單位大小特點(diǎn)的傳輸方式,即利用DMA(DirectMemory Access)方式,每次讀寫(xiě)配置DMA通道,使傳輸一整頁(yè)的數據量。在傳輸過(guò)程中, DMA 模塊占用總線(xiàn),傳輸完成后,釋放總線(xiàn)。因為DMA地數據傳輸效率要高于CPU CORE通過(guò)直接向Flash發(fā)送指令然后讀寫(xiě)Nand Flash I/O口數據,所以這樣的設計有利于提高讀寫(xiě)速度,從而提高Nand Flash控制器性能。

圖1 TC58512FT 512M-bit   Nand Fla sh組織結構圖

  3 Nand Flash控制器的結構和工作流程

  如圖2所示,Nand Flash控制器和DMA控制器(DMAC) 都是AMBA ( 總線(xiàn)標準) 高速總線(xiàn)AHB上的master模塊,都包含符合AMBA標準的總線(xiàn)接口模塊與之交互工作。

圖2 Nand Flash控制器和DMA模塊組織結構圖

  Nand Flash控制器包含總線(xiàn)接口模塊,控制狀態(tài)機轉換的狀態(tài)控制模塊,用以緩沖數據、收發(fā)命令和狀態(tài)字的寄存器組,提供ECC校驗糾錯碼的ECC算法編程/解碼器模塊和直接控制“裸”Nand Flash體的接口模塊。

  總線(xiàn)接口模塊負責接受ARM CORE(CPU核)發(fā)送的指令,將收發(fā)數據送至相應數據寄存器和指令寄存器,并將狀態(tài)寄存器內容返回給CORE。寄存器組負責整個(gè)Flash控制器的控制工作,包含指令、狀態(tài)、數據、錯誤地址寄存器等等,是控制器的核心。ECC算法編程/解碼器模塊提供校驗功能,提供糾錯信息。

  狀態(tài)控制模塊提供包括命令字發(fā)送狀態(tài)組、地址發(fā)送狀態(tài)組、讀狀態(tài)組、寫(xiě)狀態(tài)組共21種Nand Flash狀態(tài)的翻轉,用以發(fā)出對Nand flash讀寫(xiě)控制信號。與Nand Flash直接連接的接口模塊提供Nand Flash體工作電壓、使能和動(dòng)作時(shí)所需的相應的電平狀態(tài),例如圖3所示讀時(shí)序要求。該模塊受到狀態(tài)機控制模塊的控制。該控制器對電平的控制 簡(jiǎn)化了軟件工作,驅動(dòng)軟件不必再按照讀寫(xiě)時(shí)序配置繁瑣的控制電平。

  圖3 Nand Flash讀時(shí)序圖
 
  以從Nand Flash中讀取一頁(yè)數據塊到內存首地址0x30000000為例,分析該控制器的工作過(guò)程。首先,由ARM CORE發(fā)出配置DMA某一通道的指令,配置DMA源地址寄存器為Nand Flash數據寄存器地址,目標地址寄存器為0x30000000,配置DMA _Control、DMA _ Config 寄存器, 設定DMA傳輸的Burst傳輸大小、數據寬度、總數據量(應為頁(yè)大小512bytes)等等并使能該通道,等待其他master模塊發(fā)送的請求信號;其次,配置Nand Flash控制器的地址寄存器(指定從Flash 中哪一頁(yè)讀取數據) 和Nand _ Config 寄存器; 最后, 發(fā)送讀命令字0x80000000,向DMAC發(fā)出傳輸請求信號。一旦請求被接受,DMAC占用AHB總線(xiàn),開(kāi)始高速塊傳輸。

  Nand Flash控制器不斷從Nand Flash體中通過(guò)8位I/O口分4次讀取32位數據放置到Flash數據寄存器中,DMA從該數據寄存器中讀取數據到DMA數據緩沖fifo中。當fifo內數據量達到設定的Burst大小時(shí),運送至指定內存地址, DMA數據計數器減1,然后繼續從Nand Flash數據寄存器中讀取數據,填充DMA數據緩沖區,直至計數器至0,即完成預先設定搬運數量, DMA釋放總線(xiàn),這樣就完成一頁(yè)數據的讀取工作。如果繼續讀,則需要由CORE重新發(fā)起命令,配置DMA和Nand Flash各寄存器。當然,DMAC和Nand Flash必須用同一個(gè)HCLK進(jìn)行同步,保持模塊間動(dòng)作的一致。而向Nand Flash中寫(xiě)數據,控制過(guò)程大致相同,數據流方向相反。

  相比與直接由CORE 發(fā)送命令字給NandFlash,然后直接從I/O 口讀寫(xiě)數據的工作方式而言,通過(guò)DMA方式的傳輸,效率明顯要高。特別在連續讀取大批量數據的情況下,這種工作方式優(yōu)點(diǎn)能更好的體現。在實(shí)際產(chǎn)品應用中(如數碼照片的存取) ,讀寫(xiě)數據量一般都是頁(yè)大小的上千倍,所以這樣的設計有助于提高實(shí)用性。出于SOC芯片面積和功耗的考慮,簡(jiǎn)化了通用控制器的一些功能,如識別芯片型號。因為在具體應用時(shí),具體的NandFlash型號是確定的,只需在驅動(dòng)開(kāi)發(fā)時(shí)跳過(guò)這一步,直接填上具體已知的信息即可。

  4 模塊驗證和應用開(kāi)發(fā)

  4. 1 模塊驗證

  該模塊已經(jīng)先后通過(guò)了帶有ARM7TDMI CORE的SUN服務(wù)器上進(jìn)行寄存器級(RTL)仿真、后仿真驗證和在A(yíng)RM FPGA開(kāi)發(fā)板上的驗證,并在實(shí)際芯片演示樣機上得到了具體的應用驗證。編寫(xiě)測試向量( Testbench)在SUN服務(wù)器上進(jìn)行VCS驗證,截圖見(jiàn)圖4。圖中信號內容為系統總線(xiàn)信號。

圖4 SUNSERVER Nand Fla sh控制器RTL信號仿真時(shí)序圖

  在A(yíng)RM FPGA開(kāi)發(fā)板上,使用ADS開(kāi)發(fā)套件和ARM Multi - ICE進(jìn)行驗證程序的屏幕截圖見(jiàn)圖5。



圖5 ARM ADS開(kāi)發(fā)系統界面

  內存區內顯示的是用C語(yǔ)言編寫(xiě)的測試程序。一般過(guò)程是先擦除Flash某塊地址的數據,然后向該地址寫(xiě)入一定量數據,再將其讀出,在內存區就可以看到開(kāi)發(fā)板上SDRAM或者SRAM的內容,該內容應該和寫(xiě)入的數據完全一致,如果一致則讀寫(xiě)都成功。ADS開(kāi)發(fā)套件的使用在此就不展開(kāi)描述。

  4. 2 關(guān)于bootloader和從Nand Flash啟動(dòng)系統

  由于Nand Flash生產(chǎn)廠(chǎng)家保證第一個(gè)block是available block (可用塊) ,可以把啟動(dòng)代碼( bootloader)放置在Flash的第一個(gè)page內,以實(shí)現從NandFlash啟動(dòng)系統。設置外部跳線(xiàn),選擇系統從Nand Flash啟動(dòng)方式。當帶有芯片的系統板上電啟動(dòng)時(shí), DMAC默認占用系統總線(xiàn),自動(dòng)從Nand Flash的第一個(gè)page搬運數據(即事先燒入的bootloader程序)到芯片片內的ESRAM,并從ESRAM開(kāi)始順序執行bootloader語(yǔ)句。

  該段代碼用匯編語(yǔ)言編寫(xiě),完成的主要工作是:
  (1) 片外存儲控制器( EMI)的初始化,使內存可讀寫(xiě);
  (2) 搬運存儲在Nand Flash中的操作系統Kernel代碼到較大容量的內存(一般是SDRAM) ,然后設置remap寄存器,使Kernel所在內存地址指向零,以滿(mǎn)足中斷向量表必須從零地址開(kāi)始存放的要求;
  (3) 最后設置程序計數器( PC)到零,從Kernel代碼開(kāi)始運行,真正的開(kāi)始啟動(dòng)操作系統。
上述應用在實(shí)際芯片的演示樣機中已經(jīng)得到具體的實(shí)現,達到了預期的設計目的。

  5 結束語(yǔ)

  本文提出了在一款片上系統( )芯片設計中的Nand Flash控制器實(shí)現方案,并介紹了驗證過(guò)程和應用。該設計方案已在成品芯片的演示樣機的應用中得到證實(shí),具有相當的應用價(jià)值,達到了預期設計效果。


  本文作者創(chuàng )新點(diǎn):可視化打印往往需要pc機的支持,這給用戶(hù)造成了很大的不便。本文設計的可視化打印系統,使得可視化打印機完全脫離了pc機工作,且自帶液晶顯示屏,可以預覽文本,處理圖像圖片,而且可外接各種存儲設備,增大了存儲容量,使打印機具有了獨立性和便攜性。而它可驅動(dòng)不同型號的打印機,故能夠節省了開(kāi)支。



關(guān)鍵詞: Flash ARM SoC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>