选择信号赋值语句是指根据选择条件表达式的值将不同的表达式赋给目标信号的一种并行信号赋值语句。
选择信号赋值语句的语法结构:
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;
选择信号代入语句在进程外使用,具有并发功能,所以无论何种类型的信号代入语句,只要在进程之外,就具有并发功能,也就有并发执行的特点。
当条件满足且选择信号变化时,该语句就启动执行。这些语句等效于一个进程。
利用进程设计信号的代入过程和数值的传递过程也完全可以。