Аппаратное представление для массивов в VHDL

Используя VHDL я хочу иметь некоторые регистры, которые хранят 16 битов в каждом. Таким образом, я нашел, что VHDL имеет созданный в массиве, и я хочу использовать его для хранения 16 битов в каждом элементе в iy, таким образом, я хочу знать если карта VHDL этот массив к фактическим регистрам или нет?

5
задан ahmed elbagoury 10 March 2010 в 16:08
поделиться

3 ответа

Короткий ответ - нет - тип массива не отображается в регистр.

Подробный ответ:

Тип массива в VHDL - это просто индексированная коллекция элементов одного типа. В вашем случае вы, вероятно, использовали бы массив в качестве вывода из банка регистров.

Допустим, у вас есть банк из 8 регистров, каждый из которых содержит 16 бит. На выходе из этого банка будет массив (размером 8) 16-битных векторов. Объявление компонента для этого банка регистров будет выглядеть примерно так:

 component reg8x16
  port(
   clock: in std_logic;
   reset: in std_logic;
   enable: in std_logic;
   rout : out r_array(0 to 7)
   );
 end component; 

rout - ваш массив зарегистрированных выходных данных из банка регистров. Таким образом, вы можете разыменовать вывод регистра 0 из банка, используя rout (0) , который имеет тип std_logic_vector (15 вниз до 0) .

Также не забудьте где-нибудь объявить тип массива (обычно в файле пакета). Это будет выглядеть примерно так:

тип r_array - это массив (диапазон целых <>) из std_logic_vector (от 15 до 0);

Оператор (диапазон целых чисел <>) является своего рода заполнителем для диапазон индекса массива - он будет заполнен позже, когда будет использоваться тип массива (например, в нашем объявлении компонента выше).

Я не уверен, отвечает ли это на ваш вопрос или нет. Я не буду вдаваться в подробности создания компонента reg8x16. По сути, вы просто создаете 16-битный регистр, выходные данные которого имеют тип std_logic_vector (15 вниз до 0); (вы можете посмотреть, как это сделать в Интернете ... это довольно простой VHDL). Затем вы просто создаете экземпляры 8 из этих регистров и помещаете их в компонент с именем reg8x16 .

3
ответ дан 14 December 2019 в 08:48
поделиться

Массив похож на любую другую переменную или сигнал: если вы описываете поведение, которое означает, что он должен запоминать свое состояние от одного такта часов до другого, то триггеры (или блоки памяти, если условия верны) будут выведены синтезатором.

3
ответ дан 14 December 2019 в 08:48
поделиться

Любой массив с допустимым диапазоном будет отображаться на провода в сгенерированном списке соединений. Это довольно очевидно - оборудование содержит только вентили и провода. Что-то вроде (3 вниз до 0) (от 1 до 0) будет соответствовать проводам размером 4x2 или 8 бит. Теперь вы сопоставляете отдельные обращения, такие как (3) (1), с индексами в этом одномерном массиве. Таким образом, a (3) (1) по сути является (7).

1
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: