当前位置: 首页 > news >正文

SPI接口作为Slave的Verilog代码,功能正确且注释详细

SPI 接口作为slave的代码,Verilog编写注释详细,功能正确;

SPI从机模块的Verilog实现总是带着点小脾气——既要跟上主机时钟的节奏,又要处理好突发传输的边界。咱们直接拆解个实战代码,看看怎么用状态机搞定这个同步难题。

先画个框架把信号收进来:

module spi_slave( input wire sck, // 主机时钟 input wire cs_n, // 片选低有效 input wire mosi, // 主机输出从机输入 output reg miso, // 从机输出主机输入 input wire data_in, // 待发送数据 output reg [7:0] data_out, // 接收完成数据 output reg ready // 数据就绪信号 );

核心是那个踩着时钟跳舞的状态机:

reg [2:0] bit_counter; // 位计数器 reg [7:0] shift_reg; // 移位寄存器 reg prev_sck; // 边沿检测必备 always @(posedge sck or posedge cs_n) begin if (cs_n) begin // 片选无效时重置 bit_counter <= 3'd7; shift_reg <= 8'h00; ready <= 1'b0; end else begin // 下降沿锁存MOSI if (!prev_sck && sck) begin shift_reg <= {shift_reg[6:0], mosi}; bit_counter <= bit_counter - 1; // 收满8bit触发就绪信号 if(bit_counter == 0) begin data_out <= {shift_reg[6:0], mosi}; ready <= 1'b1; end end end end

这里有个细节操作:用prev_sck检测上升沿。当片选有效且时钟从低跳高时,把MOSI数据压进移位寄存器。注意计数器是从7递减到0,符合SPI协议MSB优先的惯例。

SPI 接口作为slave的代码,Verilog编写注释详细,功能正确;

发送逻辑得盯着时钟的另一边:

always @(negedge sck or posedge cs_n) begin if (cs_n) begin miso <= 1'bz; // 高阻态节能 end else begin // 上升沿更新MISO if (prev_sck && !sck) begin miso <= data_in[bit_counter]; end end end // 时钟边沿追踪 always @(negedge sck) begin prev_sck <= sck; end

发送时序在时钟下降沿更新,这样主机能在上升沿稳定采样。data_in需要提前准备好待发送数据,这里假设外部模块已经处理好数据对齐。

测试时特别容易踩的坑:片选信号cs_n的毛刺可能引发误操作。实战中得加个同步器:

reg [1:0] cs_sync; always @(posedge sck) begin cs_sync <= {cs_sync[0], cs_n}; end

双重缓冲消除亚稳态风险,这个看似简单的操作能让模块稳定性提升一个量级。

完整代码里还有几个小机关:

  • ready信号在接收完成后只维持一个时钟周期
  • 支持连续传输(收完8bit自动准备下一帧)
  • 发送数据在片选无效期间预加载

跑仿真时会发现个有趣现象:当cs_n拉低后的第一个时钟边沿,从机立即开始响应。这种即时反馈特性让SPI比I2C更适合实时性要求高的场景。不过注意主机端需要等待至少8个时钟周期才能拿到完整数据,这个时间差要在系统设计时考虑进去。

http://www.jsqmd.com/news/425111/

相关文章:

  • 实测避坑|小学数学竞赛线上课,家长闭眼冲不踩雷 - 品牌测评鉴赏家
  • python字典切片、取前多少个、后多少个
  • 小学数学辅导平台大揭秘,选对平台轻松逆袭 - 品牌测评鉴赏家
  • PyTorch神经网络组件之ReLU
  • usb拓展坞
  • LangGraph4j 学习系列(9)-人机协同(human_in_the_loop)
  • 高透光汽车膜核心参数解读+2026优质品牌推荐 - 速递信息
  • SpringBoot基于微信小程序的校园跑腿小程序
  • springboot基于微信小程序的校园综合服务
  • FastAPI架构深度解析:依赖注入、后台任务与WebSocket实战
  • 2026青木川古镇民宿性价比口碑排名TOP10(权威打分)|青云客栈稳居第一 - 一个呆呆
  • 奥数机构水太深,2026实测3家靠谱款,家长闭眼抄作业不踩坑 - 品牌测评鉴赏家
  • if language is ONLY for the sounds for chating
  • 2026最新!初中数学辅导机构,家长选课不踩坑(全程干货无广) - 品牌测评鉴赏家
  • 小学数学奥数学习平台哪个比较系统?平台实测,家长闭眼避坑 - 品牌测评鉴赏家
  • 2026中考数学辅导机构|家长必看!不花冤枉钱,精准提分更省心 - 品牌测评鉴赏家
  • 避坑!2026小学数学线上培训机构实测,这3家真的值得报 - 品牌测评鉴赏家
  • 小学数学辅导机构|家长闭眼入!不花冤枉钱(2026最新版) - 品牌测评鉴赏家
  • 小学英语补习选对网校,省一半力!实测5家网校,家长闭眼抄作业 - 品牌测评鉴赏家
  • CF954D Fight Against Traffic题解
  • 初中英语基础差,这几家网校堪称“救星”! - 品牌测评鉴赏家
  • 家长必看!揭秘最适合小学生的线上英语培训机构 - 品牌测评鉴赏家
  • 2026小学英语辅导机构|家长实测版,选课不踩坑! - 品牌测评鉴赏家
  • 2026小学英语在线辅导机构排名前十 宝妈不踩坑,10家靠谱推荐 - 品牌测评鉴赏家
  • 小学英语基础差不用慌!这些线上机构来帮忙 - 品牌测评鉴赏家
  • 实测4家热门线上剑桥英语机构|家长闭眼抄作业,避坑不白花冤枉钱 - 品牌测评鉴赏家
  • LangGraph4j 学习系列(7)-checkpoint检查点
  • 小学生KET备考大揭秘!这些网校让孩子轻松上岸 - 品牌测评鉴赏家
  • 留种率与选择强度的关系
  • 2026年密集型母线槽推荐,专注品质与项目落地能力 - 品牌鉴赏师