首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图为nand2tetris这本书建立一台PC (计数器),但我在逻辑上遇到了一些问题

我试图为nand2tetris这本书建立一台PC (计数器),但我在逻辑上遇到了一些问题
EN

Stack Overflow用户
提问于 2013-02-23 06:09:29
回答 3查看 3.1K关注 0票数 5

下面是我的代码:

代码语言:javascript
复制
CHIP PC {
    IN in[16],load,inc,reset;
    OUT out[16];

    PARTS:
    Inc16(in = regout, out = incout);
    Mux16(a = regout, b = incout, sel = inc, out = incdecision);
    Mux16(a = incdecision, b = false, sel = reset, out = resetdecision);
    Mux16(a = regout, b = resetdecision, sel = load, out = loaddecision);
    Register(in = loaddecision, load = true, out = regout, out = out);
}

基本上,来自寄存器的值是递增的,只有当inc为1(通过多路复用器检查)时才被接受,然后经过另一个多路复用器,该多路复用器可能重置它,然后另一个多路复用器根据load的值可能写或不写它。然后,从中产生的任何值(无论是更改的值还是来自旧寄存器的值)都被放入寄存器。

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-23 08:19:46

您似乎没有将In信号连接到任何东西。如果设置了load信号,则需要获取适当的Mux16以将In值加载到寄存器中。

票数 2
EN

Stack Overflow用户

发布于 2013-11-22 03:24:55

更改resetdecisionloaddecesion的顺序。第一个具有更高的优先级。

代码语言:javascript
复制
Inc16(in=outpc, out=outincreased);
Mux16(a=outpc, b=outincreased, sel=inc, out=outinc);
Mux16(a=outinc, b=in, sel=load, out=outload);
Mux16(a=outload, b=false, sel=reset, out=outreset); 
    //And16(a=outLOAD, b[0..15]=reset, out=outreset);
Register(in=outreset, load=true, out=out, out=outpc);
票数 2
EN

Stack Overflow用户

发布于 2017-08-01 07:55:29

需要在load Mux16之后执行reset Mux16。load Mux16需要将"in“作为"b”引脚。

我来自Nand2Tetris的工作代码:

代码语言:javascript
复制
Inc16(in = outandabout, out = incout);
Mux16( a = outandabout, b = incout, sel = inc, out = incinc);
Mux16( a = incinc, b = in, sel = load, out = loadout);
Mux16( a = loadout, b = false, sel = reset, out= outreset);
Register(in = outreset, load = true, out = out, out = outandabout);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15034037

复制
相关文章

相似问题

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