當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] NAND Flash的尋址方式和NAND Flash的memory組織方式緊密相關(guān)。NAND Flash的數(shù)據(jù)是以bit的方式保存在memory cell,一般來(lái)說(shuō),一個(gè)cell中只能存儲(chǔ)一個(gè)bit。這些cell以8個(gè)或者16個(gè)為單位,連成bit line,形成所謂的

NAND Flash的尋址方式和NAND Flash的memory組織方式緊密相關(guān)。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,通常是528Byte/page或者264Word/page。然后,每32個(gè)page形成一個(gè)Block,Sizeof(block)=16kByte Block是NAND Flash中最大的操作單元,擦除就是按照block為單位完成的,而編程/讀取是按照page為單位完成的。所以,按照這樣的組織方式可以形成所謂的三類地址:

-Block Address

-Page Address

-Column Address

首先,必須清楚一點(diǎn),對(duì)于NAND Flash來(lái)講,地址和命令只能在I/O[7:0]上傳遞,數(shù)據(jù)寬度可以是8位或者16位,但是,對(duì)于x16的NAND Device,I/O[15:8]只用于傳遞數(shù)據(jù)(此點(diǎn)不是很認(rèn)同)。清楚了這一點(diǎn),我們就可以開始分析NAND Flash的尋址方式了。

以528Byte/page 總?cè)萘?12Mbit+512kbyte的NAND器件為例:因?yàn)? block="16kbyte",512Mbit="64Mbyte",Numberof(block)=1024 1block="32page", 1page="528byte"=512byte(Main Area)+16byte(Spare Area) 用戶數(shù)據(jù)保存在main area中。512byte需要9bit來(lái)表示,對(duì)于528byte系列的NAND,這512byte被分成1st half和2nd half, 各自的訪問(wèn)由所謂的pointer operation命令來(lái)選擇,也就是選擇了bit8的高低。因此A8就是halfpage pointer(這是我給出的一個(gè)名字),A[7:0]就是所謂的column address。32個(gè)page需要5bit來(lái)表示,占用A[13:9],即該page在塊內(nèi)的相對(duì)地址Block的地址是由A14以上的bit來(lái)表示,例如512Mb的NAND,共4096block,因此,需要12個(gè)bit 來(lái)表示,即A[25:14],如果是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即bit8是由操作指令決定的,即指令決定在哪個(gè)halfpage上進(jìn)行讀寫,

而真正的bit8的值是don't care的。

第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的容量是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í)候bit8完全不用管,地址傳遞仍然和x8器件相同。除了這一點(diǎn)之外,x16的NAND使用方式和x8的使用方式完全相同。

1.1Nandflash芯片工作原理

Nandflash芯片型號(hào)為SamsungK9F1208U0B,數(shù)據(jù)存儲(chǔ)容量為64MB,采用塊頁(yè)式存儲(chǔ)管理。8個(gè)I/O引腳充當(dāng)數(shù)據(jù)、地址、命令的復(fù)用端口。

1.1.1芯片內(nèi)部存儲(chǔ)布局及存儲(chǔ)操作特點(diǎn)

一片Nandflash為一個(gè)設(shè)備(device),其數(shù)據(jù)存儲(chǔ)分層為:

1設(shè)備(Device)=4096塊(Blocks)

1塊(Block)=32頁(yè)/行(Pages/rows);頁(yè)與行是相同的意思,叫法不一樣

1頁(yè)(Page)=528字節(jié)(Bytes)=數(shù)據(jù)塊大小(512Bytes分為前半頁(yè)和和后半頁(yè))+OOB塊大小(16Bytes)

在每一頁(yè)中,最后16個(gè)字節(jié)(又稱OOB)用于NandFlash命令執(zhí)行完后設(shè)置狀態(tài)用,剩余512個(gè)字節(jié)又分為前半部分和后半部分。可以通過(guò)NandFlash命令00h/01h/50h分別對(duì)前半部、后半部、OOB進(jìn)行定位通過(guò)NandFlash內(nèi)置的指針指向各自的首地址。

存儲(chǔ)操作特點(diǎn):

1.擦除操作的最小單位是塊。

2.NandFlash芯片每一位(bit)只能從1變?yōu)?,而不能從0變?yōu)?,所以在對(duì)其進(jìn)行寫入操作之前要一定將相應(yīng)塊擦除(擦除即是將相應(yīng)塊得位全部變?yōu)?).

3.OOB部分的第六字節(jié)(即517字節(jié))標(biāo)志是否是壞塊,如果不是壞塊該值為FF,否則為壞塊。

4.除OOB第六字節(jié)外,通常至少把OOB的前3個(gè)字節(jié)存放NandFlash硬件ECC碼(關(guān)于硬件ECC碼請(qǐng)參看Nandflash控制器一節(jié)).

1.1.2重要芯片引腳功能

I/O0I/O7:復(fù)用引腳??梢酝ㄟ^(guò)它向nandflash芯片輸入數(shù)據(jù)、地址、nandflash命令以及輸出數(shù)據(jù)和操作狀態(tài)信息。

CLE(CommandLatchEnable):命令鎖存允許

ALE(AddressLactchEnable):地址鎖存允許

CE:芯片選擇

RE:讀允許

WE:寫允許

WP:在寫或擦除期間,提供寫保護(hù)

R/B:讀/忙輸出

1.1.3尋址方式

SamsungK9F1208U0BNandFlash片內(nèi)尋址采用26位地址形式。從第0位開始分四次通過(guò)I/O0-I/O7進(jìn)行

傳送,并進(jìn)行片內(nèi)尋址。具體含義如下:

