Hallo! Mich interessieren FPGA schon seit langen, bis jetzt verlor ich den Spaß an der Geschichte immer nach ein paar Tagen, wenn ich mit VHDL anfangen wollte, weil mir die Sprache einfach nicht liegt. Warum auch immer^^ Jetzt Habe ich vor kurzem dieses Tutorial für Verilog gefunden: http://www.asic-world.com/verilog/veritut.html Das Tutorial finde ich sehr gut und diesmal machts auch richtig Spaß, weil mir Verliog sehr viel enfacher vorkommt, deshalb stell ich mir folgende Frage: Kann man mit Verilog alles "programmieren", was auch mit VHDL möglich wäre? Oder gibt es für beide Sprachen irgendwelche Gebiete, in denen sie bevorzugt verwendet werden? Danke schonmal im Voraus! Gruß Sebbi
Mir ging es genauso. Mit Verilog hat die ganze Sache angefangen Spaß zu machen. Es scheint da einige Fälle zu geben wo Verilog nicht so spezifisch ist wie VHDL und was unter umständen zu Problemen führen kann, aber ich glaube nicht, dass das so ein Beinbruch ist, da auch mit Verilog sehr große Designs gemacht werden. Endlich mal paar Leute hier die Verilog machen :)
Also nach meinem Wissenstand kann man alles mit Verilog und VHDL machen. Da gibt es keine vor oder nachteile. Oft können ich leute mit c-kenntnissen schneller in Verilof einarbeiten. Der Code ist nicht so geschwätzig. Aber keine Angst. Mit Verilog kannst du dem FPGA auch alles sagen was du von ihm willst.
Och da gibt es schon Unterschiede.... Historisch gesehen sind beide Sprache zur Simulation und nicht zur Synthese erfunden worden, also um eine Schaltung bevor sie in Silizum gemeisselt wird auf ihre Korrektheit zu überprüfen. Für die Synthese schrieb man Netzlisten (nimm eine Handvoll Gatter und sage welche Pins miteinander verbunden sind) also der klassiche Gatter-Schaltplan. Wer mal eine statemaschiene per Hand aus FF und optimierten Logik gebaut hat weiss eine Synthese zu schätzen. Nun hatte man die Schaltung doppelt da, für die Simulation in Verilog und für die Fertigung als Schaltplan. (Am rande sei hier ABEL nur als Stichwort genannt). Also machten sich die kluge und faulen Ingenieure ans Werk um per Computer aus Verilog-Texten auch die Fertigungs-Unterlagen (Netzlisten) zu generieren. Und siehe die Verilog Synthese war geboren, nie wieder FSM per Hand in gatter umwandeln. Wieder anderen war Verilog zur Simulation und Dokumentation zu simpel gestrickt. Vielleicht domierte der Wunsch nach gut lesbarer Funktionsbeschreibung, jedenfalls liess das US-Militärministerium VHDL standardisieren, hauptsächlich um damit den Chipschmieden sagen zu können was der Chip können soll. Deshalb ist VHDL so geschwätzig, das Manager die nur einfaches Englisch sprechen die Funktion verstehen. Aber auch hier meldete sich die Faulheit zu Wort: Warum alles zweimal machen. Der selbe VHDL Text der zur Spezifikation, Dokumentation und Simulation dient, sollte auch zur Synthese genutzt werden. Nun ist aber VHDL eben geschwätzig wie ein Manager und unverständlich für eine maschienelle Intelligenz. Also beschränkte man VHDL auf verständliche Konstrukte. Nur schrieb man diese nicht verbindlich fest. Sie wurden auch flexibler je mehr rechenpower der Synthesecomputer bekam. Deshalb muss man VHDL mindestens dreimal lernen. Erstens um die Simulation ans Laufen kriegen. Das kann es besser als Verilog, ratzfatz ist in VHDL ein Algorithmus geschrieben, der überprüft ob die gatter auch das richtige berechnen. Bessonders C-Programmier freuen sich wenn sie VHDL sehen: "Das ist ja alles wie C ohne pointer". Leider sind das die Leutchen, die am längsten für das Zweite Lernen von VHDL brauchen. Nämlich wie schreibe ich Code daß kleine und schnelle Hardware draus wird. Also nix mit (In C nimmt man für Fallunterscheidungen ein Case dafür, also hier auch hier) NeNe da muss ein Muxer hin, oder ein ROM-Feld oder eine Mealy-FSM. Und wer mühselig gelernt hat was nebenläufige und sequentielle Anweisungen in VHDL sind, kann das eigentlich im zweiten schritt vergessen, hier kommt es nur drauf an die Hardware so in VHDL zu umschreiben das die Synthese auch das draus macht. Mit Schritt zwei sind eigentlich alle Ingenieure zufrieden und haben die tausenden Möglichkeiten von VHDL wieder vergessen. Denn beim dritten lernen von VHDL ist es entscheidend wieder wie beim modernen Programmieren zu denken. Wie schreibe ich den Code für wiederverwendbarkeit, wie mache ich ihn einfach testbar, welches Grundschaltung kommt immer wieder vor und sollte als Basisklasse, aehm generische Komponente implementiert werden? Verilog ist da einfacher, da ist Lernen 1 und 2 das selbe (wie frisst es der Simulator und was bekommt der Synthese). Und drei ist kaum möglich. Also lerne Verilog und du kommst fix zu Hardware, lerne VHDL und lerne gleich Test und Verifikation mit. Traditionell domiert In Europa der Entwurf mit VHDL, USA macht mehr in Verilog. Auch für FPGA's hat sich diese Trennung erhalten, aber schwächer. FPGA's werden überwiegend in VHDL beschrieben. So und nun Schluss mit dem Zusammenkürzen von 20 Jahren Digtalentwurf auf die Frage Verilog vs VHDL.
Ok, danke euch allen! Eurer Meinung nach kann ich also ohne schlechtes Gewissen weiter Verilog lernen, ohne bald vor einem unlösbaren Problem zu stehen. Endlich mal was positives^^ "lerne Verilog und du kommst fix zu Hardware" Das ist mir grad recht, da es mir hauptsächlich darum geht, endlich mal mit FPGA´s experimentieren zu können. Also, nochmals Danke! Gruß Sebbi
Hallo zusammen, herrlicher Rückblick von FPGAküchele zu den Entstehungesgeschichten von Verilog und insbesondere von VHDL... ...dazu sei angemerkt, dass das DoD (Department of Defence) der USA vorher schon ADA als Programmiersprache für die Militärobjekte ins Leben gerufen hat... ...und VHDL ist sehr stark an ADA angelehnt...eben geschwätzige Programmiersprache... ;-) Die 3 VHDL Kenntnis-Punkte von FPGAküchele beschränken sich bei mir noch auf 1-2.....der 3.Punkt ist wirklich weitaus schwieriger und vor allem Zeitaufwendiger.....und diese hat man ab und dann nicht... ;-)
Moin.. Wobei VHDL auch noch etwas weiter gefasst ist. Das H für Hardware ist nämlich ernst gemeint, man kann eigentlich jedes Bauteil modelieren, auch die Platine und die analogen Komponenten, und das dann durch den Simulator jagen. Spannend wirds, wenn man die Bits verfolgen kann/darf/muss wie sie von FF zu FF übers Die flitzen umd den sch**** asynchronen TDC zu bedienen. -- Sven Johannes
>man kann eigentlich jedes Bauteil modelieren, >auch die Platine und die analogen Komponenten Da redest Du jetzt aber von VHDL-AMS und nicht vom "normalen" VHDL.
Die Geschwätzigkeit von VHDL ist wirklich kein Thema wenn man (X)Emacs als Editor verwendet. Damit geht die Syntax von alleine und die Tipparbeit beim Instanziieren der Komponenten ist mit ein paar Mouse-Klicks erledigt. Es wird einer Programmiersprache oft als Nachteil angelastet, wenn mehr zu schreiben ist. Normalerweise sollte man aber eh die meiste Zeit in die Entwurfsphase stecken, wenn das Coding dann ein bischen länger dauert, sollte das eigenlich keine Rolle spielen. Meist wird behauptet, daß man mit VHDL weniger Fehler machen kann, weil der Compiler die Zuweisung unterschiedlicher Datentypen zueinander unterbindet. Ich kenne Verilog nicht genau genug, mich hat aber immer gestört, daß ich keinen Weg gefunden habe, ein FF mit asynchronem Reset sauber zu modellieren. Klaus
emacs: Die emacs dateien für den VHDL-mode gibt es unter: http://opensource.ethz.ch/emacs/vhdl-mode.html Der screenshot dort hat zwar IMHO schlechte farben, aber er zeigt schon etliches was Emacs im VHDL-mode komfortabel macht. Dazu kommt beautifier, automat. ergänzung von Signalnamen etc.. und automat. Strukturterganzung. Letzteres meint das man z.B. Signal tippt, dann fragt der emacs nach dem Namen, anschliessend nach dem Typ und ergänzt semicolons etc. selbsständig. Klappt auch für prozesse, entities etc.. Und man kann aus dem emacs heraus kompilieren und sich dann geführt von Fehler zu fehler hangeln. Und Versionskontrolle (CVS) kann direkt genutzt werden,Und Und Und++ Allerdings ist wie bei allen mächtigen tools die Einarbeitungsphase länger. Es lohnt sich aber, emacs schlägt Ultraedit und ander um Längen.
@Klaus Was ist den Falsch mit diesem Codeteil aus dem XST 7.1 Handbuch?:
1 | module flop (C, D, CLR, Q); |
2 | input C, D, CLR; |
3 | output Q; |
4 | reg Q; |
5 | |
6 | always @(negedge C or posedge CLR) |
7 | begin
|
8 | if (CLR) |
9 | Q <= 1b0; |
10 | else
|
11 | Q <= D; |
12 | end
|
13 | |
14 | endmodule
|
@Klaus Mein Ton war ein wenig falsch. Ich wollte eigentlich anfragen ob das funktioniert für was du suchst oder ob es da noch andere Einschränkungen gibt, die ich nicht bedacht habe. Gruß, Alban
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.