Forum: FPGA, VHDL & Co. VHDL vs. Verliog


von Sebastian (Gast)


Lesenswert?

Hallo!
Mich interessieren FPGA schon seit langen, bis jetzt verlor ich den
Spaß an der Geschichte immer nach ein paar Tagen, wenn ich mit VHDL
anfangen wollte, weil mir die Sprache einfach nicht liegt. Warum auch
immer^^
Jetzt Habe ich vor kurzem dieses Tutorial für Verilog gefunden:
http://www.asic-world.com/verilog/veritut.html
Das Tutorial finde ich sehr gut und diesmal machts auch richtig Spaß,
weil mir Verliog sehr viel enfacher vorkommt, deshalb stell ich mir
folgende Frage: Kann man mit Verilog alles "programmieren", was auch
mit VHDL möglich wäre?
Oder gibt es für beide Sprachen irgendwelche Gebiete, in denen sie
bevorzugt verwendet werden?

Danke schonmal im Voraus!
Gruß Sebbi

von Alban (Gast)


Lesenswert?

Mir ging es genauso. Mit Verilog hat die ganze Sache angefangen Spaß zu
machen.

Es scheint da einige Fälle zu geben wo Verilog nicht so spezifisch ist
wie VHDL und was unter umständen zu Problemen führen kann, aber ich
glaube nicht, dass das so ein Beinbruch ist, da auch mit Verilog sehr
große Designs gemacht werden.

Endlich mal paar Leute hier die Verilog machen :)

von axel (Gast)


Lesenswert?

Also nach meinem Wissenstand kann man alles mit Verilog und VHDL
machen.
Da gibt es keine vor oder nachteile. Oft können ich leute mit
c-kenntnissen schneller in Verilof einarbeiten. Der Code ist nicht so
geschwätzig. Aber keine Angst. Mit Verilog kannst du dem FPGA auch
alles sagen was du von ihm willst.

von FPGAküchle (Gast)


Lesenswert?

Och da gibt es schon Unterschiede....
Historisch gesehen sind beide Sprache zur Simulation und nicht zur
Synthese erfunden worden, also um eine Schaltung bevor sie in Silizum
gemeisselt wird auf ihre Korrektheit zu überprüfen. Für die Synthese
schrieb man Netzlisten (nimm eine Handvoll Gatter und sage welche Pins
miteinander verbunden sind) also der klassiche Gatter-Schaltplan. Wer
mal eine statemaschiene per Hand aus FF und optimierten Logik gebaut
hat weiss eine Synthese zu schätzen.
Nun hatte man die Schaltung doppelt da, für die Simulation in Verilog
und für die Fertigung als Schaltplan. (Am rande sei hier ABEL nur als
Stichwort genannt). Also
machten sich die kluge und faulen Ingenieure ans Werk um per Computer
aus Verilog-Texten auch die Fertigungs-Unterlagen (Netzlisten) zu
generieren. Und siehe die Verilog Synthese war geboren, nie wieder FSM
per Hand in gatter umwandeln.

Wieder anderen war Verilog zur Simulation und Dokumentation zu simpel
gestrickt.
Vielleicht domierte der Wunsch nach gut lesbarer Funktionsbeschreibung,
jedenfalls liess das US-Militärministerium VHDL standardisieren,
hauptsächlich um damit den Chipschmieden sagen zu können was der Chip
können soll. Deshalb ist VHDL so geschwätzig, das Manager die nur
einfaches Englisch sprechen die Funktion verstehen. Aber auch hier
meldete sich die Faulheit zu Wort: Warum alles zweimal machen. Der
selbe VHDL Text der zur Spezifikation, Dokumentation und Simulation
dient, sollte auch zur Synthese genutzt werden. Nun ist aber VHDL eben
geschwätzig wie ein Manager und unverständlich für eine maschienelle
Intelligenz. Also beschränkte man VHDL auf verständliche Konstrukte.
Nur schrieb man diese nicht verbindlich fest. Sie wurden auch flexibler
je mehr rechenpower der Synthesecomputer bekam.

