2014-05-08 62 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;