You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Verilog带异步复位DFF串行比较器输出未知X状态原因求解

问题根因分析
  • 复位信号有效时长不足:testbench中reset从0跳变到1没有设置任何延时,相当于复位脉冲宽度为0,仿真器无法识别到有效的复位事件,导致异步复位逻辑没有生效,内部存储节点q0_p/q0_n/q1_p/q1_n初始值均为未知态X,且会通过组合逻辑环路持续传播,无法被刷新。
  • 门级连续赋值实现的D触发器存在纯组合逻辑环路,事件驱动仿真时若时序匹配不当也会导致X态无法消除。
修复方案

1. 修改testbench复位逻辑

给复位信号留出足够的有效保持时间,确保内部节点完成复位状态赋值,将testbench中原复位代码:

reset = 0;
reset = 1;

修改为:

reset = 0;
#2 reset = 1; // 保持复位有效2个时间单位,覆盖一个时钟周期

修改完成后再运行仿真,输出即可退出X态,正常输出比较结果。

2. 可选优化:替换门级DFF为行为级描述

如果不需要严格按照指定门级电路实现,推荐用标准行为级异步复位DFF写法,可彻底避免组合环路和仿真竞争问题:

reg q0_p, q0_n, q1_p, q1_n;
always @(posedge clk or negedge reset) begin
  if(!reset) begin
    q0_p <= 1'b0;
    q0_n <= 1'b1;
    q1_p <= 1'b0;
    q1_n <= 1'b1;
  end else begin
    q0_p <= d0;
    q0_n <= ~d0;
    q1_p <= d1;
    q1_n <= ~d1;
  end
end

内容的提问来源于stack exchange,提问作者user14572697

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:54:06