Deshalb muss man VHDL mindestens dreimal lernen. Erstens um die
Simulation ans Laufen kriegen. Das kann es besser als Verilog, ratzfatz
ist in VHDL ein Algorithmus geschrieben, der überprüft ob die gatter
auch das richtige berechnen. Bessonders C-Programmier freuen sich wenn
sie VHDL sehen: "Das ist ja alles wie C ohne pointer". Leider sind
das die Leutchen, die am längsten für das Zweite Lernen von VHDL
brauchen. Nämlich wie schreibe ich Code daß kleine und schnelle
Hardware draus wird. Also nix mit
(In C nimmt man für Fallunterscheidungen ein Case dafür, also hier auch
hier)
NeNe da muss ein Muxer hin, oder ein ROM-Feld oder eine Mealy-FSM. Und
wer mühselig gelernt hat was nebenläufige und sequentielle Anweisungen
in VHDL sind, kann das eigentlich im zweiten schritt vergessen, hier
kommt es nur drauf an
die Hardware so in VHDL zu umschreiben das die Synthese auch das draus
macht.
Mit Schritt zwei sind eigentlich alle Ingenieure zufrieden und haben
die tausenden Möglichkeiten von VHDL wieder vergessen. Denn beim
dritten lernen von VHDL ist es entscheidend wieder wie beim modernen
Programmieren zu denken. Wie
schreibe ich den Code für wiederverwendbarkeit, wie mache ich ihn
einfach testbar, welches Grundschaltung kommt immer wieder vor und
sollte als Basisklasse, aehm generische Komponente implementiert
werden?

Verilog ist da einfacher, da ist Lernen 1 und 2 das selbe (wie frisst
es der Simulator und was bekommt der Synthese). Und drei ist kaum
möglich. Also
lerne Verilog und du kommst fix zu Hardware, lerne VHDL und lerne
gleich Test und Verifikation mit.

Traditionell domiert In Europa der Entwurf mit VHDL, USA macht mehr in
Verilog.
Auch für FPGA's hat sich diese Trennung erhalten, aber schwächer.
FPGA's werden überwiegend in VHDL beschrieben.

So und nun Schluss mit dem Zusammenkürzen von 20 Jahren Digtalentwurf
auf die Frage Verilog vs VHDL.

von Sebastian (Gast)


Lesenswert?

Ok, danke euch allen!
Eurer Meinung nach kann ich also ohne schlechtes Gewissen weiter
Verilog lernen, ohne bald vor einem unlösbaren Problem zu stehen.
Endlich mal was positives^^

"lerne Verilog und du kommst fix zu Hardware"
Das ist mir grad recht, da es mir hauptsächlich darum geht, endlich mal
mit FPGA´s experimentieren zu können.

Also, nochmals Danke!
Gruß Sebbi

von Tom (Gast)


Lesenswert?

Hallo zusammen,

herrlicher Rückblick von FPGAküchele zu den Entstehungesgeschichten von
Verilog und insbesondere von VHDL...

...dazu sei angemerkt, dass das DoD (Department of Defence) der USA
vorher schon ADA als Programmiersprache für die Militärobjekte ins
Leben gerufen hat...

...und VHDL ist sehr stark an ADA angelehnt...eben geschwätzige
Programmiersprache... ;-)

Die 3 VHDL Kenntnis-Punkte von FPGAküchele beschränken sich bei mir
noch auf 1-2.....der 3.Punkt ist wirklich weitaus schwieriger und vor
allem Zeitaufwendiger.....und diese hat man ab und dann nicht... ;-)

von Sven Johannes (Gast)


Lesenswert?

Moin..

