《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種在片上系統中實現Nand Flash控制器的方法
一種在片上系統中實現Nand Flash控制器的方法
維庫開發網
摘要: 本文提出了在一款片上系統( SoC)芯片設計中的Nand Flash控制器實現方案,并介紹了驗證過程和應用。該設計方案已在成品芯片的演示樣機的應用中得到證實,具有相當的應用價值,達到了預期設計效果。
Abstract:
Key words :

  摘要:Nand Flash" title="Nand Flash">Nand Flash以其優越的特性和更高的性價比,在現代數碼產品中得到了廣泛的應用。在片上系統" title="片上系統">片上系統芯片中集成Nand Flash控制器成為一種趨勢。本文提出了在一款基于ARM7TDMI" title="ARM7TDMI">ARM7TDMI CPU CORE的片上系統( SoC)芯片中的Nand Flash控制器實現方案。通過直接內存存取" title="直接內存存取">直接內存存取(DMA)的數據傳輸方式,使Nand Flash的數據傳輸速率得到了一定提高,滿足了實際應用的設計要求。該設計方法已通過了RTL級驗證、FGPA驗證,并在實際芯片的演示樣機上得到了具體實現。

  關鍵詞:片上系統;Nand Flash;直接內存存取

1 引 言

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

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

2 Nand Flash的結構特點對其讀寫的限制

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

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

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

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

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

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

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

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

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

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

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

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

4 模塊驗證和應用開發

4. 1 模塊驗證
  該模塊已經先后通過了帶有ARM7TDMI CORE的SUN服務器上進行寄存器級(RTL)仿真、后仿真驗證和在ARM FPGA開發板上的驗證,并在實際芯片演示樣機上得到了具體的應用驗證。編寫測試向量( Testbench)在SUN服務器上進行VCS驗證,截圖見圖4。圖中信號內容為系統總線信號。

圖4 SUNSERVER Nand Fla sh控制器RTL信號仿真時序圖
  
  在ARM FPGA開發板上,使用ADS開發套件和ARM Multi - ICE進行驗證程序的屏幕截圖見圖5。

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

4. 2 關于bootloader和從Nand Flash啟動系統
  由于Nand Flash生產廠家保證第一個block是available block (可用塊) ,可以把啟動代碼( bootloader)放置在Flash的第一個page內,以實現從NandFlash啟動系統。設置外部跳線,選擇系統從Nand Flash啟動方式。當帶有芯片的系統板上電啟動時, DMAC默認占用系統總線,自動從Nand Flash的第一個page搬運數據(即事先燒入的bootloader程序)到芯片片內的ESRAM,并從ESRAM開始順序執行bootloader語句。

該段代碼用匯編語言編寫,完成的主要工作是:

  (1) 片外存儲控制器( EMI)的初始化,使內存可讀寫;
  (2) 搬運存儲在Nand Flash中的操作系統Kernel代碼到較大容量的內存(一般是SDRAM) ,然后設置remap寄存器,使  Kernel所在內存地址指向零,以滿足中斷向量表必須從零地址開始存放的要求;
  (3) 最后設置程序計數器( PC)到零,從Kernel代碼開始運行,真正的開始啟動操作系統。

上述應用在實際芯片的演示樣機中已經得到具體的實現,達到了預期的設計目的。

