Guten Tag. Kann mir bitte jemand einen Link geben, wo die beiden Sprachen verglichen werden, oder in Kurzform zusammenfassen, was die Unterschiede sind und welche Sprache vorteilhafter ist? Ich blicke da nicht so sehr durch.
Hier unten stehen ein paar Links, vielleicht ist was dabei: http://www.mikrocontroller.net/articles/VHDL Ich habe gehört, Verilog sei in USA bekannter, scheint aber beides etwa gleichwertig zu sein.
Für weiterführende Links kannst du hier schauen: http://www.mikrocontroller.net/articles/Hardwarebeschreibungssprachen Das ist das als wenn du nach dem Unterschied zwischen C und Pascal fragst ;). Ansonsten solltest du dich erstmal nur in eine Sprache einarbeiten (du wirst da so schon genug Probleme haben). Falls du dich in Europa befindest, dann würde ich dir VHDL empfehlen. Ist hier einfach weiter verbreitet.
Das es sich um unterschiedliche Sprachen handelt, ist mir schon klar :) Habe mich bloss gewundert, als ich auf Xilinx-page Verilog Projekte gesehen habe. Das hat mich verwirrt, da für mich zum FPGA -> VHDL gehört. Und deswegen kam die Frage auf. Aber wenn die Aussagen vom Christoph Kessler stimmen soll, hat es sich für mich erledigt :)
VHDL und Verilog 2001 nehmen sich von der Mächtigkeit her nichts. Verilog hat (genau wie VHDL) eine ältere (1995) und eine jüngere (2001) Version, von VHDL wird inziwschen fast nur noch die 1993er benutzt. Problem ist manchmal, dass manche Tools nur Verilog 95 unterstützen, was nicht ganz so komfortabel in der Beschreibung ist. In Verilog (2001) lässt sich gegenüber VHDL vieles kürzer (vom reinen Quellcode her) beschreiben, damit allerdings auch kryptischer und für Anfänger etwas unübersichtlicher. VHDL halte ich für etwas sauberer, in Verilog muss man halt manchmal etwas mehr aufpassen, was man macht. Ein nettes Feature von VHDL ist die Typendefinition, welche Verilog nicht bietet (diese Typen sind allerdings natürlich real in Hardware unnötig aber machen das ganze übersichtlicher). Verilog ist auf dem amerikanischen und japanischen Sektor mehr verbreitet, VHDL in Europa. Amerikanische Firmen wie AMD mit Firmen in Deutschland beschreiben ihre Hardware auch hierzulande mit Verilog. Wenn man sich einmal in eine Hardwarebeschreibungssprache reingedacht hat, ist der Umstieg auf die andere eigentlich nicht so schwer.
So, habe gerade auch einmal mein CPLD-Evalboard ausgepackt und nach einem längeren Downloads des WebPacks wollte ich loslegen. Schnell ein Projekt angelegt und siehe da, was nimmt man nun, Verilog oder VHDL? Wenn ich die Informationen hier auf dieser Seite richtig verstanden habe, ist VHDL aus Verilog entstanden. Dann ist VHDL die neuere Geschichte? Ist das ganze abwärtskompatibel? Ähneln sich die Sprachen? Was kann man mit dem einen, was man mit dem anderen nicht kann? Ich habe im Netz einen Vergleich gefunden, werde aber nicht wirklich schlau daraus. Bis jetzt habe ich mir noch nicht mit CPLDs bzw. FPGAs beschäftigt, habe aber beides hier als Evalboards herumliegen und wollte das nun auch einmal nutzen. Die Frage ist, was sollte ich nun verwenden und weshalb? Ich würde mich durchaus als in der Lage sehen, das, was ich umsetzen möchte, auch komplett mit CMOS bzw. TTL-Bausteinen aufzubauen (mit genug Zeit wohl auch eine komplette CPU, wenn denn genug Platz und Geld da wäre); ich möchte also kein 'Basic' für CPLDs/FPGA, sondern schon eher C oder Assembler. Der Vergleich hinkt aber wahrscheinlich. Noch eine paar andere dummen Fragen (zu meiner Schande muss ich gestehen, dass diese mir nun gerade spontan eingefallen sind und ich dafür nicht die Suchfunktion bemüht habe, aber mglw. sind die Fragen in einem Satz beantwortet): - Haben CPLDs/FPGAs auch interne Taktquellen oder wird dafür ausschließlich ein externer Takt verwendet? - Werden die (nennen wir es einmal) Programme per JTAG permanent im Baustein gespeichert oder müssen diese nach jedem Reset erneut geladen werden? Falls diese extern geladen werden müssen, wie würde das in einer fertigen Schaltung realisiert (also z.B. mit externem Flash -- dafür müsste ich dann wohl bestimmte Pins vorsehen oder müsste man das mit einer Art festem JTAG machen? --- Dafür gibt es aber bestimmt AppNotes). Falls permament gespeichert: Ich habe jetzt auf Anhieb keine Chips gefunden, bei denen zwischen OTP und mehrfachem Beschreiben unterschieden wird. Vermutlich können die dann prinzipbedingt alle entweder einfach oder mehrfach (vermutlich mehrfach) beschrieben werden. - Auf den ersten Blick sieht es so aus, als wenn diese Bausteine häufig mit sehr geringen Spannungen arbeiten. Vermutlich gibt es dann auch einen ganzen Haufen bidirektionaler Pegelwandler für diese Pegel (z.B. auf TTL bzw. LVTTL) und Geschwindigkeiten. Wer stellt so etwas her (also auch mit durchaus vielen Ports) bzw. was hat sich da etabliert? Ich hoffe, Euch mit diesen letzteren Fragen nicht zu belästigen, da ich mir denken kann, dass diese schon etliche Male gestellt wurden.
@ Florian Demski (code-wiz) >Schnell ein Projekt angelegt und siehe da, was nimmt man nun, Verilog >oder VHDL? Wenn ich die Informationen hier auf dieser Seite richtig Das was man kann. >verstanden habe, ist VHDL aus Verilog entstanden. Dann ist VHDL die Mehr oder weniger. >neuere Geschichte? Jain. Geht zurück bis 1983 und davor. > Ist das ganze abwärtskompatibel? Nein. > Ähneln sich die Sprachen? Ja. > Was kann man mit dem einen, was man mit dem anderen nicht >kann? Einiges. VHDL bietet AFAIK mehr Möglichkeiten um regelmässige Hardwarestrukturen zu beschreiben. > Ich habe im Netz einen Vergleich gefunden, werde aber nicht >wirklich schlau daraus. Bis jetzt habe ich mir noch nicht mit CPLDs bzw. >FPGAs beschäftigt, habe aber beides hier als Evalboards herumliegen und >wollte das nun auch einmal nutzen. In Europa ist VHDL weit verbreitet, in Nordamerika Verilog. >Die Frage ist, was sollte ich nun verwenden und weshalb? Ich würde VHDL empfehlen. >Ich würde mich durchaus als in der Lage sehen, das, was ich umsetzen >möchte, auch komplett mit CMOS bzw. TTL-Bausteinen aufzubauen (mit genug >Zeit wohl auch eine komplette CPU, wenn denn genug Platz und Geld da >wäre); ich möchte also kein 'Basic' für CPLDs/FPGA, sondern schon eher C >oder Assembler. Der Vergleich hinkt aber wahrscheinlich. Sowohl Verilog als auch VHDL kann man auf "Assemblerebene" als auch "C-Ebene" benutzen. >- Haben CPLDs/FPGAs auch interne Taktquellen oder wird dafür >ausschließlich ein externer Takt verwendet? Nur exteren Taktquellen. Irgendwelche wilden Ringoszillatoren sollte man nicht bauen. >- Werden die (nennen wir es einmal) Programme per JTAG permanent im >Baustein gespeichert oder müssen diese nach jedem Reset erneut geladen >werden? CPLDs sind nonvolatile, die Programmierung bleibt nach einem Power-Down erhalten. Die meisten FPGAs sind volatile, weil auf SRAM basierend. Dort muss nach jedem Power-up die Konfigutration neu geladen werden. Entweder über einen angeschlossenen Konfigurationsspeicher oder per PC und JTAG Adapter. >Falls permament gespeichert: Ich habe jetzt auf Anhieb keine Chips >gefunden, bei denen zwischen OTP und mehrfachem Beschreiben >unterschieden wird. Vermutlich können die dann prinzipbedingt alle >entweder einfach oder mehrfach (vermutlich mehrfach) beschrieben werden. OTPs gibt es bei CPLDs nicht (mehr?). Alles FLASH/EEPROM basierend. >- Auf den ersten Blick sieht es so aus, als wenn diese Bausteine häufig >mit sehr geringen Spannungen arbeiten. Vermutlich gibt es dann auch Im Kern ja, bis runter auf 1.2V. Die IOs arbeiten mit 1.5 ... 3.3V. Die neueren Baustein vertragen KEINE 5V mehr an den IOs, dort müssen dann Pegelwandler her. Etwas "ältere" FPGAs sind dort von Vorteil, z.B. Spartan-II von Xilinx. >Ich hoffe, Euch mit diesen letzteren Fragen nicht zu belästigen, da ich Solche Fragen sind der Sinn dieses Forums. Da muss man sich nicht entschuldigen. MfG Falk
> Einiges. VHDL bietet AFAIK mehr Möglichkeiten um regelmässige > Hardwarestrukturen zu beschreiben. Die Wiederverwendbarkeit von Code ist natürlich ein wichtiger Faktor. Inwiefern existieren denn dort gravierende Unterschiede? Wie gesagt, mit der Syntax und der Grammatik habe ich mich bis jetzt noch nicht auseinandergesetzt. Vermutlich wird es doch aber in beiden Sprachen so sein, dass man das Rad nicht mehrmals erfinden muss und z.B. den tollen Interface-Block, den man entwickelt hat, auch in anderen Projekten verwenden kann. > In Europa ist VHDL weit verbreitet, in Nordamerika Verilog. > Ich würde VHDL empfehlen. Das ist also eine Glaubenssache. Mit dem Ergebnis hat das vermutlich nichts zu tun, also das 'kompilierte Programm' aus VHDL oder Verilog wird wohl eher nicht besser oder schlechter sein, da man ja so oder so das Laufzeitverhalten selbt beeinflusst (stelle ich mir zumindest vor). > CPLDs sind nonvolatile, die Programmierung bleibt nach einem Power-Down > erhalten. Die meisten FPGAs sind volatile, weil auf SRAM basierend. Dort > muss nach jedem Power-up die Konfigutration neu geladen werden. Entweder > über einen angeschlossenen Konfigurationsspeicher oder per PC und JTAG > Adapter. Den für das benutzen des externen Konfigurationsspeichers notwendigen Code und das notwendige Interface werden die FPGAs ja dann schon eingeimpft haben. Werden Die Daten aus dem externen Speicher einmalig eingelesen (beim Start) oder permanent während der Ausführung? Falls das beim Start passiert, wie lange dauert das dann, bis der FPGA nach dem Reset konfiguriert ist und werden bis dahin nicht ggf. schon irgendwelche Zustände an den Pins anliegen? Falls das permanent passiert, hat dann nicht auch die Geschwindigkeit des Speichers einen Einfluss auf das Laufzeitverhalten des FPGAs? Wenn ich jetzt irgendeinen Flashbaustein dafür nehme, frage ich mich, ob ich dann tatsächlich noch mit 100 MHz oder mehr an meinem FPGA arbeiten kann. Ich sehe gerade, dass Xilinx spezielle Speicher dafür anbietet, die allerdings eine Geschwindigkeit von 'nur' 33 MHz aufweisen. So nochmal parallel das Datenblatt überflogen. Das scheinen wohl serielle EPROMS zu sein, die beim Start einmalig eingelesen werden. Da steht für X3CS1000 eine Dateigröße von 3,233,488 Bytes und bei den Timings stand, dass sogar nur 20 MHz verwendet werden. Überschlägig sind das also 3233488 * 8 / 20E6 Hz ~ 1,3s. Der Wert erscheint mir ein wenig hoch. Also habe ich die Frage zumindest zum Teil schon beantwortet. > Im Kern ja, bis runter auf 1.2V. Die IOs arbeiten mit 1.5 ... 3.3V. > Die neueren Baustein vertragen KEINE 5V mehr an den IOs, dort müssen > dann Pegelwandler her. Etwas "ältere" FPGAs sind dort von Vorteil, z.B. > Spartan-II von Xilinx. Was wären denn die gängigen Pegelwandler, die - sagen wir mal - 32 bidirektionale Ports zur Verfügung stellen und mit den Frequenzen auch klarkommen? Klar, zum Basteln kann man sich auch mit Spannungsteilern oder FETs behelfen, aber das ist bei etlichen Ports schon aufwändiger, v.a. wenn man bidirektional arbeiten möchte. > Solche Fragen sind der Sinn dieses Forums. Da muss man sich nicht > entschuldigen. Ich sehe das in den anderen Foren hier häufiger, wie schnell bei der x. Frage zum Thema Widerstandberechnung für LEDs oder Tastenabfragung mit einem AVR gerne mit einer leichten Überheblichkeit immer wieder an die Suchfunktion verwiesen wird. Da für das Thema CPLD/FPGA meine Fragen sicherlich mit solchen 'Anfängerfragen' beim Thema Mikrocontroller bzw. Elektronik zu vergleichen sind, wollte ich eigentlich nur einen 'Rüffel' diesbezüglich vermeiden.
@ Florian Demski (code-wiz) >Die Wiederverwendbarkeit von Code ist natürlich ein wichtiger Faktor. Der ist mit beiden Sprachen gegeben. Ich meinte was anderes. >Inwiefern existieren denn dort gravierende Unterschiede? Wie gesagt, mit AFAIK keine. >> In Europa ist VHDL weit verbreitet, in Nordamerika Verilog. >> Ich würde VHDL empfehlen. >Das ist also eine Glaubenssache. Ja. > Mit dem Ergebnis hat das vermutlich nichts zu tun, also das 'kompilierte >Programm' aus VHDL oder Verilog wird wohl eher nicht besser oder >schlechter sein, da man ja so oder so das Laufzeitverhalten selbt >beeinflusst (stelle ich mir zumindest vor). Ja. >Den für das benutzen des externen Konfigurationsspeichers notwendigen >ode und das notwendige Interface werden die FPGAs ja dann schon >eingeimpft haben. Werden Die Daten aus dem externen Speicher einmalig Ja, da braucht man gar nix machen, nur einfach anschliessen, fertig. >eingelesen (beim Start) oder permanent während der Ausführung? Falls das Einmal beim Start. >beim Start passiert, wie lange dauert das dann, bis der FPGA nach dem >Reset konfiguriert ist und werden bis dahin nicht ggf. schon >irgendwelche Zustände an den Pins anliegen? Falls das permanent Je nach Typ und Anbindung (1 Bit seriell oder 8 Bit parallel) zwischn 1...100ms. Hmmm mal rechnen. Ein kleiner FPGA hat sagen wir mal 300.000 Bit Konfigurationsdaten. Bei 10 MHz und seriellem Anschluss dauert das dann ~30ms. p>assiert, hat dann nicht auch die Geschwindigkeit des Speichers einen >Einfluss auf das Laufzeitverhalten des FPGAs? Wenn ich jetzt irgendeinen Nein! >Flashbaustein dafür nehme, frage ich mich, ob ich dann tatsächlich noch >mit 100 MHz oder mehr an meinem FPGA arbeiten kann. Ich sehe gerade, >dass Xilinx spezielle Speicher dafür anbietet, die allerdings eine >Geschwindigkeit von 'nur' 33 MHz aufweisen. Nicht alles in einen Topf werfen! Die geschwindigkeit des Konfigurationsspeicher hat mit der Geschwindigkeit des FPGA-Designs NICHTS zu tun. Du kannst das FPGa auch mit 100Hz konfigurieren und dann einen 200 MHz Zähler laufen lassen. >So nochmal parallel das Datenblatt überflogen. Das scheinen wohl >serielle EPROMS zu sein, die beim Start einmalig eingelesen werden. Da Ja. >steht für X3CS1000 eine Dateigröße von 3,233,488 Bytes und bei den Das sind sicher BIT, nicht BYTE! >Timings stand, dass sogar nur 20 MHz verwendet werden. Überschlägig sind >das also 3233488 * 8 / 20E6 Hz ~ 1,3s. Der Wert erscheint mir ein wenig >hoch. Richtig, die Zeit ist um den Faktor 8 geringer, gerade mal ~160ms. >Was wären denn die gängigen Pegelwandler, die - sagen wir mal - 32 >bidirektionale Ports zur Verfügung stellen und mit den Frequenzen auch >klarkommen? Klar, zum Basteln kann man sich auch mit Spannungsteilern Hab ich im Moment nicht auf Lager. Pegelwandler >Ich sehe das in den anderen Foren hier häufiger, wie schnell bei der x. >Frage zum Thema Widerstandberechnung für LEDs oder Tastenabfragung mit >einem AVR gerne mit einer leichten Überheblichkeit immer wieder an die >Suchfunktion verwiesen wird. Da für das Thema CPLD/FPGA meine Fragen ;-) Naja, irgendwann ist man auch mal genervt. MFG Falk
VHDL ist furchtbar geschwätzig. Manchmal ist das gut, weil es Fehler verhindert, manchmal nervt es einfach nur. Man muss die Schnittstelle eines Untermoduls drei mal beschreiben, einmal im eigentlichen Modul, und dann wenn man es verwenden will einmal bei der Deklaration und nochmal bei der Instanziierung. Und natürlich ist die Syntax jedes Mal subtil anders, so dass Cut & Paste nicht so ohne weiteres funktioniert. Auch sonst ist die Syntax wenig konsistent ("end case" aber "end entityname"?). Alles in allem ist VHDL verglichen mit modernen Programmiersprachen nicht sehr ausdrucksstark, aber trotzdem sehr komplex. Aber was will man anderes erwarten, bei einer Sprache die nach Militär-Spezifikation entwickelt wurde. Verilog habe ich nicht ausprobiert, werde trotz allem erst mal bei VHDL bleiben.
Soweit ich weiss, kannst du auch einem Case-Konstrukt einen Namen verpassen, zB:
1 | Name : case ... |
2 | ...
|
3 | end case Name; |
Genauso funktioniert auch
1 | entity Name is |
2 | ...
|
3 | end entity Name; |
Das mit dem Entity geht seit in VHDL 93. Das Case sieht komisch aus; Name wäre dann ein Label, kein eigentlicher Teil des Statements...
Ich würde als Anfänger Verlog nehmen. Habe selbst mit VHDL angefangen, da kann man aber viel besser als in Verilog riesige Strukturen in einer Zeile aufbauen, vor allem, wenn man aus der PC Programmierecke kommt. Das Dumme ist, dass man dann alles simuliert und verifiziert hat und denn merkt, dass der Gatecount explodiert. Bei Verilog muss man für solche Strukturen schon mal ein bischen mehr schreiben, da merkt man eher, was man anrichtet. Das gilt auch für die ganzen Typenstrukturen etc. die man in VHDL machen kann, die dann aber doch auf ganz normale Einsen und Nullen umgesetzt werden müssen. Ausserdem fand ich das ganze Aufsetzen bei VHDL (mit den Bibliotheken und was es alles gibt) als Anfänger ziemlich bescheiden. Ist zwar toll, wenn es an grosse Projekte geht, aber bis man das erst am Laufen hat... Gruss Axel
@ Axel (Gast) >Das Dumme ist, dass man dann alles simuliert und verifiziert hat und >denn merkt, dass der Gatecount explodiert. ??? >Bei Verilog muss man für solche Strukturen schon mal ein bischen mehr >schreiben, da merkt man eher, was man anrichtet. Naja. >Das gilt auch für die ganzen Typenstrukturen etc. die man in VHDL machen >kann, die dann aber doch auf ganz normale Einsen und Nullen umgesetzt >werden müssen. KANN, man muss aber nicht. Schon gar nicht als Anfänger. >Ausserdem fand ich das ganze Aufsetzen bei VHDL (mit den Bibliotheken >und was es alles gibt) als Anfänger ziemlich bescheiden. Ist zwar toll, >wenn es an grosse Projekte geht, aber bis man das erst am Laufen hat... Was gibt es denn da "aufzusetzen"? Die drei Zeilen für die Nutzung der Standardbibliotheken sind in den Templates schon drin. Das wars. MFG Falk
Ich bevorzuge VHDL, da es für einen Hochprachen-Programierer am geeignetesten ist. Also die Fähigkeit eine Problemstellung strukturiert mit eigenen Datenstrukturen und modularisierten Programblöcken und das mit sprechenden Bezeichnern zu beschreiben. Wer also Sprachen wie PASCAL, ADA, COBOL kann wird meiner Meinung nach mit VHDL besser liegen. Und gerade die "Gesprächigkeit" einer Sprache ist heute eher ein Indiz für ihre Modernität. Unter Gesprächigkeit verstehe ich das man den Source eher wie ein Buch lesen kann, statt wie zb. in C,PHP,ASM oder Verilog üblich eine Kryptische Formel vor sich zu sehen. Der Vergleich einer Hardware-Beschreibungssprache mit herkömmlichen Programmiersprachen hinkt zwar etwas, aber im Syntaktischen/Strukturellen Bereich kann man beides sehr wohl vergleichen. Also ich bin ein "gelernter" PASCAL'ianer und bin mit der Syntax im VHDL sofort klargekommen. Verilog ist auch nicht so problemeatisch wenn man eh als Programmierer sich in Boolscher Algebra und formaler Syntax auskennt. Allerdings ist letzeres eben nicht mehr der Standard. Viele Neulinge in der Programmierung haben gerade damit ihre Schwäche. Gefühlsmäßig würde ich mal behaupten das Verilog durch seine Syntax eher zu unstrukturierter Programmierung verleitet, sprich so ähnlich wie BASIC Spaghetticode. VHDL dagegen "zwingt" einen eher zu strukturierter Programmierung, besonders eben auch weil deren Standardbibliotheken es einem vormachen. Ich stimme aber auch der Aussage zu das VHDL in vielen Belangen der Syntax inkonsistent ist. Zb. verschiedene Zuweisungsoperatoren jenachdem ob man eine CASE, ein Signal oder eine Variable anspricht. Das kannte ich in der Form von keiner anderen Sprache. Gruß Hagen
"Verilog ist auch nicht so problemeatisch wenn man eh als Programmierer sich in Boolscher Algebra und formaler Syntax auskennt. Allerdings ist letzeres eben nicht mehr der Standard. Viele Neulinge in der Programmierung haben gerade damit ihre Schwäche." Ja, und das ist genau das Problem. Denn VHDL umgeht das tatsächlich sehr gut, was dazu führt, dass die Leute im Prinzip PC Programme in VHDL schreiben. Nur, daß bei einem PC Programm ein paar Integeradditionen in einer Schleife nichts kosten, während das in VHDL schnell mal ein paar tausend Gatter extra sind. Die sind mit ein bischen Nachdenken in boolscher Algebra oft nicht nötig und die Compiler könnnen das auch nicht hinoptimieren, weil sie die Idee dahinter nicht verstehen. Das gilt im Prinzip natürlich auch für Verilog, nur, wie Du schon richtig schriebst, führt Verilog eher dazu, mal in diese Richtung zu denken, während VHDL da mit seinem mächtigen Sprachumfang eher zur Faulheit erzieht. Ich have lange Zeit Diplomanten betreut, die mit VHDL/Verilog ihre ersten "produktiven" Erfahrungen gemacht haben. Die haben sich zwar in VHDL schneller eingearbeitet, aber sinnvolle Resultate (im Sinne von tatsächlich in Hardware umsetzbar) gab es schneller in Verilog. Und im Gegensatz zum PC, wo man zur Not auch mal swappen kann, muss ein grösserer FPGA/ASIC meist teuer bezahlt werden. Gruss Axel
Naja, der Unterschied zwischen einer HW-Beschreibungssprache und einer generell auf sequientielle Algorithmen bezogenene Programmiersprache sollte schon klar sein. Wenn man sich als erfahrener Programmierer das immer vor Augen hält, dann meine ich ist man in VHDL schneller am Ziel. Ok, es hängt auch entscheidend von der Vorbildung des Programieres ab. Bei mir warens halt schon 15 Jahre an Erfahrung auf PC und den bekannten Spielkonsolen der 80'er + PASCAL + COBOL in der Lehre. Syntaktisch ähneln die sich ja eher VHDL als verilog. Ich habe bemerkt das man in VHDL oder Verilog für das Lösen eines Problemes meistens viel mehr an Sourcen schreiben muß, als zb. in C auf einem PC. Das führt nun auch dazu das die Quellen immer umfangreicher werden und somit die Wartungskosten steigen. Um das zu reduzieren muß man strukturierten und lesbaren Source schreiben. Und da meine ich ist VHDL besser als Verilog. Damals als ich vor der Entscheidung stand suchte ich mir im Netz all die Projekte raus die ich interessant fand, egal ob in VHDL oder Verilog. Da das meistens auch sehr umfangreiche Projekte waren, zb. 8Bit AVR auf FPGA usw. fand ich mehr interessante VHDL Sources (die auch liefen) als Verilog Beispiele. Naja, also musste ich VHDL lernen statt Verilog, ziemlich einfach die Entscheidung. Ein weiterer Punkt war das ich zwar gut englisch kann aber denoch als Lernunterlagen eine deutschsprachige Referenz bevorzuge. Nun für VHDL gibts super Lernmaterial als PDFs in deutsch, für Verilog sucht man da schon länger (ich habe noch nichts vergleichbares gefunden) Gruß Hagen PS: und bleibt noch der rein subjektive aspekt das Verilog gerne von den Amis und VHDL von den Europäern benutzt wird. Nur ein kleiner unwichtiger Punkt aber eventuell ein wichtiger für eine Person die sich daraus was macht und Europäer ist ;)
wär schön, wenn du mal ein paar links zu solchen chdl lernunterlagen posten könntest, ich bin nämlich noch ganz am anfang von VHDL, und hab immernochnicht DAS für mich geeignete tut/handbuch gefunden
vielen dank! hab jetzt die einführung durch, und bin schon in der lage einfache module zu schreiben, das ding gefällt mir ;) andere tuts hab ich schon durch und weis immernochnicht was die mir da erzählen wollten
Ging mir teilweise auch so. Eine gute grundsätzliche Beschreibung hat ihren Wert. Gruß Hage
Hallo zusammen, der Thread hier ist schon etwas älter, wie sieht es mehr als 10 Jahre später aus? Ist VHDL in Europa immer noch mehr verbreitet oder hat sich hier Verilog durchgesetzt? Würde gerne mit einer der Sprachen einsteigen welche würdet ihr mir empfehlen? Generelle kann man ja mit deinen alles machen. Würde gerne mit einem Altera MAX10 einsteigen.
DNS schrieb: > Hallo zusammen, der Thread hier ist schon etwas älter, wie sieht es mehr > als 10 Jahre später aus? Unverändert > Ist VHDL in Europa immer noch mehr verbreitet oder hat sich hier Verilog > durchgesetzt? Ja > Würde gerne mit einer der Sprachen einsteigen welche würdet ihr mir > empfehlen? Zum Einstieg lern Digitale Schaltungstechnik, dann modellier das in Verilog. Anschliessend überlegst du dir ne gescheite Testbench, die schreibste in VHDL. > Generelle kann man ja mit deinen alles machen. Das ist generell falsch.
DNS schrieb: > Ist VHDL in Europa immer noch mehr verbreitet oder hat sich hier Verilog > durchgesetzt? Im FPGA-Bereich (zumindest für kleine und mittelgroße Designs) wird vorwiegend VHDL verwendet, im ASIC-Design SystemVerilog wegen der ausgeprägten Verifikationsmethoden (Obejektorientert, UVM usw). Verilog (ohne System-) ist ziemlich weg vom Fenster, oder zumindest auf dem absteigenden Ast. Im Vergleich Verilog<>VHDL hat VHDL klar die Nase vorne seit einigen Jahren (bei Systemverilog sieht es wieder etwas anders aus, obwohl VHDL hier auch aufholt). Für den FPGA-Einstieg würde ich dir VHDL empfehlen, da gibt es eine größere Community als für SV. Wenn du mal das Prinzip einer HDL verstanden hast (und keine VHDL-Programme mehr schreibst sondern VHDL-Designs), dann kannst du relativ leicht auf eine der Verilog-Sprachen umsteigen.
Verilog weg vom Fenster?? Ggf. in Europa... nicht im Rest der Welt... Wäre mal meine Behauptung. Zumal VHDL deutlich schlechter zu erlernen ist als Verilog (ist mir viel zu viel BLABLABLA um etwas einfaches abzubilden..).. Finde ich perönlich.
No Y. schrieb: > Wäre mal meine Behauptung. > Finde ich perönlich. Kann man so sehen. > Zumal VHDL deutlich schlechter zu erlernen ist als Verilog (ist mir viel > zu viel BLABLABLA um etwas einfaches abzubilden..) http://www.lothar-miller.de/s9y/archives/88-VHDL-vs.-Verilog-am-Beispiel-einer-Stoppuhr.html DNS schrieb: > Ist VHDL in Europa immer noch mehr verbreitet oder hat sich hier Verilog > durchgesetzt? Die Antwort auf diese Frage ist uninteressant. Wenn du Verilog machen willst, dann mach Verilog. Mach Verilog aber NICHT deshalb, weil es so sehr nach dem dir bekannten C aussieht. Diese Ähnlichkeit ist überaus trügerisch. Denn auch mit Verilog wirst du NICHT programmieren können. > Würde gerne mit einem Altera MAX10 einsteigen. Tu das.
:
Bearbeitet durch Moderator
Beitrag #6737234 wurde von einem Moderator gelöscht.
Noch eine Anmerkung zu dem eigentlichen Groundhog-Day-Thema: In Verilog kann man sich wunderbar (und immer wieder gesehen) mit impliziter Bit-Arithmetik ins Knie schiessen, der Klassiker ist sowas (wenn man das casting per $signed vergisst):
1 | reg [3:0] x; |
2 | reg signed [4:0] y; |
3 | reg signed [5:0] q; |
4 | .. |
5 | |
6 | q <= x + y |
VHDL ist diesbezüglich strenger und viel mächtiger, allerdings verliert sich dieser Vorteil schnell wieder in viel Aerger, wenn die Synthesetools das nicht sauber unterstützen. Leider gibt es auch immer noch einige Hersteller (wie Lattice Semiconductor), die ihre Simulationsmodelle teils nicht in VHDL ausliefern (in der Annahme, dass man einen Mixed-Language-Simulator verwendet). Wie man's dreht und wendet, Verilog sowohl als VHDL sollte man lesen können. Für komplexere Designs wird es mit beiden mühsam, aber mit VHDL lässt sich mehr Ordnung halten, siehe dazu auch die "structured VHDL" Methode nach Gaisler.
No Y. schrieb: > Verilog weg vom Fenster?? Vancouver schrieb: > Verilog (ohne System-) ist ziemlich weg vom Fenster, Halt genau so, wie es Vancouver geschrieben hat. Klassisches Verilog ist auf dem absteigenden Ast. SystemVerilog ist das, was man heute lernen und nutzen sollte. Es gibt aber viele Leute, die beides in den gleichen Topf werfen. Sollte man aus meiner Sicht nicht machen, weil ich schon gerne wüsste, das ein Code SystemVerilog ist und ich entsprechend auch ein SystemVerilog fähiges Tool brauche. Es ist schon fast so, als würde man C und C++ in einen Topf werfen. Es ist auch guter Stil, wenn man im Header von VHDL Dateien schreibt, ob es VHDL 93 oder 2008 ist.
Christoph Z. schrieb: > SystemVerilog ist das, was man heute lernen und nutzen sollte. Ja. Es gibt vom Lernaspekt überhaupt keinen Grund, sich auf die Untermenge von Verilog zu beschränken, denn: > Es ist schon fast so, als würde man C und C++ in einen Topf werfen. Der nicht zu vernachlässigende Unterschied ist, dass mit dem Standard IEEE 1800-2009 ein gemeinsamer Sprachstandard für Verilog und SystemVerilog geschaffen wurde. Letzteres ist also vor zwölf Jahren zum offiziellen Nachfolger von Verilog (IEEE 1364) gekürt worden. Mit den Design-Features von SystemVerilog hat man für den Schaltungsentwurf alle Möglichkeiten die auch VHDL bietet (eher mehr, dafür weniger verschwurbelt), und darüber hinaus noch eine brauchbare Verifikationssprache mit OOP Fähigkeiten.
Fitzebutze schrieb: > Leider gibt es auch immer noch einige Hersteller (wie Lattice > Semiconductor), die ihre Simulationsmodelle teils nicht in VHDL > ausliefern (in der Annahme, dass man einen Mixed-Language-Simulator > verwendet). Immer mehr statt immer noch. Intel liefert neue Cores nur noch in Verilog und auch das Interconnect das deren Platform Designer generiert braucht Verilog. Und bei manchen Cores ist bei Upgrades auch schon VHDL weggefallen.
Interessant... Passt dann aber nicht gerade zu "Verilog ist weg vom Fenster".. Aber mal abgesehen davon. Gibts ne Buchempfehlung für SystemVerilog am liebsten mit praktischen Beispielen mit Intel/Altera? Hab hier diverse Altera Boards (sogar noch aktuelle Cyclones drauf) liegen aber habe lange nichts mehr damit gemacht. In der TH hatten wir VHDL fand das aber so schlimm das ich auf jedenfall mir Verilog aneignen wollte. Aber habe momentan keine Berührungspunkte mehr mit FPGA im Beruf daher Hobby und da ist die Zeit knapp... Wollte mir das Chu Buch für Verilog besorgen weil ich bisher nichts besseres gefunden hatte (Chu VHDL gabs in der TH). Aber wenn ja jetzt Systemverilog angesagt ist.. Halt direkt damit Anfangen? Ah gerade gesehen Chu gibts auch mit Systemverilog und leider Xilinx..hmmm geht bestimmt auch mit Altera...?
No Y. schrieb: > Interessant... Passt dann aber nicht gerade zu "Verilog ist weg vom > Fenster".. Ich muss mich korrigieren, es ist ein Mix aus Verilog und SystemVerilog. Intel fasst das aber bei der Generierung unter Verilog zusammen. No Y. schrieb: > Ah gerade gesehen Chu gibts auch mit Systemverilog und leider > Xilinx..hmmm geht bestimmt auch mit Altera...? SystemVerilog in den Varianten 2005, 2009 und 2012.
Unabhängig von der gewählten Sprache zeichnen sich guten Quelltexte durch die selben Eigenschaften aus: -sinnvolle und klare Strukturierung: bei FPGA beispielsweise: Eingangsbuffer und vorverarbeitung(i.e. edge detect) steuerpath (FSM) ausgangstufe (bufferung) -beschreibende Signalnamen -konsequentes Durchhalten minimaler Styleguide, Formatierung -erläuternde Kommentare zu interface und Funktionen -Revisionsinfo (Author, letzte Änderung, toolchain projekt) im Header -passendes Konzept (typen, verwendete Grundfunktion/Logicelemente) Daher gibt es Autoren, die die Sourcedatei erst mit Kommentarzeilen (als eine Art Implementierungsspec.) befüllen um anschließend die Kommentare in VHDL,Verilog oder what ever zu vollenden. Insofern ist die Frage ob VHDL oder Verilog zweckfrei, ein 'Unkundiger' wird in allen Sprachen scheitern.
Wenn man es als Hobby macht, denke ich, ist die Sprache egal. Wenn man es beruflich macht, kommt es auf die Region an. Ich habe 'schon' bei drei Arbeitgebern mit FPGAs entwickelt und bei allen wurde nur VHDl benutzt. Da war mit Verilog gar nichts. Wenn man ziemlich sicher weiß, dass man in Zukunft zum Beispiel in den USA arbeiten wird, hat entsprechend eher Verilog Vorteile. Am Anfang mochte ich VHDL wegen der Syntax auch nicht, aber man gewöhnt sich daran. Inzwischen stört es mich nicht mehr. Da finde ich eher die Verilogsyntax kryptisch und unübersichtlich. Früher war es genau umgekehrt. Meiner Meinung nach sollte man nicht wegen Vorlieben bei der Syntax eine Sprache auswählen, denn die spielt nach etwas Eingewöhnungszeit keine Rolle mehr. Was ich mal gehört habe ist, dass Verilog tendenziell eher in Richtung Hochsprache geht, während VHDL tendenziell näher an der Hardware dran ist. Aber wenn das überhaupt stimmt, ist das nur marginal.
Dussel schrieb: > Was ich mal gehört habe ist, dass Verilog tendenziell eher in Richtung > Hochsprache geht, während VHDL tendenziell näher an der Hardware dran > ist. Umgekehrt laut dieser Quelle: https://www.fpga4student.com/2017/08/verilog-vs-vhdl-explain-by-example.html
No Y. schrieb: > Chu VHDL gabs in der TH Das war mit das schlechteste VHDL Buch, das je den Weg in meine Finger gefunden hat. Wenn das für Verilog gleich gut ist, dann viel Spaß damit. Dussel schrieb: > Da finde ich eher die Verilogsyntax kryptisch und unübersichtlich. Mir läuft in Verilog zu viel implizit ab. Man "muss einfach wissen", dass das "hinten rum" irgendwo so definiert ist.
Was wäre denn ein gutes Verilog / Systemverilog Buch? Wie gesagt mit Altera Bezug wäre nett aber kein muss. Hab halt dazu ein paar Boards hier. Gerne mit Praxis Orientierten Beispielen: UART, ggf. Filter , mal einen Nios um SPI erweitern oder so..
:
Bearbeitet durch User
No Y. schrieb: > Was wäre denn ein gutes Verilog / Systemverilog Buch? Wie gesagt mit > Altera Bezug wäre nett aber kein muss. Hab halt dazu ein paar Boards > hier. Nimm ein Tutorial bspw.: https://www.intel.com/content/dam/altera-www/global/en_US/uploads/5/5e/BeMicroM10_Embedded_System_Lab.pdf Falls Du dich wunderst das da sowenig Code-beispiele sind - ja das ist bei FPGA Nebensache. Primär muss man verstehen was digitale Schaltungstechnik ist, wie es im jeweiligen FPGA 'innen' aussoeht und wie die jeweilige toolchain funktioniert.
Vielleicht kann google Trends noch dazu beitragen, die Frage nach der Verbreitung zu klären. Da kann man sehen, wie oft die Sprachen so im Vergleich gesucht wurden. Natürlich ist das nur ein Indiz, denn es könnte ja sein, dass eine Sprache mehr Probleme macht als die andere oder dass mehr Anfänger mit einer bestimmten Sprache arbeiten. Deutschland: https://trends.google.de/trends/explore?date=today%205-y&geo=DE&q=vhdl,verilog,systemverilog USA: https://trends.google.de/trends/explore?date=today%205-y&geo=US&q=vhdl,verilog,systemverilog Weltweit: https://trends.google.de/trends/explore?date=today%205-y&q=vhdl,verilog,systemverilog
Markus K. schrieb: > Vielleicht kann google Trends noch dazu beitragen, die Frage nach der > Verbreitung zu klären. Naja, dann kann man auch bei TIOBE nachschlagen (VHDL #42, Verilog irgendwo zwischen 50 und 101): https://www.tiobe.com/tiobe-index/ Oder bem IEEE-Spectrum, bei Embedded: Verilog #8, VHDL #9 https://spectrum.ieee.org/ns/IEEE_TPL_2020/index/2020/0/0/0/1/1/50/1/50/1/50/1/30/1/30/1/20/1/20/1/5/1/50/1/100/1/50/
Fpgakuechle K. schrieb: > Markus K. schrieb: >> Vielleicht kann google Trends noch dazu beitragen, die Frage nach der >> Verbreitung zu klären. > > Naja, dann kann man auch bei TIOBE nachschlagen (VHDL #42, Verilog > irgendwo zwischen 50 und 101): https://www.tiobe.com/tiobe-index/ Interessant. An Tiobe habe ich gar nicht gedacht. > Oder bem IEEE-Spectrum, bei Embedded: Verilog #8, VHDL #9 > https://spectrum.ieee.org/ns/IEEE_TPL_2020/index/2020/0/0/0/1/1/50/1/50/1/50/1/30/1/30/1/20/1/20/1/5/1/50/1/100/1/50/ Der Link funktioniert nicht.
Markus K. schrieb: > https://spectrum.ieee.org/ns/IEEE_TPL_2020/index/2020/0/0/0/1/1/50/1/50/1/50/1/30/1/30/1/20/1/20/1/5/1/50/1/100/1/50/ > > Der Link funktioniert nicht. Sorry, versuch diesen: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2020 Der (nichtfunktionierende) Link entstand nach Auswahl von "Embedded" als einziges Suchkriterium rechts.
No Y. schrieb: > Aber wenn ja jetzt > Systemverilog angesagt ist.. Halt direkt damit Anfangen? Wenn Du FPGA-Boards hast, must Du einfach schauen, was von der Synthesesoftware unterstützt wird. Es nützt nix, wenn der Simulator die neusten Sprachfeatures unterstützt, aber die Synthesetools im 20. Jahrhundert stehen geblieben sind. Egal ob Verilog, VHDL oder Systemverilog... Duke
Ja muss ich mal schauen. Aber soweit ich weiß, bis auf 2 ganz "alte" Boards die von Quartus 13 nur noch unterstützt sind, sind die anderen alle vom aktuellsten Quartus unterstützt.
No Y. schrieb: > sind die anderen > alle vom aktuellsten Quartus unterstützt. U.U musste auch aufs OS-achten. Wegen nen älteren Windows muss man auch für aktueller (nach CycII) Boards auf Quartus <= 18.0 setzen. Die Zwanziger macht manchmal Scherereien weil Quartus Linux Support vom Windows erwartet, der nicht immer schmerzfrei tut. Grund ist der Rausschmiss von Cygwin und der betrifft hauptsächlich NIOS und Co. https://www.terasic.com.tw/wiki/Getting_Start_Install_WSL
Ich laufe komplett unter Manjaro Linux (rolling release aktueller stable kernel..) und bisher eigentlich ganz geschmeidig. Aber halt shcon länger nicht mehr geupdated...
Verilog ist in der amerikanischen Welt deutlich verbreiteter. In Europa, aber auch allgemein an Unis, ist VHDL die verbreitetere Sprache. Prinzipiell kannst du in beiden Sprachen digitale Designs in gleicher (guter oder schlechter) Qualität machen. Wenn du in der ASIC-Ecke arbeitest, ist in der Regel alles sehr amerikanisiert und deshalb Verilog die gängigere Sprache. Auch das Tooling ist sehr häufig mehr an Verilog angelehnt. Auch bei FPGAs kann es mit VHDL, gerade mit den neueren Standards mal zu Problemen kommen. Häufig werden moderne VHDL Standards nicht oder nur unzureichend unterstützt. Ich arbeite auch in der Halbleiterecke (in Deutschland). Wir schreiben jedoch fast ausschließlich in VHDL für RTL. VHDL ist imho die schönere Sprache. VHDL ist deutlich "gesprächiger", was am Anfang beim Lernen etwas nerven kann. In Verilog passieren manche Dinge aber auch mal implizit und können, wenn man nicht aufpasst sehr schwer zu finden sein. Verilog ist die Basis weiterer Sprachen, die auch weite Anwendung finden, und vereinfacht das Lernen von z.B: System-Verilog und Verilog-A (Hardwarebeschreibung analoger Schaltungen). Digitaldesign wird bei uns, wie gesagt, nahezu ausschließlich in VHDL gemacht. Wir können aber alle Verilog lesen und verstehen. Das ist sehr wichtig, da viele Beispiele, oder IP cores, die außerhalb von Europa entwickelt wurden in der Regel in Verilog sind. Analoge Abstraktionen für Simulationsmodelle, werden bei uns aber bspw. in Verilog-A modelliert. Da helfen Verilog Kentnisse weiter.
Andreas S. schrieb: > VHDL ist furchtbar geschwätzig. Manchmal ist das gut, weil es > Fehler > verhindert, manchmal nervt es einfach nur. Man muss die Schnittstelle > eines Untermoduls drei mal beschreiben, einmal im eigentlichen Modul, > und dann wenn man es verwenden will einmal bei der Deklaration und > nochmal bei der Instanziierung. Und natürlich ist die Syntax jedes Mal > subtil anders, so dass Cut & Paste nicht so ohne weiteres funktioniert. > Auch sonst ist die Syntax wenig konsistent ("end case" aber "end > entityname"?). Alles in allem ist VHDL verglichen mit modernen > Programmiersprachen nicht sehr ausdrucksstark, aber trotzdem sehr > komplex. Aber was will man anderes erwarten, bei einer Sprache die nach > Militär-Spezifikation entwickelt wurde. > > Verilog habe ich nicht ausprobiert, werde trotz allem erst mal bei VHDL > bleiben. Nein das stimmt so einfach nicht mehr. Man muss nichts dreimal beschreiben.
Stefan F. schrieb: > Nein das stimmt so einfach nicht mehr. Man muss nichts dreimal > beschreiben. Dein Workflow interessiert mich. Lerne gerne dazu. Hier: Ich schreibe die entity und dann nutze ich die Funktionen von Emacs um damit die instance und component deklarationen beschleunigt zu schreiben (die component steht in einem package).
Christoph Z. schrieb: > Ich schreibe die entity und dann nutze ich die Funktionen von Emacs um > damit die instance und component deklarationen beschleunigt zu schreiben > (die component steht in einem package). Seit VHDL93 gibt es "direct" oder "entity instantiation". Components braucht man eigentlich nur noch, um etwas zu instanziieren, das (noch) nicht in VHDL beschrieben ist (also z.B. etwa eine Verilog-Komponente). Also schreibst Du statt
1 | entity xyz is |
2 | ...
|
3 | end entity xyz; |
4 | |
5 | ----
|
6 | |
7 | architecture rtl of abc is |
8 | component xyz |
9 | --- wiederholt (unnötigerweise) alles, was oben schon drin steht
|
10 | end component xyz; |
11 | begin
|
12 | i_xyz : xyz |
13 | port map(...) |
14 | end architecture rtl; |
eben
1 | entity xyz is |
2 | ...
|
3 | end entity xyz; |
4 | |
5 | ----
|
6 | |
7 | architecture rtl of abc is |
8 | begin
|
9 | xyz : entity work.xyz |
10 | port map(...); |
11 | end architecute rtl; |
und bist die Component los. Das ist nicht nur einfacher (wenn Du die entity-Schnittstelle änderst, brauchst Du nur die Instanziierung zu ändern), sondern auch spezifischer (Du kannst sowohl die library als auch - wenn Du mehrere hast) die architecture bei der Instanziierung angeben, die Component-Instanziierung würde einfach die zuletzt compilierte anziehen. Kurz: für deine Arbeitsweise (und den damit verbundenen Mehraufwand) gibt es seit 28 Jahren keinen vernünftigen Grund mehr.
Ich würde MyHDL nehmen. Das ist wesentlich angenehmer zu schreiben und zu lesen als Verilog oder gar VHDL. Aus MyHDL wird dann vor der Synthese wahlweise VHDL- oder Verilog-code generiert.
Neuling schrieb: > Kann mir bitte jemand einen Link geben, wo die beiden Sprachen > verglichen werden, oder in Kurzform zusammenfassen, was die Unterschiede > sind Kann mir bitte jemand einen Link geben, wo die beiden Sprachen verglichen werden, oder in Kurzform zusammenfassen, was die Unterschiede sind
Markus schrieb: > Kann mir bitte jemand einen Link geben, wo die beiden Sprachen > verglichen werden, oder in Kurzform zusammenfassen, was die Unterschiede > sind Was sollte das bringen? Beides sind Hardwarebeschreibungssprachen. Und mit jeder der beiden bekommst du dein Design zum Laufen, wenn du weißt, welche Hardware du brauchst. Und das ist letztlich der Knackpunkt. Da bringt es nichts, irgendwelche Syntaxfeinheiten aufzudröseln. > oder in Kurzform zusammenfassen, was die Unterschiede > sind Ich glaube, Hardware ist nichts für dich, wenn du eine "Kurzform" brauchst. Im Besonderen angesichts der Tatsache, dass Datenblätter heutiger Prozessoren und FPGAs locker 1000 Seiten haben können. > zusammenfassen, was die Unterschiede sind Was genau hast du in diesem Thread hier nicht verstanden?
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.