Wobei VHDL auch noch etwas weiter gefasst ist. Das H für Hardware ist
nämlich ernst gemeint, man kann eigentlich jedes Bauteil modelieren,
auch die Platine und die analogen Komponenten, und das dann durch den
Simulator jagen.
Spannend wirds, wenn man die Bits verfolgen kann/darf/muss wie sie von
FF zu FF übers Die flitzen umd den sch**** asynchronen TDC zu bedienen.


--
 Sven Johannes

von Xenu (Gast)


Lesenswert?

>man kann eigentlich jedes Bauteil modelieren,
>auch die Platine und die analogen Komponenten

Da redest Du jetzt aber von VHDL-AMS und nicht vom "normalen" VHDL.

von Klaus F. (kfalser)


Lesenswert?

Die Geschwätzigkeit von VHDL ist wirklich kein Thema wenn man (X)Emacs
als Editor verwendet. Damit geht die Syntax von alleine und die
Tipparbeit beim Instanziieren der Komponenten ist mit ein paar
Mouse-Klicks erledigt.

Es wird einer Programmiersprache oft als Nachteil angelastet, wenn mehr
zu schreiben ist. Normalerweise sollte man aber eh die meiste Zeit in
die Entwurfsphase stecken, wenn das Coding dann ein bischen länger
dauert, sollte das eigenlich keine Rolle spielen. Meist wird behauptet,
daß man mit VHDL weniger Fehler machen kann, weil der Compiler die
Zuweisung unterschiedlicher Datentypen zueinander unterbindet.

Ich kenne Verilog nicht genau genug, mich hat aber immer gestört, daß
ich keinen Weg gefunden habe, ein FF mit asynchronem Reset sauber zu
modellieren.

Klaus

von FPGAküchle (Gast)


Lesenswert?

emacs:

Die emacs dateien für den VHDL-mode gibt es unter:

http://opensource.ethz.ch/emacs/vhdl-mode.html

Der screenshot dort hat zwar IMHO schlechte farben, aber er zeigt schon
etliches was Emacs im VHDL-mode komfortabel macht. Dazu kommt
beautifier, automat. ergänzung von Signalnamen etc.. und automat.
Strukturterganzung. Letzteres meint das man z.B. Signal tippt, dann
fragt der emacs nach dem Namen, anschliessend nach dem Typ und ergänzt
semicolons etc. selbsständig. Klappt auch für prozesse, entities etc..

Und man kann aus dem emacs heraus kompilieren und sich dann geführt von
Fehler zu fehler hangeln. Und Versionskontrolle (CVS) kann direkt
genutzt werden,Und Und Und++

Allerdings ist wie bei allen mächtigen tools die Einarbeitungsphase
länger. Es lohnt sich aber, emacs schlägt Ultraedit und ander um
Längen.

von Alban (Gast)


Lesenswert?

@Klaus

Was ist den Falsch mit diesem Codeteil aus dem XST 7.1 Handbuch?:

1
module flop (C, D, CLR, Q);
2
input C, D, CLR;
3
output Q;
4
reg Q;
5
6
always @(negedge C or posedge CLR)
7
begin
8
 if (CLR)
9
  Q <= 1’b0;
10
 else
11
  Q <= D;
12
 end
13
14
endmodule

von Klaus F. (kfalser)


Lesenswert?

Nichts ist falsch, ich hatte das Beispiel nur übersehen.

Grüße
Klaus

von Klaus F. (kfalser)


Lesenswert?

@Alban
Übrigens, danke für den Hinweis

Grüße
Klaus

von Alban (Gast)


Lesenswert?

@Klaus
Mein Ton war ein wenig falsch. Ich wollte eigentlich anfragen ob das
funktioniert für was du suchst oder ob es da noch andere
Einschränkungen gibt, die ich nicht bedacht habe.

Gruß,

Alban

von Klaus F. (kfalser)


Lesenswert?

Der Ton hat schon gepasst.
Danke nochmals,
Klaus

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