采用黑金Spartan6的开发板,板内的硬件电路设计如图

电路严格按照datasheet的规定连接。

按照上图 控制FLASH芯片仅需要控制QSPI_MIS0、QSPI_MIS1、QSPI_MIS2、QSPI_MIS3以及QSPI_CS、QSPI_CLK

按照程序实现的功能需要

1. 读Manufacturer / Device ID (90h):先发送命令字90(1001 0000),再发送24位的地址(全0),然后接收2个byte的数据(第一个数据是Manufacturor:FEh,第二个是设备的Device ID:17h)。数据在时钟的上升沿采样。

2.写使能(06):发送命令字06(0000 0110),数据都在时钟的上升沿采样。

3.写不使能(04):发送命令字04(0000 0100),数据都在时钟的上升沿采样。

4.Sector擦除(20):先发送命令字20(0010 0000),再发送24位的地址。数据都在时钟的上升沿采样。

5.读状态寄存器1 (05):先发送命令字05(0000 0101),然后接收16位的寄存器数据。数据都在时钟的上升沿采样。

6. Page编程(02):先发送命令字02(0000 0010),再发送24位的地址,然后写入256个编程的数据(数据的数量可以自己修改, 但不能超过256个)。数据都在时钟的上升沿采样。

7. 数据读(03):先发送命令字03(0000 0011),再发送24位的地址,然后接收数据。数据在时钟的上升沿采样。

根据时序图只需要用到IO0、IO1发送命令,命令都是8个二进制数,需要8个clk。

顶层的电路设计图FLASH_TEST

flash_test内部采用flash_spi模块实现数据的传输

flash_spi使用状态机控制逻辑。cmd_type[3:0]为自定义编码,用于区分不同的操作。

接收flash的数据的程序,接收read_num个数的byte数据。

需要设计的控制标志有:

开始读写标志 datacome

bit的计数标志 cntb

byte计数标志 read_cnt

数据输出有效标志 myvaild

结束标志 read_finish

*****通过移位操作接收数据*****

mydata <= {mydata[6:0],flash_out};

完成上述后,我们就完成了flash的控制器,下面用小例子来使用我们的控制器。

通过简易的状态机完成状态的跳转,下面的操作完全按照协议即可。

i=0:读FLASH的Device ID;

4'd0 :

if( Done_Sig ) begin

flash_cmd <= 8'h00;

i <= i + 1'b1; cmd_type <= 4'b0000;

end else begin flash_cmd <= 8'h90;

flash_addr <= 24'd0;

cmd_type <= 4'b1000;

end

i=1:发送FLASH写使能命令;

4'd1:

if( Done_Sig ) begin

flash_cmd <= 8'h00;

i <= i + 1'b1;

cmd_type <= 4'b0000;

end

else begin

flash_cmd <= 8'h06;

cmd_type <= 4'b1001;

end

其余同理。
i=2:发送Sector擦除命令,擦除从地址0开始的4KB的数据;
i=3:等待100个clock;
i=4:读状态寄存器的数据,等待Busy标志位为0;

i=5:发送FLASH写不使能命令;
i=6:读状态寄存器的数据,等待Busy标志位为0;
i=7:发送FLASH写使能命令;
i=8:等待100个clock;
i=9:发送FLASH编程命令,从地址0开始写入256个数据(0~255);
i=10:等待100个clock;
i=11:读状态寄存器的数据,等待Busy标志位为0;
i=12:发送FLASH写不使能命令;
i=13:读状态寄存器的数据,等待Busy标志位为0;
i=14:发送FLASH读命令,读取256个数据;
i=15:结束;

flash_cmd 传输控制字

flash_addr 24位传输地址

cmd_type为自定义编码的操作代码

之后根据协议控制flash进行相应的读写操作

