My title page contents

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

```

 

 代码下载(付费可见):




1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » W25Q64 SPI读写控制 Verilog Gowin

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员