Debugging 当in=1,sel=0时,DMux.hdl故障
我正在基于NAND2TTERIS课程为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
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);