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.
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.
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
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.htmlDNS 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.
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.
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..
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
entityxyzis
2
...
3
endentityxyz;
4
5
----
6
7
architecturertlofabcis
8
componentxyz
9
--- wiederholt (unnötigerweise) alles, was oben schon drin steht
10
endcomponentxyz;
11
begin
12
i_xyz:xyz
13
portmap(...)
14
endarchitecturertl;
eben
1
entityxyzis
2
...
3
endentityxyz;
4
5
----
6
7
architecturertlofabcis
8
begin
9
xyz:entitywork.xyz
10
portmap(...);
11
endarchitecutertl;
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?