mikrocontroller.net

Forum: FPGA, VHDL & Co. Frage zu VHDL


Autor: Chris H. (xkris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

hab mir grad mal das Beispielprogramm des 4Bit Addierers aus dem VHDL 
Tutorial angschaut und eine Frage die Strukur von VHDL betreffend.
Woher weiss der Compiler, was hier die Top-Entity ist?
FULLADDER und FOURBITTADD sind von der Strultur her identisch. Bei einem 
C programm ist es ja z.B. durch main() klar definiert. Erkennt der 
Compiler, das FOURBITADD FULLADDER einbindet und erkennt daran die 
hierarchische Struktur? Und warum muss ich vor jeder Entity die 
Fuktionsbibliotheken immer wieder neu einbinden. Waerum genügt es nicht, 
das einmal zu deklarieren?

Danke für eure Hilfe

gruß
kristian
-- Example of a four bit adder
library  ieee;
use  ieee.std_logic_1164.all;
-- definition of a full adder
entity FULLADDER is
     port (a, b, c: in std_logic;
           sum, carry: out std_logic);
end FULLADDER;

architecture fulladder_behav of FULLADDER is
begin
   sum <= (a xor b) xor c ;
   carry <= (a and b) or (c and (a xor b));
end fulladder_behav;

-- 4-bit adder

library  ieee;
use  ieee.std_logic_1164.all;

entity FOURBITADD is
     port (a, b: in std_logic_vector(3 downto 0);
           Cin : in std_logic;
           sum: out std_logic_vector (3 downto 0);
           Cout, V: out std_logic);
end FOURBITADD;

architecture fouradder_structure of FOURBITADD is
     signal c: std_logic_vector (4 downto 0);

     component FULLADDER
          port(a, b, c: in std_logic;
               sum, carry: out std_logic);
     end component;

begin
   FA0: FULLADDER
        port map (a(0), b(0), Cin, sum(0), c(1));
   FA1: FULLADDER
        port map (a(1), b(1), C(1), sum(1), c(2));
   FA2: FULLADDER
        port map (a(2), b(2), C(2), sum(2), c(3));
   FA3: FULLADDER
        port map (a(3), b(3), C(3), sum(3), c(4));
   V <= c(3) xor c(4);
   Cout <= c(4);

end fouradder_structure;



Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kristian Herr wrote:
> hab mir grad mal das Beispielprogramm des 4Bit Addierers aus dem VHDL
> Tutorial angschaut und eine Frage die Strukur von VHDL betreffend.

Woher ist es denn? So ein Addierer als Beispiel zu VHDL ist naemlich 
Kaese. Schau dir VHDL und Rechnen in VHDL an.

> Woher weiss der Compiler, was hier die Top-Entity ist?

Muss er nicht, die Top-Entity wird z.B. beim Synthese Tool in den 
Projekt-Einstellungen festgelegt.

> FULLADDER und FOURBITTADD sind von der Strultur her identisch. Bei einem
> C programm ist es ja z.B. durch main() klar definiert.

Den C Compiler interessiert die spezielle Semantik von main() nicht im 
geringsten. Die 'kompilierten' Entities sind eher mit Libraries in der C 
Welt vergleichbar.

Cheers, Roger

Autor: lkmiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, in diesem wunderhübschen Lehrbuchbeispiel wird also einmal die 
strukturelle Beschreibung und einmal die Verhaltensbeschreibung 
dargelegt.

Das Hauptproblem ist, dass der lernwillige Schüler aber das meiste 
Hirnschmalz damit verbrät, den Addierer zu kapieren. Die eigentliche 
Idee der Übung, nämlich beide Beschreibungsarten direkt zu vergleichen, 
geht flöten.

Und die Top-Entity ist die, die nicht mehr als Komponente irgendwo 
verwendet wird.

BTW ist ein Simulator-VHDL-Modul einfach daran zu erkennen, dass keine 
Ports mehr nach aussen gehen.

Autor: Chris H. (xkris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lkmiller wrote:
> Und die Top-Entity ist die, die nicht mehr als Komponente irgendwo
> verwendet wird.

Das entspricht ja dem, was ich vermutet hab. Ich war zunächst etwas 
verwirrt, da Roger meinte, dass die Top Entity in den 
Projekteinstellungen festgelegt wird. Das geschieht aber automatisch da 
ich den Quellcode als Ganzes hab übersetzen lasen und die Top Entity 
wurde automatisch gefunden.

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.