日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于nand flash的地址 A8,尋址

 昵稱(chēng)7715138 2011-09-30
關(guān)于nand flash的地址 A8,尋址
 

     在NAND Flash中有8個(gè)I/O引腳(IO0—IO7)、5個(gè)全能信號(hào)(nWE ALE CLE nCE nRE)、一個(gè)引腳,1個(gè)寫(xiě)保護(hù)引腳。操作NAND Flash時(shí),先傳輸命令,然后傳輸?shù)刂?,最后讀寫(xiě)數(shù)據(jù)。對(duì)于64MB的NAND Flash,需要一個(gè)26位的地址。只能8個(gè)I/O引腳充當(dāng)?shù)刂?、?shù)據(jù)、命令的復(fù)用端口,所以每次傳地址只能傳8位。這樣就需要4個(gè)地址序列。因此讀寫(xiě)一次nand flash需要傳送4次(A[7:0] A[16:9] A[24:17] A[25])。64M的NAND Flash的地址范圍為0x00000000—0x03FFFFFF。128M的NAND Flash的地址范圍為0x00000000---0x07FFFFFF。1KB = 0x000-0x3FF.128字節(jié)=0x00H--7FH。

    一頁(yè)有528個(gè)字節(jié),而在前512B中存放著用戶(hù)的數(shù)據(jù)。在后面的16字節(jié)中(OOB)中存放著執(zhí)行命令后的狀態(tài)信息。主要是ECC校驗(yàn)的標(biāo)識(shí)。列地址A0-A7可以尋址的范圍是256個(gè)字節(jié),要尋址528字節(jié)的話(huà),將一頁(yè)分為了A.(1half array)B(2 half array) C(spare array)。A區(qū)0—255字節(jié),B區(qū) 256-511 字節(jié)C區(qū)512—527字節(jié)。訪問(wèn)某頁(yè)時(shí)必須選定特定的區(qū)。這可以使地址指針指向特定的區(qū)實(shí)現(xiàn)。

在NAND Flash 中存在三類(lèi)地址,分別為Block Address 、Column Address Page Address.。(實(shí)際就是塊地址和頁(yè)地址)

    Column Address 用來(lái)選擇是在上半頁(yè)尋址還是在下半頁(yè)尋址A[0]—A[7].也就相當(dāng)于頁(yè)內(nèi)的偏移地址。在進(jìn)行擦除時(shí)不需要列地址,因?yàn)椴脸且詨K為單位擦除。32個(gè)Page需要5bit來(lái)表示。也就是A[13:9];也就是頁(yè)在塊內(nèi)的相對(duì)地址。A8這一位用來(lái)設(shè)置512字節(jié)的上半頁(yè),還是下半頁(yè),1表示是在上半頁(yè),而2表示是在下半頁(yè)。Block的地址有A[25:14]組成.

    一個(gè)容量為64M(512Mbit)的NAND Flash,分為131072頁(yè),528列。(實(shí)際中由于存在spare area,故都大于這個(gè)值),有4096塊,需要12bit來(lái)表示即A[25:14].如果是128M(1Gbit)的話(huà),blodk Address為A[26:14].由于地址只能在IO0—IO7上傳送。編程時(shí)通常通過(guò)移位來(lái)實(shí)現(xiàn)地址的傳送。傳送過(guò)程如下:

第1個(gè)地址序列:傳遞column address,也就是NAND Flash[7:0],這一周期不需要移位即可傳遞到I/O[7:0]上,而half page pointer 即A8是由操作指令決定,00h,在A區(qū),01h在B區(qū),指令決定在哪個(gè)half page上進(jìn)行讀寫(xiě),而真正A8的值是不需要程序員關(guān)心的;

第2個(gè)地址序列:就是將NAND_ADDR 右移9位,而不是8位,將NAND_ADDR[16:9]傳遞到I/O[7:0]上;

