如何在VHDL中声明具有多个零的输出

时间:2012-01-24 09:16:27

标签: vhdl

您好我正在尝试找到替换此命令的方法:Bus_S <= "0000000000000000000000000000000" & Ne;更方便。逐个计数零并不是很复杂。该程序是针对ALU的SLT SLT单元。 SLT仅获得1位(ADDSU32的MSB)并且具有全为零的32位输出,但第一位取决于ADDSU32的Ne = MSB。 (暂时忽略ALUop)

entity SLT_32x is
   Port ( Ne : in  STD_LOGIC;
         ALUop : in STD_LOGIC_VECTOR (1 downto 0);
         Bus_S : out  STD_LOGIC_VECTOR (31 downto 0));
end SLT_32x;

architecture Behavioral of SLT_32x is
begin
  Bus_S <= "0000000000000000000000000000000" & Ne; 
end Behavioral;

有没有办法使用(30 downto 0)='0'或类似的东西?感谢。

2 个答案:

答案 0 :(得分:29)

试试这个:bus_S <= (0 => Ne, others => '0') 这意味着:将位0设置为Ne,并将其他位设置为“0”。

答案 1 :(得分:3)

替代给定的答案:

architecture Behavioral of SLT_32x is
begin
  Bus_S <= (others => '0');
  Bus_S(0) <= ne;
end Behavioral;

始终考虑组合过程中的最后一项任务。这使得在大多数情况下具有默认分配并且之后添加特殊情况(即通过分层块馈送宽总线(定义为记录)并且仅修改一些信号)时,这使得代码非常易读。