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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.