我正在尝试构建 PC 芯片,但收到错误消息,第 19 行,out(8) 和 out(16) 具有不同的总线宽度

I am trying to build a PC CHIP, but am getting the error message, Line 19, out(8) and out(16) have different bus widths

提问人:Sean Pilan 提问时间:10/25/2023 更新时间:10/25/2023 访问量:35

问:

我正在尝试构建 PC 芯片,但收到错误消息,第 19 行,out(8) 和 out(16) 具有不同的总线宽度

```
// This file is BASED ON part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: project03starter/a/PC.hdl

/**
 * A 16-bit counter with load and reset control bits.
 * if      (reset[t] == 1) out[t+1] = 0
 * else if (load[t] == 1)  out[t+1] = in[t]
 * else if (inc[t] == 1)   out[t+1] = out[t] + 1  (integer addition)
 * else                    out[t+1] = out[t]
 */

CHIP PC {
    IN in[16],load,inc,reset;
    OUT out[16];

    PARTS:
    Register(in=resetMuxOut, load=true, out=out, out=regOut);
    Inc16(in=incIn, out=incOut);

    Mux16(a=loadMuxOut, b[0..15]=false, sel=reset, out=resetMuxOut);
    Mux16(a=incMuxOut, b=in, sel=load, out=loadMuxOut);
    Mux16(a=regOut, b=incOut, sel=inc, out=incMuxOut);
  
}   
```

收到错误消息,第 19 行,out(8) 和 out(16) 具有不同的总线宽度。我不确定我在这里做错了什么,有人可以帮忙。

HDL NAND2俄罗斯方块

评论


答:

0赞 MadOverlord 10/25/2023 #1

当我运行您的代码时,我收到一个不同的错误:第 26 行,incIn 没有源引脚。此外,你从一个组件的输出输入到先前组件的输入中,这并不违法,但它确实使你的逻辑更难遵循;如果可能,您希望通过芯片的数据流从上到下。

您可能希望重新考虑您的设计,并考虑到这种流程。要记住的一件事是,除了显式输入值之外,您还有一个隐式输入值(寄存器)。

一个可能对您有所帮助的简单设计模式是,首先派生所有可能的输出(说明中列出的 4 个),然后使用多路复用器链传递正确的值,并将其存储在芯片末尾的寄存器中。