为什么需要“输出锁存”

它的目的可以一言以蔽之:将组合逻辑产生的输出信号"同步"到时钟节拍上,从而大幅提升电路的稳定性和可预测性。

  1. 消除毛刺(Glitch Filtering)

• 组合逻辑输出(如 po_cola_comb 和 po_money_comb )在电平跳变时可能产生瞬态毛刺。

• 通过在时钟上升沿采样并锁存输出,可以滤除这些毛刺,确保输出信号的稳定性。

  1. 时序同步(Timing Synchronization)

• 状态机的组合逻辑输出可能因路径延迟不同而出现亚稳态(Metastability)风险。

• 锁存器在时钟边沿统一更新输出,使信号变化与系统时钟同步,满足建立/保持时间要求。

  1. 时序路径可控性

• 锁存后输出信号的延迟固定为一个时钟周期,便于静态时序分析(STA)。

• 若直接输出组合逻辑,时序路径可能跨越多个时钟域,增加时序收敛难度。

复杂可乐机例子

状态机输出

assign po_cola = ((current_state == TWO_HALF) && (key_half || key_one)) ||

((current_state == THREE) && (key_half || key_one));

assign po_money = (current_state == THREE) && (key_half || key_one);

解决

主模块解决

always @(posedge sys_clk or negedge sys_rst_n) begin

if (!sys_rst_n) begin

po_cola <= 1'b0;

po_money <= 1'b0;

end else begin

po_cola <= po_cola_comb; // 锁存组合逻辑输出

po_money <= po_money_comb;

end

end

相关推荐
Kong_199413 小时前
芯片开发学习笔记·二十九——大模型基础知识与 KV Cache 详解
fpga开发·芯片开发
m0_46644103詹湛15 小时前
FPGA 定点数、小数与负数的加减乘除原理
fpga开发
zlinear数据采集卡17 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
zlinear数据采集卡20 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
FPGA小迷弟20 小时前
Vivado中高速收发器GTX/GTH的配置与调试实战
fpga开发·fpga·硬件开发
minglie121 小时前
简易寄存器接口SMMR---iic控制器
fpga开发
FPGA小迷弟21 小时前
Vivado ILA与VIO调试工具实战指南:从入门到精通
fpga开发·fpga·硬件开发
FPGA小迷弟1 天前
FPGA状态机设计详解:从Moore到Mealy的完整指南
fpga开发·fpga
zlinear数据采集卡2 天前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
zlinear数据采集卡2 天前
ZLinear产品线全景对比:D223 vs DABL7606 vs DABL-G511选型指南
arm开发·嵌入式硬件·算法·fpga开发·开源