我正试图在nand2tetris课程中实现一个MUX (复用器)门。我第一次尝试自己,但我犯了一个错误。但无论我改变了什么,我总是会犯错误。所以我试着在线检查一些代码,这是大多数人使用的:
CHIP Mux {
IN a, b, sel;
OUT out;
PARTS:
Not(in=sel, out=nsel);
And(a=sel, b=b, out=c1);
And(a=nsel, b=a, out=c2);
Or(a=c1, b=c2, out=out);
}但是,即使当我尝试这段代码时,我仍然会得到以下错误:

作为真值表我得到的是:
| a | b | sel | out |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |我应该得到的是:
| a | b | sel | out |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |我有最新的软件套件每2020-01-13
发布于 2020-01-13 22:56:49
从可以看到的输入引脚是:
a = 0
b = 1
sel = 1你的内销是:
nsel = 1
c1 = 1
c2 = 0到目前为止,一切都如期而至。
在这种情况下,期望得到 out = 1,然后得到out = 0。由于失败,测试脚本此时停止。
现在可能有两个原因:
1)没有加载正确的Mux.hdl,因为如果计算Or(c1,c2),就会得到1,这是正确的。如果您将And门替换为Or,它将解释故障。
2) Or.hdl的实现是incorrect.Mux,如果该文件存在于同一目录中,则使用Or网关的版本。
因此,首先在硬件模拟器中验证您的代码,然后验证您的Or.hdl实现。后者可以通过从项目目录中临时删除Or.hdl来完成。硬件模拟器将加载内置版本的Or门.
https://stackoverflow.com/questions/59723931
复制相似问题