我正在用累加器编写一个 4 位二进制加法器:
library ieee;
use ieee.std_logic_1164.all;
entity binadder is
port(n,clk,sh:in bit;
x,y:inout std_logic_vector(3 downto 0);
co:inout bit;
done:out bit);
end binadder;
architecture binadder of binadder is
signal state: integer range 0 to 3;
signal sum,cin:bit;
begin
sum<= (x(0) xor y(0)) xor cin;
co<= (x(0) and y(0)) or (y(0) and cin) or (x(0) and cin);
process
begin
wait until clk='0';
case state is
when 0=>
if(n='1') then
state<=1;
end if;
when 1|2|3=>
if(sh='1') then
x<= sum & x(3 downto 1);
y<= y(0) & y(3 downto 1);
cin<=co;
end if;
if(state=3) then
state<=0;
end if;
end case;
end process;
done<='1' when state=3 else '0';
end binadder;
输出 :
-- 编译binadder的架构binadder
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(15):
中缀运算符“xor”没有可行的条目。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(15):
类型错误将中缀表达式“xor”解析为 std.standard.bit 类型。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中缀运算符“and”没有可行的条目。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中缀表达式“或”的右操作数中的表达式错误。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中缀运算符“and”没有可行的条目。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中缀表达式“或”的左操作数中的表达式错误。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
中缀表达式“或”的右操作数中的表达式错误。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(16):
类型错误将中缀表达式“或”解析为 std.standard.bit 类型。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(28):
中缀运算符“&”没有可行的条目。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(28):
类型错误解析中缀表达式“&”为类型 ieee.std_logic_1164.std_logic_vector。
** 错误:C:/Modeltech_pe_edu_6.5a/examples/binadder.vhdl(39):
VHDL 编译器退出
我相信我没有正确处理 std_logic_vector。请告诉我怎么做?:(