2008-10-16 92 views
13

如何连接VHDL中的位?我尝试使用下面的代码:串联VHDL中的位

案例B0 & B1 B2 & & B3是 ...

,它抛出一个错误

感谢

回答

20

级联运算符“& '允许在信号赋值运算符'< ='的右侧,只有

+2

它适用于变量赋值`:=`以及..见其他答案 – 2010-03-04 12:07:25

8

这里是级联运算符的一个示例:

architecture EXAMPLE of CONCATENATION is 
    signal Z_BUS : bit_vector (3 downto 0); 
    signal A_BIT, B_BIT, C_BIT, D_BIT : bit; 
begin 
    Z_BUS <= A_BIT & B_BIT & C_BIT & D_BIT; 
end EXAMPLE; 
6

您不允许在case语句中使用连接运算符。一个可能的解决方案是在过程中使用一个变量:

process(b0,b1,b2,b3) 
    variable bcat : std_logic_vector(0 to 3); 
begin 
    bcat := b0 & b1 & b2 & b3; 
    case bcat is 
     when "0000" => x <= 1; 
     when others => x <= 2; 
    end case; 
end process;