第 2 章 ALU.hdl 在最后一行不工作
Chapter 2 ALU.hdl not working on final line
当我运行ALU-nostat.tst时,代码执行完美。但是,当我 运行 ALU.tst 时,代码在第 1 行停止。如果我再次单击向前箭头并允许它测试以下测试用例,它似乎可以工作。我将生成的输出文件与比较文件进行了比较,我认为一切都匹配。错误似乎是在测试案例之前,因为在我再次单击向前箭头之前输出文件为空(仅输入和输出列headers)。
set x %B0000000000000000, // x = 0
^ 是测试脚本停止的行。很奇怪,因为它不止于此:
set x %B0000000000000000,
在 no-stat 脚本上。
如果有帮助,代码如下。
`
零件:
Mux16(a=x[0..15],b[0..15]=false,sel=zx,out=x1);
Not16(in=x1,out=maybex);
Mux16(a=x1,b=maybex,sel=nx,out=x2);
Mux16(a=y[0..15],b[0..15]=false,sel=zy,out=y1);
Not16(in=y1,out=maybey);
Mux16(a=y1,b=maybey,sel=ny,out=y2);
And16(a=x2,b=y2,out=output1);//I dont know what is wrong here
Add16(a=x2,b=y2,out=output2);
Mux16(a=output1,b=output2,sel=f,out=output3);
Not16(in=output3,out=almost);
Mux16(a=output3,b=almost,sel=no,out=out);
Mux16(a=output3,b=almost,sel=no,out[15]=pt2);
Mux16(a=output3,b=almost,sel=no,out=pt3);
And(a=pt2,b=true,out=ngtest);
Add16(a=pt3,b[0..15]=true,out[15]=pinname);
Mux(a=pinname,b=false,sel=ngtest,out=zr);
And(a=pt2,b=true,out=ng);`
即使在注释掉 zr 和 ng 输出引脚的所有新行之后,它仍然在第 1 行给我一个比较失败。
ALU.tst 没有问题,因为我 re-downloaded 它仍然无法正常工作。我不明白错误是什么。
非常感谢!!!
这只是一个大胆的猜测,但我注意到 alu.tst 中的 set y 行以 ; 结尾。而 alu-nostat.tst 中的那个以 ,
结尾
文件后面的另一组 y 也是如此。
我会将这些 ; 更改为 ,,看看它是否能解决问题。
如果没有,可能是您的 ALU 没有正确生成 zr 和 ng 值,所以它在第一次评估时确实失败了,但由于某种原因,您收到了一条误导性的错误消息,指向您错误的行。我建议您 single-step 通过测试并手动检查 ALU 是否正确响应。
祝你好运!
当我运行ALU-nostat.tst时,代码执行完美。但是,当我 运行 ALU.tst 时,代码在第 1 行停止。如果我再次单击向前箭头并允许它测试以下测试用例,它似乎可以工作。我将生成的输出文件与比较文件进行了比较,我认为一切都匹配。错误似乎是在测试案例之前,因为在我再次单击向前箭头之前输出文件为空(仅输入和输出列headers)。
set x %B0000000000000000, // x = 0
^ 是测试脚本停止的行。很奇怪,因为它不止于此:
set x %B0000000000000000,
在 no-stat 脚本上。
如果有帮助,代码如下。
` 零件:
Mux16(a=x[0..15],b[0..15]=false,sel=zx,out=x1);
Not16(in=x1,out=maybex);
Mux16(a=x1,b=maybex,sel=nx,out=x2);
Mux16(a=y[0..15],b[0..15]=false,sel=zy,out=y1);
Not16(in=y1,out=maybey);
Mux16(a=y1,b=maybey,sel=ny,out=y2);
And16(a=x2,b=y2,out=output1);//I dont know what is wrong here
Add16(a=x2,b=y2,out=output2);
Mux16(a=output1,b=output2,sel=f,out=output3);
Not16(in=output3,out=almost);
Mux16(a=output3,b=almost,sel=no,out=out);
Mux16(a=output3,b=almost,sel=no,out[15]=pt2);
Mux16(a=output3,b=almost,sel=no,out=pt3);
And(a=pt2,b=true,out=ngtest);
Add16(a=pt3,b[0..15]=true,out[15]=pinname);
Mux(a=pinname,b=false,sel=ngtest,out=zr);
And(a=pt2,b=true,out=ng);`
即使在注释掉 zr 和 ng 输出引脚的所有新行之后,它仍然在第 1 行给我一个比较失败。
ALU.tst 没有问题,因为我 re-downloaded 它仍然无法正常工作。我不明白错误是什么。
非常感谢!!!
这只是一个大胆的猜测,但我注意到 alu.tst 中的 set y 行以 ; 结尾。而 alu-nostat.tst 中的那个以 ,
结尾文件后面的另一组 y 也是如此。
我会将这些 ; 更改为 ,,看看它是否能解决问题。
如果没有,可能是您的 ALU 没有正确生成 zr 和 ng 值,所以它在第一次评估时确实失败了,但由于某种原因,您收到了一条误导性的错误消息,指向您错误的行。我建议您 single-step 通过测试并手动检查 ALU 是否正确响应。
祝你好运!