当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA入门课程之《flash 控制 》设计

时间:2024-07-29      来源:网络搜集 关于我们 0

点击上方蓝字关注我们

《flash  控制 》设计

01

设计背景:

FLASH 闪存 闪存的英文名称是"FlashMemory",一般简称为"Flash",它属于内存器件的一种,是一种不挥发性( Non-Volatile )内存。闪存的物理特性与常见的内存有根本性的差异:目前各类DDR 、 SDRAM 或者 RDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存;闪存在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。

02

设计原理

我们的设计用的是 W25Q128FV 内存 128M 的flash 芯片,大家可以自行在网上下载器件手册具体看所应用的具体命令和自己项目具体的应用和想发来设计。这款 flash 芯片的的存储是一个扇区 4KB,一个扇区可以存 256个字,一个字是 8 位,一个块是 64KB,一共有 256 个块组成一个存储 flash 内存。我在下面的讲解中,将主要讲实现一下字节的读写,我用的协议是 SPI协议,这个芯片支持 QSPI,双端口 SPI 等。flash 有三个状态寄存器,每一个状态寄存器的每一位都有各自的功能。大家可以具体的看器件手册,我给大家简单的讲一下第一个状态寄存器。

这个状态寄存器第一位是可读忙和不忙的标志位,大家可以在我们的设计中判断芯片是否忙和不忙来是否进行下一步的操作。第二位是一个写标志的信号,当写使能打开的时候它位 1,只有它为 1 的时候我们才可以进行写,值得一说的不管是页操作,还是擦除等命令后都会使这个标志位变成 0。然后前面的命令算的上的是保护命令,具体有使用的逻辑功能。在 flash中我们写数据前先要擦除数据你想擦除的地方,然后进行写,如果没有用过的 flash 芯片的话那么可以不用擦除。毕竟我们的flash 可是掉电不丢失数据的。我的设计思路是这样的我们先读出我们的器件厂商,和芯片 ID,然后记性写命令,写使能打开,页操作写入数据(值得说明的是我们FLASH 是新的所以没进行擦除命令,建议擦除---关闭写使能 -- 打开写使能),然后读第一个寄存器判断芯片的第一位是否忙,不忙然后进行读操作之后再数码管上显示出我们写入的数据。部分操作命令如下

我们的发送格式为在时钟的上升沿写入命令,在时钟的下降沿读出命令,我们用的是标准的 SPI协议,端口 IO0,和 IO1,都是单向的。写使能时序:

读使能时序:

之后别的时序我们将不展示,大家可以参考器件手册

03

设计架构图

我们的设计是用一个 FSM 控制器来控制发送什么命令,flash 模块判断 FSM 发送过来的 state 信号来选择应该执行什么操作,当命令写入或者读出后,会发送一个 flag_done 命令,这个命令让我们判断上个指令是否完成,如果完成后 FAM 将发送下一个命令

04

设计代码

设计模块

 

    

SignalTap  采集图

图中显示的和我们的设计一样,发送的各个命令也是一样的,我们写入的是 AA 然后下班接收的也是 AA

End

扫描二维码

获取更多精彩

FPGA设计论坛

精彩推荐FPGA设计要点基于FPGA的AGC算法         当AI遇到FPGA,低功耗智能探测系统不再是难题喜欢就点个在看再走吧


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言