如何对固定信号值进行零扩展?
我有以下信号:
signal shamt: std_logic_vector(4 downto 0);
在将其分配给另一个大小为 31 到 0 的变量之前,我必须将 shamt 归零。我有以下代码,但我不确定它是否正确。
muxSOut <= conv_std_logic_vector(unsigned(shamt),32) when (muxSSel = '0') else A;
我对 conv_std_logic_vector(unsigned(shamt), 32) 部分持怀疑态度。
这会将 5 位大小的 shamt 扩展到 32 位吗?那么,如果 shamt 是 11011,那么它只是 27 个 0,然后是 11011?如果不是,零扩展shamt的正确方法是什么?
一种(标准)方法是使用ieee.numeric_std
and resize()
. e.g.:
muxSOut <= std_logic_vector(resize(unsigned(shamt), 32)) ...
这样做的好处之一是您可以替换32
with muxSOut'length
,然后你的代码就会变得更加灵活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)