VHDL:零 - 扩展固定信号值

时间:2014-05-08 17:12:29

标签: vhdl

如何对固定信号值进行零延伸?

我有以下信号:

signal shamt: std_logic_vector(4 downto 0);

在我将它分配给另一个大小为31 downto 0的变量之前,我必须将其扩展为shamt。我有以下代码,但我不确定它是否正确。

muxSOut <= conv_std_logic_vector(unsigned(shamt),32) when (muxSSel = '0') else A;

我对部分conv_std_logic_vector(unsigned(shamt),32)持怀疑态度。

这会将shamt扩展为5位到32位吗?因此,如果shamt是11011,它将只是27 0s然后是11011?如果没有,那么零延长shamt的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

一种(标准)方法是使用ieee.numeric_stdresize()。 e.g:

muxSOut <= std_logic_vector(resize(unsigned(shamt), 32)) ...

这样做的一个优点是,您可以将32替换为muxSOut'length,然后您的代码就会变得更加灵活。

答案 1 :(得分:-1)

我可能会期待:

muxSOut <= x"000000" & "000" & shamt when muxSSel = '0' else A;