FPGA读写Flash模块 Verilog程序设计相关推荐

  1. FPGA 读写访问 Flash

    目录 前言 1.AT25DF641A flash芯片简介 2.AT25DF641A flash读访问时序 3.AT25DF641A flash写访问时序 (1)关于Protect Sector (2) ...

  2. FPGA学习之路—接口(1)—URAT Verilog程序设计

    FPGA学习之路--URAT Verilog程序设计 UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是广泛使用的异步串行数据通信协议 ...

  3. FPGA接口_N25Q128型号的spi flash驱动verilog代码编写

    # N25Q128型号的spi flash驱动verilog代码编写 提示:使用正点原子达芬奇pro做的小例子,由于教程中无flash的读写,因此撰写记录 文章目录 # N25Q128型号的spi f ...

  4. 快速上手Xilinx DDR3 IP核(2)----MIG IP核的官方例程与读写测试模块(Native接口)

    写在前面 接上一篇文章(配置MIG IP过程): 快速上手Xilinx DDR3 IP核(1)----MIG IP核的介绍及配置(Native接口) DDR3系列文章: 快速上手Xilinx DDR3 ...

  5. stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解

    例程完整代码: SPI协议简介 SPI协议,即串行外围设备接口,是一种告诉全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间通信的场合. SPI信号线 SPI包含4条总线,分别为SS,S ...

  6. STM32F103配合STM32CubeMX实现SPI读写flash

    本人采用的是正点原子的精英STM32F103开发板,其包含一块W25Q128型号的flash芯片.该flash与STM32F103的SPI2相连. 下面根据正点原子提供的开发指南文档,实现FreeRT ...

  7. FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码

    FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码, 方案为单FPGA方案才用底层verilog + 应用层nios2的软件架构,很具有学习价值. 包括编码器模块算法, 坐标变 ...

  8. 开发板FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码

    开发板FPGA电机控制源码(verilog+nios2架构)FPGA电机控制源码, 方案为单FPGA方案才用底层verilog + 应用层nios2的软件架构,很具有学习价值. 包括编码器模块算法, ...

  9. 基于FPGA开发板使用Verilog设计PWM呼吸灯实验

    基于FPGA开发板使用Verilog设计PWM呼吸灯实验 1,实验原理 2,实验模块设计 2.1 RTL设计,呼吸灯模块设计 2.2,测试数据,下载到FPGA开发板板级的数据 2.3,两个模块综合的n ...

最新文章

  1. 开源中国iOS客户端学习——(五)网络通信ASI类库(1)
  2. Pycharm ipynb
  3. (转)字符串匹配算法总结
  4. 未排序数组中累加和为给定值的最长子数组系列问题
  5. linux 平均磁盘请求数量,Linux之 iostat 解读磁盘io
  6. jmete 学习--基础之名词解释
  7. 将旧对象装箱可自动关闭
  8. 【渝粤教育】国家开放大学2018年秋季 1133t文献检索 参考试题
  9. Python案例:倒置英文句子
  10. UI设计师收好!哪些会说故事的插画素材!
  11. 终于把W32.Spybot.Worm给消灭了(这个标题不能用了)
  12. 【转参考】MySQL利用frm和ibd文件进行数据恢复
  13. 用BT搜宝快速找种子
  14. 英文环境中Wine微信不能显示中文
  15. 实时渲染学习(十一)渲染加速算法总结
  16. java tomcat热部署_intellij idea tomcat热部署配置教程
  17. 如何查找oracle漏洞对应补丁号,Oracle 漏洞补丁如何查找下载并打补丁,什么漏洞都可用Opatch?...
  18. C#百度OCR本地图片识别文字
  19. Spring Cloud 系列之 Netflix Eureka 注册中心
  20. (P57-P61)正则表达式

热门文章

  1. java毕业生设计一中体育馆管理系统计算机源码+系统+mysql+调试部署+lw
  2. mysql常用的两种数据库引擎_Mysql数据库常用两种引擎的介绍
  3. 北大软微19计算机考研招生,19年北大软微初试高分学长学姐经验贴
  4. java calendar转string_Date、String、long、Calendar类型之间的转化及时间加减
  5. 用户手册 操作手册 区别
  6. FDR土壤水分检测传感器设计方案
  7. XXTea算法Java版
  8. UG二次开发教程(基于NX12.0/VS2015版本)
  9. c语言循环龙珠,《今天赛亚人也在拯救世界!》c语言黑板擦 ^第5章^ 最新更新:2020-01-09 03:52:51 晋江文学城手机版...
  10. cad坐标归零lisp_CAD怎么将Z轴的标高一次性归零