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

为何Verilog代码输出为z而非1?技术咨询

问题原因拆解

先看你的dulladd模块,核心问题有两个:

  • 输出C完全没被连接到任何逻辑
    你定义了输出端口C,但整个模块里没有任何语句把逻辑运算的结果赋值给它。就像你开了个快递收件箱,却没人往里面放东西,最后自然是空的(对应Verilog里的高阻态z)。
  • 内部连线存在冲突+无效逻辑
    你先用not notl (w1,B);把w1设为B的反,但紧接着又用or orl (w1,B);让w1变成B或自身的结果——这相当于让w1同时被两个不同的逻辑门驱动,属于连线冲突,而且完全是无效操作。另外你定义了w2,但根本没给它赋值,or or2 (A,w2);这个门的输出也没连到任何地方,完全是没用的代码。
修正思路(简单示例)

如果你的目标是实现A或B的逻辑(让A=0、B=1时输出1),可以把模块改成这样:

module dulladd (C,A,B);
input A,B;
output C;
// 直接把C连接到A和B的或运算结果
or or_logic (C,A,B);
endmodule

这样当A=0、B=1时,输出就是预期的1了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:18