2014-05-08 63 views
1

如何零延伸固定信号值?VHDL:零延伸固定信号值

我有以下信号:

signal shamt: std_logic_vector(4 downto 0); 

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

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

我怀疑部分conv_std_logic_vector(无符号(shamt),32)。

这会扩展shamt,它是从5位大小到32位?所以如果shamt是11011,那么它只会是27 0,然后是11011?如果没有,零扩展shamt的正确方法是什么?

回答

5

一种(标准)方法是使用ieee.numeric_stdresize()。例如: - 这

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

一个好处是,你可以用muxSOut'length替代32,然后你的代码变得更灵活一些。

-1

我可能只是希望:

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