4位加法器使用端口映射

时间:2013-09-18 00:36:52

标签: vhdl fpga intel-fpga

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

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

我有一个名为4位加法器的项目,在该项目文件夹中是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; 

1 个答案:

答案 0 :(得分: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;  

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