Как создать параллельный оператор в VHDL
Параллельный оператор в VHDL — это назначение сигнала в архитектуре, но вне обычной конструкции процесса. Параллельный оператор также называется параллельным присваиванием или параллельным процессом.
Когда вы создаете параллельный оператор, вы фактически создаете процесс с определенными, четко определенными характеристиками. Параллельные операторы всегда эквивалентны процессу, использующему список чувствительности, где все сигналы справа от оператора присваивания сигнала находятся в списке чувствительности.
Эти процессы сокращенной записи полезны, когда вы хотите создать простую логику, которая приводит к назначению одного сигнала. Вместо того, чтобы вводить полную конструкцию процесса со списками чувствительности и всем остальным, вы можете просто назначить целевой сигнал непосредственно в архитектуре.
Эта запись в блоге является частью серии учебных пособий по основам VHDL.
При правильном использовании назначение кода будет довольно ясным. Нет необходимости создавать процесс для каждого бита, который вы хотите перевернуть.
Упражнение
В этом видео мы узнаем, как создать параллельный оператор:
Окончательный код, который мы создали в этом руководстве:
library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T13_ConcurrentProcsTb is end entity; architecture sim of T13_ConcurrentProcsTb is signal Uns : unsigned(5 downto 0) := (others => '0'); signal Mul1 : unsigned(7 downto 0); signal Mul2 : unsigned(7 downto 0); signal Mul3 : unsigned(7 downto 0); begin process is begin Uns <= Uns + 1; wait for 10 ns; end process; -- Process multiplying Uns by 4 process is begin Mul1 <= Uns & "00"; wait on Uns; end process; -- Equivalent process using sensitivity list process(Uns) is begin Mul2 <= Uns & "00"; end process; -- Equivalent process using a concurrent statement Mul3 <= Uns & "00"; end architecture;
Окно сигнала в ModelSim после того, как мы нажали кнопку «Выполнить» и увеличили временную шкалу:
Анализ
Из формы волны видно, что Mul1
, Mul2
и Mul3
вести себя точно так же. Это связано с тем, что параллельный оператор и два созданных нами процесса эквивалентны.
Параллельный оператор работает так же, как процесс. Все сигналы справа от <=
автоматически добавляются в список чувствительности. Это означает, что сигнал слева от <=
будет обновляться всякий раз, когда изменяется один из оцениваемых сигналов.
В VHDL существует множество способов умножения чисел. В этом упражнении мы умножили Uns
сигнал на 4, используя битовый сдвиг. Все наши сигналы имеют unsigned
тип, что означает, что они интерпретируются числами. Добавление 0 справа от двоичного числа равносильно умножению его на 2.
Это иллюстрация того, что происходит с курсором на осциллограмме:
Вывод
- Параллельный оператор — это назначение сигнала непосредственно в области архитектуры.
- Параллельные операторы эквивалентны процессу со всеми оцениваемыми сигналами в списке конфиденциальности.
Перейти к следующему руководству »
VHDL
- Оператор процедуры — пример VHDL
- Как создать список строк в VHDL
- Как создать управляемый Tcl тестовый стенд для модуля кодовой блокировки VHDL
- Как остановить симуляцию в тестовом стенде VHDL
- Как создать ШИМ-контроллер на VHDL
- Как создать кольцевой буфер FIFO в VHDL
- Как создать самопроверяющийся тестовый стенд
- Как создать связанный список в VHDL
- Как использовать процедуру в процессе в VHDL
- Как использовать функцию в VHDL