FPGA纯verilog代码读写N25Q128A QSPI Flash 提供工程源码和技术支持
目录
- 1、N25Q128A芯片解读
- 2、N25Q128A读写时序
- 3、整体设计思路架构
- 4、verilog读写Flash驱动设计
- 5、verilog读写Flash控制器设计
- 6、FIFO缓存设计
- 7、串口输出Flash读取数据
- 8、vivado工程介绍
- 9、上板调试验证并演示
- 10、福利:工程源码获取
1、N25Q128A芯片解读
N25Q128A的参数有很多,作为FPGA开发者,需要关注如下参数:
1、4KBytes为1个Sector(扇区);
2、16个Sector(扇区)是1个Block(块)64KBytes;
3、容量为16M=128Mbite字节,共有256个Block,4096个Sector;
这三个参数直接决定了你怎么组织数据的读写操作,比如你的数据量很小,则考虑写入1个Sector(扇区),如果你的数据量很大,则考虑写多个Sector(扇区);
N25Q128A按照读写速度分为标准、Quad/Dual三种,这里只介绍标准版,学fpga就是这样,先把最基础的搞懂再去研究高级的,一步步扎实点兄弟。。。
标准模式下只需用到4个引脚:
时钟QSPI_CLK:25M即可,对于Flash来说,上升沿采集数据,下降沿输出数据;对于FPGA来说,则是下降沿输出数据,上升沿采集数据。。。我看到csdn上有人给出的代码居然直接有always @( negedge QSPI_CLK) 这样的写法,真是为这样的大佬感到震惊,感觉在校本科生也知道这样写不好吧。。。
片选信号QSPI_CS:低电平有效;
数据输出信号:QSPI_DQ1;
数据输入信号:QSPI_DQ0;
硬件原理图部分如下:
N25Q128A在本设计中需要用到的指令如下:
parameter CMD_NULL = 8'h00 ; //空操作
parameter CMD_RD_DEVICE_ID = 8'h9F ; //读ID
parameter CMD_WR_DISABLE = 8'h04 ; //写禁止
parameter CMD_WR_ENABLE = 8'h06 ; //写使能
parameter CMD_PAGE_PROGRAM = 8'h02 ; //页编程
parameter CMD_RD_DATA = 8'h03 ; //读数据
parameter CMD_SECTOR_ERASE = 8'h20 ; //扇区擦除
parameter CMD_RD_STATUS_REGISTER = 8'h05 ; //读状态寄存器
状态寄存器描述如下:
在写入指令或地址之前,需要读bit0为,确保其值为0才可操作;
其他的去看数据手册吧,太多了也写不完;
2、N25Q128A读写时序
N25Q128A读写本质上都一样,发送指令或发送指令加地址,则完成了读写操作;具体的对应关系如下,仅限本设计用到的:
/* name instruction cmd addr rd wr
读芯片信息 CMD_RD_DEVICE_ID 9F √ √
写禁止/写使能 CMD_WR_DISABLE/WR_ENABLE 04/06 √
页编程(写数据) CMD_PAGE_PROGRAM 02 √ √ √
读数据 CMD_RD_DATA 03 √ √ √
扇区擦除 CMD_SECTOR_ERASE 20 √ √
读状态寄存器 CMD_RD_STATUS_REGISTER 05 √ √
空指令 CMD_NULL 00
*/
3、整体设计思路架构
整体设计思路架构如下:
1、VIO模拟按键:
启动一次QSPI读写操作,高电平有效;
2、QSPI读写驱动:
verilog代码实现,根据输入的指令和地址输出/输入QSPI数据;
3、QSPI读写操作:
读ID–>块擦除–>写入256个字节数据到Sector0–>读出256个字节数据–>缓存FIFO;
4、缓存FIFO:
缓存读出的256个字节数据,等待串口读取;
5、串口发送:
读取缓存FIFO数据,发送上位机显示;
4、verilog读写Flash驱动设计
使用三段式状态机实现;根据输入的指令或地址完成对应读写操作;
代码比较长,这里就不粘贴了,需要源码的兄弟可联系我;
顶层接口部分如下:
module helai_flash_driver #(parameter SYS_CLK_M = 200, //系统时钟parameter SPI_CLK_M = 25 //QSPI时钟
)(input clk ,input rst_n ,input i_flash_start , //启动驱动,高电平有效input [ 7:0] i_flash_cmd , //输入指令input [23:0] i_flash_addr , //输入地址input i_flash_dqout , //N25Q128A输出output reg o_flash_dqin , //N25Q128A输入output o_flash_csn , //N25Q128A片选output reg o_flash_cmd_ok , //单次读写操作完成output reg [ 7:0] o_flash_rx_data, //输出数据output reg o_flash_rx_de //输出数据有效,高有效
);
5、verilog读写Flash控制器设计
使用三段式状态机实现;状态机步骤如下:
//第一步:读ID,发送CMD_RD_DEVICE_ID指令
//第二步:读ID完成,进入写禁止,发送CMD_WR_DISABLE指令
//第三步:进入写使能,发送CMD_WR_ENABLE指令
//第四步:进入页擦除,发送CMD_SECTOR_ERASE指令
//第五步:进入读状态寄存器,发送CMD_RD_STATUS_REGISTER指令
//第六步:进入写使能,发送CMD_WR_ENABLE指令
//第七步:进入页写,发送CMD_PAGE_PROGRAM指令
//第八步:进入读状态寄存器,发送CMD_RD_STATUS_REGISTER指令
//第九步:进入读状数据,发送CMD_RD_DATA指令
代码比较长,这里就不粘贴了,需要源码的兄弟可联系我;
6、FIFO缓存设计
fifo缓存读出的256字节数据,等待串口读取,很简单,不多说;
7、串口输出Flash读取数据
波特率自由配置,很简单,不多说;给出顶层接口如下:
module uart_transfer #(parameter SYS_CLK_M = 200,parameter UART_CLK = 115200
)(input clk ,input rst_n ,input [ 7:0] txd_data ,input txd_data_vld,output txd_data_rdy, output reg txd_uart
);
8、vivado工程介绍
开发板:Xilinx Artix7开发板;
开发环境:vivado2019.1;
输入:VIO;
输出:串口;
9、上板调试验证并演示
视频演示:
FPGA纯verilog代码读写N25Q128A QSPI
10、福利:工程源码获取
福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料如下:获取方式:私,或者看下面的名片。
网盘资料如下:
FPGA纯verilog代码读写N25Q128A QSPI Flash 提供工程源码和技术支持相关推荐
- FPGA纯verilog代码实现图像对数变换,提供工程源码和技术支持
目录 1.图像对数变换理论 2.log系数的matlab生成 3.FPGA实现图像对数变换 4.vivado与matlab联合仿真 5.vivado工程介绍 6.上板调试验证并演示 7.福利:工程代码 ...
- FPGA基于GS2971/GS2972实现SDI视频收发 提供工程源码和技术支持
目录 1.前言 2.我目前已有的SDI编解码方案 3.GS2971/GS2972芯片解读 GS2971解读 GS2972解读 4.详细设计方案 5.vivado工程1解读 硬件逻辑工程 软件SDK工程 ...
- FPGA纯Verilog实现任意尺寸图像缩放,串口指令控制切换,贴近真实项目,提供工程源码和技术支持
目录 1.前言 2.目前主流的FPGA图像缩放方案 3.本方案的优越性 4.详细设计方案 5.vivado工程详解 6.上板调试验证并演示 7.福利:工程源码获取 1.前言 代码使用纯verilog实 ...
- FPGA纯vhdl实现MIPI CSI2 RX 4K视频解码输出,OV13850采集,提供工程源码和技术支持
目录 1.前言 2.Xilinx官方主推的MIPI解码方案 3.纯Vhdl方案解码MIPI 4.vivado工程介绍 5.上板调试验证 6.福利:工程代码的获取 1.前言 FPGA图像采集领域目前协议 ...
- FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持
目录 1.前言 2.Xilinx官方主推的MIPI解码方案 3.纯Vhdl方案解码MIPI 4.vivado工程介绍 5.上板调试验证 6.福利:工程代码的获取 1.前言 FPGA图像采集领域目前协议 ...
- FPGA使用GTX实现SFP光纤收发SDI视频 全网首创略显高端 提供工程源码和技术支持
目录 1.前言 2.设计思路和框架 3.vivado工程详解 4.上板调试验证并演示 5.福利:工程代码的获取 1.前言 FPGA实现SDI视频编解码目前有两种方案: 一是使用专用编解码芯片,比如典型 ...
- FPGA找工作写简历,你离高薪offer只差一个高端项目,提供工程源码和技术支持
这里写目录标题 1.前言 2.你或许很菜 3.工程源码 4.技术支持 5.工程源码和技术支持获取方式 1.前言 如果你是即将毕业的学生或是想转行做FPGA的工程师,你都会面临一个问题,那就是找工作,找 ...
- FPGA实现JPEG-LS图像压缩,有损无损可配置,提供工程源码和技术支持
目录 1.前言 2.JPEG-LS图像压缩理论 3.JPEG-LS图像压缩性能介绍 4.JPEG-LS图像压缩时序介绍 5.JPEG-LS图像压缩输出压缩流 6.工程源码和仿真 7.福利:工程代码的获 ...
- FPGA解码4line MIPI视频 IMX291/IMX290摄像头采集 提供工程源码和技术支持
目录 1.前言 2.Xilinx官方主推的MIPI解码方案 3.我已有的MIPI解码方案 4.纯Vhdl代码解码MIPI 5.vivado工程介绍 6.上板调试验证 7.福利:工程代码的获取 1.前言 ...
最新文章
- 6426C Lab3 部署证书和管理注册
- 华为云苏嘉:如何整合预训练模型和知识图谱做医疗推理?
- Free Online SQL Formatter
- linux 常用命令集
- linux php c 扩展,linux下编写php5.6的C扩展模块(双向链表)
- Unity3d发布web版无法连接数据库
- 监控服务器Nagios之一 概述及安装
- PaddleOCR-release-2.3\deploy\cpp_infer\src识别中文时出现乱码
- 我的世界基岩版json_我的世界基岩版app_我的世界基岩版app下载_我的世界基岩版安卓版下载-新手游网...
- [CQOI2011]放棋子
- 【web前端期末大作业】html在线网上书店 基于html制作我的书屋(23页面)
- php函数体用return,php递归函数使用return问题
- python 快递分拣小程序
- python录入数据,python处理写入数据教学教程
- MAC欺骗-通过思科模拟器实现
- Apache域名跳转----配置rewrite模块
- 商城APP软件开发要素有哪些
- 半导体器件物理【1】量子理论扫盲——从Planck到态叠加原理
- 电脑突然连不上WiFi?按步骤检查
- 年会必备:18套年会快闪PPT
热门文章
- 云存储服务broker系统(九)——桶标签及桶日志管理
- Parallels Desktop Business Edition 13.2.0虚拟机破解版
- 产研团队任务管理工具:盘点国内外9款知名任务管理系统软件
- 研究者将在IEEE机器人与自动化国际会议上展示小型机器人RoboFly,利用激光无线提供动力
- 解决Unity模型贴图反转的问题
- DBUtils学习记录(传智播客视频)
- 无纸化、自动化、智能化|WMS系统升级你的仓储管理模式
- 学习——信号调制识别(一)
- Messari年度报告-2022
- ZYNQ-Linux学习笔记(2)-在Xilinx SDK中建立Linux应用程序