摘要:以TC58DDM82A1XBJ5為例,對(duì)比了NAND和NOR Flash的區(qū)別,介紹了NAND Flash的基本結(jié)構(gòu),時(shí)序,驅(qū)動(dòng)程序以及它在多媒體手機(jī)的中的應(yīng)用。
1 引言
隨著手機(jī)市場(chǎng)競(jìng)爭(zhēng)的日趨激烈,多媒體手機(jī)逐漸成為市場(chǎng)的寵兒。因?yàn)橛写罅康亩嗝襟w數(shù)據(jù),因此大容量存儲(chǔ)是多媒體手機(jī)所要解決的首要問題。
NOR和NAND是現(xiàn)在市場(chǎng)上兩種主要的非易失閃存技術(shù)。NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecuteInPlace),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。NAND結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快,是大數(shù)據(jù)量存儲(chǔ)的最佳選擇。在選擇存儲(chǔ)方案的時(shí)候,設(shè)計(jì)師必須綜合考慮以下因素:
(1)NOR的讀速度比NAND稍快一些。
(2)NAND的寫入速度比NOR快很多(3)NAND的4ms擦除速度遠(yuǎn)比NOR的5s快。
(4)大多數(shù)寫入操作需要先進(jìn)行擦除操作。
(5)NAND的擦除單元更小,相應(yīng)的擦除電路更少。
(6)NAND閃存中每個(gè)塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次。
此外,NAND的使用比NOR的使用復(fù)雜的多。在NOR器件上運(yùn)行代碼不需要任何的軟件支持,在NAND器件上進(jìn)行同樣操作時(shí),通常需要驅(qū)動(dòng)程序,也就是內(nèi)存技術(shù)驅(qū)動(dòng)程序(MTD),NAND和NOR器件在進(jìn)行寫入和擦除操作時(shí)都需要MTD.
使用NOR器件時(shí)所需要的MTD要相對(duì)少一些,許多廠商都提供用于NOR器件的更高級(jí)軟件,這其中包括M-SySTem的TrueFFS驅(qū)動(dòng),該驅(qū)動(dòng)被WindRiverSystem、Microsoft、QNXSoftwareSystem、Symbian和Intel等廠商所采用。
2 TC58DDM82A1XBJ5在多媒體手機(jī)中的應(yīng)用
在多媒體手機(jī)中,TC58DDM82A1XBJ5主要用來存儲(chǔ)圖片、聲音文件等數(shù)據(jù)量較大的文件。
TC58DDM82A1XBJ5是Toshiba公司生產(chǎn)的256MbitsNANDEEPROM.工作電壓為2.7V~3.6V或者1.65V~1.95V.
存儲(chǔ)結(jié)構(gòu)為528bytes×32pages×2048blocks.Page的大小為528Bytes,Block的大小為(16K+512)Bytes.
2.1 引腳排列和功能
NANDFlash采用高度復(fù)用的訪問接口,該接口既作地址總線,又作數(shù)據(jù)總線和指令輸入接口。NANDFlash的的接口引腳主要分三類:數(shù)據(jù)引腳,控制引腳,狀態(tài)引腳。TC58DDM82A1XBJ5的數(shù)據(jù)引腳為8位,即I/O1~I/O8,用來輸入/輸出地址,數(shù)據(jù)和指令。有一個(gè)狀態(tài)引腳(RY/BY)用來表示芯片的狀態(tài),當(dāng)芯片進(jìn)行數(shù)據(jù)寫入、擦除、隨機(jī)讀取的時(shí)候,其輸出電平為高,表明芯片正忙,否則輸出低電平。/WP引腳用來禁止獲允許對(duì)芯片進(jìn)行寫入操作。當(dāng)其為低電平時(shí)禁止寫操作,反之允許寫操作?刂埔_有6個(gè),見引腳定義。
2.2 TC58DDM82A1與AD6528的連接
AD6528是AnalogDevicesInc.生產(chǎn)的Hermes系列GSM/GPRS處理器。AD6528采用DSP+MCU的雙核結(jié)構(gòu),其中MCU采用的是ARM7,DSP部分選用了ADI自己的ADSP-218xDSP核。
2.3 TC58DDM82A1的操作方式
TC58DDM82A1的地址輸入、命令輸入、數(shù)據(jù)輸入輸出都是通過CLE、ALE、CE、WE、RE、RST、PRE1/PRE2引腳控制?刂七壿嬋绫1所示:
表1 邏輯表
*1:/WP=0,則禁止TC58DDM82A1的Program和Erase操作TC58DDM82A1的各種工作模式,如讀、復(fù)位、編程等,都是通過命令字來進(jìn)行控制的。
2.4 TC58DDM82A1的時(shí)序分析及驅(qū)動(dòng)程序
可知,第一個(gè)周期,CLE信號(hào)有效時(shí)通過IO口向命令寄存器發(fā)送命令00H.此時(shí)NANDFlash處于寫狀態(tài),因此WE有效,RE無效。發(fā)送命令后,接著發(fā)送要讀的地址,該操作將占用WE的3個(gè)周期。注意,此時(shí)發(fā)送的是地址信息,因此CLE為低,而ALE為高電平。當(dāng)信息發(fā)送完畢后,不能立刻讀取數(shù)據(jù),因?yàn)樾酒藭r(shí)處于BUSY(忙)狀態(tài),需要等待2~20ms.之后,才能開始真正的數(shù)據(jù)讀取。此時(shí)WE為高電平而處于無效狀態(tài),同時(shí)CE片選信號(hào)也始終為低以表明選中該芯片。
完成ReadMode(1)的偽碼如下:
ReadMode1_Func(Cmd, Addr)
{
RE=1;
ALE = 0 ;
CLE = 1 ;
WE = 0 ;
CE=0;
SendCmd(Cmd); // 向NAND 發(fā)送操作命令,此例中應(yīng)該是00H
WE = 1 ; / / NAND 取走命令
CE = 1 ;
CLE=0; // 發(fā)送命令結(jié)束
ALE=1; // 開始發(fā)送起始地址
for(i=0;i<3;i++)
{
WE = 0 ;
CE=0;
SendAddr(Addr);
WE=1; // 取走指令
CE=1;
} // 發(fā)送完所有地址
CE=1;
WE = 1 ;
ALE = 0 ;
Delay(2);
while(BUSY)
Wait; // 判斷等待狀態(tài)是否結(jié)束
RE=0;
CE=0;
ReadData(Buf); // 讀取數(shù)據(jù)到buffer
}
2.5 NANDFlashDiver的特殊功能
NANDFlash的訪問是串行的,比較類似硬盤的存儲(chǔ)方式。NANDFlash必須有Driver的支持才能在手機(jī)使用。Driver除了提供對(duì)NANDFlash的Read,Program,Erase外,還應(yīng)該提供以下基本的功能:
BadBlockManagement
WearLevelingTreatment
ECC(ErrorCorrectCode)
NANDFlash是通過Driver分配的邏輯地址來進(jìn)行訪問的。BadBlockManagement對(duì)壞塊不分配邏輯地址,這樣會(huì)形成連續(xù)的邏輯地址。WearLevelingTreatment避免對(duì)某一區(qū)域進(jìn)行大量的讀寫操作,這樣就會(huì)延長(zhǎng)NANDFlash的使用時(shí)間。ECC主要完成讀寫過程中的糾錯(cuò),但是ECC只能對(duì)1bit的數(shù)據(jù)進(jìn)行糾錯(cuò)。
3 結(jié)語
在多媒體手機(jī)中NANDFlash主要用來存儲(chǔ)多媒體數(shù)據(jù)(圖片、語音文件等)。在實(shí)際應(yīng)用中不會(huì)對(duì)NANDFlash進(jìn)行頻繁的寫入和擦除操作,而且多媒體數(shù)據(jù)對(duì)數(shù)據(jù)的完整性要求也不是很高,但是多媒體數(shù)據(jù)的數(shù)據(jù)量較大。這些特征決定了使用NANDFlash來存儲(chǔ)多媒體數(shù)據(jù)是十分恰當(dāng)?shù)模@也正是業(yè)界的通行做法。
作者:楊玲 袁光濤 來源:《科技咨詢導(dǎo)報(bào)》
我推薦大家讀
輕松參與
VS
表達(dá)立場(chǎng)
這是垃圾文章