Код Мортена выглядит хорошо, поэтому, пожалуйста, укажите инструмент синтеза и версию, которая сообщает об этом. Некоторые инструменты синтеза могут быть слишком примитивными для принятия этого кода: в других случаях могут быть варианты синтеза, чтобы включить необходимое поведение. (Также проверьте, что вы точно выполнили его инструкции: (others => 0);
запрашивает целые числа, а (others => '0');
запрашивает биты).
Однако для синтеза обратите внимание на две вещи:
(a) Целочисленные ряды будут лучше; он пытается генерировать 32-битные целые числа (хотя более поздние этапы синтеза могут их обрезать)
Так, например.
subtype my_int is natural range 0 to 99; -- needs 7 bits
type my_int_vector is array (0 to N) of my_int;
может давать меньше оборудования и, конечно же, дает читателю понять, что ожидаются меньшие целые числа.
(b), чтобы сбросить весь массив за одну операцию, ему потребуется реализовать всю партию в регистрах, что может привести к огромному количеству аппаратного обеспечения.
Если вы настроите сброс одного местоположения за такт (обычно на конечной машине), с индексом счетчика через весь массив, тогда массив может быть реализован как блок-память, экономя много места.
Синтез - большинство инструментов синтезатора - может поддерживать циклы 'for', если они подчиняются определенным правилам, например, они имеют« локально статический »диапазон, например, постоянные ограничения по контурам. –