Dmux4Way 在第 7 行产生错误:来自硬件模拟器的错误?
Dmux4Way is producing error in line 7: error from Hardware Simulator?
我是不是漏掉了什么或者是硬件模拟器出错了吗?
模拟器产生错误!
请你 运行 这个并查看错误。
请你 运行 这个并查看错误。
请你 运行 这个并查看错误。
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/01/DMux4Way.hdl
/**
* 4-way demultiplexor:
* {a, b, c, d} = {in, 0, 0, 0} if sel == 00
* {0, in, 0, 0} if sel == 01
* {0, 0, in, 0} if sel == 10
* {0, 0, 0, in} if sel == 11
*/
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
// Put your code here:
Not(in=sel[0], out=nsel0);
Not(in=sel[1], out=nsel1);
And(a=nsel0, b=nsel1, out=outa);
And(a=in, b=outa, out=a);
And(a=nsel0, b=sel[1], out=outb);
And(a=in, b=outb, out=b);
And(a=sel[0], b=nsel1, out=outc);
And(a=in, b=outc, out=c);
And(a=sel[0], b=sel[1], out=outd);
And(a=in, b=outd, out=d);
//DMux(in=in,sel=sel[1],a=ao,b=bo);
//DMux(in=ao,sel=sel[0],a=a,b=b);
//DMux(in=bo,sel=sel[0],a=c,b=d);
}
当 in=1 和 sel[2]=01 以及 in=1 和 sel[2]=11 时(第 8 行),您的芯片会产生错误的结果。如果您 single-step 模拟器,您会发现当您进行测试时,设置的输出引脚不会按照您希望的方式递增。
那是为什么呢?这与误解 sel[0] 和 sel[1] 引用的 sel 中的哪些位有关。 sel[0]是最右边的,sel中的least-significant位。 Sel[1] 是最左边的 most-significant 位。你的芯片假设相反。
别难过,这种错误已经咬过每个程序员至少一次。
我是不是漏掉了什么或者是硬件模拟器出错了吗? 模拟器产生错误! 请你 运行 这个并查看错误。 请你 运行 这个并查看错误。 请你 运行 这个并查看错误。
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/01/DMux4Way.hdl
/**
* 4-way demultiplexor:
* {a, b, c, d} = {in, 0, 0, 0} if sel == 00
* {0, in, 0, 0} if sel == 01
* {0, 0, in, 0} if sel == 10
* {0, 0, 0, in} if sel == 11
*/
CHIP DMux4Way {
IN in, sel[2];
OUT a, b, c, d;
PARTS:
// Put your code here:
Not(in=sel[0], out=nsel0);
Not(in=sel[1], out=nsel1);
And(a=nsel0, b=nsel1, out=outa);
And(a=in, b=outa, out=a);
And(a=nsel0, b=sel[1], out=outb);
And(a=in, b=outb, out=b);
And(a=sel[0], b=nsel1, out=outc);
And(a=in, b=outc, out=c);
And(a=sel[0], b=sel[1], out=outd);
And(a=in, b=outd, out=d);
//DMux(in=in,sel=sel[1],a=ao,b=bo);
//DMux(in=ao,sel=sel[0],a=a,b=b);
//DMux(in=bo,sel=sel[0],a=c,b=d);
}
当 in=1 和 sel[2]=01 以及 in=1 和 sel[2]=11 时(第 8 行),您的芯片会产生错误的结果。如果您 single-step 模拟器,您会发现当您进行测试时,设置的输出引脚不会按照您希望的方式递增。
那是为什么呢?这与误解 sel[0] 和 sel[1] 引用的 sel 中的哪些位有关。 sel[0]是最右边的,sel中的least-significant位。 Sel[1] 是最左边的 most-significant 位。你的芯片假设相反。
别难过,这种错误已经咬过每个程序员至少一次。