如何在 HDL 中使用数组(代表总线)?
例如我有以下代码:
/**
* 16-bit bitwise And:
* for i = 0..15: out[i] = (a[i] and b[i])
*/
CHIP And16 {
IN a[16], b[16];
OUT out[16];
PARTS:
// Put your code here:
}
假设我已经实现了
And
,我该如何实现呢?
我宁愿没有以下内容:
And(a=a[0],b=b[0],out=out[0]);
And(a=a[1],b=b[1],out=out[1]);
...
And(a=a[14],b=b[14],out=out[14]);
And(a=a[15],b=b[15],out=out[15]);
HDL 中没有数组。 在 nand2tetris 配套书的 1.3 节中,他说
由于我们已经知道如何实现这些门的基本版本,因此其 n 元版本的实现只需构造 n 基本门数组,让每个门单独对其位进行操作即可。 这个实现任务相当无聊,但当这些多位门用于更复杂的芯片时,它就会发挥作用,如后续章节所述。
因此,除了用 Python 编写一个简单的脚本来避免所有输入之外,您不会遗漏任何内容。
您可以用 c 编写代码(因为它是更接近 hdl 的语言,具有 for 循环),然后您可以使用任何 c 到 hdl 工具在 c 中使用 for 循环来让您的芯片运行,而无需重复相同的代码 16 次