3.4.2 并行(Concurrent)描述语句 并行信号赋值语句有三种形式:简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。 这三种信号赋值语句的共同点是:赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体内的执行是同时发生的,与它们的书写顺序和是否在块语句中没有关系。每一信号赋值语句都相当于一条缩写的进程语句,而这条语句的所有输入(或读入)信号都被隐性地列入此过程地敏感信号表中。因此,任何信号的变化都将启动相关并行语句的赋值操作,而这种启动完全是独立于其他语句的,它们都可以直接出现在结构体中。 (1) 简单并行信号赋值语句 即:信号 <= 表达式 例:以下两种描述等价
一个简单并行信号赋值语句是一个进程的缩写。 等效:
不等效:
(2)条件信号赋值语句 格式: 目的信号量 <= 表达式1 when 条件1 else 表达式2 when 条件2 else 表达式3 when 条件3 else ┆ 表达式n; 例:用条件信号赋值语句描述四选一电路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic); end mux4; architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); begin sel<=b & a; q<=i0 when sel = “00” else i1 when sel = “01” else i2 when sel = “10” else i3 when sel = “11”; end rtl;
条件信号赋值语句与进程中的多选择 if 语句等价:
(3)选择信号赋值语句 选择信号赋值语句与进程中的 case 语句等价。 格式: with 表达式 select 目的信号量 <= 表达式1 when 条件1, 表达式2 when 条件2, ┆ 表达式n when 条件n; 注:(1)不能有重叠的条件分支。 (2)最后条件可为 others。否则,其它条件必须能包含表达式的所有可能值。 例:用选择信号赋值语句描述四选一电路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic); end mux4; architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); begin sel<=b & a; with sel select q<=i0 when sel = “00” , i1 when sel = “01” , i2 when sel = “10” , i3 when sel = “11” , ‘X’ when others; end rtl;
选择信号赋值语句与进程中的 case 语句等价:
|
|||