如果我将两个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
结果是真的吗?
由于
答案 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;