Moin,
1.habe ich die Funktionsweise von VHDL richtig verstanden, dass man die
Funktionsblöcke schreibt, die entsprechend dem Eingang bestimmte Werte
ausgeben? Diese Blöcke schaltet man dann beliebig zusammen um das
gewünschte Ergebnis zu erzielen. Zum Beispiel schreibe ich einen
Addiererblock, der am Ausgang die Summe der Eingänge ausgibt und einen,
der durch 2 dividiert und hänge den Dividierblock hinter den Addierblock
um den Durchschnitt zu berechnen.
2.Gibt es irgendwo ein einfaches kommentiertes Beispielprogramm? Im
Internet habe ich nur Arbeiten darüber gefunden, die theoretisch darüber
schreiben und nicht auf die Erstellung von Programmen ausgelegt sind.
3.Gibt es eine Beschreibungssprache, die nicht Basic Syntax hat? Auf
Basic bin ich im Moment nicht so gut zu sprechen;)
Danke schonmal
Die Antworten habe ich schon gesucht, aber wirklich nichts für einen
Anfänger verständliches gefunden
> 1.habe ich die Funktionsweise von VHDL richtig verstanden, dass man> die Funktionsblöcke schreibt, die entsprechend dem Eingang bestimmte> Werte ausgeben? Diese Blöcke schaltet man dann beliebig zusammen um> das gewünschte Ergebnis zu erzielen.
Ja, so läuft das prinzipiell.
> Zum Beispiel schreibe ich einen Addiererblock, der am Ausgang die> Summe der Eingänge ausgibt und einen, der durch 2 dividiert und> hänge den Dividierblock hinter den Addierblock um den Durchschnitt> zu berechnen.
Nur, dass man sich den Dividierer spart und von der Summe einfach das
niederwertigste Bit nicht weiter benutzt. Das entspricht einer
Division durch 2 in der Zeit 0 ;-)
> 2.Gibt es irgendwo ein einfaches kommentiertes Beispielprogramm? Im> Internet habe ich nur Arbeiten darüber gefunden, die theoretisch> darüber schreiben und nicht auf die Erstellung von Programmen> ausgelegt sind.
Such einfach nach "VHDL" und "Tutorial".
> 3.Gibt es eine Beschreibungssprache, die nicht Basic Syntax hat? Auf> Basic bin ich im Moment nicht so gut zu sprechen;)
Ich finde nicht, dass VHDL wie Basic aussieht. Als Alternative gibt es
Verilog. Verilog hat den Vorteil, dass man für das gleiche Ergebnis
weniger tippen muss. Allerdings scheinen hier im Forum alle VHDL zu
machen. Wenn du also öfters Fragen hast ...
Verilog ist vor allem in den USA verbreitet, während VHDL in Europa
quasi Standard ist. Verilog erlaubt AFAIK mehr Freiheiten, was
allerdings sehr schnell in schlechtem Stil endet. VHDL setzt die Grenzen
enger und zwingt einen mehr zu sauberer Beschreibung.
Unter dem Strich ist die Schwierigkeit aber die Definition geeigneter
Blöcke und nicht das Runterschreiben in einer HDL. Bezüglich geeigneter
Literatur gabs hier schon Threads.
Nach meinen Informationen ist VHDL etwas besser geeignet wenn es um
parametrierbare Designs geht. Dafür soll Verilog in der Simulation
schneller sein. Kann ich aber selbst nicht bestätigen, da ich kein
Verilog verwende.
Warum sollte Verilog in der Simulation schneller sein?
Scalable code in VHDL grenzt manchmal auch an Kunst, obwohl es
zugegebenermaßen viele Möglichkeiten bietet. Es gilt sehr genau
abzuwägen, ob das Design wirklich skalierbar sein soll.
> Unter dem Strich ist die Schwierigkeit aber die Definition> geeigneter Blöcke und nicht das Runterschreiben in einer HDL.
Das ist der Punkt. Gute FPGA-Designs zu entwickeln, lernt man erst in
Jahren. Das ist nicht anders als bei elektronischen Schaltungen oder
Softwarealgorithmen. Den Umstieg von einer HDL auf eine andere würde
ich mit wenigen Wochen veranschlagen.
Also was soll's. Ich habe, als ich mit FPGAs anfangen wollte, tagelang
rungesurft, um nach Vergleichen zwischen VHDL und Verilog zu suchen
und herauszufinden, welches von beiden das Bessere ist.
Irgendwann habe ich aufgegeben und mich aus zwei ziemlich banalen
Gründen für Verilog entschieden:
Erstens kenne ich jemanden, der in der (übrigens europäischen) Firma
ebenfalls Verilog macht.
Zweitens hat mir die Syntax von Verilog etwas besser gefallen.
VHDL sieht mir durch die vielen und ausgeschriebenen Füllwörter zu
sehr nach Prosa aus (fast ein wenig wie Cobol). Verilog ist im
Vergleich sehr straff und ohne Zierat, wie es sich für eine formale
Sprache in der Technik gehört (also eher die Philosophie von C).
Wenn aber eines Tages jemand VHDL von mir will, wäre das sicher auch
kein großes Problem.
Jetzt nachdem ich verglichen habe gefällt mir die Syntax von Verilog
besser. Genau wie yalu mag ich auch die Syntax nicht in der man fast
einen Aufsatz schreibt. Das meinte ich auch mit Basic Syntax.
Habe gerade noch was gefunden. Was haltet ihr von SystemC? Kann man sich
da auch einen Simulator und ein Synthesetool runterladen und dann damit
Simulieren und FPGAs "flashen" oder funktioniert das anders?
SystemC findest Du keine kostenlosen Tools für. Desweiteren ist es nicht
so effizient wie VHDL/Verilog. Es gibt aber ein kostenloses Projekt das
Dir ein C-subset in VHDL compiliert. Nennt sich streamsC
http://www.streams-c.lanl.gov/
Hab ich noch nicht versucht...
Falls Du richtig SystemC versuchen willst, musst Du Geld ausgeben...
Und C++? Lese gerade, dass das auch irgendwie gehen soll. In C++ habe
ich Erfahrung, deshalb wäre es schön, wenn ich damit programmieren
könnte.
http://bibserv7.bib.uni-mannheim.de/madoc/frontdoor.php?source_opus=857
"-Beim Einsatz von CHDL muß der Entwickler nur eine einzige Sprache
beherrschen, um Anwendungen für FPGA-Koprozessoren zu implementieren:
C++.
Ein handelsüblicher C++-Kompiler sowie die Place&Route-Software des
FPGA-Herstellers reichen aus, um mit CHDL FPGA-Anwendungen zu
entwickeln. Es werden keine weiteren Werkzeuge benötigt, insbesondere
keine VHDL-Kompiler."
Könnte das was sein? Bekommt man diese "Place and Route Software" ohne
Probleme bei den Herstellern?
Tut mir leid, dass ich so komische Fragen stelle, aber ich bin auf
diesem Gebiet halt kompletter Anfänger.
Prinzipiell denke ich das das gehen müsste. Nur finde ich keinen Ort wo
man das herunterladen könnte.
Aber dieser Ansatz ist halt der gleiche wie bei SystemC. Du entwickelst
in einer Sprache Deine Applikation und entscheidest erst später was in
Hardware und was in Software realisiert werden soll.
Es ist aber auch garnicht möglich die komplette Sprache C/C++ zum
Hardwaredesign zu verwenden. Es gibt einfach Konstrukte in der Software,
die nicht synthetisierbar sind. Deshalb kann man in diesen Sprachen nur
einen Bruchteil der eigentlichen C-Konstrukte verwenden.
Dass man vieles nicht benutzen kann ist klar, aber mir ist es lieber in
einer Sprache zu schreiben die ich kenne und dafür was wegzulassen als
eine neue lernen zu müssen. Mir ist auch aufgefallen, dass man das nicht
laden kann, ist ja leider (nur) eine Dissertation. Ich werde mal sehen
mit welcher Sprache ich glücklich werde ;)
@ Dussel (Gast)
>Und C++?
Unbrauchbar.
>http://bibserv7.bib.uni-mannheim.de/madoc/frontdoo...>"-Beim Einsatz von CHDL muß der Entwickler nur eine einzige Sprache>beherrschen, um Anwendungen für FPGA-Koprozessoren zu implementieren:>C++.>Ein handelsüblicher C++-Kompiler sowie die Place&Route-Software des>FPGA-Herstellers reichen aus, um mit CHDL FPGA-Anwendungen zu>entwickeln. Es werden keine weiteren Werkzeuge benötigt, insbesondere>keine VHDL-Kompiler."
Marketinggefasel.
>Könnte das was sein? Bekommt man diese "Place and Route Software" ohne>Probleme bei den Herstellern?
Die gibt es auch so.
>Tut mir leid, dass ich so komische Fragen stelle, aber ich bin auf>diesem Gebiet halt kompletter Anfänger.
Dann lern Verilog oder VHDL. Die Ganzen C/C++/SystemC Sachen sind Murks.
Nix halbes und nix Ganzes. Damit wird ein "Hello World" zum riesigen
Monster.
MfG
Falk
Hello World? Das dürfte doch so schon kompliziert genug sein, weil man
dafür ein Ausgabegerät ansteuern müsste, oder sehe ich das falsch? Ist
das etwa auch bei FPGAs ein Anfängerstandart?
Am Besten wirst Du mit einer der "klassischen" HDLs fahren. Im Moment
ist bei diesen "Hype"-Sprachen/Konzepten einiges in Bewegung. Man kann
nicht genau abschätzen was sich/ob sich einer der neuen Ansätze wirklich
durchsetzen wird. Außerdem siehts halt auch mit Tools mager aus.
@ Mathi (Gast)
>Und nein... :) Hello World ist kein FPGA-Anfängerding. Eher der gute>alte Blinker gefolgt vom Lauflicht ;)
Das IST "Hello World!" in Hardware ;-)
MfG
Falk
Ich dachte schon ich hätte da jetzt was ganz falsch verstanden. Mit
Tools tue ich mich auch für die klassischen Sprachen schwer. Finde keine
wirkliche Freeware, weiß aber auch nicht, wonach ich genau suchen soll.
VHDL/Verilog Simulator!?
Du musst Dir überlegen welche Sprache Du willst und ob Du für ein FPGA
entwickeln willst. Wenn Du einen bestimmten FPGA-Hersteller im Auge
hast, findest Du auf deren Seite eine Entwicklungsumgebung die
eigentlich alles kann...
Für Verilog gibt es z.B. Icarus zum simulieren...
http://www.icarus.com/eda/verilog/
Für VHDL Vhdl-Simili
http://www.symphonyeda.com/
Mann, jetzt suche ich bei google und sehe den Wald vor lauter Bäumen
nicht. Steht ja alle im Artikel über Programmierbare Logik. Danke. Ich
glaube ich mache langsam mal Schluss und gehe morgen ausgeschlafen an
die Sache ran :)
Für Verifikationsumgebungen ist SystemC oder C++ ganz brauchbar, für
Synthese halte ich es da wie Falk. Dafür sind HDLs wie VHDL oder Verilog
immer noch erste Wahl.
Um den genannten Herstellen noch den 4. (etwas kleineren) Player
hinzuzufügen:
Actel: http://www.actel.com/
Die stellen nur nonvolatile FPGAs her, das heißt sind Flash/AntiFuse
basiert und verlieren deshalb ihre Konfiguration nicht. Wegen dem
Flashprozess lassen sich aber keine so hohen Taktraten erreichen, dafür
LowPower.