第3個(gè)地址序列:將NAND_ADDR[24:17] 傳遞到I/O[7:0]上;

第4個(gè)地址序列:將NAND_ADDR[25]傳送到I/O上。

    整個(gè)地址的傳送過(guò)程需要4步才能完成。如果NAND Flash 的大小是32MB的以下的話(huà),那么block address 最高位只到bit24,因此尋址只需要3步,就可以完成。

在進(jìn)行擦除操作時(shí)由于是以塊進(jìn)行擦除,所以只需要3個(gè)地址序列,也就是只傳遞塊的地址,即A[14:25]。

NAND Flash地址的計(jì)算:

Column Address 翻譯過(guò)來(lái)是列地址,也就是在一頁(yè)里的偏移地址。其實(shí)是指定Page上的某個(gè)Byte,指定這個(gè)Byte,其實(shí)也就是指定此頁(yè)的讀寫(xiě)起始地址。

      Page Address:頁(yè)地址。頁(yè)的地址總是以512Bytes對(duì)齊的,所以它的低9位問(wèn)題0,確定讀寫(xiě)操作在NAND Flash中的哪個(gè)頁(yè)進(jìn)行。

    當(dāng)我們得到一個(gè)Nand Flash地址addr時(shí),我們可以這樣分解出Column Address和Page Address。

Columnaddr = addr % 512   // column address

Pageaddr = addr>>9           // page address

實(shí)際上A0~A7是頁(yè)內(nèi)陸址,比如從第2個(gè)開(kāi)始讀起。不過(guò)一般都從0開(kāi)始讀起,呵呵。

也就是一個(gè)Nand Flash地址的A0-A7是它的column address ,A9—A25是它的Page Address,地址A8被忽略。

現(xiàn)在假設(shè)我要從Nand Flash中的第5000字節(jié)處開(kāi)始讀取1024個(gè)字節(jié)到內(nèi)存的0x30000000處,我們這樣調(diào)用read函數(shù)

NF_Read(5000, 0x30000000,1024);

我們來(lái)分析5000這個(gè)src_addr.

根據(jù):

column_addr=src_addr%512;

page_address=(src_addr>>9);

我們可得出column_addr=5000%512=392

page_address=(5000>>9)=9

于是我們可以知道5000這個(gè)地址是在第9頁(yè)的第392個(gè)字節(jié)處,于是我們的NF_read函數(shù)將這樣發(fā)送命令和參數(shù)

column_addr=5000%512;

page_address=(5000>>9);

NF_CMD=0x01; //要從2nd half開(kāi)始讀取 所以要發(fā)送命令0x01

NF_ADDR= column_addr &0xff; //1st Cycle A[7:0]

NF_ADDR=page_address& 0xff

NF_ADDR=(page_address>>8)&0xff; //3rd.Cycle A[24:17]

NF_ADDR=(page_address>>16)&0xff; //4th.Cycle A[25]

    向NandFlash的命令寄存器和地址寄存器發(fā)送完以上命令和參數(shù)之后,我們就可以從rNFDATA寄存器(NandFlash數(shù)據(jù)寄存器)讀取數(shù)據(jù)了.

我用下面的代碼進(jìn)行數(shù)據(jù)的讀取.

for(i=column_addr;i<512;i++)

*buf++=NF_RDDATA();

每當(dāng)讀取完一個(gè)Page之后,數(shù)據(jù)指針會(huì)落在下一個(gè)Page的0號(hào)Column(0號(hào)Byte).

//========================下面是另外一篇,差不多=====================

