处理HDL中的数组

Fin*_*Man 7 arrays syntax hdl bus nand2tetris

如何在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:
}
Run Code Online (Sandbox Code Playgroud)

假设我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]);
Run Code Online (Sandbox Code Playgroud)

Ala*_*ain 5

HDL 中没有数组。在nand2tetris 姊妹书的第 1.3 节中,他说

由于我们已经知道如何实现这些门的基本版本,因此它们的n元版本的实现只需构造n 个基本门的数组,让每个门单独对其位进行操作即可。这个实现任务相当无聊,但当这些多位门用于更复杂的芯片时,它就会发挥作用,如后续章节所述。

因此,除了用 Python 编写一个简单的脚本来避免所有的输入之外,您不会错过任何东西。