【发布时间】:2020-04-22 22:29:02
【问题描述】:
我有一个 32 位输出 (rd_data),它应该将 '0' 与一个 w 位信号 (mux_out) 连接起来,但我不确定如何将两者结合起来。
signal mux_out : std_logic_vector(w-1 downto 0);
signal rd_data : std_logic_vector(31 downto 0);
signal rd : std_logic;
with rd select
rd_data <= (OTHERS => '0') when '0',
**32-BIT CONCATENATION OF ZEROES AND MUX_OUT** when '1';
我该怎么做???? w 永远不会大于 32
【问题讨论】:
-
这是一个例子,说明minimal reproducible example 或工具链上的信息可能会有所帮助。 -2008 有包 numeric_std_unsigned 和函数 RESIZE ,其中您的连接可能是
RESIZE(mux_out, 32)左填充零,将 std_logic_vector 视为无符号二进制值,注意覆盖所选信号分配中rd的所有值还需要others选择(IEEE Std 1076-2008 10.5.4 选定的信号分配,10.9 案例声明)。 Synopsys 包 std_logic_arith 中的等效串联可能是EXT(mux_out, 32)。 -
-2008 之前的 IEEE 包 numeric_std 可用于类型转换(std_logic_vector 和 unsigned 密切相关):
std_logic_vector(resize(unsigned(mux_out, 32)))用于连接表达式。 -
这能回答你的问题吗? VHDL: Zero-Extend a fixed signal value