一、NAND flash的物理組成
NAND Flash 的數(shù)據(jù)是以bit的方式保存在memory cell,一般來(lái)說(shuō),一個(gè)cell 中只能存儲(chǔ)一個(gè)bit。這些cell 以8個(gè)或者16個(gè)為單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。這些Line會(huì)再組成Page,(NAND Flash 有多種結(jié)構(gòu),我使用的NAND Flash 是K9F1208,下面內(nèi)容針對(duì)三星的K9F1208U0M),每頁(yè)528Bytes(512byte(Main Area)+16byte(Spare Area)),每32個(gè)page形成一個(gè)Block(32*528B)。具體一片flash上有多少個(gè)Block視需要所定。我所使用的三星k9f1208U0M具有4096個(gè)block,故總?cè)萘繛?096*(32*528B)=66MB,但是其中的2MB是用來(lái)保存ECC校驗(yàn)碼等額外數(shù)據(jù)的,故實(shí)際中可使用的為64MB。
NAND flash以頁(yè)為單位讀寫(xiě)數(shù)據(jù),而以塊為單位擦除數(shù)據(jù)。按照這樣的組織方式可以形成所謂的三類(lèi)地址:
Column Address:Starting Address of the Register. 翻成中文為列地址,地址的低8位
Page Address :頁(yè)地址
Block Address :塊地址
對(duì)于NAND Flash來(lái)講,地址和命令只能在I/O[7:0]上傳遞,數(shù)據(jù)寬度是8位。

二、NAND Flash地址的表示
512byte需要9bit來(lái)表示,對(duì)于528byte系列的NAND,這512byte被分成1st half Page Register和2nd half Page Register,各自的訪問(wèn)由地址指針命令來(lái)選擇,A[7:0]就是所謂的column address(列地址),在進(jìn)行擦除操作時(shí)不需要它,why?因?yàn)橐詨K為單位擦除。32個(gè)page需要5bit來(lái)表示,占用A[13:9],即該page在塊內(nèi)的相對(duì)地址。A8這一位地址被用來(lái)設(shè)置512byte的1st half page還是2nd half page,0表示1st,1表示2nd。Block的地址是由A14以上的bit來(lái)表示。
例如64MB(512Mb)的NAND flash(實(shí)際中由于存在spare area,故都大于這個(gè)值),共4096block,因此,需要12個(gè)bit來(lái)表示,即A[25:14],如果是128MB(1Gbit) 的528byte/page的NAND Flash,則block address用A[26:14]表示。而page address就是blcok address|page address in block NAND Flash 的地址表示為: Block Address|Page Address in block|halfpage pointer|Column Address 地址傳送順序是Column Address,Page Address,Block Address。
由于地址只能在I/O[7:0]上傳遞,因此,必須采用移位的方式進(jìn)行。 例如,對(duì)于512Mbit x8的NAND flash,地址范圍是0~0x3FF_FFFF,只要是這個(gè)范圍內(nèi)的數(shù)值表示的地址都是有效的。 以NAND_ADDR 為例:
第1 步是傳遞column address,就是NAND_ADDR[7:0],不需移位即可傳遞到I/O[7:0]上,而halfpage pointer即A8 是由操作指令決定的,即指令決定在哪個(gè)halfpage 上進(jìn)行讀
寫(xiě),而真正的A8 的值是不需程序員關(guān)心的。
第2 步就是將NAND_ADDR 右移9位,將NAND_ADDR[16:9]傳到I/O[7:0]上;
第3 步將NAND_ADDR[24:17]放到I/O上;
第4步需要將NAND_ADDR[25]放到I/O上;
因此,整個(gè)地址傳遞過(guò)程需要4 步才能完成,即4-step addressing。 如果NAND Flash 的容量是32MB(256Mbit)以下,那么,block adress最高位只到bit24,因此尋址只需要3步。
下面,就x16 的NAND flash 器件稍微進(jìn)行一下說(shuō)明。 由于一個(gè)page 的main area 的容量為256word,仍相當(dāng)于512byte。但是,這個(gè)時(shí)候沒(méi)有所謂的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒(méi)有意義了,也就是這個(gè)時(shí)候 A8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點(diǎn)之外,x16 的NAND使用方法和 x8 的使用方法完全相同。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多