Forum: FPGA, VHDL & Co. Clock source für FPGAs


von FPGA Anfänger (Gast)


Lesenswert?

Hallo zusammen,

ein Mikrocontroller braucht immer einen Quarz/Oscillator das er sein 
code ausführt, seine Ausführungszeit hängt dann von dieser Frequenz ab 
(z.B. bei Pics: fcy = fsys/2 oder fsys/4).

- Wie sieht es aus bei den FPGA's? mit welcher Frequenz werden die 
Prozesse ausgeführt?
- Ein Prozess hat ein clock in seiner sensitivity list, was passiert 
wenn währen der Ausführung eine neue Clk-Flanke kommt?, arbeitet der 
Prozess seine code bis Ende oder bricht er seine Arbeit ab und startet 
einfach neu?

Vielen Dank

von dadaaa (Gast)


Lesenswert?

Ein FPGA hat keine wirkliche Ausführung, die linear abgearbeitet wird 
und "zu Ende gearbeitet" oder "abgebrochen" werden könnte... irgendwann 
hauen die Gatterlaufzeiten etc nicht mehr hin und er macht Murks, weil 
er die Zustände nicht mehr stabil erreichen kann. Die Synthese sollte 
dir aber zumindest so grob sagen wie schnell das Design laufen kann.

von Christian R. (supachris)


Lesenswert?

Im FPGA gibts erst mal nur FlipFlops. Ein Prozess, der auf einen CLK 
sensitiv ist, ist nix weiter als ein oder mehrere FlipFlops, die mit dem 
CLK laufen. Wie schnell sowas maximal sein kann, hängt vom Baustein ab 
(steht im Datenblatt) und grob gesagt von der Anzahl der logischen 
Verknüpfungen vor dem FlipFlop.

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


Lesenswert?

Ein VHDL-Prozess wird immer in der theoretischen NULL abgearbeitet. In 
der Praxis ist diese Zeit allerdings größer Null und wird durch 3 
Komponenten bestimmt:
1a: Das Flipflop braucht eine bestimmte Zeit vor den Takt in der die 
Daten stabil anliegen müssen (Setup-Zeit).
1b: Nach dam Takt braucht das FF eine (ziemlich kurze) Zeit um die neuen 
Daten an den Ausgang durchzugeben.
2: Die Verdrahtung zum nächsten Flipflop bzw. Logikelement (LUT) und 
auch zwischen mehreren LUTs hat eine Laufzeit.
3: Die Logik hat eine gewisse Durchlaufzeit.
Die Summe dieser Zeiten bestimmt die maximale Taktfrequenz.

Die Zeiten aus 2 und 3 werden durch deine (Prozess-)Beschreibung 
bestimmt. Ein umständlich geschriebener Prozess wird mehr Logik und 
Verdrahtung brauchen und deshalb langsamer sein.

dadaaa schrieb:
> Die Synthese sollte
> dir aber zumindest so grob sagen wie schnell das Design laufen kann.
Das ist der falsche Weg...
ICH sage der Toolchain mit Timing-Constraints welche Frequenz das 
Design haben muss. Und wenns nicht klappt, sagen mir die Tools, wo es 
klemmt. Mit der statischen Timinganalyse finde ich dann den 
kritischen Pfad heraus und kann (falls möglich) die Beschreibung oder 
die Implementierungsstrategie anders aufsetzen.

FPGA Anfänger schrieb im Beitrag #2233654:
> - Ein Prozess hat ein clock in seiner sensitivity list, was passiert
> wenn währen der Ausführung eine neue Clk-Flanke kommt?
Dann ist dein Design zu umständlich impelentiert, das FPGA zu langsam 
oder deine Denkweise falsch... :-o
> arbeitet der Prozess seine code bis Ende oder bricht er seine Arbeit
> ab und startet einfach neu?
Ein VHDL-Prozess wird nicht "abgearbeitet", sondern in Logikelemente 
(LUTs) umgeformt. Es wird auch nicht erst 1 Prozess ausgeführt und dann 
der andere, sondern die Porzesse leigen alle gleichzeitig räumlich 
getrennt im FPGA (im uC sind Funtkionen zeitlich getrennt: es wird immer 
nur 1 Funtkion ausgeführt!!!).
> (z.B. bei Pics: fcy = fsys/2 oder fsys/4).
Vergiss Mikrocontroller und C oder Assembler oder sonstwas  am besten 
gleich KOMPLETT! Du brauchst eine ganz andere DENKWEISE...

von Schröckel (Gast)


Lesenswert?

Lothar, immer wieder interessant, dass Du noch die Energy aufbringst, 
Anfängern zu antworten.

Ich linke schon seit Langem nur noch das hiesige FPGA-WIKI.

Da steht das nämlich alles drin.

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


Lesenswert?

Schröckel schrieb:
> das hiesige FPGA-WIKI.
Das hat aber nicht unmittelbar mit VHDL zu tun. Und ich meine, die 
eigentliche Frage würde dort nicht beantwortet. Und auch das "warum?" 
für die Begrenzung der Geschwindigkeit fehlt.

> ... dass Du noch die Energy aufbringst, Anfängern zu antworten.
Die sind am leichtesten zu beeindrucken... ;-)

