Как инициализировать переменную с количеством битов в VHDL? - PullRequest
0 голосов
/ 15 сентября 2018

так что в основном я пытаюсь сделать множитель в VHDL с 2 входами по N битов с выводом из 2 * N битов.Я только начинающий в этом языке, поэтому я попытался сделать простой код, не используя некоторые продвинутые инструменты / термины.Итак, вот что я получил:

Мой код на VHDL

Их ошибка прямо между инициализацией переменных и циклом.Я думаю, что все после цикла написано правильно, поэтому проблема может быть только переменными.Я хочу иметь переменные, которые, как и записи, могут иметь переменное число бит в зависимости от N (инициализировать в Generic).Я также хочу инициализировать некоторые из их битов в 0.

Bvariable будет только половина битов (MSB), а другая половина будет принимать биты Y.

Pvariable будет иметьвсе его биты со значением 0.

Некоторая дополнительная информация для переменных для тех, кто хочет получить больше разъяснений:

1. Bvariable - это B с большим количеством бит и смещенный влево в цикле.

2. Pvariable - это P, но мы постоянно меняем его значение, прежде чем присвоить ему значение P.

Вот моя проблема.Надеюсь, что вы могли бы помочь мне найти ответы.Кроме того, не стесняйтесь предложить мне другой способ построить множитель, если он относительно прост (например, с сигналами вместо переменных).

Спасибо за ваше время.

Мой кодв VHDL

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете просто использовать функцию изменения размера для существующего без знака:

variable Bvariable : unsigned(2*N-1 downto 0) := resize(Y, Bvariable'length);

или функцию to_unsigned для целочисленного литерала

variable Pvariable : unsigned(2*N-1 downto 0) := to_unsigned(0, Pvariable'length);
...