選擇信號(hào)賦值語句是指根據(jù)選擇條件表達(dá)式的值將不同的表達(dá)式賦給目標(biāo)信號(hào)的一種并行信號(hào)賦值語句。
選擇信號(hào)賦值語句的語法結(jié)構(gòu):
with 選擇條件表達(dá)式select
目標(biāo)信號(hào) <= 表達(dá)式 1when 選擇條件1
表達(dá)式 2when 選擇條件2
表達(dá)式 3when 選擇條件3
……
表達(dá)式 nwhen 選擇條件n:
用選擇信號(hào)代入語句設(shè)計(jì)異或門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;
用條件信號(hào)和選擇信號(hào)代入語句設(shè)計(jì)四選一電路
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--條件信號(hào)代入語句
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--條件信號(hào)代入語句
q<=d0 when 0,
d1 when 1,
d2 when 2,
d3 when 3,
'0'when others;
sel1<=sel;
end;
選擇信號(hào)代入語句在進(jìn)程外使用,具有并發(fā)功能,所以無論何種類型的信號(hào)代入語句,只要在進(jìn)程之外,就具有并發(fā)功能,也就有并發(fā)執(zhí)行的特點(diǎn)。
當(dāng)條件滿足且選擇信號(hào)變化時(shí),該語句就啟動(dòng)執(zhí)行。這些語句等效于一個(gè)進(jìn)程。
利用進(jìn)程設(shè)計(jì)信號(hào)的代入過程和數(shù)值的傳遞過程也完全可以。