<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      痞子衡嵌入式:并行NAND接口標(biāo)準(zhǔn)(ONFI)及SLC Raw NAND簡(jiǎn)介


        大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是ONFI標(biāo)準(zhǔn)及SLC Raw NAND

        NAND Flash是嵌入式世界里常見(jiàn)的存儲(chǔ)器,對(duì)于嵌入式開(kāi)發(fā)而言,NAND主要分為兩大類(lèi):Serial NAND、Raw NAND,這兩類(lèi)NAND的差異是很大的(軟件驅(qū)動(dòng)開(kāi)發(fā)角度而言),即使你掌握其中一種,也不代表你能了解另一種。

        Raw NAND是相對(duì)于Serial NAND而言的,Serial NAND即串行接口的NAND Flash,而Raw NAND是并行接口的NAND FLASH,早期并行接口通信數(shù)據(jù)率是明顯高于串行通信數(shù)據(jù)率的,但隨著串行通信速度越來(lái)越快,并行接口速度優(yōu)勢(shì)顯得不那么重要了,反而因信號(hào)線(xiàn)太多導(dǎo)致設(shè)計(jì)成本較高(PCB走線(xiàn)復(fù)雜)顯得有點(diǎn)不合潮流。但其實(shí)這么說(shuō)對(duì)Raw NAND是不公平的,現(xiàn)在的Serial NOR/NAND信號(hào)線(xiàn)其實(shí)也不少,比如高速的串行HyperFlash信號(hào)線(xiàn)數(shù)量已經(jīng)直逼x8 bit的Raw NAND FLASH,所以Raw NAND市場(chǎng)還是堅(jiān)挺的,你會(huì)發(fā)現(xiàn)各大存儲(chǔ)廠(chǎng)商都還在不斷推出Raw NAND FLASH產(chǎn)品。

      一、ONFI標(biāo)準(zhǔn)由來(lái)

        說(shuō)到Raw NAND發(fā)展史,其實(shí)早期的Raw NAND沒(méi)有統(tǒng)一標(biāo)準(zhǔn),雖然早在1989年Toshiba便發(fā)表了NAND Flash結(jié)構(gòu),但具體到Raw NAND芯片,各廠(chǎng)商都是自由設(shè)計(jì),因此尺寸不統(tǒng)一、存儲(chǔ)結(jié)構(gòu)差異大、接口命令不通用等問(wèn)題導(dǎo)致客戶(hù)使用起來(lái)很難受。為了改變這一現(xiàn)狀,2006年幾個(gè)主流的Raw NAND廠(chǎng)商(Hynix、Intel、Micron、Phison、Sony、ST)聯(lián)合起來(lái)商量制訂一個(gè)Raw NAND標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)叫Open NAND Flash Interface,簡(jiǎn)稱(chēng)ONFI,2006年12月ONFI 1.0標(biāo)準(zhǔn)正式推出,此標(biāo)準(zhǔn)一經(jīng)推出大受歡迎(好像不歡迎也不行,那些大廠(chǎng)說(shuō)了算啊),此后幾乎所有的Raw NAND廠(chǎng)商都按照ONFI標(biāo)準(zhǔn)設(shè)計(jì)生產(chǎn)Raw NAND,從此Raw NAND世界清靜了,不管哪家生產(chǎn)的Raw NAND對(duì)嵌入式設(shè)計(jì)者來(lái)說(shuō)幾乎都是一樣的,至少在驅(qū)動(dòng)代碼層面是一樣的,那么各廠(chǎng)商競(jìng)爭(zhēng)優(yōu)勢(shì)在哪呢?主要在三個(gè)方面:數(shù)據(jù)存取速率、ECC能力、ONFI之外的個(gè)性化功能。

        你可以從 ONFI官網(wǎng) 下載ONFI標(biāo)準(zhǔn)手冊(cè),從2006年推出1.0標(biāo)準(zhǔn)至今,ONFI標(biāo)準(zhǔn)已經(jīng)發(fā)展到4.1,這也說(shuō)明了Raw NAND技術(shù)在不斷更新升級(jí)。

      二、SLC Raw NAND原理

      2.1 Raw NAND分類(lèi)

        從軟件驅(qū)動(dòng)開(kāi)發(fā)角度而言,Raw NAND可以從以下幾個(gè)方面進(jìn)一步細(xì)分:

      單元層數(shù)(bit/cell):SLC(1bit/cell) / MLC(2bit/cell) / TLC(3bit/cell) / QLC(4bit/cell)
      數(shù)據(jù)線(xiàn)寬度:x8 / x16
      信號(hào)線(xiàn)模式:Asynchronous / Synchronous
      數(shù)據(jù)采集模式:SDR / DDR
      接口命令標(biāo)準(zhǔn):非標(biāo) / ONFI

        本文的主要研究對(duì)象是兼容ONFI 1.0標(biāo)準(zhǔn)的Asynchronous SDR SLC NAND Flash。

      2.2 Raw NAND內(nèi)存模型

        ONFI規(guī)定了Raw NAND內(nèi)存單元從大到小最多分為如下5層:Device、LUN(Die)、Plane、Block、Page(如下圖所示),其中Page和Block是必有的,因?yàn)?font color="Blue">Page是讀寫(xiě)的最小單元,Block是擦除的最小單元。而LUN和Plane則不是必有的(如沒(méi)有,可認(rèn)為L(zhǎng)UN=1, Plane=1),一般在大容量Raw NAND(至少8Gb以上)上才會(huì)出現(xiàn)。

        根據(jù)以上5層分級(jí)的內(nèi)存模型,Raw NAND地址也很自然地由如下圖中多個(gè)部分組成:

      Raw NAND Address = LUN Addr + Block Addr + Page Addr + Byte Addr (Column Addr)

        可能有朋友對(duì)Plane Address bit的位置有疑問(wèn),其實(shí)結(jié)合上面內(nèi)存模型圖就不難理解了,每個(gè)Plane里包含的Block并不是連續(xù)的,而是與其他Plane含有的Block是交錯(cuò)的。

      2.3 Raw NAND信號(hào)與封裝

        ONFI規(guī)定了Raw NAND信號(hào)線(xiàn)與封裝,如下是典型的x8 Raw NAND內(nèi)部結(jié)構(gòu)圖,除了內(nèi)存單元外,還有兩大組成,分別是IO控制單元和邏輯控制單元,信號(hào)線(xiàn)主要掛在IO控制與邏輯單元,x8 Raw NAND主要有15根信號(hào)線(xiàn)(其中必須的是13根,WP#和R/B#可以不用),關(guān)于各信號(hào)線(xiàn)具體作用,請(qǐng)查閱相關(guān)文檔。

        ONFI規(guī)定的封裝標(biāo)準(zhǔn)有很多,比如TSOP48、LGA52、BGA63/100/132/152/272/316,其中對(duì)于嵌入式開(kāi)發(fā)而言,最常用的是如下圖扁平封裝的TSOP-48,這種封裝常用于容量較小的Raw NAND(1/2/4/8/16/32Gb),1-32Gb容量對(duì)于嵌入式設(shè)計(jì)而言差不多夠用,且TSOP-48封裝易于PCB設(shè)計(jì),因此得以流行。

      2.4 Raw NAND接口命令

        ONFI 1.0規(guī)定了Raw NAND接口命令,如下表所示,其中一部分是必須要支持的(M),還有一部分是可選支持的(O)。必須支持的命令里最常用的是Read(Read Page)、Page Program、Block Erase這三條,涵蓋讀寫(xiě)擦最基本的三種操作。

        除了讀寫(xiě)擦這三個(gè)最基本命令外,還有一個(gè)必有命令也非常常用,這個(gè)命令是Read Status,用于獲取命令執(zhí)行狀態(tài)與結(jié)果,ONFI規(guī)定Raw NAND內(nèi)部必須包含一個(gè)8bit的狀態(tài)寄存器,這個(gè)狀態(tài)寄存器用來(lái)存儲(chǔ)NAND命令執(zhí)行狀態(tài)與結(jié)果,其中有兩個(gè)bit(RDY-SR[6]和FAIL-SR[0])需要特別關(guān)注,RDY用于指示命令執(zhí)行狀態(tài)(這個(gè)bit與外部R/B#信號(hào)線(xiàn)功能是一致的),F(xiàn)AIL用于返回命令執(zhí)行結(jié)果(主要是有無(wú)ECC錯(cuò)誤)。

        此外,還有一個(gè)必有命令不得不提,這個(gè)命令是Read Parameter Page,用于獲取芯片內(nèi)部存儲(chǔ)的出廠(chǎng)信息(包括內(nèi)存結(jié)構(gòu)、特性、時(shí)序、其他行為參數(shù)等),這個(gè)Parameter Page大小為256Bytes,其結(jié)構(gòu)已由ONFI規(guī)定如下表,痞子衡已經(jīng)圈出了一些重要信息,在設(shè)計(jì)NAND軟件驅(qū)動(dòng)時(shí),可以通過(guò)獲取這個(gè)Parameter Page來(lái)做到代碼通用。

      2.5 Raw NAND數(shù)據(jù)速率

        前面講了,數(shù)據(jù)存取速率這個(gè)技術(shù)指標(biāo)是各廠(chǎng)商競(jìng)爭(zhēng)力的體現(xiàn),對(duì)于這個(gè)指標(biāo),其實(shí)ONFI標(biāo)準(zhǔn)定義了一部分,我們知道Raw NAND數(shù)據(jù)存取操作是以Page為單位的,Page操作時(shí)間決定了數(shù)據(jù)存取速率,Page操作時(shí)間由3部分組成:

      Page操作時(shí)間(tReadPage) = Page命令操作時(shí)間(tCmd) + Page命令執(zhí)行等待時(shí)間(tBusy) + Page數(shù)據(jù)操作時(shí)間(tData

        以上三部分時(shí)間里,ONFI定義了Page命令/數(shù)據(jù)操作時(shí)間標(biāo)準(zhǔn),但Page命令執(zhí)行等待時(shí)間無(wú)法強(qiáng)制,因此各廠(chǎng)商N(yùn)AND速度差異主要是這個(gè)Page命令執(zhí)行等待時(shí)間不同造成的

        以異步模式Read Page命令(0x00 - 0x30)為例講解,下圖是Read Page完整時(shí)序簡(jiǎn)圖,0x00是主機(jī)發(fā)送的第一個(gè)字節(jié),用于通知NAND Device主機(jī)想要讀取Page,隨后的5個(gè)字節(jié)發(fā)送的是地址數(shù)據(jù),用于通知NAND Device主機(jī)想要從什么地址獲取數(shù)據(jù),0x30是主機(jī)發(fā)送的最后一個(gè)字節(jié),用于通知NAND Device讀取Page命令發(fā)送已經(jīng)完成,至此命令操作周期已經(jīng)結(jié)束,NAND Device此時(shí)開(kāi)始進(jìn)行內(nèi)部處理流程:拉低外部引腳R/B#或?qū)?nèi)部寄存器SR[6]置0表明我正在忙,然后從內(nèi)存塊里將主機(jī)指定地址所在的Page數(shù)據(jù)全部拷貝到臨時(shí)緩存區(qū)(Page Buffer),對(duì)這一整個(gè)Page數(shù)據(jù)進(jìn)行ECC校驗(yàn),如Page數(shù)據(jù)校驗(yàn)通過(guò),拉高外部引腳R/B#或?qū)?nèi)部寄存器SR[6]置1表明我已經(jīng)準(zhǔn)備好了,至此命令執(zhí)行等待周期已經(jīng)結(jié)束,主機(jī)開(kāi)始按Byte依次將Page數(shù)據(jù)讀出來(lái),所有Page數(shù)據(jù)全部都被讀出來(lái)后,整個(gè)Read Page時(shí)序就結(jié)束了。

        下圖是命令/地址操作具體時(shí)序,根據(jù)時(shí)序圖我們可以粗略計(jì)算出tCmd

      tCmd = (cmdBytes + addrBytes) x (tWP + tWH) = 7 * (tWP + tWH)

        下圖是數(shù)據(jù)讀取操作具體時(shí)序,分為兩種:Non-EDO模式(RE#上沿采樣數(shù)據(jù))和EDO模式(RE#下沿采樣數(shù)據(jù)),從圖中我們知道tRC是RE#信號(hào)的一個(gè)周期,通俗地說(shuō),Non-EDO模式一般用于低速模式(即tRC > 30ns時(shí)),而EDO模式一般用于高速模式(即tRC < 30ns時(shí))。根據(jù)時(shí)序圖我們可以粗略計(jì)算出tData

      tData = dataBytesInOnePage * tRC

        讓我們把tCmd和tData代入tReadPage計(jì)算公式可得如下等式,我們知道其中tBusy是無(wú)法得知的,那么其他三個(gè)時(shí)間tWP、tWH、tRC到底是多少呢?

      tReadPage = 7 x (tWP + tWH) + tBusy + dataBytesInOnePage * tRC

        繼續(xù)查看ONFI手冊(cè)可以找到答案,ONFI規(guī)定了六種timing mode(0-5),timing mode table里指明了所有時(shí)序相關(guān)的參數(shù)數(shù)值范圍,當(dāng)然也包括tWP、tWH、tRC,以最快的timing mode 5來(lái)計(jì)算:

      tReadPage = 7 x 20ns + tBusy + dataBytesInOnePage * 20ns = (dataBytesInOnePage + 7) x 20ns + tBusy

        我們似乎離答案更近一步了,但tBusy是多少這個(gè)問(wèn)題始終困擾著我們,其實(shí)痞子衡帶你繞了路,想要知道Read Page的時(shí)間沒(méi)有這么復(fù)雜,我們可以從任何一款Raw NAND數(shù)據(jù)手冊(cè)的扉頁(yè)Features里直接找到答案,如下是Micron生產(chǎn)的型號(hào)為MT29F4GxxABBxA的部分feature:

      ? Open NAND Flash Interface (ONFI) 1.0-compliant
      ? Single-level cell (SLC) technology
      ? Organization
        – Page size x8: 2112 bytes (2048 + 64 bytes)
        – Page size x16: 1056 words (1024 + 32 words)
        – Block size: 64 pages (128K + 4K bytes)
        – Plane size: 2 planes x 2048 blocks per plane
        – Device size: 4Gb: 4096 blocks; 8Gb: 8192 blocks; 16Gb: 16,384 blocks
      ? Asynchronous I/O performance
        – tRC/tWC: 20ns (3.3V), 25ns (1.8V)
      ? Array performance
        – Read page: 25μs
        – Program page: 200μs (TYP: 1.8V, 3.3V)
        – Erase block: 700μs (TYP)
      ? Operating voltage range
        – VCC: 2.7–3.6V
        – VCC: 1.7–1.95V
      

        從feature里我們可以知道tReadPage最小為25us(此數(shù)值應(yīng)是在x16 bits,timing mode 5下得出的最快速度),那么可以反算出tBusy = 25us - 20ns * (1024 + 7) = 4.38us,知道了tBusy讓我們計(jì)算一下x8 bits下的tReadPage = 20ns * (2048 + 7) + 4.38us = 45.48us,再計(jì)算x8 bits下的讀取數(shù)據(jù)率 2048Bytes / 45.48us = 360.246Mbps,這個(gè)數(shù)據(jù)率對(duì)于普通嵌入式應(yīng)用來(lái)說(shuō)其實(shí)是夠快的。

      2.6 Raw NAND壞塊與ECC

        Raw NAND開(kāi)發(fā)繞不開(kāi)壞塊(Bad Block)問(wèn)題,這是NAND Flash區(qū)別于NOR Flash的一個(gè)重要特點(diǎn)。NAND技術(shù)上允許壞塊的存在,這降低了NAND生產(chǎn)工藝要求,因此NAND單位容量?jī)r(jià)格比NOR低。

        既然物理上的壞塊無(wú)法避免,那有什么方法可以改善/解決壞塊問(wèn)題呢?方法當(dāng)然是有的,這個(gè)方法就是ECC(Error Correcting Code),ECC的具體實(shí)現(xiàn)原理詳見(jiàn)痞子衡的另一篇文章 漢明碼校驗(yàn)(Hamming Code SEC-DED),在這里你只需要知道ECC是一種錯(cuò)誤檢測(cè)與糾正算法,它通過(guò)對(duì)一定量的數(shù)據(jù)塊(一般是256/512bytes)進(jìn)行計(jì)算得到ECC碼(一般8bytes),在Page Program時(shí)將原始Page數(shù)據(jù)與ECC碼一同存入NAND Flash,在Read Page時(shí)同時(shí)獲取Page數(shù)據(jù)與ECC碼再進(jìn)行一次計(jì)算,如果該P(yáng)age數(shù)據(jù)沒(méi)有ECC錯(cuò)誤或者bit錯(cuò)誤能夠被ECC碼糾正,那么Page讀寫(xiě)操作就能夠正常進(jìn)行,如果bit錯(cuò)誤個(gè)數(shù)太多不能夠被糾正,那么該P(yáng)age所在的塊就應(yīng)該被認(rèn)定為一個(gè)壞塊。

        ECC能力主要根據(jù)糾正單數(shù)據(jù)塊中錯(cuò)誤bit個(gè)數(shù)來(lái)區(qū)分的,最基本的ECC只能夠糾正1bit錯(cuò)誤,強(qiáng)一點(diǎn)的ECC可以糾正4或者8個(gè)甚至更多的錯(cuò)誤bit。

        讓我們用一款實(shí)際芯片來(lái)具體分析壞塊與ECC,依舊以前面分析過(guò)的Micron生產(chǎn)的型號(hào)為MT29F4G08ABBxA為例,下圖是其內(nèi)存結(jié)構(gòu)圖,從圖中我們可以知道這款NAND的Page大小為2KB,但如果你仔細(xì)看,你會(huì)發(fā)現(xiàn)每個(gè)Page還額外含有64Bytes數(shù)據(jù),這個(gè)64Bytes區(qū)域即所謂的Spare Area,這個(gè)區(qū)域到底是干嘛用的呢?

        下圖是Spare Area的mapping圖,由于每個(gè)Page是2KB,而ECC計(jì)算塊是512Bytes,因此Page區(qū)域被均分為4塊,分別是Main 0、1、2、3,每塊大小為512Bytes,而相應(yīng)的Spare Area也被均分為4塊,分別是Spare 0、1、2、3,每塊大小為16bytes,與Main區(qū)域一一對(duì)應(yīng)。每個(gè)Spare x由2bytes壞塊信息、8bytes ECC碼、6bytes用戶(hù)數(shù)據(jù)組成。要特別說(shuō)一下的是ECC區(qū)域,當(dāng)芯片硬件ECC功能開(kāi)啟時(shí),8bytes ECC碼區(qū)域會(huì)被自動(dòng)用來(lái)存儲(chǔ)ECC信息,而如果芯片沒(méi)有硬件ECC功能,這個(gè)區(qū)域可以用來(lái)手動(dòng)地存放軟件ECC值。

        下圖是芯片Error管理相關(guān)信息,也包含了ECC,從圖中我們可以知道這款芯片ECC是4bits,壞塊是用0x00來(lái)標(biāo)識(shí)的,并且承諾該芯片出廠(chǎng)時(shí)每個(gè)Die里所含有的4096個(gè)block最多只會(huì)有80個(gè)壞塊。這些信息除了在芯片手冊(cè)里可以找到之外,前面介紹過(guò)的ONFI Parameter Page也同樣記錄了。

      2.7 Raw NAND個(gè)性化功能

        Raw NAND還有一些個(gè)性化的功能,這個(gè)是因廠(chǎng)商而異的,ONFI規(guī)定了兩個(gè)可選的命令Get/Set Feature,個(gè)性化功能可以通過(guò)Get/Set Feature命令來(lái)擴(kuò)展。下表是ONFI 1.0規(guī)定的Feature address范圍,其中0x01是Timing Mode,0x80-0xFF用于各廠(chǎng)商實(shí)現(xiàn)自己的特色功能。

        關(guān)于Timing Mode地址的具體定義如下,ONFI規(guī)定芯片上電初始為T(mén)iming mode 0,即最低速的模式,如果我們想要更快的NAND訪(fǎng)問(wèn)速度,必須使用Set feature命令將Timing mode設(shè)置到想要的數(shù)值

        繼續(xù)以前面分析過(guò)的Micron生產(chǎn)的型號(hào)為MT29F4G08ABBxA為例,下圖是該芯片的Feature定義,除了ONFI規(guī)定之外,還定義了自己的特色部分(0x80, 0x81, 0x90)。

        比如0x90定義的Array operation mode,我們可以通過(guò)其實(shí)現(xiàn)OTP控制以及硬件ECC的開(kāi)關(guān)。

      三、SLC Raw NAND產(chǎn)品

        Raw NAND廠(chǎng)商產(chǎn)品有兩種,一種是裸Raw NAND芯片,另一種是含Raw NAND的存儲(chǔ)方案(比如SSD硬盤(pán)),對(duì)于嵌入式開(kāi)發(fā)而言,我們更關(guān)心的是裸Raw NAND芯片產(chǎn)品,下面痞子衡收集了可以售賣(mài)SLC Raw NAND芯片的廠(chǎng)商及產(chǎn)品系列:

      廠(chǎng)商 芯片系列 官方網(wǎng)址
      Micron MT29F https://www.micron.com
      slc-nand-part-catalog
      Numonyx NAND256, NAND512 https://www.micron.com
      slc-nand-part-catalog
      Macronix MX30LF, MX60LF http://www.macronix.com
      slc-nand-part-catalog
      Winbond W29N http://www.winbond.com.tw
      slc-nand-part-catalog
      Spansion S34ML, S34MS, S34SL http://www.cypress.com/
      slc-nand-part-catalog
      ISSI IS34ML, IS34MW www.issi.com
      slc-nand-part-catalog
      Toshiba TC58B, TC58N http://toshiba.semicon-storage.com
      SK Hynix H27U http://www.hynix.com
      slc-nand-part-catalog
      Samsung K9F, K9K http://www.samsung.com/semiconductor/

        至此,ONFI標(biāo)準(zhǔn)及SLC Raw NAND痞子衡便介紹完畢了,掌聲在哪里~~~

      歡迎訂閱

      文章會(huì)同時(shí)發(fā)布到我的 博客園主頁(yè)CSDN主頁(yè)知乎主頁(yè)微信公眾號(hào) 平臺(tái)上。

      微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機(jī)上第一時(shí)間看了哦。

      posted @ 2018-06-07 20:07  痞子衡  閱讀(15313)  評(píng)論(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 人成午夜大片免费视频77777| 伊人久久大香线蕉aⅴ色| 亚洲中文无码av在线| 色狠狠综合天天综合综合| 国产精品久久久久久久专区| 国产成年码av片在线观看| 亚洲精品综合网二三区| 国产中文字幕精品视频| 亚洲av天堂综合网久久| 日本无翼乌邪恶大全彩h| 国产视色精品亚洲一区二区| 亚洲AV无码国产成人久久强迫| 国产精品不卡区一区二| 国产精品白浆免费视频| 中文字幕人成无码免费视频| 白嫩少妇无套内谢视频| 夜夜添无码试看一区二区三区 | 亚洲熟女乱色综一区二区| 天堂网av一区二区三区| 国产叼嘿视频一区二区三区 | 日韩精品人妻黄色一级片| 国产四虎永久免费观看| 国产精品亚洲а∨天堂2021| 国产乱老熟女乱老熟女视频| 亚洲国产免费图区在线视频| 377p欧洲日本亚洲大胆| 日韩国产精品一区二区av| 噜噜噜噜私人影院| 国产精品视频一区二区三区无码| 亚洲欧美在线一区中文字幕| 国产a级三级三级三级| 精品人妻日韩中文字幕| 青青草久热这里只有精品| 挺进粗大尤物人妻中文字幕| 国产熟睡乱子伦视频在线播放 | 给我中国免费播放片在线| 久久久久久综合网天天| 国产美女遭强高潮免费| 亚洲欧洲中文日韩久久av乱码| 亚洲成人av免费一区| 日韩激情一区二区三区|