首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在nand2tetris中实现MUX门时的比较误差

在nand2tetris中实现MUX门时的比较误差
EN

Stack Overflow用户
提问于 2020-01-13 20:48:01
回答 1查看 1.2K关注 0票数 1

我正试图在nand2tetris课程中实现一个MUX (复用器)门。我第一次尝试自己,但我犯了一个错误。但无论我改变了什么,我总是会犯错误。所以我试着在线检查一些代码,这是大多数人使用的:

代码语言:javascript
复制
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);
}

但是,即使当我尝试这段代码时,我仍然会得到以下错误:

作为真值表我得到的是:

代码语言:javascript
复制
|   a   |   b   |  sel  |  out  |
|   0   |   0   |   0   |   0   |
|   0   |   0   |   1   |   0   |
|   0   |   1   |   0   |   0   |
|   0   |   1   |   1   |   0   |

我应该得到的是:

代码语言:javascript
复制
|   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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 22:56:49

从可以看到的输入引脚是:

代码语言:javascript
复制
a = 0  
b = 1  
sel = 1

你的内销是:

代码语言:javascript
复制
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门.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59723931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档