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
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.
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.
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...
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.
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... ;-)
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.
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...
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.
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.
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.