0-7位:字節(jié)在上半部、下半部及OOB內(nèi)的偏移地址

8位:值為0代表對(duì)一頁(yè)內(nèi)前256個(gè)字節(jié)進(jìn)行尋址

值為1代表對(duì)一頁(yè)內(nèi)后256個(gè)字節(jié)進(jìn)行尋址

9-13位:對(duì)頁(yè)進(jìn)行尋址

14-25位:對(duì)塊進(jìn)行尋址

當(dāng)傳送地址時(shí),從位0開始

1.1.4Nandflash主要內(nèi)設(shè)命令詳細(xì)介紹

NandFlash命令執(zhí)行是通過(guò)將命令字送到NandFlash控制器的命令寄存器來(lái)執(zhí)行。

NandFlash的命令是分周期執(zhí)行的,每條命令都有一個(gè)或多個(gè)執(zhí)行周期,每個(gè)執(zhí)行周期都有相映代碼表示該周期將要執(zhí)行的動(dòng)作。

主要命令有:Read1、Read2、ReadID、Reset、PageProgram、BlockErase、ReadStatus。

詳細(xì)介紹如下:

1.Read1:

功能:表示將要讀取Nandflash存儲(chǔ)空間中一個(gè)頁(yè)的前半部分,并且將內(nèi)置指針定位到前半部分的第一個(gè)字節(jié)。

命令代碼:00h

2.Read2:

功能:表示將要讀取Nandflash存儲(chǔ)空間中一個(gè)頁(yè)的后半部分,并且將內(nèi)置指針定位到后半部分的第一個(gè)字節(jié)。

命令代碼:01h

3.ReadID:

功能:讀取Nandflash芯片的ID號(hào)

命令代碼:90h

4.Reset:

功能:重啟芯片。

命令代碼:FFh

5.PageProgram:

功能:對(duì)頁(yè)進(jìn)行編程命令,用于寫操作。

命令代碼:首先寫入00h(A區(qū))/01h(B區(qū))/05h(C區(qū)),表示寫入那個(gè)區(qū);再寫入80h開始編程模式(寫入模式),接

下來(lái)寫入地址和數(shù)據(jù);最后寫入10h表示編程結(jié)束.

6.BlockErase

功能:塊擦除命令。

命令代碼:首先寫入60h進(jìn)入擦寫模式,然后輸入塊地址;接下來(lái)寫入D0h,表示擦寫結(jié)束.

7.ReadStatus

功能:讀取內(nèi)部狀態(tài)寄存器值命令。

命令代碼:70h

2NandFlash控制器工作原理

對(duì)NandFlash存儲(chǔ)芯片進(jìn)行操作,必須通過(guò)NandFlash控制器的專用寄存器才能完成。所以,不能對(duì)NandFlash進(jìn)行總線操作。而NandFlash的寫操作也必須塊方式進(jìn)行。對(duì)NandFlash的讀操作可以按字節(jié)讀取。

2.1NandFlash控制器特性

1.支持對(duì)NandFlash芯片的讀、檢驗(yàn)、編程控制

2.如果支持從NandFlash啟動(dòng),在每次重啟后自動(dòng)將前NandFlash的前4KB數(shù)據(jù)搬運(yùn)到ARM的內(nèi)部RAM中

3.支持ECC校驗(yàn)

2.2NandFlash控制器工作原理

NandFlash控制器在其專用寄存器區(qū)(SFR)地址空間中映射有屬于自己的特殊功能寄存器,就是通過(guò)將NandFlash芯片的內(nèi)設(shè)命令寫到其特殊功能寄存器中,從而實(shí)現(xiàn)對(duì)Nandflash芯片讀、檢驗(yàn)和編程控制的。特殊功能寄存器有:NFCONF、NFCMD、NFADDR、NFDATA、NFSTAT、NFECC。寄存詳細(xì)說(shuō)明見下一節(jié)。

1.配置寄存器(NFCONF):用于對(duì)NandFlash控制器的配置狀態(tài)進(jìn)行控制。

2.命令寄存器(NFCMD):用于存放Nandflash芯片內(nèi)設(shè)的操作命令。

3.地址寄存器(NFADDR):用于存放用于對(duì)Nandflash芯片存儲(chǔ)單元尋址的地址值。

4.數(shù)據(jù)寄存器(NFDATA):Nandflash芯片所有內(nèi)設(shè)命令執(zhí)行后都會(huì)將其值放到該寄存器中。同時(shí),讀出、寫入Nandflash存儲(chǔ)空間的值也是放到該寄存器。

5.狀態(tài)寄存器(NFSTAT):用于檢測(cè)Nandflash芯片上次對(duì)其存儲(chǔ)空間的操作是否完成。

6.ECC校驗(yàn)寄存器(NFECC):ECC校驗(yàn)寄存器。

3:實(shí)驗(yàn)代碼:

3.1:NandFlash的初始化

voidinit_nand()

{

//時(shí)間參數(shù)設(shè)為:TACLS=0TWRPH0=3TWRPH1=0

NFCONF=0x300;

/*使能NANDFlash控制器,初始化ECC,禁止片選*/

NFCONT=(1<<4)|(1<<1)|(1<<0);

/*復(fù)位NANDFlash*/

NFCONT&=~(1<<1);//發(fā)出片選信號(hào)

NFCMMD=0xFF;//復(fù)位命令

wait_idle();//循環(huán)查詢NFSTAT位0,直到它等于1

NFCONT|=0x2;//取消片選信號(hào)

}

3.2:NandFlash的讀操作

匯編代碼:

ldr r0, =0

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