von Christian R. (supachris)


Lesenswert?

Lothar Miller schrieb:
> Die sind am leichtesten zu beeindrucken... ;-)

Aber leider sind das auch die, die gleich die größten Designs angehen 
wollen.
Interessanterweise denken die meisten Anfänger, ein FPGA ist ein µC nur 
in schnell. Wo lernt man sowas eigentlich?

Ich bin ja der Meinung, ein Anfänger sollte erst mal ein CPLD/FPGA 
Design im Schematic Editor machen. Dann kommt man gar nicht erst auf so 
blöde Idee, wie For-"Schleifen" und 2-Clock-FlipFlips....
Wenn man das verinnerlicht hat, dann VHDL/Verilog. So hab ich das 
gelernt und bin sehr gut damit gefahren.

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


Lesenswert?

Christian R. schrieb:
> Ich bin ja der Meinung, ein Anfänger sollte erst mal ein CPLD/FPGA
> Design im Schematic Editor machen. Dann kommt man gar nicht erst auf so
> blöde Idee, wie For-"Schleifen" und 2-Clock-FlipFlips....
> Wenn man das verinnerlicht hat, dann VHDL/Verilog. So hab ich das
> gelernt und bin sehr gut damit gefahren.
Ich habe den Schritt mit der Schaltplaneingabe für CPLDs/FPGAs 
ausgelassen und bin von den TTL/CMOS Bausteinen direkt nach VHDL. Aber 
prinzipiell war die Vorgehensweise gleich: erst mal das Denken in Logik 
und Flipflops lernen!

Christian R. schrieb:
> 2-Clock-FlipFlips.
:-)

Christian R. schrieb:
> Dann kommt man gar nicht erst auf so blöde Idee,
> wie For-"Schleifen" und 2-Clock-FlipFlips.
Das passiert gern, wenn man einfach nur unreflektiert und abstrakt VHDL 
lernt. Denn dann meint man auch, man könnte in FPGAs Verzögerungen 
einfach mit after hinschreiben...
Und eine for-Schleife kann in der Simulation durchaus genau so was wie 
auf einem Mikrocontroller machen. Und mit VHDL geht auch ohne weiteres 
ein mehrfach getaktetes FF...

von Anguel S. (anguel)


Lesenswert?

Lothar Miller schrieb:
> Das passiert gern, wenn man einfach nur unreflektiert und abstrakt VHDL
> lernt. Denn dann meint man auch, man könnte in FPGAs Verzögerungen
> einfach mit after hinschreiben...
> Und eine for-Schleife kann in der Simulation durchaus genau so was wie
> auf einem Mikrocontroller machen. Und mit VHDL geht auch ohne weiteres
> ein mehrfach getaktetes FF...

Das ist IMHO ein grundlegendes Problem. Aber daran sind eben nicht die 
Anfänger schuld, die mit der komplexen Materie ohnehin überfordert sind, 
sondern die hardwarefremden VHDL-Bücher, die schlechten und 
praxisentfernten Vorlesungen und selbst die VHDL-Kurse der 
FPGA-Hersteller, die es eigentlich besser wissen sollten. Wenn man nicht 
von Anfang an die Einschränkungen der realen Hardware gelernt hat, 
sondern nur theoretische Sachen simuliert, ist es nachher umso 
schwieriger davon loszukommen. Es gibt meistens keine dummen Schüler, 
nur schlechte Lehrer.

von Christian R. (supachris)


Lesenswert?

Leider hast du recht. An der HTW Dresden wurden uns zum Glück die 
Grundlagen relativ praxisnah beigebracht und von vornherein VHDL als 
HW-Beschreibungssprache vorgestellt. Und auch dass da nix anderes als 
FlipFlops und Gatter dahinter stehen. Dank nochmal an Prof. Feske! 
Wahrscheinlich haben das damals trotzdem die wenigsten verstanden. Nur 
die Praktika mit ABEL und GALs waren aus einer längst vergangenen 
Epoche. Naja, es gibt eben solche und solche.

von Anguel S. (anguel)


Lesenswert?

Christian R. schrieb:
> Leider hast du recht. An der HTW Dresden wurden uns zum Glück die
> Grundlagen relativ praxisnah beigebracht und von vornherein VHDL als
> HW-Beschreibungssprache vorgestellt.

Es gibt sicherlich auch Ausnahmen. Aber jeder Prof darf eben das machen, 
was er will/kann. Da man das vorher als Student nicht beurteilen kann, 
weil man sonst nicht mehr studieren bräuchte, braucht man da eben viel 
Glück, um etwas wirklich praxistaugliches zu lernen. Aber eigentlich 
darf ich hier gar nicht mitreden, weil ich mir alles was mit FPGAs zu 
tun hat selbst beigebracht habe :) Ich ziehe nur parallelen zu der 
Wirtschaftsinformatik an der Uni, die ich studiert habe, und da lernt 
man noch mehr Sachen, die man später für die Praxis nicht braucht. Und 
wenn man sich die Vorlesungen im Netz anschaut und die Beiträge im Forum 
sieht, sieht es wohl mit VHDL ähnlich aus.

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.