0

所以我正在尝试做一个 4 位加法器并且遇到了一个我似乎无法弄清楚的错误。

错误 (10430):adder1.vhd(3) 处的 VHDL 主要单元声明错误:库“work”中已存在主要单元“Adder1Vhd”

我有一个名为 4 bit adder 的项目,在该项目文件夹中是 Adder1.vhd 的 .vhd 文件。这是我的代码,如果有人可以帮助我解决这个问题,将不胜感激。

Adder4.vhd:

LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 

ENTITY Adder4 IS
  GENERIC(CONSTANT N: INTEGER := 4);
  PORT(
    a, b: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); -- Input SW[7..4]: a[3..0] inputs,
                                             -- SW[3..0]: b[3..0]
    cIn: in std_logic;
    sum: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0); -- Output LEDR[3..0]
    cOut: OUT STD_LOGIC -- Output LEDR[4]
  );
END Adder4;

ARCHITECTURE imp OF Adder4 IS
  COMPONENT Adder1 
    PORT(
      a, b, cIn : in STD_LOGIC;
      sum, cOut : out STD_LOGIC);
  END COMPONENT;
  SIGNAL carry_sig: std_logic_vector(N-1 DOWNTO 0);
BEGIN

  A1: Adder1 port map (a(0), b(0), cIn, sum(0), carry_sig(0));
  A2: Adder1 port map (a(1), b(1), carry_sig(0), sum(1), carry_sig(1));
  A3: Adder1 port map (a(2), b(2), carry_sig(1), sum(2), carry_sig(2));
  A4: Adder1 port map (a(3), b(3), carry_sig(2), sum(3), cOut);

END imp;

Adder1.vhd(Adder4 项目文件夹内的文件):

library ieee; 
use ieee.std_logic_1164.all; 

entity Adder1Vhd is 
  port( 
    a, b, cIn : in std_logic; 
    sum, cOut : out std_logic);
end Adder1Vhd; 

architecture imp of Adder1Vhd is 
begin 
  -- Add two lines (one for sum and the other for cOut) of VHDL code here
  sum <= (a xor b) xor cIn;
  cOut <= (a and b) or (cIn and (a xor b));
end imp; 
4

1 回答 1

2

还有另一个文件具有Adder1Vhd在库工作(当前工作库)中命名的实体。您可以删除磁盘上的文件,也可以在 Quartus II 的文件导航器中将其从库中删除。

顺便说一句,使用与实体相同的名称保存 VHDL 文件是一个很好的约定。

并且组件的名称必须是其实体的名称,而不是文件名。所以,

COMPONENT Adder1  -- here 'Adder1' should be 'Adder1Vhd' 
  PORT(
    a, b, cIn : in STD_LOGIC;
    sum, cOut : out STD_LOGIC);
END COMPONENT;  

组件实例化语句是相同的。

于 2013-09-18T04:34:00.487 回答