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 ::=
目标 ;
延迟机制 ::=
交通
| [拒绝时间表达式]惯性
目标 ::=
名称
|聚合
波形 ::=
波形元素 { , 波形元素 }
| 不受影响
10.5.2.2 执行简单的赋值语句
波形元素 ::=
value_表达式 [after time_表达式]
| null [ after 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;
注意波形元素延迟是相对于当前仿真时间的。
此测试台产生目标波形: