我正在设计一个2s补码,但它显示错误可以帮助我。
library ieee;
use ieee.std_logic_1164.all;
use IEEE.std_logic_arith.all;
entity comp is
port(a : in std_logic_vector(7 downto 0);
y : out std_logic_vector(7 downto 0));
end comp;
architecture dataflow of comp is
signal temp: std_logic;
begin
y<= not(a) + "00000001";
end dataflow;
错误:D:/modelsim_projects/2scmpliment.vhd(13):没有可行的条目 对于中缀运算符“+”。
答案 0 :(得分:1)
使用Synopsys软件包时,您需要在std_logic_unsigned
之后添加std_logic_1164
软件包,例如:
use IEEE.std_logic_unsigned.all;
有了这个,您甚至可以使用整数表示法来添加:
y <= not(a) + 1;
替代方案是使用IEEE VHDL标准numeric_std
包,其变化如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
...
y <= std_logic_vector(unsigned(not(a)) + 1);