Komplement bilden mit Addierer

Gast #963575
Lesenswert?

Hallo ich mochte das 2er-Komplent eines Binärwortes berechnen und 
ausgeben. Ich habe ein Problem mit der Definition der Konstanten "null" 
für die Port Map-Anweisung. Irgendein Syntax-Fehler (Error (10500): VHDL 
syntax error at Auf_6a.vhd(18) near text "null";  expecting an 
identifier).
Für eine kleine Hilfe wäre ich dankbar.

Anbei der Code:
1
library ieee;
2
use ieee.std_logic_1164.all, ieee.std_logic_arith.all;
3

4
entity Addierer is
5
  generic (n: natural :=4); -- Wortbreite des Addierers
6
  port (x : std_logic_vector (n-1 downto 0);
7
      z : std_logic_vector (n-1 downto 0));
8

9
end entity Addierer;
10

11
architecture struktur of Addierer is
12
constant null : std_logic_vector (n-1 downto 0) :=(others => '0');
13
  component RCAddierer is
14
    port (a, b: in std_logic_vector (n-1 downto 0);  -- Summanden,
15
        cin : in std_logic;             -- Übertragbit "carry"-
16
        s    : out std_logic_vector (n-1 downto 0); -- Summe,
17
        cout:  out std_logic);             -- Übertragbit "carry" des Addierers
18
  end component RCAddierer;
19
  begin
20
    p1: RCAddierer
21
      generic map(n)
22
      port map (not x, null, '1', z (n-1 downto 0), open);
23
end architecture struktur;
Gast #963600
Lesenswert?

Dann besser "zero". Deswegen wird "null" auch farblich gekennzeichnet, 
weil reserviert :-|

Dieser XST User Guide ist natürlich auch eine feine Sache. Gerade erst 
entdeckt. Alles sauber dokumentiert und leider auf englisch.
Gast #964034
Lesenswert?

Hab noch nen einen Fehler:

Error: Node instance "P1" instantiates undefined entity "RCAddierer"

Versteh ich nicht. "RCAddierer" ist doch als Komponente deklariert. Ich 
komme damit nicht weiter, vielleicht seht ihr den Fehler.
1
library ieee;
2
use ieee.std_logic_1164.all, ieee.std_logic_arith.all;
3

4
entity Addierer is
5
  generic (n: natural := 4); -- Wortbreite des Addierers
6
  
7
  port (x : in std_logic_vector (n-1 downto 0);
8
      z : out std_logic_vector (n-1 downto 0));
9

10
end entity Addierer;
11

12
architecture struktur of Addierer is
13
constant zero : std_logic_vector (n-1 downto 0) := (others => '0');
14

15
  component RCAddierer is
16
    generic (n: natural := 8);
17
    port (a, b: in std_logic_vector (n-1 downto 0);  -- Summanden,
18
        cin : in std_logic;             -- Übertragbit "carry",
19
        s    : out std_logic_vector (n-1 downto 0); -- Summe,
20
        cout:  out std_logic);             -- Übertragbit "carry" des Addierers
21
  end component RCAddierer;
22
  
23
  begin
24
      P1 : RCAddierer
25
      generic map(n)
26
      port map (not x, zero, '1', z(n-1 downto 0), open);
27
      
28
end architecture struktur;
Moderator (Firma: Titel) Persönliche Seite #964050
Lesenswert?

> undefined entity "RCAddierer"
Ist das der ganze Sourcecode? Offenbar fehlt ihm irgendwas mit
1
 entity RCAddierer is
2
 :
3
 :
4
 end entity RCAddierer;

Ist es das?

Edit:
>Ach so, dass Programm, welches ich als Komponente eingebunden habe
>ist im gleichen Verzeichnis.
Ist es auch korrekt im Projekt eingebunden?
Bei Xilinx sieht das dann so aus wie im Bild.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren