news 2026/1/23 17:42:47

flash spi w25q128 w25q64 w25q32 w25q16 verilog ...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
flash spi w25q128 w25q64 w25q32 w25q16 verilog ...

flash spi w25q128 w25q64 w25q32 w25q16 verilog fpga程序代码 fpga w25q128/64/32/16 verilog代码 资料包清单: 1.w25qxx_code_uart_top:altera工程代码,可移植ise,后续会出,话提前 2.功能说明书 注1:工程均带有激励testbench,工程安装好之后,仿真路径设置之后,打开,点击RTL Simulation即可开始仿真 注2:代码均为Verilog+fifo+pll组成 注3:代码注重功能应用,不提供详细的讲解 注4:给出的工程为quartus II 13.0,给出testbench代码,并且已经在电路板中验证过

基于串口的 W25Qxx FPGA 控制器

——功能说明与开发指南

(面向 v2.02 merged 版本)

------------------------------------------------

  1. 产品定位

------------------------------------------------

“基于串口的 W25Qxx FPGA 代码”是一套可移植、可裁剪的 SPI-NOR Flash 控制器 IP,运行于低成本 Cyclone-IV FPGA。

顶层交付形式为w25qxxcodeuart_top,对外仅留 UART(115200-8-N-1)和 4 线 SPI 两组管脚,开发者无需了解底层 SPI 时序即可在 1 分钟内完成「擦除-写入-读出」验证。

同时,IP 内部所有子模块均提供独立端口,可无缝剥离 UART,直接嵌入用户 FPGA 工程。

------------------------------------------------

  1. 系统架构

------------------------------------------------

图 1 整体框图(文字描述)

HOST-PC <==UART==> w25qxxcodeuart_top <==SPI==> W25Q128/64/32/16

├─ pll & reset

├─ uartrcv / uartxfer

├─ cmd_parser(状态机)

├─ w25qxx_core(纯逻辑)

│ ├─ cmd_dispatch

│ ├─ pagebufferfifo (8 kB)

│ ├─ spi_master (12.5 MHz)

│ └─ busypoll / idread

└─ rdfifo / wrfifo (各 8 kB)

------------------------------------------------

  1. 功能清单

------------------------------------------------

功能容量限制耗时(典型)备注
读 ID2 B0.5 ms返回 0xEF17
扇区擦除4 KB150 ms仅支持 4 KB Sector-Erase
页写入1-256 B0.8 ms自动拆分跨页
连续读出≤ 4096 B2.6 ms@4 kB内部 FIFO 决定
写 FIFO 缓存≤ 4096 B取决于 UART 速率先缓存后一次性编程

------------------------------------------------

  1. 串口帧协议(主机 → FPGA)

------------------------------------------------

所有指令采用「帧头-参数字节-返回字」模型,返回字与帧头相同,可简单 ACK。

1) 擦除扇区

帧头:CA A5 CA 5A

地址:2 B(高 12 bit 有效,低 12 bit 忽略)

返回:CA

2) 写 FIFO(仅缓存)

帧头:11 A5 11 5A

长度:2 B(N≤4096)

数据:N B

返回:11

flash spi w25q128 w25q64 w25q32 w25q16 verilog fpga程序代码 fpga w25q128/64/32/16 verilog代码 资料包清单: 1.w25qxx_code_uart_top:altera工程代码,可移植ise,后续会出,话提前 2.功能说明书 注1:工程均带有激励testbench,工程安装好之后,仿真路径设置之后,打开,点击RTL Simulation即可开始仿真 注2:代码均为Verilog+fifo+pll组成 注3:代码注重功能应用,不提供详细的讲解 注4:给出的工程为quartus II 13.0,给出testbench代码,并且已经在电路板中验证过

3) 写 Flash(把 FIFO 内容固化)

帧头:12 A5 12 5A

字节数:1 B(1-256)

地址:3 B(24 bit)

返回:12

4) 读 Flash

帧头:22 A5 22 5A

地址:3 B

长度:2 B(≤4096)

返回:22 + 长度字节

------------------------------------------------

  1. 典型操作流程

------------------------------------------------

Step-0 上电自检

FPGA 启动后自动读取 Flash ID,并通过 UART 返回 0xEF17,表示 IP 就绪。

Step-1 擦除

PC 下发:CA A5 CA 5A + 00 10 → 擦除 64 KB 物理地址 0x00001000

等待 150 ms 后收到 ACK 0xCA。

Step-2 写入

a) 先通过「写 FIFO」指令把 256 B 数据导入 FPGA;

b) 再下发「写 Flash」指令,指定起始地址;

c) IP 内部自动完成:Write-Enable → Page-Program → 轮询 Busy → 返回 0x12。

Step-3 校验

下发「读 Flash」指令,地址与长度与写入一致;IP 按字节通过 UART 回灌,PC 端进行 CRC/比对。

