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

Verilog中8位输入的((notA) nand B)运算实现问题

Verilog实现8位((~A) NAND B)的正确写法

你犯了一个典型的Verilog运算符混淆错误:&&是逻辑与(对整个信号做布尔判断),而你需要的是逐位与的&。

你的需求是对8位输入A、B的每一位分别计算((~A) NAND B),而NAND运算本身就是“先与再取反”,所以正确的行为级写法应该是:

output = ~(~A & B);

为什么之前的写法不行?

  • &&会把8位的A、B当作单个布尔值处理:只要信号里有任意一位为1,就判定为真(1'b1),否则为假(1'b0)。所以~A&&B的结果是一个单bit值,再取反后还是单bit,无法得到8位的逐位运算结果。
  • 而&是逐位与运算符,会对A、B的每一位分别进行与运算,得到的是8位结果,再逐位取反后正好符合你要的8位NAND输出。

另一种结构化实现方式(可选)

如果想用硬件原语直接描述,也可以用nand门例化,逐位或者整体连接:

nand output[7:0] (~A, B);

这种写法更贴近硬件结构,行为和~(~A & B)完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:01:12