转换为std_logic_vector并更有效地切片

时间:2015-10-25 15:22:13

标签: vhdl

在一个过程中,我在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); 

1 个答案:

答案 0 :(得分:1)

使用

use ieee.numeric_std_unsigned.all;

slv将作为无符号处理,您可以直接对该类型进行操作,以避免强制转换。

您也可以这样做

out_O <= o(out_O'range);

如果out_O的大小被修改,可能会为您节省一些更改。假设您将o重新定义为slv。