【FPGA】SPI协议的Verilog实现 |
您所在的位置:网站首页 › spiverilog实现 › 【FPGA】SPI协议的Verilog实现 |
/**
* SPI Module
* An example of SPI from dianzixitongshejiyushizhan
* 2020/1/8
*/
module SPI(
clk, // 系统时钟
rst, // 重置信号
din, // 交给SPI模块去发送的信号
spi_sdi, // SPI输入(MOSI)
spi_cs_cmd, // SPI命令片选
spi_cs_data, // SPI数据片选
spi_sclk, // SPI时钟
spi_sdo, // SPI输出(MISO)
dout, // 输出SPI接收的数据
dcmd, // 输出SPI接收的命令
cmd_done, // 标志命令接收完成的信号
data_done // 标志数据接收完成的信号
); parameter DATA_WIDTH = 8; // 数据帧长度,8位 parameter CMD_WIDTH = 8; // 命令帧长度,8位 input clk, rst; input [DATA_WIDTH-1:0] din; input spi_sdi, spi_cs_cmd, spi_cs_data, spi_sclk; output [DATA_WIDTH-1:0] dout; output [CMD_WIDTH-1:0] dcmd; output cmd_done, data_done, spi_sdo; reg spi_sdo = 1; reg [DATA_WIDTH-1:0] dout, din_reg; reg [CMD_WIDTH-1:0] dcmd; reg cmd_done, data_done; reg spi_sclk_buf_1, spi_sclk_buf_2; reg [1:0] spi_sclk_buf, spi_sdi_buf; reg spi_sclk_down, spi_sclk_up; reg [1:0] spi_cs_data_buf, spi_cs_cmd_buf; // SCLK, CS_DATA, CS_CMD buffer // 缓存信号以备边沿检测 always@(posedge clk) begin if(rst) begin spi_sclk_buf |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |