Debugging 当in=1,sel=0时,DMux.hdl故障

Debugging 当in=1,sel=0时,DMux.hdl故障,debugging,hdl,hardware-programming,nand2tetris,Debugging,Hdl,Hardware Programming,Nand2tetris,我正在基于NAND2TTERIS课程为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和sel=0时失败。在这种情况下,它将a和b计算为0 我已经多次写出了门,但我不明白为什么结果不是a=1和b=0

我正在基于NAND2TTERIS课程为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和sel=0时失败。在这种情况下,它将
a
b
计算为0

我已经多次写出了门,但我不明白为什么结果不是
a=1和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),则更为清晰。有助于减少误读的机会。

不确定代码是否有问题。它看起来和我的一样,很有效。你有没有测试过你的其他门和非门

我的代码:

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