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

Dou*_*ith 5 assembly hdl nand2tetris

这是我的代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

Mic*_*ael 2

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