W25Q64 SPI读写控制 Verilog Gowin
**名称:** W25Q64 SPI读写控制 Verilog Gowin
**软件:** Gowin IDE
**语言:** Verilog
**代码功能:** 实现W25Q64 SPI Flash 的读写、ID读取及数据展示,通过按键控制读写操作和数码管显示,适用于嵌入式存储系统。

**代码实现思路:**
本设计以模块化方式实现SPI Flash 的读写控制。顶层模块通过按键消抖采集用户输入,SPI控制模块生成读写请求,SPI接口模块负责与Flash的时序通信,数码管显示模块实时反馈操作状态。整体采用状态机驱动,确保操作流程清晰可靠,各模块配合协调,便于扩展和调试。

**代码结构:**
- top:顶层模块,协调各功能模块实现整体控制。
- key_jitter:按键消抖模块,提供稳定的按键信号。
- spi_control:SPI读写控制模块,生成数据读写请求。
- spi_interface:SPI接口模块,实现与Flash的数据时序通信。
- spi_read_ctrl:读控制模块,实现Flash ID和数据的读取。
- spi_write_ctrl:写控制模块,实现数据写入和擦除操作。
- display:数码管显示模块,实时显示当前操作状态。
1、工程文件

2、程序文件




3、程序编译

4、RTL图

5、管脚分配

## 部分代码预览
```verilog
// 以下为top.v前100行
//按下key[2]写数据
//按下key[1]读数据
//按下key[0]读ID
module top(
input clk,
input rst_n,
input [2:0] key_in,
input key_shift,//切换显示内容
input miso,// 主机采样从机发送
output mosi,// 主机发送从机
output sclk,// 串行时钟
output cs_n, // 片选信号
output [3:0] bit_select,//数码管位选
output [7:0] seg_select//数码管段选
);
wire [2:0] key_out;
wire req;
wire done;
wire [7:0] rx_data;
wire [7:0] tx_data;
wire [23:0] seg_data;
//按键消抖
key_jitter i0_key_jitter(
.clkin(clk),
.key_in(key_in[0]), //输入
.key_negedge(key_out[0]) //消抖后按键下降沿
);
//按键消抖
key_jitter i1_key_jitter(
.clkin(clk),
.key_in(key_in[1]), //输入
.key_negedge(key_out[1]) //消抖后按键下降沿
);
//按键消抖
key_jitter i2_key_jitter(
.clkin(clk),
.key_in(key_in[2]), //输入
.key_negedge(key_out[2]) //消抖后按键下降沿
);
spi_control u_spi_control(
.clk(clk),
.rst_n(rst_n),
.key_out(key_out),
.din(rx_data),
.done(done),
.dout(tx_data),
.req(req),
.seg_data(seg_data)
);
spi_interface u_spi_interface(
.clk(clk),
.rst_n(rst_n),
.din(tx_data),
.req(req),
.dout(rx_data),
.done(done),
.miso(miso),
.mosi(mosi),
.sclk(sclk),
.cs_n(cs_n)
);
//显示模块
display i_display(
.clk(clk),
.rst_n(rst_n),
.key_shift(key_shift),
.key_in(key_out),
.seg_data(seg_data),
.bit_select(bit_select),
.seg_select(seg_select)
);
endmodule
```
代码下载(付费可见):
![]()
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » W25Q64 SPI读写控制 Verilog Gowin
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm