您好我正在尝试找到替换此命令的方法: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'或类似的东西?感谢。
答案 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;
始终考虑组合过程中的最后一项任务。这使得在大多数情况下具有默认分配并且之后添加特殊情况(即通过分层块馈送宽总线(定义为记录)并且仅修改一些信号)时,这使得代码非常易读。