模拟VHDL半加法器,但出现错误

模拟VHDL半加法器,但出现错误,vhdl,Vhdl,我正在学习vhdl,并试图在vivado中设计半加法器。我为design和testbench编写了以下代码,并尝试对其进行模拟,但出现了错误。任何支持请!此外,我也会感谢任何有用的链接,我可以学习 错误日志: 以下是设计代码: 半加法器。vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity half_adder is Port ( x : in STD_LOGIC; y : in ST

我正在学习vhdl,并试图在vivado中设计半加法器。我为design和testbench编写了以下代码,并尝试对其进行模拟,但出现了错误。任何支持请!此外,我也会感谢任何有用的链接,我可以学习

错误日志:

以下是设计代码: 半加法器。vhdl

   library IEEE;

   use IEEE.STD_LOGIC_1164.ALL;
   entity half_adder is
   Port ( 
       x : in STD_LOGIC;
       y : in STD_LOGIC;
       sum : out STD_LOGIC;
       carry : out STD_LOGIC
     ); 

Line 41 -- end half_adder;

architecture Behavioral of half_adder is 
Line 44 --   begin
Line 45 -- assign sum<=x xor y; 
assign carry<= x and y;

end Behavioral;
 library IEEE;
 use IEEE.STD_LOGIC_1164.ALL;
entity ha_tb is
end ha_tb;

 architecture Behavioral of ha_tb is
 component halfa is
 port(
      x : in STD_LOGIC;
  Line 41--    y : in STD_LOGIC;
      sum : out STD_LOGIC;
      carry : out STD_LOGIC
 Line 44--    );
 Line 45--  end component; 
 signal input1,input2: in STD_LOGIC;
 signal outputs,outputc: in STD_LOGIC;

 begin
 HA:halfa port map (x=>input1,y=>input2,sum=>outputs,carry=>outputc);
 stimulus_proc:process
 begin
x<='0';
y<='0';
wait for 20ns;
 x<='0';
   y<='1';
   wait for 20ns;
    x<='1';
      y<='0';
      wait for 20ns;
       x<='1';
         y<='1';
         wait;
  end process;

 end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体半加法器是
港口(
x:在标准逻辑中;
y:在标准逻辑中;
sum:输出标准逻辑;
执行:执行标准逻辑
); 
第41行——端半加法器;
半加器的结构是
第44行--开始
第45行——分配suminput2,总和=>输出,进位=>输出UTC);
刺激程序:过程
开始

检查此代码,分配函数您只能在vhdl中使用Verilog分配函数不受支持

library IEEE;

   use IEEE.STD_LOGIC_1164.ALL;
   entity half_adder is
   Port ( 
       x : in STD_LOGIC;
       y : in STD_LOGIC;
       sum : out STD_LOGIC;
       carry : out STD_LOGIC
     ); 

Line 41 -- end half_adder;

architecture Behavioral of half_adder is 
begin
sum<=x xor y; 
carry<= x and y;

end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体半加法器是
港口(
x:在标准逻辑中;
y:在标准逻辑中;
sum:输出标准逻辑;
执行:执行标准逻辑
); 
第41行——端半加法器;
半加器的结构是
开始

sum
assign
关键字存在于Verilog中,但不存在于VHDL中。赋值应如下:
sum此外,行号注释不能准确反映错误消息行号。您的测试台也没有将halfa映射到半加法器的组件规范(将两个地方的halfa都更改为半加法器)。ha_tb中的信号声明不是接口声明,它们不需要模式(例如
中的
)。VHDL标准要求在相邻的抽象文字和标识符之间设置分隔符(例如,
20ns
应为
20ns
),无论Modelsim是否强制执行该要求。在进程刺激_proc x中,y赋值应该分别为input1和input2在最后的
等待之前
将允许您在波形显示中查看最后一次input1和input2更改的结果。感谢您的澄清。我做了更改,但下面出现了另一个错误,虽然我关闭了程序并重新打开了它,但仍然出现相同的错误。您的错误消息不完整,无法识别特定的工具,上面的错误消息似乎来自ISIM。从未使用过,见谷歌搜索发现。特定于工具的问题超出了的权限。请解释您正在做什么。不要只给出正确的代码。Stackoverflow应该是一个信息源,而不是一个纠正服务。顺便说一下:如果您给出了正确的代码,请提供完整的工作示例。这有注释行和不正确的缩进。对不起,在那个代码中,他们使用了“assign”语句,但在vhdl代码中,assign语句是不可合成的,而不是ASSIGNA语句
library IEEE;

   use IEEE.STD_LOGIC_1164.ALL;
   entity half_adder is
   Port ( 
       x : in STD_LOGIC;
       y : in STD_LOGIC;
       sum : out STD_LOGIC;
       carry : out STD_LOGIC
     ); 

Line 41 -- end half_adder;

architecture Behavioral of half_adder is 
begin
sum<=x xor y; 
carry<= x and y;

end Behavioral;