2016-12-21 16 views
5

Как использовать массивы (представляющие шины) в HDL?Работа с массивами в 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]); 
+1

Если и я уверен, что это связано с курсом nand2tetris, соответствующим образом пометьте этот вопрос. Если это версия nand2tetris hdl, вам придется иметь дело с автобусами вручную, как в вашем примере. – zubergu

+0

@zubergu - Да, ты прав. Я не хотел, чтобы это звучало как HW-help (чего я не уверена), и я думал, что источник не имеет значения. Кроме того, я предположил, что HDL - это название языка, а не классификация разных языков. Мои извинения. Спасибо хоть! –

ответ

1

There are no arrays in HDL. В разделе 1.3 nand2tetris companion book, он говорит

Так как мы уже знаем, как реализовать простейшие версии этих ворот, реализация их n - это просто вопрос построения массивов элементарных ворот n, каждый из которых работает отдельно на своих битах. Эта задача реализации довольно скучна, но она будет нести свой вес, когда эти многоразрядные ворота используются в более сложных микросхемах, как описано в последующих главах.

Таким образом, помимо написания тривиального скрипта в Python, чтобы избежать всего, что печаталось, вы ничего не пропустили.

 Смежные вопросы

  • Нет связанных вопросов^_^