一、Flash基本原理及分類
1.1、基本存儲(chǔ)單元
存儲(chǔ)數(shù)據(jù)基本的元件:浮柵場(chǎng)效應(yīng)管
存儲(chǔ)時(shí),信息存放在浮置柵極中,浮置柵極有無(wú)電荷或電荷量來(lái)表明當(dāng)前存儲(chǔ)的數(shù)據(jù):
1.2、存儲(chǔ)顆粒分類
當(dāng)前存儲(chǔ)顆粒主要分類:SLC、MLC、TLC、QLC
單位存儲(chǔ)單元下數(shù)據(jù)存儲(chǔ)密度:(一個(gè)存儲(chǔ)單元要表示的數(shù)據(jù)類型)
SLC (Single-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)1bit數(shù)據(jù),即表示2種(2^1)數(shù)據(jù)狀態(tài):0和1
MLC (Multi-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)2bit數(shù)據(jù),即表示4種(2^2)數(shù)據(jù)狀態(tài):00,01,10,11
TLC (Trinary-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)3bit數(shù)據(jù),即表示8種(2^3)數(shù)據(jù)狀態(tài):000,……,111
QLC (Quad-Level Cell) 單個(gè)存儲(chǔ)單元存儲(chǔ)4bit數(shù)據(jù),即表示16種(2^4)數(shù)據(jù)狀態(tài):0000,……,1111
注:?jiǎn)蝹€(gè)存儲(chǔ)單元:指一個(gè)浮柵場(chǎng)效應(yīng)管
對(duì)于一個(gè)存儲(chǔ)單元存儲(chǔ)多個(gè)bit的情況,識(shí)別和寫入通常是通過控制閾值電壓來(lái)實(shí)現(xiàn),閾值電壓可以通過調(diào)整浮置柵極的電荷量(電荷量越多導(dǎo)通性越好,分壓越?。?shí)現(xiàn)。
顆粒配合制作工藝實(shí)現(xiàn):2D和3D Flash技術(shù),2D最早在SLC階段應(yīng)用廣泛,3D在TLC階段應(yīng)用廣發(fā),具體結(jié)構(gòu)區(qū)分:
2D內(nèi)部結(jié)構(gòu):
3D內(nèi)部構(gòu)造:
3D芯片內(nèi)部結(jié)構(gòu):
1.3、Flash存儲(chǔ)分類
存儲(chǔ)技術(shù)分類:NandFlash、NorFlash
存儲(chǔ)芯片分類:目前市面上常見的集成存儲(chǔ)芯片類型:eMMC、UFS、SPI-Flash、QSPI-Flash、各尺寸的SD卡等。
NandFlash存儲(chǔ)陣列:
NorFlash存儲(chǔ)陣列:
寫入數(shù)據(jù):
NorFlash:熱電子注入效應(yīng)(高壓溝道雪崩擊穿注入電子流)
NandFlash:F-N隧道效應(yīng)(P/N結(jié)半導(dǎo)體導(dǎo)電特性)
讀取時(shí)控制柵極的控制電壓不會(huì)過大影響浮置柵極的電荷,因此可以依據(jù)有無(wú)電荷讀取存儲(chǔ)的數(shù)據(jù),當(dāng)浮置柵極有電荷時(shí),源極和漏極可以導(dǎo)通,讀取到的bit是0;擦除后浮置柵極無(wú)電荷,源極和漏極不能導(dǎo)通,讀取的bit是1(控制柵極的電平);
讀取數(shù)據(jù):
NorFlash一次最小可以讀取1bit數(shù)據(jù),NandFlash一次最小可以讀取1byte數(shù)據(jù);
擦除數(shù)據(jù):
NorFlash和NandFlash都是通過F-N隧道效應(yīng)擦除數(shù)據(jù)(消耗浮置柵極的電荷)
1.4、NandFlash和NorFlash異同
NandFlash:
存儲(chǔ)容量:適用于大容量的場(chǎng)景,不可運(yùn)行程序;
擦寫次數(shù):擦寫次數(shù)相對(duì)NorFlash較高;
擦寫方式:按塊、頁(yè)擦寫,可擦寫次數(shù)較多,讀寫速率相對(duì)較高;
硬件接口:I/O口是數(shù)據(jù)線和地址線復(fù)用,通過CS等控制引腳控制時(shí)序完成地址傳輸和數(shù)據(jù)傳輸;
缺陷:需要管理壞塊,NandFlash存在隨機(jī)壞塊問題,需要算法探測(cè)壞塊并本分?jǐn)?shù)據(jù),EDC/ECC等一般在文件系統(tǒng)下實(shí)現(xiàn),時(shí)序操作負(fù)責(zé)容易引起錯(cuò)誤,只能以塊為單位擦寫,整體壽命相對(duì)短;
應(yīng)用:當(dāng)前市場(chǎng)的NandFlash用于大容量產(chǎn)品,如SSD的Flash、EMMC的Flash、UFS的Flash等都是NandFlash,不同的是SSD、EMMC、UFS等芯片集成的控制器和對(duì)外接口類型不同。
常見產(chǎn)品:市場(chǎng)常見產(chǎn)品均是串行接口,集成了控制器,控制器中集成壞塊替換、均衡等管理;
SSD(solid state disk)可以向外提供SATA或PCIe接口(代表產(chǎn)品有M.2 SSD,兼容SATA和PCIe接口);
EMMC(embeded MultiMedia Card)集成的控制器對(duì)外提供的接口類似于NandFlash的接口,統(tǒng)稱SDIO(適用于SD卡的數(shù)據(jù)總線類型),以I/O地址數(shù)據(jù)線復(fù)用形式提供,CMD等實(shí)現(xiàn)指令操作;
UFS(Universal Flash Storage)對(duì)外提供的接口MIPI(Mobile Industry Processor Interface:該接口由ARM組織發(fā)起,目的是將攝像頭、LCD顯示屏、存儲(chǔ)設(shè)備等統(tǒng)一為一個(gè)總線規(guī)范),處理器也需要支持MIPI接口,目前較新智能手機(jī)的SOC(ARM核)一般都支持該接口;
NorFlash:
存儲(chǔ)容量:適用于存儲(chǔ)容量小的場(chǎng)景,可運(yùn)行程序;
擦寫次數(shù):擦寫次數(shù)相對(duì)NandFlash較低;
擦寫方式:按bit擦寫,極少出現(xiàn)壞塊,可靠性高,寫入速率相對(duì)低,讀取速率和NandFlash相差不大;
硬件接口:地址總線和數(shù)據(jù)總線是分開的,讀寫速率相對(duì)較高;
缺陷:寫入速度低,可擦寫次數(shù)相對(duì)NandFlash低;
應(yīng)用:當(dāng)前市場(chǎng)的NorFlash主要有串行和并行兩種接口形式,并行的NorFlash芯片提供類似SRAM的接口,即有地址總線和數(shù)據(jù)總線,串行的NorFlash一般提供SPI等串行協(xié)議的接口實(shí)現(xiàn)數(shù)據(jù)讀寫;
二、Flash的硬件電氣特性
2.1、芯片封裝類型
芯片封裝依據(jù)廠商的設(shè)計(jì)和應(yīng)用場(chǎng)景而不同,目前主要有SOP類、BGA類,相關(guān)封裝對(duì)應(yīng)的引腳定義參見以下描述;數(shù)據(jù)通道依據(jù)不同芯片也有不同的設(shè)計(jì),當(dāng)前有8bit數(shù)據(jù)通道和16bit數(shù)據(jù)通道。
以下是NandFlash的常見芯片封裝和引腳定義:
SOP類芯片封裝
8根數(shù)據(jù)線的存儲(chǔ)芯片:
16根數(shù)據(jù)線的存儲(chǔ)芯片:
BGA類芯片封裝
8根數(shù)據(jù)線的存儲(chǔ)芯片:
16根數(shù)據(jù)線的存儲(chǔ)芯片:
LGA-52封裝尺寸:
其他封裝具體參見開源文檔《Open Nand Flash Interface》描述。
以下是NorFlash的常見芯片封裝和引腳定義:
2.2、芯片和處理器接口
飛思卡爾(現(xiàn)屬于NXP)處理器下,存儲(chǔ)芯片等的硬件接口統(tǒng)稱為IFC(Integrated flash controller),該總線在嵌入式系統(tǒng)中比較常見。IFC總線可以連接NandFlash、NorFlash、SRAM/DDR、EEPROM以及ASIC類,處理器的IFC總線一般帶有NandFlash和NorFlash的控制器,以硬件的形式完成NandFlash或NorFlash的訪問和控制;
以LS1021A處理器(ARM核)為例:
The IFC contains one NAND controller, one NOR flash controller, and one GPCM/generic-ASIC controller.
即IFC總線包含了NorFlash/NandFlash/GPCM/ASIC等控制器,幫助處理器完成對(duì)外圍存儲(chǔ)、器件的訪問。
由上一節(jié)的芯片硬件接口可以看出,NandFlash沒有數(shù)據(jù)線和地址線,只有I/O總線,其余引腳用于時(shí)序控制完成對(duì)應(yīng)功能;
RK系列ARM處理器(瑞芯微),處理器對(duì)外的存儲(chǔ)器接口,均以集成的方式展現(xiàn),如MIPI、EMMC PHY等,這種情況下,就需要EMMC、UFS等芯片去連接,而不能直接用NandFlash連接到處理器上。
全志A、H系列ARM處理器,可以通過本地?cái)?shù)據(jù)總線連接NandFlash,但名稱不叫IFC,其中RK系列處理器的外置存儲(chǔ)控制器,更適用于安卓系統(tǒng)的驅(qū)動(dòng),對(duì)于嵌入式系統(tǒng)也是一個(gè)新的發(fā)展趨勢(shì)。
2.3、Flash讀寫
NorFlash需要熱電子注入,因此需要升壓,電壓要高于當(dāng)前芯片的邏輯電壓,因此NorFlash的寫入速度較低,同樣電壓低的器件速度快,CPU從最初的5V電源系統(tǒng)更新到3.3V,乃至最新的1.8V和1.2V,都是為了提高元件的運(yùn)行速度(頻率),減少因邏輯切換引起的電壓變換時(shí)延。
NandFlash由于借助半導(dǎo)體的P/N結(jié)特性,不存在電壓超過芯片自身工作電壓的工作情況,因此寫入速度要大于NorFlash。
NorFlash和NandFlash的擦除速度相當(dāng),擦除原理均基于P/N結(jié)特性(F-N隧道效應(yīng)),因此擦除速率幾乎相等。
NandFlash的讀寫命令字規(guī)定(來(lái)自O(shè)NFI標(biāo)準(zhǔn)):
注:此規(guī)定是ONFI規(guī)定的,并非某廠商芯片的使用說(shuō)明,某型號(hào)的芯片需要參照相關(guān)數(shù)據(jù)手冊(cè)。
Flash的讀、寫、擦以及回寫操作應(yīng)為原子操作,執(zhí)行原子操作時(shí)不應(yīng)切換邏輯分區(qū)選擇!
讀?。ò刈x)
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 30h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 31h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 32h》
o 《CMD: 00h》 《ADDR: Column & Row》 《CMD: 35h》
?編程注意事項(xiàng)(包括回寫編程):The Volume Select command may be issued prior to the 10h, 11h, or 15h command if the next command to this Volume is Change Row Address. After Volume Select command is issued to resume data input, the host shall wait tCCS before issuing Change Row Address command. o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 80h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 81h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 10h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 11h》
o 《CMD: 85h》 《ADDR: Column & Row》 《DIN: Data Input》 《CMD: 15h》
? 擦除Flash命令:
o 《CMD: 60h》 《ADDR: Row》 《CMD: D0h》
o 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》
o 《CMD: 60h》 《ADDR: Row》 《CMD: 60h》 《ADDR: Row》 《CMD: D1h》
2.4、制造工藝
制程相對(duì)CPU的小,一般在28nm左右
三、軟件適配和文件系統(tǒng)
3.1、文件系統(tǒng)
此處以Linux為例。
Linux操作系統(tǒng)本身支持很多文件系統(tǒng):ext系列(2~4)、cramfs、ubifs、jffs2、yaffs、yaffs2、等。
如果是發(fā)行版的linux,可以查看:/lib/modules/3.10.0-327.el7.x86_64/build/fs 目錄下的文件夾,即可知道當(dāng)前的linux支持的文件系統(tǒng),同時(shí)該發(fā)行版支持的文件系統(tǒng)工具可以查看:ls /usr/sbin/ | grep mkfs。
如果是自行開發(fā)的linux內(nèi)核,則在linux內(nèi)核編譯時(shí),已由開發(fā)人員指定了內(nèi)核支持的文件系統(tǒng)類型,(處理器架構(gòu)非x86時(shí))開啟UBIFS選項(xiàng)如下圖:
Linux下使用MTD工具管理Flash,其中支持在Flash上運(yùn)行的文件系統(tǒng)有:cramfs、jffs、、ubifs等
Linux下文件系統(tǒng)的目錄:
3.2、軟件適配
Linux下適配NandFlash、NorFlash的分區(qū)信息時(shí),通常是在設(shè)備樹中配置mtd信息,以供linux啟動(dòng)后,用戶層軟件可以通過linux的ioctl實(shí)現(xiàn)對(duì)NandFlash或者NorFlash進(jìn)行讀寫操作,來(lái)完成底層flash的數(shù)據(jù)替換等操作。
四、性能對(duì)比
各類型顆粒性能對(duì)比。
Nand和Nor特性參數(shù)對(duì)比。
責(zé)任編輯:lq6
-
FlaSh
+關(guān)注
關(guān)注
10文章
1677瀏覽量
151672
原文標(biāo)題:Flash(NandFlash&NorFlash)基本原理
文章出處:【微信號(hào):gh_9d9a609c9302,微信公眾號(hào):SoC芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32定時(shí)器基本原理及常見問題之培訓(xùn)資料
六天專修課程!電子電路基本原理66課
無(wú)刷電機(jī)電調(diào)的基本原理
BP神經(jīng)網(wǎng)絡(luò)的基本原理
AN-282: 采樣數(shù)據(jù)系統(tǒng)基本原理[中文版]
![AN-282: 采樣數(shù)據(jù)系統(tǒng)<b class='flag-5'>基本原理</b>[中文版]](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論