news 2026/4/18 5:38:53

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/4/13 4:44:51

网页组件如何集成文件夹上传及分段功能?

大文件上传系统开发吐槽日记 甲方爸爸的需求清单 作为一个浙江苦逼的.NET程序员&#xff0c;最近接了个外包项目&#xff0c;甲方爸爸的需求让我差点当场表演"程序员暴毙"&#xff1a; 文件传输&#xff1a;要传20G的文件&#xff0c;还得是文件夹&#xff08;可能…

作者头像 李华
网站建设 2026/4/15 8:11:18

VXLAN技术深度解析:数据中心大二层网络的最优解

随着云计算与虚拟化技术的普及&#xff0c;数据中心面临着虚拟机规模激增、网络隔离需求升级、跨地域迁移受限等一系列挑战。传统二层网络依赖VLAN技术&#xff0c;存在资源不足、扩展性差等固有短板&#xff0c;已难以适配现代数据中心的发展需求。在此背景下&#xff0c;VXLA…

作者头像 李华
网站建设 2026/4/16 12:24:25

软件测试文档,生鲜订购系统软件测试报告万字文档,生鲜订购系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

软件测试文档&#xff0c;生鲜订购系统软件测试报告万字文档&#xff0c;生鲜订购系统(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 生鲜订购系统系统(黑盒测试、集成测试、验收测试、白盒测试&#xff0c;功能测试等)仅供参…

作者头像 李华
网站建设 2026/4/12 4:12:50

软件测试百度官网测试软件测试百度官网测试(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

软件测试百度官网测试软件测试百度官网测试(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 测试代码测试报告运行视频项目名:百度官网测试(web)测试需求分析详细、测试用例多样、接口测试、性能测试、自动化测试、缺陷报告以及…

作者头像 李华
网站建设 2026/4/15 10:48:50

CVE-2025-1094:PostgreSQL SQL 注入漏洞深度解析

CVE-2025–1094&#xff1a;PostgreSQL SQL 注入漏洞 Ajay Monga 撰稿 | 阅读时间 2 分钟 2025年2月19日 CVE-2025–1094 是一个影响 PostgreSQL 的高严重性 SQL 注入漏洞&#xff0c;由 Rapid7 研究员 Stephen Fewer 发现&#xff0c;已于 2025 年 2 月 13 日发布补丁。以下是…

作者头像 李华
网站建设 2026/4/8 14:19:31

rosbag2相关基础以及机制

一、先搞懂 ROS2 基础&#xff08;铺垫概念&#xff09;在讲解核心内容前&#xff0c;先明确几个最基础的专业术语&#xff0c;避免后续理解障碍&#xff1a;ROS2&#xff1a;Robot Operating System 2&#xff0c;机器人操作系统 2&#xff0c;不是传统意义的操作系统&#xf…

作者头像 李华