RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Nand Flash接口定義解析 基于AMD FPGA的Nand Flash接口讀寫實現(xiàn)

Comtech FPGA ? 來源: FPGA FAE技術(shù)分享選集 ? 2023-11-10 09:40 ? 次閱讀

一、Nand Flash接口定義解析

Nand Flash因其具有容量大、成本低、壽命長的特點,被廣泛的用作數(shù)據(jù)存儲的解決方案。然而NandFlash的讀寫控制較為復雜,Nand Flash的接口控制器大多是基于PC機或ARM處理器為架構(gòu)進行開發(fā)的,存在操作不方便的問題。

FPGA實現(xiàn)Nand Flash接口的優(yōu)點有很多。首先,F(xiàn)PGA可以實現(xiàn)Nand Flash的高速讀寫,因為FPGA可以通過并行處理來提高數(shù)據(jù)傳輸速度。其次,F(xiàn)PGA可以實現(xiàn)Nand Flash的高可靠性,因為FPGA可以通過ECC校驗來檢測和糾正數(shù)據(jù)傳輸中的錯誤。此外,F(xiàn)PGA可以實現(xiàn)Nand Flash的低功耗,因為FPGA可以通過動態(tài)電壓調(diào)節(jié)技術(shù)來降低功耗。最后,F(xiàn)PGA可以實現(xiàn)Nand Flash的高靈活性,因為FPGA可以通過重新編程來適應(yīng)不同的應(yīng)用場景。

在Nand Flash控制器中,接口的設(shè)計直接影響Nand Flash控制器訪問存儲顆粒的速度。目前業(yè)界有兩種主流的接口標準ONFI(Open Nand Flash Interface)與Toggle。ONFI是Intel和Micron等公司主導的開放的Nand Flash接口標準,這里主要針對ONFI標準進行描述。

11f3a8be-7ef7-11ee-939d-92fbcf53809c.png

圖1、ONFI標準發(fā)展

如圖1所示,ONFI目前支持5種不同的數(shù)據(jù)接口類型:SDR/NV-DDR/NV-DDR2/NV-DDR3和NV-LPDDR4。SDR是傳統(tǒng)的NAND接口,使用RE_n鎖存讀數(shù)據(jù),WE_n鎖存寫數(shù)據(jù),沒有時鐘。NV-DDR是雙數(shù)據(jù)率(Double Data Rate-DDR)接口,含有用來鎖存命令和地址的時鐘,和一個用來鎖存數(shù)據(jù)的數(shù)據(jù)選通信號。

NV-DDR2是雙數(shù)據(jù)率接口,含有額外的擴展速度(scaling speed)的功能,像On-Dietermination以及差分信號。NV-DDR3接口包含所有NV-DDR2的特性,但操作在VccQ=1.2V。數(shù)據(jù)接口包含的特性如下圖2所示。

12137c98-7ef7-11ee-939d-92fbcf53809c.png

12392d4e-7ef7-11ee-939d-92fbcf53809c.png

125e2ff4-7ef7-11ee-939d-92fbcf53809c.png

圖2 、ONFI數(shù)據(jù)接口

如果上電時VccQ=1.8V或3.3V,則device 應(yīng)該操作在SDR接口timing mode 0。如果 Host 在參數(shù)page中判定NV-DDR 和NV-DDR2都被支持,則host可以通過Feature Address為01h的SetFeature命令,來選擇其中一個接口以及支持的timing mode。參見ONFI 5.1 5.31.1。

如果上電時VccQ=1.2V,則 device 應(yīng)操作在NV-DDR3接口timing mode 0。如果host 在參數(shù)page中判明了支持的NV-DDR3timing mode,則host可以通過將CE_n轉(zhuǎn)為高來使能支持的timing mode,并將接口速度改變?yōu)槠谕膖iming mode。當host 將CE_n 拉低后,新的timingmode會生效。參見ONFI 5.15.31.1。

二、ONFI的接口信號

128495ae-7ef7-11ee-939d-92fbcf53809c.png

圖4、Signal Assignment based on Data Interface Type

如圖4所示,ONFI標準發(fā)展過程中的接口SDR/NV-DDR/NV-DDR2/NV-DDR3/NV-LPDDR4,其接口信號也有了相應(yīng)的調(diào)整。

對于NV-DDR/NV-DDR2/NV-DDR3和NV-LPDDR4接口,與 SDR 接口相比,其共同的變化有:

a、I/O總線重命名為DQ總線

