在VHDL中连接位

Zai*_*zvi 14 concatenation vhdl

你如何连接VHDL中的位?我正在尝试使用以下代码:

案例b0&b1&b2&b3是......

它会抛出一个错误

谢谢

use*_*246 25

仅在信号分配运算符'<='的右侧允许连接运算符'&'

  • 它适用于变量赋值`:=`以及其他答案 (3认同)

use*_*246 12

以下是连接运算符的示例:

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;
Run Code Online (Sandbox Code Playgroud)


小智 11

不允许将连接运算符与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;
Run Code Online (Sandbox Code Playgroud)