选择信号赋值语句的语法结构:
with 选择条件表达式select
目标信号 <= 表达式 1when 选择条件1
表达式 2when 选择条件2
表达式 3when 选择条件3
……
表达式 nwhen 选择条件n:
用选择信号代入语句设计异或门xor_gate
library ieee;
use ieee.std_logic_1164.all;
entity xor_gate2 is
port(sel:in bit_vector(0 to 1);
c:out std_logic);
end;
architecture a2 of xor_gate2 is
begin
with sel select
c<='0' when 00|11,
'1' when 01|10;
end;
用条件信号和选择信号代入语句设计四选一电路
library ieee;
use ieee.std_logic_1164.all;
entity mux4a is
port(d0,d1,d2,d3,a,b:in std_logic;
sel1:out integer range 0 to 4;
q:out std_logic);
end;
architecture one of mux4a is
signal sel:integer range 0 to 4;
begin
sel<=0 when a='0'and b='0' else--条件信号代入语句
1 when a='1'and b='0' else
2 when a='0'and b='1' else
3 when a='1'and b='1' else
4;with sel select--条件信号代入语句
q<=d0 when 0,
d1 when 1,
d2 when 2,
d3 when 3,
'0'when others;
sel1<=sel;
end;
选择信号代入语句在进程外使用,具有并发功能,所以无论何种类型的信号代入语句,只要在进程之外,就具有并发功能,也就有并发执行的特点。
当条件满足且选择信号变化时,该语句就启动执行。这些语句等效于一个进程。
利用进程设计信号的代入过程和数值的传递过程也完全可以。