5 結束語

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区二区毛片| 亚洲视频久久| 西瓜成人精品人成网站| 国产一区二区三区久久 | 欧美专区一区二区三区| 久久久久综合| 最新亚洲电影| 亚洲视频一二| 国产日韩欧美在线观看| 欧美中文在线观看| 欧美大片免费| 一区二区不卡在线视频 午夜欧美不卡'| 性欧美暴力猛交另类hd| 国产精品久久久久久久久久直播| 亚洲欧美日韩成人| 久久精品99国产精品| 亚洲第一网站| 亚洲主播在线播放| 国产一区再线| 一区二区三欧美| 国产欧美一区二区三区另类精品 | 亚洲精品乱码久久久久久蜜桃91| 亚洲综合国产激情另类一区| 在线看片日韩| 亚洲桃花岛网站| 在线免费观看日本一区| 亚洲一区bb| 亚洲国产高清一区| 亚洲欧美自拍偷拍| 亚洲激情国产| 久久精品av麻豆的观看方式| 一二美女精品欧洲| 乱码第一页成人| 亚洲欧美在线一区二区| 欧美激情亚洲一区| 欧美在线视频一区二区三区| 国产精品欧美激情| 一区二区日韩免费看| 亚洲国产精品成人精品| 久久国内精品视频| 亚洲欧美中文日韩v在线观看| 欧美色精品天天在线观看视频| 99av国产精品欲麻豆| 尤物九九久久国产精品的分类| 久久九九国产精品| 小黄鸭精品aⅴ导航网站入口| 国产精品久久久久9999| 一区二区三区四区在线| 亚洲精品黄色| 亚洲欧洲一区二区三区| 美女999久久久精品视频| 亚洲成人资源| 精品动漫av| 欧美成人69| 亚洲精品专区| 亚洲精品久久久久久久久久久久 | 欧美四级在线| 中文国产成人精品| 亚洲小视频在线观看| 国产精品影片在线观看| 亚洲一区www| 国产视频欧美视频| 能在线观看的日韩av| 亚洲精品国产日韩| 亚洲毛片在线观看| 国产精品二区影院| 久久这里只精品最新地址| av成人毛片| 亚洲欧美日韩久久精品| 韩国免费一区| 欧美视频在线一区| 久久国产精品久久久| 欧美区高清在线| 久久国产夜色精品鲁鲁99| 亚洲欧洲精品一区二区精品久久久| 日韩一级精品视频在线观看| 国产乱理伦片在线观看夜一区| 久久综合九色| 欧美一区二区三区视频| 中文国产一区| 午夜精品久久久久久久白皮肤| 国产一区二区av| 国产精品s色| 久久综合色影院| 亚洲欧美日韩精品久久久| 亚洲第一页中文字幕| 亚洲人被黑人高潮完整版| 国产区日韩欧美| 欧美三级网址| 欧美激情国产日韩精品一区18| 欧美一区二区三区视频| 亚洲一区二区免费看| 亚洲黄色一区二区三区| 性欧美办公室18xxxxhd| 亚洲图片在线观看| 中文欧美字幕免费| 99精品热视频| 在线一区二区三区做爰视频网站 | 久久久久久网站| 久久国产精品99精品国产| 亚洲一区二区毛片| 亚洲一二三四久久| 亚洲视频在线观看免费| 制服丝袜亚洲播放| 一本久久知道综合久久| 一本色道久久综合亚洲精品不| 亚洲日本电影| 妖精视频成人观看www| 日韩视频第一页| 亚洲欧洲一区二区三区| 亚洲电影欧美电影有声小说| 久久国产精品久久w女人spa| 91久久精品网| 亚洲毛片视频| 亚洲一区二区在线免费观看视频| 一区二区三区免费观看| 亚洲无毛电影| 性欧美大战久久久久久久免费观看 | 99精品热视频只有精品10| 在线亚洲欧美视频| 亚洲视频福利| 午夜久久tv| 久久免费少妇高潮久久精品99| 狼狼综合久久久久综合网| 欧美高清不卡| 国产精品亚洲一区| 国产在线成人| 亚洲激情黄色| 午夜精品久久久久久久久| 亚洲国产精品久久久久婷婷884| 日韩一区二区久久| 久久九九久久九九| 欧美日韩成人在线观看| 国产精品午夜视频| 亚洲精品久久久久中文字幕欢迎你| 在线亚洲+欧美+日本专区| 欧美中文在线观看| 亚洲天堂免费在线观看视频| 久久久91精品国产一区二区精品| 久久国产精品久久久久久电车 | 亚洲大胆视频| 午夜精品在线| 日韩一区二区精品| 巨胸喷奶水www久久久免费动漫| 欧美先锋影音| 亚洲美女在线国产| 亚洲国产日韩欧美一区二区三区| 亚洲自拍三区| 欧美日韩精品三区| 曰韩精品一区二区| 国产精品系列在线| 欧美日韩精品是欧美日韩精品| 国产丝袜美腿一区二区三区| 在线一区二区视频| 99精品久久久| 欧美伦理91| 亚洲人在线视频| av成人动漫| 欧美激情视频一区二区三区在线播放 | 欧美一级视频精品观看| 欧美视频在线观看视频极品| 亚洲国产精品成人综合| 亚洲精品欧美极品| 欧美成人资源网| 在线成人www免费观看视频| 久久精品成人一区二区三区蜜臀| 欧美在线视频全部完| 国产免费观看久久| 亚洲欧美视频| 久久久久国产精品厨房| 一区二区视频欧美| 亚洲欧洲日本mm| 欧美日精品一区视频| 国产日韩欧美一区二区三区在线观看 | 99xxxx成人网| 欧美日韩高清区| 亚洲精一区二区三区| 亚洲在线视频网站| 国产精品一区二区视频| 久久精品国产69国产精品亚洲| 欧美不卡在线| 亚洲一区二区三区在线视频| 欧美一区二区精品在线| 国内不卡一区二区三区| 亚洲精品一级| 欧美性大战久久久久久久| 欧美在线播放一区二区| 欧美激情精品久久久久| 亚洲免费观看视频| 性欧美video另类hd性玩具| 黄色精品一区二区| 中文精品视频| 在线观看日韩专区| 亚洲天堂av高清| 极品av少妇一区二区| 亚洲少妇在线| 在线电影院国产精品| 欧美一区二区三区视频在线观看| 精品成人一区二区三区| 久久都是精品|