Frage zu VHDL

OP #893809
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
1
-- Example of a four bit adder
2
library  ieee;
3
use  ieee.std_logic_1164.all;
4
-- definition of a full adder
5
entity FULLADDER is
6
     port (a, b, c: in std_logic;
7
           sum, carry: out std_logic);
8
end FULLADDER;
9

10
architecture fulladder_behav of FULLADDER is
11
begin
12
   sum <= (a xor b) xor c ;
13
   carry <= (a and b) or (c and (a xor b));
14
end fulladder_behav;
15

16
-- 4-bit adder
17

18
library  ieee;
19
use  ieee.std_logic_1164.all;
20

21
entity FOURBITADD is
22
     port (a, b: in std_logic_vector(3 downto 0);
23
           Cin : in std_logic;
24
           sum: out std_logic_vector (3 downto 0);
25
           Cout, V: out std_logic);
26
end FOURBITADD;
27

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

31
     component FULLADDER
32
          port(a, b, c: in std_logic;
33
               sum, carry: out std_logic);
34
     end component;
35

36
begin
37
   FA0: FULLADDER
38
        port map (a(0), b(0), Cin, sum(0), c(1));
39
   FA1: FULLADDER
40
        port map (a(1), b(1), C(1), sum(1), c(2));
41
   FA2: FULLADDER
42
        port map (a(2), b(2), C(2), sum(2), c(3));
43
   FA3: FULLADDER
44
        port map (a(3), b(3), C(3), sum(3), c(4));
45
   V <= c(3) xor c(4);
46
   Cout <= c(4);
47

48
end fouradder_structure;
#893841
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
Gast #894170
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.
OP #894265
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

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.