------------------------------------------------

  1. 性能指标

------------------------------------------------

  • SPI 时钟:12.5 MHz(100 MHz 主时钟 8 分频)
  • 页编程效率:≈ 320 kB/s(256 B / 0.8 ms)
  • 连续读效率:≈ 1.5 MB/s(受限于 UART 115200 时约 11 kB/s;若直接挂 AXI-SPI,可跑满 12.5 MHz)
  • 资源占用:Cyclone-IV EP4CE10 约 900 LE + 2 kB on-chip RAM(FIFO)

------------------------------------------------

  1. 移植与裁剪指南

------------------------------------------------

1) 去掉 UART

  • 例化w25qxxcode层,直接操作端口:
    w25q
    readiden→ 脉冲启动
    erasesectoren+erasesectoraddr[11:0]
    w25qwrdataen+w25qwraddr+w25qWRBYTENUM
    – 提供fifowrnbytewren&fifowrnbytewrdata
    – 监听*_done脉冲完成

2) 提升速度

  • spicmd*.vSPI_FREQ参数改为 4,即可得到 25 MHz SCK;
  • 确认 PCB 走线 ≤ 5 cm 并打开 Fast-IO。

3) 多片级联

  • 复制spicsspics0~n,在w25qxx_code顶层加片选译码即可;
  • 协议帧再增加 1 B 片选编号,命令解析器路由到不同cs信号。

------------------------------------------------

  1. 故障排查 FAQ

------------------------------------------------

Q1: 读 ID 返回 0x0000

  • 检查spi_miso是否上拉;
  • 用示波器看 SCK 频率,>20 MHz 时 W25Q128 会无响应。

Q2: 擦除后读出全 FF,但写入失败

  • 写入前必须擦除——IP 已强制检查,但用户若直接调用w25qxx_code绕过了擦除,需自行保证。

Q3: UART 返回乱码

  • 确认 115200-8-N-1;
  • FPGA 侧时钟 100 MHz 误差 < ±50 ppm,否则波特率漂移。

------------------------------------------------

  1. 版本履历

------------------------------------------------

v1.00 2020-05 基础 SPI 读写

v1.50 2021-03 增加 UART 命令帧

v2.02 2021-12 合并 fifo,支持 4096 B 缓存;增加忙检测与自动拆页;代码综合后 fmax 120 MHz

------------------------------------------------

  1. 声明与授权

------------------------------------------------

本说明文档对应 merged 版本源码,仅用于技术交流。

如需商用或二次发布,请遵循原始项目许可证(MIT/BSD 风格)并保留作者信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/23 13:33:52

Python+django+vue3基于协同过滤推荐算法的超市商品推荐系统

目录 摘要关键词 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 摘要 随着电子商务的快速发展&#xff0c;个性化推荐系统在提升用户体验和商业效益方面发挥着重要作用。本研究基于Python…

作者头像 李华
网站建设 2026/1/18 12:43:32

互联网企业如何通过百度编辑器实现微信公众号图文混排?

新疆.NET程序员的CMS升级大作战 各位新疆的码农兄弟们好啊&#xff01;我是你们的老朋友&#xff0c;一个在.NET海洋里扑腾了多年的"老渔民"&#x1f41f;。下面这个方案价值998&#xff0c;但看在老乡份上&#xff0c;680块卖给你了&#xff01; 需求拆解&#xf…

作者头像 李华
网站建设 2026/1/23 0:14:04

国产化操作系统中,百度UE支持哪些格式的文档直接粘贴?

河北某国企项目负责人技术方案实施记录 一、需求分析与技术选型 作为项目负责人&#xff0c;我首先梳理了核心需求&#xff1a; 功能需求&#xff1a; Word粘贴&#xff1a;保留样式&#xff08;表格/字体/颜色&#xff09;&#xff0c;图片自动上传至二进制存储服务器&…

作者头像 李华
网站建设 2026/1/21 22:51:01

导师严选8个AI论文工具,专科生搞定毕业论文+格式规范!

导师严选8个AI论文工具&#xff0c;专科生搞定毕业论文格式规范&#xff01; AI 工具如何成为论文写作的得力助手 在当前学术环境日益严格的背景下&#xff0c;越来越多的继续教育学生开始借助 AI 工具来辅助论文写作。这些工具不仅能够帮助学生高效完成内容创作&#xff0c;还…

作者头像 李华
网站建设 2026/1/18 12:18:37

金融行业网页如何用vue2实现文件夹上传及秒传功能?

大文件上传解决方案 各位同行大佬们好&#xff0c;作为一个在广东摸爬滚打多年的前端"老油条"&#xff0c;最近接了个让我差点秃顶的项目——20G大文件上传系统&#xff0c;还要兼容IE9&#xff01;这感觉就像让我用竹篮子去打水还要不漏一样刺激… 需求分析&#…

作者头像 李华