www.mikrocontroller.net

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


Autor: The one (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
library ieee;
use ieee.std_logic_1164.all, ieee.std_logic_arith.all;

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

end entity Addierer;

architecture struktur of Addierer is
constant null : std_logic_vector (n-1 downto 0) :=(others => '0');
  component RCAddierer is
    port (a, b: in std_logic_vector (n-1 downto 0);  -- Summanden,
        cin : in std_logic;             -- Übertragbit "carry"-
        s    : out std_logic_vector (n-1 downto 0); -- Summe,
        cout:  out std_logic);             -- Übertragbit "carry" des Addierers
  end component RCAddierer;
  begin
    p1: RCAddierer
      generic map(n)
      port map (not x, null, '1', z (n-1 downto 0), open);
end architecture struktur;

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"NULL" ist ein reserviertes Wort, nimm vieleicht "nullvalue" oä.

Gruss

Jörg

Autor: The one (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: The one (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
library ieee;
use ieee.std_logic_1164.all, ieee.std_logic_arith.all;

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

end entity Addierer;

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

  component RCAddierer is
    generic (n: natural := 8);
    port (a, b: in std_logic_vector (n-1 downto 0);  -- Summanden,
        cin : in std_logic;             -- Übertragbit "carry",
        s    : out std_logic_vector (n-1 downto 0); -- Summe,
        cout:  out std_logic);             -- Übertragbit "carry" des Addierers
  end component RCAddierer;
  
  begin
      P1 : RCAddierer
      generic map(n)
      port map (not x, zero, '1', z(n-1 downto 0), open);
      
end architecture struktur;

Autor: The one (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> undefined entity "RCAddierer"
Ist das der ganze Sourcecode? Offenbar fehlt ihm irgendwas mit
 entity RCAddierer is
 :
 :
 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und: Unbekannte Komponente RCAddierer.

Autor: The one (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.