原创 【博客大赛】基于FPGA的串行flash的读写控制(二)-串行flash操作时序

2015-9-7 21:30 2740 20 21 分类: FPGA/CPLD

1、 读操作(25Mhz)

    该操作支持最高时钟速率为25Mhz的读操作。执行该操作时,芯片内部地址指针自动递增,连续输出从起始地址单元开始的数据,直到遇到CE#信号的上升沿。如果到达最高位的地址,地址指针返回最低位的地址继续递增。例如,SST25VF032B的地址最高位为0x3fffff,当内部地址指针到达0x3fffff时,下次将返回地址最低位0x0开始继续递增。

    该操作对应8bits的命令为0x03,后面跟随24位的地址,高位先发。在连续的读操作执行过程中,CE#必须保持为低电平。具体时序请见图1。

2-1.jpg

图1读操作(25Mhz)时序

2、高速读操作(50MHz)

    该操作支持最高时钟速率为50Mhz的读操作。执行该操作时,同读操作(25Mhz)模式,芯片内部地址指针自动递增,连续输出从起始地址单元开始的数据,直到遇到CE#信号的上升沿。如果到达最高位的地址,地址指针返回最低位的地址继续递增。例如,SST25VF032B的地址最高位为0x3fffff,当内部地址指针到达0x3fffff时,下次将返回地址最低位0x0开始继续递增。

    该操作对应8bits的命令为0x0b,后面跟随24位的地址以及8位的填充位,高位先发。在填充位之后SO输出读出的数据。具体时序请见图2。

2-2.jpg

图2高速操作(50Mhz)时序

3、Byte编程操作

    该操作每次向一个地址单元写一个字节的数据,每次写一个字节的数据前都要在SI总线上发送24位的地址数据。在向相应地址写数据前,需确保待写入的地址处于已擦除状态(0xff),同时需要进行写使能(WREN)操作。在该操作进行的过程中,CE#信号需要保持为低。

     该操作对应8bits的命令为0x02,后面跟随24位的地址和8位的数据,高位先发。发送完成后,查询状态寄存器中的BUSY或等待TBP时间(可在芯片手册中查询,SST25VF032B为10us),BUSY为0或等待TBP时间结束后可执行下一步操作。具体时序请见图3。

2-3.jpg

图3 Byte编程操作时序

4、AAI(Auto Address Increment)word编程模式

    AAI word编程模式允许只配置一次起始地址的情况下写入多个word的数据,一个word为2个字节。写入之前需确保待写入的地址处于已擦除状态(0xff)。

    执行AAI编程模式前,必须执行写使能(WREN)操作。该操作对应8bits的命令为0xad,后面跟随24位的地址,然后是一个word的数据。一个word中第一个字节的数据写入{[A23-A1],[A0]=0}的地址中,第二个字节写入{[A23-A1],[A0]=1}的地址中。有3种方式可以判断AAI编程操作过程中每个word写入完成:

    1)检测SO信号:需要在AAI word编程操作前执行EBSY(0x70)命令(如图4所示),使能SO作为忙状态信号,1为空闲,0为忙。结束AAI word编程操作后,需要执行DBSY(0x80)命令(如图5所示),去使能SO作为忙状态信号,本设计采用的就是这种方式;

2-4.jpg

图4 EBSY(0x70)命时序

2-5.jpg

图5 DBSY(0x70)命时序

    2)读取状态寄存器中的BUSY位:通过发送WRSR(0x01)命令,读取状态寄存器,根据状态寄存器中的BUSY位判断;

    3)等待TBP时间。

    根据以上条件判断芯片空闲时,后续0xad命令和2个字节的数据可以继续发送。最后一个字节的数据发送完成后,检测忙状态,空闲时发送WRDI(0x04)命令结束AAI word编程操作。

    当完成最后一个未被写保护的地址单元的AAI word编程操作后,将退出AAI word编程模式,且复位状态寄存器中的WEL位(WEL=0)和AAI位(AAI=0)。

    采用SO作为忙状态信号的AAI word编程操作时序如图6所示,采用读取状态寄存器中的BUSY位的AAI word编程操作时序如图7所示

    2-6.jpg

图6 采用SO作为忙状态信号的AAI word编程操作时序

2-7.jpg

图7 采用读取状态寄存器中的BUSY位的AAI word编程操作时序

5、扇区(sector)擦除操作

    扇区擦除操作擦除指定的4K字节大小的扇区,将值置为0xff。该操作对写保护的区域无效。扇区擦除操作之前,需要进行写使能操作(WREN)。

    扇区擦除操作对应的8bits命令为0x20,后面跟随24位的地址,其中A23-A12用来确定擦除的扇区。扇区擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TSE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。扇区擦除操作的时序如图8所示。

     2-8.jpg

图8 扇区擦除操作时序

6、32K字节和64K字节的块擦除操作

    32K字节和64K字节的块擦除操作分别擦除地址对应的32K字节和64K字节的块,将值置为0xff。该操作对写保护的区域无效。块擦除操作之前,需要进行写使能操作(WREN)。

    32K字节块擦除操作对应的8bits命令为0x52,后面跟随24位的地址,其中A23-A15用来确定擦除的块;64K字节块擦除操作对应的8bits命令为0xd8,后面跟随24位的地址,其中A23-A16用来确定擦除的块。块擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TBE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。32K字节块擦除操作的时序如图9所示,64K字节块擦除操作的时序如图10所示。

