Forum: FPGA, VHDL & Co. Frage zu VHDL


von Chris H. (xkris)


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;

von Roger S. (edge)


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

von lkmiller (Gast)


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.

von Chris H. (xkris)


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.

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.