Помещение 5-битного значения в байт в VHDL - это сгенерирует защелку? - PullRequest
0 голосов
/ 25 апреля 2019

У меня следующая проблема:

У меня есть сумматор, выход которого имеет 5 бит. Я хочу отправить этот вывод в 8-битный регистр.

Я объявил входной сигнал регистра как tot_sig, а вывод сумматора как add_out. И регистр, и сумматор объявлены как отдельные компоненты в моей сущности.

В карте портов сумматора я попытался написать следующее:

add_out => tot_sig(4 downto 0)

Но это не сработает (ISE говорит мне, что tot_sig и add_out имеют разные размеры).

Поэтому я подумал о том, чтобы объявить 2 сигнала, которые были бы одинаковыми, но разных размеров. Сначала я объявил бы сигнал, называемый посредником, который будет 4-битной шиной. Затем я бы добавил посредника к байту (изначально установленному как «00000000») (total_sig). Затем байт total_sig будет подключен на входе регистра.

Я беспокоюсь, что это может вызвать защелку. Может это? Я пытался придумать более простые решения, но не смог прийти ни к какому. Любое решение, которое могло бы работать без необходимости объявления другого сигнала, было бы лучше.

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

Я использую Xilix ISE Design Suite версии 14.6.

1 Ответ

3 голосов
/ 25 апреля 2019

Простое решение состоит в том, чтобы определить 8-битный вектор, объединить 3 ноля при назначении ему 5-битного вектора:

signal len5 : std_logic_vector (4 down to 0);
signal len8 : std_logic_vector (7 down to 0);
len8 <= "000" & len5;
-- Now you can pass len8 into an 8-bit port.

Вы не получаете защелку. Защелки появляются только тогда, когда вы используете условие вне синхронизированного процесса и у вас есть неразрешенные ветви.
например если нет, или случай, когда не все возможности охвачены.

...