FPGA学习系列:内存128M的flash芯片设计.doc

FPGA学习系列:内存128M的flash芯片设计.doc

ID:27513358

大小:238.50 KB

页数:23页

时间:2018-12-04

FPGA学习系列:内存128M的flash芯片设计.doc_第1页
FPGA学习系列:内存128M的flash芯片设计.doc_第2页
FPGA学习系列:内存128M的flash芯片设计.doc_第3页
FPGA学习系列:内存128M的flash芯片设计.doc_第4页
FPGA学习系列:内存128M的flash芯片设计.doc_第5页
资源描述:

《FPGA学习系列:内存128M的flash芯片设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

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

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

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

4、得说明的是我们FLASH是新的所以没进行擦除命令,建议擦除---关闭写使能--打开写使能),然后读第一个寄存器判断芯片的第一位是否忙,不忙然后进行读操作之后再数码管上显示出我们写入的数据。  部分操作命令如下    我们的发送格式为在时钟的上升沿写入命令,在时钟的下降沿读出命令,我们用的是标准的SPI协议,端口IO0,和IO1,都是单向的。  写使能时序:    读使能时序:    之后别的时序我们将不展示,大家可以参考器件手册。  设计架构图:  我们的设计是用一个FSM控制器来控制发送什么命令,flash模块判断FSM发送过来的state信号来选择应该

5、执行什么操作,当命令写入或者读出后,会发送一个flag_done命令,这个命令让我们判断上个指令是否完成,如果完成后FAM将发送下一个命令。    设计代码:  设计模块  0modulefsm(clk,rst_n,flag_done,command,addr,state,data);  1  2inputclk,rst_n;  3inputflag_done;//输入标志位  4outputreg[7:0]command;//输出命令  5outputreg[23:0]addr;//输出地址  6outputreg[2:0]state;//输出状态模式 

6、 7outputreg[7:0]data;//输出写入数据  8  9reg[2:0]state_s;  10reg[20:0]count;  11always@(posedgeclk)  12if(!rst_n)  13begin  14state_s0;  15data8’d0;  16addr24’d0;  17command8’d0;  18state0;  19count0;  20end  21else  22case(state_s)  230:begin  24  if(count200)//延迟一段时间  25  countcount+1

7、;  26  else  27  begin//发送读厂商ID的命令  28  command8’h90;  29  addr24’d0;  30  state1;  31  count1;  32  end  33  if(flag_done)//检查是否完成  34  state_s1;  35end  36  371:begin  38  if(count200)//延迟一段时间  39  countcount+1;  40  else  41  begin//写使能  42  command8’h06;  43  state3;  44  coun

8、t0;  45  end  46  if(flag_done)//

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。