将std_logic_vector解析为整数

时间:2013-06-05 00:51:51

标签: casting integer vhdl

如果我将两个std_logic_vector分别转换为值1和0

signal mlx, mtx : std_logic_vector(15 downto 0) 

通过

转换为整数
variable WLX : integer;
variable WTX : integer;

WLX := TO_INTEGER(signed(mlx));
WTX := TO_INTEGER(signed(mtx));

之后比较这些减法与-1文字:

if WTX-WLX = -1 

结果是真的吗?

由于

1 个答案:

答案 0 :(得分:2)

如果mlx = X“0001”且mtx = X“0000”,那么是的,从mtx中减去mlx作为整数得到-1,所以给出问题答案是肯定的。

但是:将值转换为整数以便对它们进行操作或比较它们通常是代码写得不好的标志。

为什么不使用signed for mlx和mtx,并避免使用整数?

architecture arch of ent is
    signal mlx, mtx : signed(15 downto 0);
begin
    process(clk) begin
        if(rising_edge(clk)) then
            if(mtx - mlx = -1) then
                -- Do what needs to be done.
            end if;
        end if;
    end process;
end architecture;