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
的测试脚本值上失败。在这种情况下,它将 a
和 b
计算为 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);
我正在为基于 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
的测试脚本值上失败。在这种情况下,它将 a
和 b
计算为 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);