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
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593201
  • amd
    amd
    +关注

    关注

    25

    文章

    5197

    浏览量

    132636
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171192
  • FlaSh
    +关注

    关注

    10

    文章

    1550

    浏览量

    146646
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148495

原文标题: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

    SPI Nand Flash 简介

    Flash memory是非易失性存储的,可用于FPGA或者车载芯片上的存储数据的加载。Flash Memory根据硬件上存储原理的不同,Flash Memory主要可以分为NOR
    发表于 07-01 10:28

    基于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 3914次阅读
    <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 33次下载
    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 原理深度解析(上)

    Nand Flash存储器是Flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了高性价比、高性能的解决方案。Nand
    的头像 发表于 09-05 18:10 1840次阅读

    NAND Flash接口简单介绍

    NAND Flash是一种非易失存储器,也就是掉电不丢失类型,现在我们常见的存储设备基本都是NAND Flash,比如U盘、固态硬盘,手机存储等等,电脑传统硬盘除外。
    发表于 09-11 14:48 677次阅读
    <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 840次阅读
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b> 原理深度<b class='flag-5'>解析</b>(下)