b、新加了一個名為DQS(DQ Strobe)的DQ 數(shù)據(jù)總線選通信號。DQS是雙向信號,用于數(shù)據(jù)傳輸。DQS不能用于命令或地址周期。對于從host到device的數(shù)據(jù)傳輸(寫),DQS的鎖存沿對齊到有效數(shù)據(jù)窗口的中間;對于從device到host的數(shù)據(jù)傳輸(讀),DQS的鎖存沿對齊到DQ總線的轉(zhuǎn)換沿。當操作在SDR接口時,DQS應(yīng)該被host拉高,被device忽略。

對于 NV-DDR 接口,與SDR接口相比,主要變化有:

a、WE_n變成時鐘信號(CLK)。CLK應(yīng)該被使能并且具有有效的時鐘周期,不論命令周期,地址周期和數(shù)據(jù)周期什么時候發(fā)生。在CE_n為低期間,CLK應(yīng)保持相同的頻率;參見2.9.1。

b、RE_n變成寫/讀方向信號(W/R_n)。該信號表示誰擁有DQ總線和DQS信號。Host應(yīng)該僅在ALE和CLE被鎖存到0時才能轉(zhuǎn)換W/R_n;參見4.20.2.6中W/R_n要求。

對于NV-DDR2和NV-DDR3接口,與SDR接口相比,主要變化有:

c、RE_n 可作為單端信號(single-ended)或者作為一個互補信號對(RE_t,RE_c)使用

d、增加了名為DQS(DQ strobe)的DQ數(shù)據(jù)總線選通信號。DQS可作為單端信號或者作為一個互補信號對(DQS_t,DQS_c)使用。

對于NV-LPDDR4數(shù)據(jù)接口,與SDR數(shù)據(jù)接口相比,變化如下:

a、RE_n必須用作互補信號對(RE_t、RE_c)。

b、增加了一個用于DQ數(shù)據(jù)總線的選通信號,稱為DQS(DQ選通)。DQS必須用作互補信號對(DQS_t、DQS_c)。

c、添加了一個用于DQ數(shù)據(jù)總線的可選數(shù)據(jù)總線反相信號,稱為DBI_n。DBI_ n指定DQ信號是否被反轉(zhuǎn)。DBI_n被視為DQ,因此AC參數(shù)和接口訓練等規(guī)范應(yīng)適用于DBI。

三、基于AMD FPGA的Nand Flash接口讀寫實現(xiàn)

基于上述ONFI的協(xié)議標準,使用AMD FPGA進行Nand Flash的接口設(shè)計有如下幾個優(yōu)點:

由于Nand Flash的接口速率比較高,AMD FPGA的IO口性能通過很多代產(chǎn)品的迭代,IO口性能比較穩(wěn)定,兼容性較好;

可以使用AMD MPSOC進行設(shè)計,通過PS端的程序編寫,可以方便地配合PL端進行ONFI標準的接口設(shè)計,執(zhí)行效率高,并且設(shè)計比較簡單成熟;

在進行ONFI標準升級時,可以通過修改接口PHY部分的硬核邏輯(OSERDES/ISERDES)的配置,就可以提升接口的帶寬,可靠性和穩(wěn)定性都很好。

如圖5所示,使用AMD 的MPSOC可以方便地通過如下類似的BD配置,只需要PS使用簡單函數(shù)把NandFlash當作普通外設(shè)即可進行讀寫,實現(xiàn)數(shù)據(jù)的配置和讀寫Nand Flash。如下圖所示。圖中僅展示了Nand Flash的單個通道的接口BD配置。

由于篇幅有限,不對Nand Flash芯片的各個命令不同模式的時序信號進行介紹,默認大家是了解的。

129ef3b8-7ef7-11ee-939d-92fbcf53809c.png

圖5、MPSOC讀寫Flash的簡單BD配置

而其中有關(guān)Nand Flash Controller的架構(gòu)建議如下圖6所示。

12cf6296-7ef7-11ee-939d-92fbcf53809c.png

圖6、ONFI的Nand Flash Controller實現(xiàn)

Nand Flash控制器硬件系統(tǒng)中, 各個模塊的功能描述如下:

1) 、AXI總線接口模塊模塊

AXI總線接口模塊接收來自PS端或者CPU端發(fā)送的命令以及數(shù)據(jù)信息, 然后把相應(yīng)的設(shè)備狀態(tài)的值, 通過狀態(tài)寄存器返回給PS或CPU。它是PS與Nand Flash控制器進行數(shù)據(jù)、命令等交互的橋梁。

2) 、控制器狀態(tài)機模塊

控制器固件對Nand Flash芯片的各種操作由狀態(tài)機完成, 狀態(tài)機包含Nand Flash控制器運行的各種狀態(tài), 每一個命令碼操作由Nand Flash控制器的各種狀態(tài)有序組合而成, 共同完成對Nand Flash存儲芯片的一次操作。

