<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

Nand Flash接口定義解析 基于AMD FPGA的Nand Flash接口讀寫實現

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

一、Nand Flash接口定義解析

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

FPGA實現Nand Flash接口的優點有很多。首先,FPGA可以實現Nand Flash的高速讀寫,因為FPGA可以通過并行處理來提高數據傳輸速度。其次,FPGA可以實現Nand Flash的高可靠性,因為FPGA可以通過ECC校驗來檢測和糾正數據傳輸中的錯誤。此外,FPGA可以實現Nand Flash的低功耗,因為FPGA可以通過動態電壓調節技術來降低功耗。最后,FPGA可以實現Nand Flash的高靈活性,因為FPGA可以通過重新編程來適應不同的應用場景。

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

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

圖1、ONFI標準發展

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

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

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

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

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

圖2 、ONFI數據接口

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

如果上電時VccQ=1.2V,則 device 應操作在NV-DDR3接口timing mode 0。如果host 在參數page中判明了支持的NV-DDR3timing mode,則host可以通過將CE_n轉為高來使能支持的timing mode,并將接口速度改變為期望的timing 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標準發展過程中的接口SDR/NV-DDR/NV-DDR2/NV-DDR3/NV-LPDDR4,其接口信號也有了相應的調整。

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

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

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

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

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

b、RE_n變成寫/讀方向信號(W/R_n)。該信號表示誰擁有DQ總線和DQS信號。Host應該僅在ALE和CLE被鎖存到0時才能轉換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數據總線選通信號。DQS可作為單端信號或者作為一個互補信號對(DQS_t,DQS_c)使用。

對于NV-LPDDR4數據接口,與SDR數據接口相比,變化如下:

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

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

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

三、基于AMD FPGA的Nand Flash接口讀寫實現

基于上述ONFI的協議標準,使用AMD FPGA進行Nand Flash的接口設計有如下幾個優點:

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

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

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

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

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

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

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

而其中有關Nand Flash Controller的架構建議如下圖6所示。

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

圖6、ONFI的Nand Flash Controller實現

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

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

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

2) 、控制器狀態機模塊

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

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

圖7、控制器狀態機

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

在控制器狀態機中, 程序將執行不同功能的控制。每個獨立的過程由一個子狀態機來實現, 通過系統的時鐘來控制所有的狀態轉換。每個子狀態操作完成需要的步驟和時鐘個數可能不盡相同, 程序則通過維護一個專用寄存器進行協調, 以確保滿足Nand Flash器件的時間控制要求。

3) 、命令接口模塊

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

4) 、數據接口模塊

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

5) 、緩存模塊

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

6) 、發送引擎模塊

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

7) 、PHY接口模塊

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

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

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

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

圖8、接口測試流程

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

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

審核編輯:湯梓紅

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

    關注

    1608

    文章

    21367

    瀏覽量

    594677
  • amd
    amd
    +關注

    關注

    25

    文章

    5260

    瀏覽量

    132852
  • 控制器
    +關注

    關注

    112

    文章

    15392

    瀏覽量

    172704
  • FlaSh
    +關注

    關注

    10

    文章

    1566

    瀏覽量

    146862
  • 接口
    +關注

    關注

    33

    文章

    7859

    瀏覽量

    149007

原文標題:AMD FPGA實現Nand Flash接口讀寫方案

文章出處:【微信號:Comtech FPGA,微信公眾號:Comtech FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    標準NAND FLASH控制器

    NAND FLASH Controller IP Core標準NAND FLASH Controller標準NAND
    發表于 02-17 11:11

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

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

    SPARTAN 3 FPGANand Flash接口優點是什么

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

    nand flash 接口切換

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

    NAND Flash的儲存結構與接口設計

    Flash 的存儲結構以及NAND Flash接口控制設計。NAND Flash 的存儲結構
    發表于 11-05 09:18

    基于FPGA的SD卡的數據讀寫實現(SD NAND FLASH

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

    NAND FLASH在WINCENET系統中的應用設計

    和 WINCE 系統下 NAND Flash 驅動的設計與實現 并且詳細描述了 如何調整處理器存儲控制器的寄存器來控制 NAND Flash
    發表于 03-14 16:01 ?2次下載

    NAND Flash 的存儲結構以及NAND Flash接口控制設計

    Nand flashflash存儲器的其中一種,Nand flash其內部采用非線性宏單元模式以及為固態大容量內存的
    發表于 11-03 16:12 ?4009次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 的存儲結構以及<b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>的<b class='flag-5'>接口</b>控制設計

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

    (Flexible static memory controller)接口用于MCU與FPGA之間的通訊最近使用的一款MCU與FPGA之間通訊,FPGA模擬成
    發表于 10-26 11:51 ?27次下載
    <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
    發表于 12-02 10:51 ?34次下載
    SPI <b class='flag-5'>Nand</b> <b class='flag-5'>Flash</b>簡介

    NOR FlashNAND FLASH的區別是什么

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

    NAND Flash接口的演進史

    從SD卡、手機、平板等消費級產品到數據中心企業級場景,NAND Flash憑借其高性能、大容量、低功耗以及低成本等特性大受歡迎,是目前應用最為廣泛的半導體非易失存儲介質。為了滿足業務場景越來越嚴苛的性能要求,人們想了許多方法來提升基于N
    的頭像 發表于 01-14 11:22 ?2695次閱讀

    NAND Flash 原理深度解析(上)

    Nand Flash存儲器是Flash存儲器的一種,其內部采用非線性宏單元模式,為固態大容量內存的實現提供了高性價比、高性能的解決方案。Nand
    的頭像 發表于 09-05 18:10 ?2051次閱讀

    NAND Flash接口簡單介紹

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

    NAND Flash 原理深度解析(下)

    ,它是能夠獨立執行命令和報告狀態的最小單元。 一個Die/LUN有多個Plane(e.g. 4Plane),通過多Plane并發操作提升NAND Flash讀寫性能。 一個Plane有幾
    的頭像 發表于 09-22 18:10 ?958次閱讀
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 原理深度<b class='flag-5'>解析</b>(下)
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>