Forum: FPGA, VHDL & Co. Komplement bilden mit Addierer


von The one (Gast)


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;

von Jörg (Gast)


Lesenswert?

"NULL" ist ein reserviertes Wort, nimm vieleicht "nullvalue" oä.

Gruss

Jörg

von The one (Gast)


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.

von The one (Gast)


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;

von The one (Gast)


Lesenswert?

Ach so, dass Programm, welches ich als Komponente eingebunden habe ist 
im gleichen Verzeichnis.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Nachträglich kann ich kein Bild mehr einbinden  :(
Dann eben so: korrekte Projektansicht bei Xilinx.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Und: Unbekannte Komponente RCAddierer.

von The one (Gast)


Lesenswert?

Ich nutze QuartusII. Das Problem hängt auf jeden Fall mit der Einbindung 
zusammen. Müsste gleich funktionieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.