VHDL und Verilog sind die HDLs des Tages. Was sind die Vorteile für jemanden, der überhaupt keine Erfahrung mit HDLs hat?
VHDL und Verilog sind die HDLs des Tages. Was sind die Vorteile für jemanden, der überhaupt keine Erfahrung mit HDLs hat?
Antworten:
Ich kann dir nicht sagen, was du lernen sollst, aber hier sind einige kontrastierende Punkte (von einem sehr VHDL-orientierten Benutzer, aber ich habe versucht, so fair wie möglich zu sein!), Die dir helfen können, eine Wahl basierend auf deinen eigenen Vorlieben zu treffen in Bezug auf den Entwicklungsstil:
Denken Sie auch an das berühmte Zitat "Ich bevorzuge das, was ich gerade nicht benutze" (Entschuldigung, ich kann mich nicht erinnern, wer das tatsächlich geschrieben hat - möglicherweise Janick Bergeron?)
Am Anfang viele Kompilierungsfehler, aber dann funktioniert meistens so, wie Sie es erwarten. Dies kann zu einer sehr steilen Gefühlslernkurve führen (zusammen mit der ungewohnten Syntax)
Fehler werden später in der Simulation gefunden - die Lernkurve für das Gefühl, etwas erledigt zu haben, ist flacher, dauert aber länger (wenn das die richtige Metapher ist?)
Für Verilog spricht auch, dass sich die High-End-Verifizierung immer mehr an SystemVerilog orientiert, was eine enorme Erweiterung von Verilog darstellt. Die High-End-Tools können jedoch auch VHDL-Synthesecode mit SystemVerilog-Verifizierungscode kombinieren.
Ein ganz anderer Ansatz: MyHDL - Sie erhalten die gesamte Leistungsfähigkeit von Python als Verifizierungssprache mit einer Reihe von Syntheseerweiterungen, aus denen Sie entweder VHDL oder Verilog generieren können.
Oder Cocotb - die ganze Kraft von Python als Verifizierungssprache, wobei Ihr synthetisierbarer Code immer noch in der HDL geschrieben ist, für die Sie sich entschieden haben (dh VHDL oder Verilog).
Ich habe beide in der gleichen Woche gelernt. VHDL ist wie ADA / Pascal und Verilog ist wie C. VHDL ist ausführlicher und schmerzhafter, um eine Kompilierung zu erhalten, aber sobald Sie eine Kompilierung erhalten, sind Ihre Erfolgschancen besser. Zumindest habe ich das gefunden. Verilog ist wie C damit zufrieden, dass Sie sich in den Fuß schießen. Einige Branchen wie Aerospace / Government tendieren zu VHDL, andere zu Verilog. Das Problem, das ich bei beiden finde, sind die Prüfstandsfähigkeiten, und wenn ich versuche, zu lernen und von der Simulation zum Silizium- / FPGA-Schreiben zu gelangen, ist synthetisierbarer Code eine weitere Ausbildungsstufe.
Es gibt eine Sprache, die ich sehr mag und die CDL heißt . Es ist streng synthetisierbar, Sie schreiben Ihre Prüfstände auf andere Weise, es erzeugt einen synthetisierbaren Verilog, den Sie in andere Werkzeuge integrieren können. Leider fehlen die CDL- Dokumente. Ich hoffe, einige Beispiele auf der Welt herauszubringen, die zeigen, wie viel einfacher es ist, Verilog oder VHDL zu verwenden, aber das haben wir einfach nicht getan. Es kommt mit einer eigenen Sim / Test-Umgebung. Mit CDL und GTKWave können Sie viel arbeiten.
Ein anderes Tool namens Verilator ist ziemlich starr, um Ihren Verilog sauber zu halten. Es ist ein kostenloser Verilog-Simulator, mit dem Sie ganz einfach eine Verbindung zur Sim herstellen oder Prüfstände in C / C ++ erstellen können. Sie können auch Verilog verwenden, was Sie dort nicht einschränkt. Es gibt auch Icarus Verilog , das größer und bekannter ist, aber ich würde Verilator empfehlen, wenn Sie Verilog lernen möchten. Für VHDL gibt es GHDL , meine Erfahrung war nicht so gut wie bei Verilator , aber es gibt zumindest ein kostenloses Tool, mit dem Sie versuchen können, Ihre Füße nass zu machen. Wenn Sie Erfahrung mit Softwareprogrammierung haben, werden Sie Verilog wahrscheinlich schneller als VHDL erlernen und genießen.
Ich stimme mit Leon definitiv überein, versuche beides. Auf fpga4fun und anderen Webseiten finden Sie einige gute Informationen. Auf einigen dieser Seiten finden Sie Verilog- und VHDL-Entsprechungen für das behandelte Thema. Ich finde solche Seiten am nützlichsten, um die beiden Sprachen zu vergleichen. Wenn Sie in Ihrer Karriere HDL verwenden möchten, empfehle ich, mindestens einige Fähigkeiten für beide zu haben, vielleicht wirklich gut für eine, aber nicht in der Lage zu sein, die andere zu verwenden.
Viele heilige Kriege wurden darum geführt. Ein besonderer Nachteil von Verilog ist das nicht deterministische Verhalten. http://www.sigasi.com/content/verilogs-major-flaw
Beide haben Vor- und Nachteile. VHDL ist akademischer, ausführlicher und komplexer. Sie müssen mehr Code schreiben, aber die Genauigkeit bedeutet, dass es wahrscheinlicher ist, dass es funktioniert. Verilog ist für typisches digitales Design einfacher, macht es jedoch einfacher, knifflige Fehler zu erstellen. VHDL ist an Universitäten häufiger anzutreffen. Verilog ist in großen Halbleiterunternehmen häufiger anzutreffen.
In der Regel hängt die Auswahl des einen oder anderen Tools von den von Ihnen verwendeten ab. Einige der beliebten FPGA-Tools arbeiten besser mit VHDL. Einige beliebte ASIC-Tools arbeiten besser mit Verilog. Was also besser ist, hängt davon ab, was Sie damit machen möchten.
Angenommen, Sie möchten kleine Projekte mit den Altera-FPGAs erstellen, die in EE-Schulen beliebt sind. Die kostenlosen Tools unterstützen beide HDLs. Möglicherweise verwendet die Benutzergemeinschaft jedoch hauptsächlich VHDL. Wenn Sie sich für diese Sprache entscheiden, gibt es mehr Beispielcode, wiederverwendbare Module usw.
Umgekehrt verwenden heutzutage fast alle von ihnen Verilog, wenn Sie beabsichtigen, in einem großen Unternehmen zu arbeiten, das ernsthafte Chip-Design-Arbeiten ausführt. Die leistungsstarken Synthese-, Simulations- und Verifikationstools sind für Verilog optimiert. Und in letzter Zeit SystemVerilog - Erweiterungen für Verilog zur Unterstützung des Entwurfs und der Verifizierung von Systemen auf hoher Ebene.
Mehr Diskussion hier und nützliche Links hier:
Für einen Anfänger / Hobbyisten ist der beste Rat, zu entscheiden, mit welchen Chips Sie spielen möchten und welche Beispiele der Anbieter anbietet. Verwende das. Wenn Sie ein erfahrener Digitaldesigner sind, dauert das Erlernen der anderen Sprache nur wenige Tage.
Kurze Antwort : Verwenden Sie SystemVerilog, lernen Sie aber auch VHDL . Vermeiden Sie Verilog-2001, wenn Sie können.
Sehr lange Antwort : Im Moment nehme ich an, dass Sie mit Verilog Verilog-2001 meinen, was wahrscheinlich auch die meisten anderen Antworten annehmen. Der beste Vorschlag wäre wahrscheinlich, beides zu lernen, aber beides nicht zu verwenden (mehr dazu am Ende der Antwort). Die Hauptunterschiede können im Folgenden zusammengefasst werden:
wire
vs reg
)Die beiden Sprachen teilen sich jedoch die wichtigsten Konzepte, wenn auch mit unterschiedlichen Namen (z. B. always
vs process
). In jedem Fall hängt die Schwierigkeit, eine HDL zu erlernen, eher mit den dahinter stehenden Konzepten zusammen (z. B. der Gleichzeitigkeit aller Prozesse, der HW) Konventionen usw.) als auf die Sprache selbst. In Anbetracht der Unterschiede würde ich, wenn die Wahl zwischen Verilog 2001 und VHDL liegt, jeden Anfänger persönlich an VHDL wenden.
Wie ich bereits sagte, ist mein Vorschlag, tatsächlich weder VHDL noch Verilog-2001 zu verwenden, wenn Sie die Möglichkeit haben, zu wählen. Im Gegensatz zu der Annahme vieler Leute ist SystemVerilog keine höhere Sprache, die nur für das Design oder die Verifizierung auf Systemebene nützlich ist, und hat wenig mit Sprachen zu tun, die in ein höheres Synthesetool wie SystemC eingespeist werden können.
Stattdessen ist SystemVerilog ein vollständiges Update der Verilog-Sprache (basierend auf Verilog-2005, siehe http://en.wikipedia.org/wiki/SystemVerilog ), das eine vollständig synthetisierbare Teilmenge enthält, die der Prägnanz von Verilog mit einer höheren Expressivität als beide entspricht Verilog-2001 und VHDL, die meiner Meinung nach das Beste aus beiden Welten bieten.
Beispiele für sehr wichtige in SystemVerilog verfügbare Konstrukte / Ausdrücke, die in Verilog-2001, VHDL oder beiden nicht verfügbar sind:
always_ff
, always_latch
, always_comb
Blöcke , die die Designer zu unterscheiden unmittelbar zwischen den Blöcken der Umsetzung verschiedene Arten von Logik helfen, und - für always_comb
und always_latch
- (! Eine Quelle unendlicher Bugs in VHDL und Verilog, vor allem für Anfänger) schließen automatisch die Signale, die auf der Empfindlichkeit Liste gehenlogic
Typen, die die verwirrenden wire
und reg
Typen von Verilog-2001 ersetzenlogic [N-1:0][M-1:0][P-1:0]
), während Verilog-2001 nur zweidimensionale Busse unterstützt und VHDL den Designer zwingt, neue Typen zu definieren, um ähnliche Strukturen zu erstellenstruct
(ähnlich wie VHDL record
) und sogar übergeordnete Konstrukte interface
, mit denen sehr effektiv reguläre Strukturen (wie die Ports eines Busses) modelliert werden könnenIch habe all diese Unterschiede "auf meiner Haut" getestet, während ich zu Forschungszwecken an einem recht komplexen Multicore-System gearbeitet habe. Es wird jetzt von vielen Tools unterstützt, und ich bin mir sicher, dass es von Synopsys-Tools (sowohl für ASIC- als auch für FPGA-Syntheseflüsse), Xilinx Vivado (für FPGA-Synthese) und Simulationstools wie z als MentorGraphics Modelsim, Cadence NCsim und Synopsys VCS.
Um vollständig zu sein, gibt es zwei weitere wichtige Arten von Sprachen in der Toolbox des Hardware-Designers (obwohl die Qualität dieser Tools stark variieren kann):
Meine Karriere in den letzten 13 Jahren bestand zu 80% aus ASIC und zu 20% aus FPGA.
VHDL wurde für die ersten 3,5 Jahre verwendet und der Rest war Verilog. Ich fand es nicht schwierig, zu Verilog zu wechseln, und aus Gründen des Standorts (Silicon Valley) und der Geschwindigkeit codiere ich heute nur in Verilog.
Außerdem mache ich eine Menge Async-Interfaces, Latches und Semi-Custom-Designs auf Gate-Ebene für die Leistung, sodass VHDL in meinem Leben nur sehr wenig Verwendung hat. Stattdessen fanden ich SystemVerilog und SystemC viel nützlicher, um sie für große technische Projekte zu verwenden.
Einmal haben mir Tools wie Verilator (kostenlos und schnell) viel Geld für kritische Simulationen gespart. Sie haben diese Option (noch) nicht für VHDL. Und Sie werden es vielleicht nie brauchen, wenn Sie immer in einem wohlhabenden Pool schwimmen oder keine> 1-Millionen-Tore entwerfen.
VHDL ist für Anfänger immer besser, bevor sie solide HW-Designprinzipien entwickeln. Meine Kommunikation mit den EDA-Leuten hier legt nahe, dass sie in den letzten 10 Jahren nur wenige VHDL-Entwicklungen durchgeführt haben, und es gibt heute einen großen Antrieb für HLS. Es wird also nicht viele Entwickler von VHDL-Tools geben ...
Ich habe mich für VHDL entschieden, vor allem, weil ich C sehr gut kenne und festgestellt habe, dass ich beim Versuch, einen Verilog zu schreiben, in der Regel so geschrieben habe, als würde ich auf eine CPU abzielen, die keine Hardware beschreibt.
Es war sehr ärgerlich, eine Codeseite zu schreiben und zu erkennen, dass das, was Sie geschrieben haben, tatsächlich ein sequentielles Programm war, kein Hardware-Design, ja, es würde synth, aber das Ergebnis war hässlich und langsam.
VHDL war so unterschiedlich, dass ich es viel einfacher fand, in Bezug auf das Logikdesign zu denken und nicht den Fluss zu steuern.
Am Ende des Tages ist die Sprache selten das Schwierigste, die Fertigkeit im Systemdesign ist nicht das Tippen.
Grüße, Dan.
Letztes Jahr hat die Universität, die ich studiert habe, zwei offene Kurse für Anfänger angeboten. Beide behandelten den gleichen Inhalt, nur einen mit VHDL und den anderen mit Verilog.
Natürlich habe ich beide Professoren nach den Unterschieden zwischen VHDL und Verilog gefragt. Beide konnten nicht die Besten wählen.
Also musste ich beide Kurse machen, um zu sehen, welcher für mich besser sein könnte. Mein erster Eindruck war, dass VHDL Pascal-ähnlicher und Verilog C-ähnlicher ist .
Danach habe ich mich entschieden, nur VHDL zu machen, weil ich zu dieser Zeit mit Delphi gearbeitet habe.
Aber ich habe nach dem Kurs nie mehr mit FPGA gearbeitet. Das ist also das Beste, was ich dir helfen kann.
Ich benutze fast ausschließlich VHDL. Meiner Erfahrung nach ist VHDL in Europa häufiger, in den USA Verilog, aber auch in den USA hat VHDL stetige Fortschritte gemacht. Die starke Typisierung von VHDL stört mich nicht, da ich es wie eine altmodische Hardware-Designsprache verwende, wie sie in kleinen programmierbaren Logikprogrammen wie PALASM oder Alteras AHDL verwendet wird.
Das große Problem für die meisten Benutzer von VHDL sind die starken Typen. Sie möchten Zuweisungen zwischen std_logic_vector (was ich als eine Sammlung von Drähten im Ziel betrachte) und "int" (was ich als eine Zahl betrachte, die auf dem Computer gespeichert ist, der das Design kompiliert) vornehmen. Die nervigste Art der Konvertierung, die ich im Allgemeinen durchführe, ist zwischen bit_vector (was ich als Beschreibung einer Sammlung von Drähten in dem Computer betrachte, der das Design kompiliert) und std_logic_vector. Tatsächlich hat mich gerade die Suche nach einer Konvertierung von char (eine im Compiler gespeicherte Zeichenvariable) nach int zu StackExchange hingezogen.
Der berühmteste Konflikt zwischen VHDL und Verilog war damals der Designwettbewerb des Magazins ASIC & EDA. Google "Unerwartete Ergebnisse eines Hardware-Design-Wettbewerbs: Verilog gewonnen & VHDL verloren? - Sie sind der Richter!", Zum Beispiel: http://www.ee.ed.ac.uk/~gerard/Teach/Verilog/manual /Example/lrgeEx2/cooley.html
Der Wettbewerb bestand darin, ein ziemlich kompliziertes 9-Bit-Register zu implementieren. Es wurde hoch / runter gezählt sowie ein paar andere Dinge. Das Ergebnis war, dass bei 8 der 9 Verilog-Designer der Code nach 90 Minuten ausgeführt wurde. Zero von den 5 VHDL-Leuten hatte irgendetwas am Laufen.
Ich benutze VHDL nicht wie jeder andere. So wie ich es benutze, stören mich die Typen nicht sehr oft. Ich hätte das obige Projekt auf die gleiche Weise implementiert wie alles andere, und zwar vollständig in std_logic und std_logic_vector, wobei (früher) die nicht signierte IEEE-Bibliothek verwendet wurde. Stattdessen stelle ich mir vor, dass die VHDL-Designer ihre Arbeit mit int gemacht haben und sich in der Typkonvertierung verirrt haben.
Bei der Typkonvertierung können zwei Stellen verloren gehen: (a) Ihr Design und (b) Ihr Prüfstand. Für mich ist es einfach einfacher, den Prüfstand (fast) vollständig in std_logic zu schreiben, sodass der Prüfstand selbst (fast) synthetisierbar ist. Mit "fast" meine ich, dass ich die Uhr mit einer verzögerten Zuweisung definieren werde, die nicht synthetisiert werden kann. Aber abgesehen davon (und von Kommentaren) können Sie meine Prüfstände nicht von der synthetisierten Logik unterscheiden.
Wie auch immer, bevor Sie sich für eine Muttersprache entscheiden (fast jeder hat eine Vorliebe, aber fast jeder verwendet beide), würde ich empfehlen, diesen Wettbewerb nachzuschlagen und den Kommentar dazu zu lesen.
Eines der Probleme, die ich bei VHDL beobachtet habe, ist, dass es (nach Meinung der Designer) eine Tendenz gibt, zu glauben, dass es keine Kommentare erfordert, da es sich um eine sehr ausführliche Sprache handelt. Das stimmt natürlich nicht, Sie sollten die Kommentare vor dem Code schreiben.
Ich werde meine zwei Cent abwägen: Ich bin selbst ein schwerer VHDL-Benutzer, aber Verilog kann die Arbeit mit Sicherheit genauso gut erledigen. Sie können immer eine in die andere wickeln (allerdings mit Zeit- und Tippaufwand).
Was ich gefunden habe, ist, dass Raw-VHDL viele nützliche Funktionen fehlen. (ODER oder UND: Es kommt ein ganzer std_logic_vector in den Sinn). Wenn Sie sich also eine Toolbox mit debuggbaren, synthetisierbaren Funktionen zusammenstellen, können Sie Ihre Produktivität bei der Verwendung von VHDL erheblich steigern.
Vielleicht könnte jemand auf eine gute Open-Source-Bibliothek verweisen, die all diese "Good-to-Have" -Funktionen bietet?
Die vorherigen Antworten behandeln so ziemlich die Kontraste zwischen den beiden Sprachen, und dieser Artikel behandelt die Punkte auch ziemlich gut: http://www.bitweenie.com/listings/verilog-vs-vhdl/
Ich möchte noch ein paar Punkte ansprechen, die nicht erwähnt wurden.
Ich würde aus mehreren Gründen empfehlen, zuerst VHDL zu lernen. Die starke Schreibweise hilft dem Compiler, einige leichte Anfängerfehler zu erkennen. Ich habe auch gehört, dass VHDL nach der ersten Verwendung von Verilog schwieriger zu erlernen ist.
Ehrlich gesagt kann man mit beiden Sprachen nichts falsch machen. und wenn Sie sehr lange in dieser Branche arbeiten, werden Sie schließlich sowieso beide Sprachen lernen.