12ebb8ce-7ef7-11ee-939d-92fbcf53809c.png

圖7、控制器狀態(tài)機

Nand Flash控制器的功能實現(xiàn)由控制器狀態(tài)機模塊完成。系統(tǒng)沒有操作時, 控制器處于IDLE狀態(tài), 命令代碼被寫入命令寄存器,確定下一步要執(zhí)行的命令后,Nand Flash控制器轉(zhuǎn)移到某個相應(yīng)的子狀態(tài)序列, 完成對存儲器的指定操作。

在控制器狀態(tài)機中, 程序?qū)?zhí)行不同功能的控制。每個獨立的過程由一個子狀態(tài)機來實現(xiàn), 通過系統(tǒng)的時鐘來控制所有的狀態(tài)轉(zhuǎn)換。每個子狀態(tài)操作完成需要的步驟和時鐘個數(shù)可能不盡相同, 程序則通過維護一個專用寄存器進行協(xié)調(diào), 以確保滿足Nand Flash器件的時間控制要求。

3) 、命令接口模塊

命令接口用于進行命令的識別和判斷,Processor側(cè)可以封裝好不同opcode的命令,方便軟件進行操作。比如,Select Way0命令,可以設(shè)置opcode為6'h20,address為{24'd0,8'b1}。

4) 、數(shù)據(jù)接口模塊

數(shù)據(jù)接口主要是有關(guān)控制器的用戶側(cè)數(shù)據(jù)的輸入和輸出接口實現(xiàn)(基于AXI接口),比如iWriteData、iWriteLast、iWriteValid、iWriteKeep、WriteReady、oReadData、oReadLast、oReadValid、oReadKeep、iReadReady等。

5) 、緩存模塊

緩存模塊包括RAM和異步FIFO模塊,模塊用于緩存命令和數(shù)據(jù)的雙端口RAM,由多個不同RAM和FIFO組成。

6) 、發(fā)送引擎模塊

根據(jù)ONFI的手冊,識別Command Interface的不同命令來拼好時隙,保證其通過PHY出去的時候,是符合對應(yīng)模式下的對應(yīng)命令的時序的。

7) 、PHY接口模塊

PHY接口模塊需要使用ISERDES/OSERDES來實現(xiàn),需要根據(jù)用戶側(cè)的時鐘頻率來決定接口的帶寬。通常需要向上兼容(為了兼容不同模式下的時序要求),需要兼容老的慢速模式(比如NV-DDR/NV-DDR2等),其信號是上述圖中的DQDQSCEWE等信號。

四、Nand Flash接口功能測試流程和實測結(jié)果

對本文所設(shè)計實現(xiàn)的Nand Flash控制器的功能, 在EDA軟件環(huán)境下進行了仿真驗證, 其測試流程如圖 8所示。

131110c4-7ef7-11ee-939d-92fbcf53809c.png

圖8、接口測試流程

在圖 5所示的仿真驗證過程中, 需對Nand Flash芯片進行一系列交互操作, 如讀ID、擦除、讀設(shè)備、頁編程、頁讀取、ECC校驗、I/O讀等, 且每次操作完成后, 都要讀設(shè)備狀態(tài)并判斷操作是否成功, 只有操作正常完成才繼續(xù)進行下一步的操作, 否則退出測試過程。

實際測試的結(jié)果是,按照上述方案,已經(jīng)實現(xiàn)過ONFI2.1(NV-DDR2)的實際測試,暫未進行NV-DDR3接口的實際測試。實測MPSOC使用ZU19EG器件,NandFlash芯片選用MT29F64G08AECABH1。NandFlash芯片工作在mode 5狀態(tài)(8192 Bytesper Page)的實測條件下,實現(xiàn)了48 MB/s的寫入速度和93 MB/s 讀出速度。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602978
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5466

    瀏覽量

    134087
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16332

    瀏覽量

    177803
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1633

    瀏覽量

    147939
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8575

    瀏覽量

    151014

原文標題:AMD FPGA實現(xiàn)Nand Flash接口讀寫方案

