Назначение сигналов VHDL позволяет использовать сигналы с несколькими элементами:
Стандарт IEEE 1076-2008
10.5.2 Простые назначения сигналов
10.5.2.1 Общие
simple_signal_assignment ::=
simple_waveform_assignment
| simple_force_assignment
| simple_release_assignment
simple_waveform_assignment ::=
target ‹= [ delay_mechanism ] форма волны ;
delay_mechanism ::=
транспорт
| [отклонить time_expression] инерционный
цель ::=
имя
| агрегат
waveform ::=
waveform_element { , waveform_element }
| не затронут
10.5.2.2 Выполнение простого оператора присваивания
waveform_element ::=
value_выражение [ после time_выражение ]
| null [ после time_expression ]
Оценка элемента сигнала производит одну транзакцию. Временная составляющая транзакции определяется текущим временем, добавленным к значению временного выражения в элементе сигнала. Для первой формы элемента сигнала компонент стоимости транзакции определяется выражением значения в элементе сигнала. Для второй формы элемента сигнала компонент значения не определяется языком, но определяется как тип цели. Транзакция, полученная в результате оценки второй формы элемента сигнала, называется нулевой транзакцией.
Это эмулирует описания сигналов, которые можно найти в генераторах шаблонов для тестовых языков и тестеров IC. Элементы с несколькими сигналами обычно предназначены для моделирования на испытательных стендах и не поддерживаются при синтезе.
Спроецированный выходной сигнал – это очередь элементов сигнала, которые должны располагаться в возрастающем порядке времени.
Также операторы процесса по своей сути зацикливаются:
11.3 Заявление о процессе
Выполнение оператора процесса состоит из повторяющегося выполнения его последовательности операторов. После выполнения последнего оператора в последовательности операторов оператора процесса выполнение немедленно продолжится с первого оператора в последовательности операторов.
Эти две функции позволяют писать компактные независимые генераторы шаблонов в тестовых стендах:
library ieee;
use ieee.std_logic_1164.all;
entity sig1sig2y_tb is
end entity;
architecture foo of sig1sig2y_tb is
signal sig1, sig2, y: std_ulogic;
begin
sig1_process:
process
begin
sig1 <= '1', '0' after 25 ns;
wait for 75 ns;
end process;
sig2_process:
process
begin
sig2 <= '1', '0' after 25 ns, '1' after 75 ns, '0' after 100 ns,
'1' after 125 ns, '0' after 175 ns;
wait for 200 ns;
end process;
y_process:
process
begin
y <= '1', '0' after 20 ns, '1' after 30 ns, '0' after 40 ns;
wait for 80 ns;
end process;
end architecture;
Обратите внимание, что задержка элемента формы сигнала зависит от текущего времени симуляции.
Этот тестовый стенд создает целевые формы сигналов:
![sig1sig2sigy_tb.jpg](https://i.stack.imgur.com/hoxXq.jpg)
person
Community
schedule
25.05.2020