Forum: FPGA, VHDL & Co. Vorteile Komb. + Getakteter Prozess in architecture


von pantagruel (Gast)


Lesenswert?

Hallo zusammen,

bei meinem aktuellen Projekt bin ich bei der Recherche auf eine Struktur 
gestoßen, die verspricht, besonders "gut" zu sein. Gut im Sinne von 
Hardwareverbrauch, Latency und Throughput.

Dabei sieht die architecture immer so aus:
1
library IEEE;
2
3
use IEEE.std_logic_1164.all;
4
use IEEE.numeric_std.all;
5
6
entity Beispiel is
7
     CLK : in std_logic;
8
     --... (Diverse Ports)
9
end Beispiel;
10
architecture arch_Beispiel of Beispiel is
11
    -- Alle Internen signale werden durch diesen type zusammengefasst
12
    type register_t is record
13
         --...(Diverse Signale)
14
    end record;
15
    
16
    signal register : register_t;
17
    signal register_next : register_t;
18
19
begin
20
     -- Getakteter Prozess
21
     update : process(CLK) is
22
     begin
23
          if rising_edge(CLK) then
24
              -- alle internen Signale werden bei steigender Flanke    geupdated
25
              register <= register_next;
26
          end if;
27
     end process update;
28
29
30
     -- Kominatorische Logik
31
     -- Hier erfolg nun die eigentliche Berschreibung.
32
     -- Die Variable dient nur dazu einen Wert direkt nach seiner Zuweisung zur Verfügung zu haben.
33
     comb : process(register,register_next,...diverse in/out Ports) is
34
     variable register_buf : register_t;
35
     begin
36
        register_buf := register;
37
38
39
     
40
41
               --..... Kombinatorische Logik
42
43
               --..... Unter anderem auch Output Assignment
44
45
       register_next <= register_buf;
46
    end process comb;
47
end architecture arch_Beispiel;

Was sind die Vorteile einer solchen Struktur gegenüber der herkömmlichen 
Variante? Hat das einen speziellen Namen?

Vielen Dank schonmal im Vorraus.

Grüße,
pantagruel

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


Lesenswert?

pantagruel schrieb:
> auf eine Struktur gestoßen, die verspricht, besonders "gut" zu sein. Gut
> im Sinne von Hardwareverbrauch, Latency und Throughput.
Lass das mal den Synthesizer machen. Was tatsächlich "gut" und 
"effizient" ist, das hängt nämlich in sehr großem Maße von der 
verwendeten Architektur ab.

> Was sind die Vorteile einer solchen Struktur gegenüber der herkömmlichen
> Variante?
Das ist im Prizip die stinknormale seit Jahrzehnten angewendete 
Zwei-Prozess-Schreibweise.

Die speziell hier gezeigte Variante hat einen "Vorteil": durch die 
ausschließliche Verwendung von Variablen im Prozess muss ein 
Softwareprogrammierer nicht umdenken, weil sich die Werte bei der 
Zuweisung "sofort" ändern und so das "Programm" Top-Down "abgearbeitet" 
wird.
Das entspricht natürlich nicht der Hardware, sondern ist eine 
Krücke...

> Hat das einen speziellen Namen?
Siehe den Beitrag "Gaisler-Religion?"

: Bearbeitet durch Moderator
von Achim S. (Gast)


Lesenswert?

pantagruel schrieb:
> die verspricht, besonders "gut" zu sein. Gut im Sinne von
> Hardwareverbrauch, Latency und Throughput.

wer behauptet das?

pantagruel schrieb:
> Hat das einen speziellen Namen?

die "Zwei Prozess Schreibweise"

pantagruel schrieb:
> Was sind die Vorteile einer solchen Struktur gegenüber der herkömmlichen
> Variante?

Für Anfänger ist evtl. die Zwei-Prozess Schreibweise besser 
verständlich, weil sie eine gedankliche Trennung zwischen Speicherung in 
Flipflops und kombinatorischer Logik erlaubt. Für die praktische Arbeit 
ist sie imho zu umständlich, weil man "alles doppelt schreiben muss".

pantagruel schrieb:
> der herkömmlichen
> Variante?

Mit der "herkömmlichen Variante" meinst du die Ein-Prozess Schreibweise? 
Wenn du in beiden Fällen die selbe Hardware beschreibst, dann erhältst 
du auch das selbe Syntheseergebnis. Bei der Ein-Prozess Schreibweise 
muss man mal verinnerlichen, dass der selbe Signalname für den Eingang 
wie für den Ausgang eines Flipflops gebraucht wird - das fällt in der 
Zwei-Prozess Schreibweise mit getrennten Namen ggf. leichter. Ansonsten 
ist die Zwei-Prozess Schreibweise "fehleranfälliger". Wenn man mal 
schnell noch ein neues Signal braucht und vergisst alles doppelt zu 
machen, dann baut man leicht Latches oder kombinatorische Schleifen.

Aber wenn man seine Hardware korrekt beschreibt liefern beide 
Beschreibungen gleich gute Ergebnisse.

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


Lesenswert?

Achim S. schrieb:
> Mit der "herkömmlichen Variante" meinst du die Ein-Prozess Schreibweise?
Nein, die ist "ziemlich" neu...
Gemeint ist sehr wahrscheinlich die Zwei-Prozess-Schreibweise ohne 
Record und Record-Variable.

: Bearbeitet durch Moderator
von pantagruel (Gast)


Lesenswert?

Wow, das ging ja flott :)
Danke für eure Antworten.

Okay, das klärt einiges.

Lothar M. schrieb:
> Siehe den Beitrag "Gaisler-Religion?"

Das ist ja DAS Paper... :D Da steht alles an Info drin was ich brauche 
(Schreibe nebenher eine Arbeit über das Projekt). Hätte ich das mal 
früher gefunden, wären meine Fragen gar nicht erst aufgetaucht. Vielen 
Dank für den Tipp!!

Ein schönes Wochenende euch allen :)

pantagruel


PS.: Dies ist mein erster Beitrag in diesem Forum. Gibt es eine 
Möglichkeit Threads als gelöst o.ä. zu markieren?

von Duke Scarring (Gast)


Lesenswert?

Achim S. schrieb:
> Für die praktische Arbeit
> ist sie imho zu umständlich, weil man "alles doppelt schreiben muss".
Ich nutze diese Schreibweise gerne und frage mich, wo ich da was doppelt 
schreiben muss?!?

pantagruel schrieb:
> Gibt es eine
> Möglichkeit Threads als gelöst o.ä. zu markieren?
Nein.
Ist aber IMHO auch nicht nötig.

Duke

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.