mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Funktionsweise und Beispielprogramm (Anfänger)


Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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 ...

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, danke, ich werde mal suchen.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: glück (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/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."

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.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und nein... :) Hello World ist kein FPGA-Anfängerding. Eher der gute 
alte Blinker gefolgt vom Lauflicht ;)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 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

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk:

Besser kann mans nicht ausdrücken :-D

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!?

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Dussel (Gast)

>Tools tue ich mich auch für die klassischen Sprachen schwer. Finde keine
>wirkliche Freeware, weiß aber auch nicht, wonach ich genau suchen soll.

http://www.mikrocontroller.net/articles/Programmie...

Xilinx ISE

http://www.xilinx.com/ise/logic_design_prod/webpack.htm

Nimm ISE Classic 6.3 mit Service Pack 3, spart Downloadzeit und Nerven.

Altera Quartus II

http://www.altera.com/products/software/products/q...

Lattice ISP Lever

http://www.latticesemi.com/products/designsoftware...

Das sind die drei grossen im Markt, wobei dier ersten beiden die 
TOP-player sind.

>VHDL/Verilog Simulator!?

Modelsim, gibts bei Xilinx & Altera als Freeware.

MfG
Falk

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.