文章出處:【微信號:Comtech FPGA,微信公眾號:Comtech FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    標準NAND FLASH控制器

    NAND FLASH Controller IP Core標準NAND FLASH Controller標準NAND
    發(fā)表于 02-17 11:11

    標準NAND FLASH控制器/超高速NAND FLASH陣列控制器

    NAND FLASH Controller IP Core標準NAND FLASH Controller標準NAND
    發(fā)表于 03-01 18:49

    SPARTAN 3 FPGANand Flash接口優(yōu)點是什么

    HI, 我正在設(shè)計FPGA開發(fā)套件。在那里我想添加Nand Flash。使用nand flash與spartan系列
    發(fā)表于 05-23 09:55

    nand flash 接口切換

    0 ,然后我想回到 SDR 接口模式,就發(fā)了 Reset (FFh) 命令,但是 命令發(fā)出后,nand flash的 Rb_n 沒有拉低,也就是 復位沒成功,請問 要實現(xiàn)我這個過程,
    發(fā)表于 10-04 13:30

    NAND Flash的儲存結(jié)構(gòu)與接口設(shè)計

    Flash 的存儲結(jié)構(gòu)以及NAND Flash接口控制設(shè)計。NAND Flash 的存儲結(jié)構(gòu)
    發(fā)表于 11-05 09:18

    基于FPGA的SD卡的數(shù)據(jù)讀寫實現(xiàn)(SD NAND FLASH

    文章目錄1、存儲芯片分類2、NOR FlashNAND Flash的區(qū)別3、什么是SD卡?4、什么是SD NAND?5、SD NAND
    發(fā)表于 12-16 17:18

    NAND FLASH在WINCENET系統(tǒng)中的應(yīng)用設(shè)計

    和 WINCE 系統(tǒng)下 NAND Flash 驅(qū)動的設(shè)計與實現(xiàn) 并且詳細描述了 如何調(diào)整處理器存儲控制器的寄存器來控制 NAND Flash
    發(fā)表于 03-14 16:01 ?2次下載

    NAND Flash 的存儲結(jié)構(gòu)以及NAND Flash接口控制設(shè)計

    Nand flashflash存儲器的其中一種,Nand flash其內(nèi)部采用非線性宏單元模式以及為固態(tài)大容量內(nèi)存的
    發(fā)表于 11-03 16:12 ?4429次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 的存儲結(jié)構(gòu)以及<b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>的<b class='flag-5'>接口</b>控制設(shè)計

    NAND Flash主機接口控制器技術(shù)研究

    NAND Flash主機接口控制器技術(shù)研究(嵌入式開發(fā)入門 csdn)-該文檔為NAND Flash主機
    發(fā)表于 07-30 12:23 ?12次下載
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>主機<b class='flag-5'>接口</b>控制器技術(shù)研究

    FPGA MCU FSMC通信接口——NAND Flash模式

    (Flexible static memory controller)接口用于MCU與FPGA之間的通訊最近使用的一款MCU與FPGA之間通訊,FPGA模擬成
    發(fā)表于 10-26 11:51 ?28次下載
    <b class='flag-5'>FPGA</b> MCU FSMC通信<b class='flag-5'>接口</b>——<b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>模式

    SPI Nand Flash簡介

    1.SPI Nand Flash簡介SPI Nand Flash顧名思義就是串行接口Nand
    發(fā)表于 12-02 10:51 ?34次下載
    SPI <b class='flag-5'>Nand</b> <b class='flag-5'>Flash</b>簡介

    NOR FlashNAND FLASH的區(qū)別是什么

    與NOR Flash相近,根據(jù)接口的不同有所差異; NAND FLASH的寫入速度比NOR Flash快很多;
    發(fā)表于 01-25 17:25 ?6.1w次閱讀
    NOR <b class='flag-5'>Flash</b>和<b class='flag-5'>NAND</b> <b class='flag-5'>FLASH</b>的區(qū)別是什么

    NAND Flash接口簡單介紹

    NAND Flash是一種非易失存儲器,也就是掉電不丟失類型,現(xiàn)在我們常見的存儲設(shè)備基本都是NAND Flash,比如U盤、固態(tài)硬盤,手機存儲等等,電腦傳統(tǒng)硬盤除外。
    發(fā)表于 09-11 14:48 ?1424次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b><b class='flag-5'>接口</b>簡單介紹

    NAND Flash 原理深度解析(下)

    ,它是能夠獨立執(zhí)行命令和報告狀態(tài)的最小單元。 一個Die/LUN有多個Plane(e.g. 4Plane),通過多Plane并發(fā)操作提升NAND Flash讀寫性能。 一個Plane有幾
    的頭像 發(fā)表于 09-22 18:10 ?3056次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 原理深度<b class='flag-5'>解析</b>(下)

    打開NAND Flash接口規(guī)范

    電子發(fā)燒友網(wǎng)站提供《打開NAND Flash接口規(guī)范.pdf》資料免費下載
    發(fā)表于 08-21 12:21 ?0次下載
    RM新时代网站-首页