DMux.hdl in=1, sel=0 时失败

DMux.hdl failure when in=1, sel=0

我正在为基于 Nand2Tetris 课程的 DMux 编写 hdl 代码。

CHIP DMux {
IN in, sel;
OUT a, b;

PARTS:
And(a = sel, b = in, out = b);
Not(in = sel, out = selNot);
And(a = in, b = selNot, out = a);   
}

出于某种原因,此代码在 in = 1 and sel = 0 的测试脚本值上失败。在这种情况下,它将 ab 计算为 0。

我写了很多次门,我想不通为什么结果不是a = 1 and b = 0

谁能给我解释一下这是怎么回事?

我感觉你的 Not 实现可能有问题。

尝试用 Nand 替换 Not:

Nand(a=sel,b=sel,out=notSel);   // notSel = ! sel

如果这可行,那么您的 Not.hdl 不正确。

此外,在样式点上,如果您在最终输出之前定义中间体(即:将 Nand 放在第一位)并在输入顺序中保持一致(即:a=in、b=sel 或notSel, out = a 或 b).有助于减少您误读某些内容的机会。

不确定您的代码有什么问题。它看起来和我的一样,有效。你测试过你的其他 And 和 Not 门了吗?

我的代码:

Not(in=sel, out=notsel);
And(a=notsel, b=in, out=a);
And(a=in, b=sel, out=b);