提问人:Sean Pilan 提问时间:10/25/2023 更新时间:10/25/2023 访问量:35
我正在尝试构建 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
问:
我正在尝试构建 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) 具有不同的总线宽度。我不确定我在这里做错了什么,有人可以帮忙。
答:
0赞
MadOverlord
10/25/2023
#1
当我运行您的代码时,我收到一个不同的错误:第 26 行,incIn 没有源引脚。此外,你从一个组件的输出输入到先前组件的输入中,这并不违法,但它确实使你的逻辑更难遵循;如果可能,您希望通过芯片的数据流从上到下。
您可能希望重新考虑您的设计,并考虑到这种流程。要记住的一件事是,除了显式输入值之外,您还有一个隐式输入值(寄存器)。
一个可能对您有所帮助的简单设计模式是,首先派生所有可能的输出(说明中列出的 4 个),然后使用多路复用器链传递正确的值,并将其存储在芯片末尾的寄存器中。
评论