9

How does one use arrays (representing busses) in HDL?

For example, I have the following code:

/**
 * 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:
}

Assuming I have And already implemented, how could I implement this?

I'd rather not have the following:

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]);
Fine Man
  • 455
  • 4
  • 17
  • 2
    If, and I'm pretty sure this is, related to nand2tetris course, tag this question accordingly. If this is nand2tetris hdl version, then you will have to deal with buses manually, as in your example. – zubergu Dec 30 '16 at 22:25
  • @zubergu -- Yes, you're correct. I didn't want it to sound like HW-help (which it isn't, I assure you) and I thought the source was irrelevant. Also, I assumed that HDL was the name of a language, not a classification of different languages. My apologies. Thanks, though! – Fine Man Dec 30 '16 at 22:51

1 Answers1

5

There are no arrays in HDL. In section 1.3 of the nand2tetris companion book, he says

Since we already know how to implement the elementary versions of these gates, the implementation of their n-ary versions is simply a matter of constructing arrays of n elementary gates, having each gate operate separately on its bits. This implementation task is rather boring, but it will carry its weight when these multi-bit gates are used in more complex chips, as described in subsequent chapters.

So besides writing a trivial script in Python to avoid all that typing, you're not missing anything.

Alain
  • 853
  • 11
  • 10
  • In the second edition of the book, this passage appears in section 1.5.2. The text now says: “The resulting HDL code will be somewhat boring and repetitive (using copy-paste), but it will carry its weight when these multi-bit gates are used in the construction of more complex chips later in the book.” – littleO Aug 19 '21 at 22:03