在一个过程中,我在UNSIGNED
向量上做了一些工作,我需要在过程结束时切片并转换回SLV
。有比这更好/更干净的方式吗?
out_O : out STD_LOGIC_VECTOR(15 downto 0)
variable o : UNSIGNED(17 downto 0) := (others => '0');
variable outcast_t : STD_LOGIC_VECTOR(17 downto 0) := (others => '0');
...
o := mod_t - div_t + const;
outcast_t := STD_LOGIC_VECTOR(o);
out_O <= outcast_t(15 downto 0);
答案 0 :(得分:1)
使用
use ieee.numeric_std_unsigned.all;
slv将作为无符号处理,您可以直接对该类型进行操作,以避免强制转换。
您也可以这样做
out_O <= o(out_O'range);
如果out_O
的大小被修改,可能会为您节省一些更改。假设您将o
重新定义为slv。