2-9.jpg

图9 32K字节块擦除操作时序

2-10.jpg

图10 64K字节块擦除操作时序

7、片擦除操作

    片擦除操作擦整片flash所有地址的数据,将其置为0xff。该操作对写保护的区域无效。片擦除操作之前,需要进行写使能操作(WREN)。

    该操作对应的8bits命令为0x60或0xc7,后面不需要跟随地址发送。片擦除操作完成后可以通过判断SO为空闲状态(需要先执行EBSY命令)和等待TCE时间(在芯片手册中可查询)的方法来确定是否可执行下次操作。片擦除操作的时序如图11所示。

2-11.jpg

图11 片擦除操作时序

8、读状态寄存器操作(RDSR)

    读状态寄存器操作可在在任何时刻执行,包括写和擦除操作进行的间隔。在写操作进行的间隔,通过读状态寄存器的BUSY位可以获知写操作的完成情况。

    读状态寄存器操作对应的8bits命令为0x05,在命令发送完成后下个时钟下降沿开始输出状态寄存器数据。读状态寄存器操作的时序如图12所示。

2-12.jpg

图12 读状态寄存器操作时序

9、写使能操作(WREN)

    写使能操作将状态寄存器中的WREN位置为1,表示写和擦除操作可进行。在任何写(包括写状态寄存器)和擦除操作之前都必须执行写使能操作,因为执行完任何写(包括写状态寄存器)和擦除操作之后,状态寄存器中的WREN位都会在CE#的上升沿被置0。写使能操作对应的8bits命令为0x06。写使能操作的时序如图13所示。

2-13.jpg

图13 写使能操作时序

10、写去使能操作(WRDI)

    写去使能操作将状态寄存器中的WREN位和AAI位都置为0。写去使能操作无法终止任何擦除操作,任何擦除操作都必须等待TSP/TBP/TCP时间完成。写去使能操作对应的8bits命令为0x04。写去使能操作的时序如图14所示。

2-14.jpg

图14 写去使能操作时序

11、使能写状态寄存器操作(EWSR)和写状态寄存器操作(WRSR)

     使能写状态寄存器操作使能状态寄存器的写权限,写状态寄存器前必须先使能写状态寄存器,防止对状态寄存器的误操作。使能写状态寄存器操作对应的8bits命令为0x50或0x06,。

    写状态寄存器操作可以改变状态寄存器中的BP3-BP0、BPL位。WP#管脚为0时,写状态寄存器操作无效,WP#管脚为1时,需要将BPL置为1,才能写BP3-BP0。写状态寄存器操作对应的8bits命令为0x01。使能写状态寄存器操作和写状态寄存器操作的时序如图15所示。

2-15.jpg

图15 使能写状态寄存器操作和写状态寄存器操作的时序

12、读ID操作(RDID)和JEDEC读ID操作

    读ID操作(RDID)和JEDEC读ID操作用来读取芯片信息,暂不详述,具体请参见芯片手册。

 

下一篇将讲解实现各项操作的状态机,真正有料了要来了哦!

文章评论1条评论)

登录后参与讨论

用户1069018 2015-9-28 15:05

谢谢分享
相关推荐阅读
用户1845900 2016-05-20 13:28
【来点不一样的】Microsemi(原Actel)最新FPGA和开发板介绍
最近接触到了一款Microsemi(原Actel)的代理商艾懋电子开发的SmartFusion2 Starter Kit开发板,逐渐了解了Microsemi(原Actel)FPGA的一些情况。 ...
用户1845900 2015-11-25 11:24
【博客大赛】FPGA实现实时视频加权均值滤波
本文设计的是一种加权均值滤波算法,窗口大小是5(列)*1(行),适用于灰度图像实时视频处理,可以有效淡化视频竖条纹。同时为了保持图像的细节,采用如下图所示的加权窗口。 同时考虑到一场视频...
用户1845900 2015-09-07 21:33
【博客大赛】基于FPGA的串行flash的读写控制(一)----串行flash的管脚、寄存器和操作命令
1、串行flash简介     串行flash是用串行接口进行连续数据存取的小尺寸,低功耗的flash memory。串行flash比并行flash用更少的线从系统中传送数据。对于引脚数目少的...
用户1845900 2015-09-07 21:28
【博客大赛】基于FPGA的串行flash的读写控制(三)-串行flash操作的状态机实现
    上两篇都是对串行flash的介绍,我们的主角FPGA还没有登场。大家如果看了前两篇关于串行flash的介绍,这么多的命令,这么多的操作,需要有一根主线把他们串起来,这根主线应该就是FPGA...
用户1845900 2015-09-01 15:28
Vivado IP core管理-FPGA器件型号变更时的 IP core管理
在FPGA工程开发和维护的过程中,有可能需要在原有的代码上进行增量开发,但是发现原来选用的FPGA器件资源不够,需要更换器件。对于你自己一行行写的代码都好办,但是工程里调用的IP core与FPG...
我要评论
1
20
关闭 站长推荐上一条 /2 下一条