Forum: FPGA, VHDL & Co. Vorausetzungen in FPGA


von Sascha W (Gast)


Lesenswert?

Hallo Leute,

ich will mich in das Gebiet FPGA einarbeiten.

Da ich leider absoluter Neuling bin, wollte ich erst einmal fragen, was 
ich an Vorkentnisse benötige? Weiterhin schrecken viele vor FPGA ab, 
warum eig.?

Vielen Dank für eure Antworten.

von Domi F. (dfx_06)


Lesenswert?


von Sascha W (Gast)


Lesenswert?

Domi F. schrieb:
> https://www.mikrocontroller.net/articles/FPGA

War nicht so recht die erhoffte Antwort.

von Torben K. (tokuhila)


Lesenswert?

> Da ich leider absoluter Neuling bin, wollte ich erst einmal fragen, was
> ich an Vorkentnisse benötige? Weiterhin schrecken viele vor FPGA ab,
> warum eig.?

Grundlagen Digitaltechnik. Vorhandene Programmierkenntnisse sind eher 
hinderlich.

von Staubfänger (Gast)


Lesenswert?

Sascha W schrieb:
> Domi F. schrieb:
>> https://www.mikrocontroller.net/articles/FPGA
>
> War nicht so recht die erhoffte Antwort.

Naja. Das ist bedauerlich.
Allerdings musst Du auch mal die andere Seite betrachten.

Die Frage: "Was muss ich alles wissen" ist so ziemlich die 
unspezifischste, die man stellen kann; dass was man eine 
"Rundumschlagfrage" nennt.
Die Antwort wäre ungefähr das Inhaltsverzeichnis von einem halben 
Dutzend Büchern. Das kann man nicht jedes mal hinschreiben.
Deswegen gibt es den verlinkten Artikel (und weitere im Netz) die Dir 
zumindest mal einen Überblick darüber geben, was Du nicht weißt.

Siehe dazu auch: https://www.mikrocontroller.net/articles/Netiquette
oder auch: 
http://uwiatwerweisswas.schmusekaters.net/Uwi/Wie%20man%20Fragen%20richtig%20stellt.pdf

Besser sind spezifische Fragen: Welches Buch, welchen Artikel sollte ich 
zuerst lesen? Und in dem man Dir den Link schreibt, hat man diese 
nicht-gestellte Frage beantwortet.

von Microcontrollerphreak (Gast)


Lesenswert?

Sascha W schrieb:
> ich will mich in das Gebiet FPGA einarbeiten.

Dann würde ich das FPGA-Forum bevorzugen. Hier im Microcontrollerforum 
ist das nur ein Randthema.

Streng genommen machen hier eigentilch nur Fragen Sinn, die in beide 
Welten passen, also das Zusammenspiel von Controller und PLD und / oder 
das Thema uC-Core im FPGA, was u.a. mein Thema wäre.

von Seine Gelbe Pestilenz (Gast)


Lesenswert?

Zum Einlesen:

"Free Range VHDL" von Bryan Mealy und Fabrizio Tappero.

von Domi F. (dfx_06)


Lesenswert?

Sascha W schrieb:
> Domi F. schrieb:
>> https://www.mikrocontroller.net/articles/FPGA
>
> War nicht so recht die erhoffte Antwort.

Sorry, aber ich finde der µC-Artikel beschreibt die Grundlagen ziemlich 
gut... Besonders kannst du bei "Siehe auch..." weitere nützliche Links 
finden und dich weiterklicken.

Ich habe aber die Vermutung, dass du entweder einer der wenigen Menschen 
dieser Erde bist die den eigentlich richtigen Plural "FPGA" verwenden, 
oder du aber eigentlich VHDL meinst. (Letzteres ist eher der Fall, liest 
sich irgendwie so,...)
Falls dem so ist:
- https://www.mikrocontroller.net/articles/VHDL
- https://www.mikrocontroller.net/articles/VHDL_Schnipsel
- https://www.mikrocontroller.net/articles/Rechnen_in_VHDL

- http://mikro.ee.tu-berlin.de/~kds/text_all.pdf (UNI)

Ich selbst hatte VHDL/FPGA-Design an der Uni, aber ich bin zu faul die 
von meinem Prof referenzierten Bücher rauszusuchen, wenns ein schnelles 
googlen auch tut.
Viel Spass beim lesen!

: Bearbeitet durch User
von Sascha W (Gast)


Lesenswert?

Ok vielen Dank erst mal für eure Antworten.

Warum sind denn vorhandene Programmierkentnisse eher hinderlich?

von Staubfänger (Gast)


Lesenswert?

Sascha W schrieb:
> Ok vielen Dank erst mal für eure Antworten.
>
> Warum sind denn vorhandene Programmierkentnisse eher hinderlich?

Das wird gesagt, und trifft meiner Meinung nach tendentiell zu,
weil die meisten VHDL-Anfänger mit Programmierkenntnissen dazu neigen, 
die Beschreibung einer Hardware als imperatives Programm anzusehen.
Das liegt daran, dass die Syntax von VHDL z.B. Pascal oder C sehr 
ähnlich ist. Die Semantik, d.h. die (Be-)Deutung allerdings ist eine 
wesentlich andere: Die Beschreibung einer Struktur.

Das muss man sich, mit vorherigen Programmierkenntnissen immer wieder 
bewusst machen, weil man, - das geht mehr oder minder jedem so -, dazu 
neigt auch VHDL-Beschreibungen so zu lesen, als würden sie sequentiell 
ausgeführt.
Das führt häufig zu Widersprüchen, wenn zwei Prozesse auf die gleichen 
Signale zugreifen und man denkt, "das kann doch nicht sein". Der Begriff 
"Prozess" selbst ist, meiner Meinung nach, schon etwas irreführend für 
Leute mit imperativen Erfahrungen.

Deswegen sieht man hier auch häufig die Warnung, das mit VHDL keine 
Programme sondern Strukturen beschrieben werden.

von Cle (Gast)


Lesenswert?

Sascha W schrieb:
> Ok vielen Dank erst mal für eure Antworten.
>
> Warum sind denn vorhandene Programmierkentnisse eher hinderlich?

Weil man eben nicht programmiert.
Eigentlich bildet man eine Digitalschaltung in einer 
Beschreibungssprache ab.

Und wenn man also dann schon programmiert hat und Strukturen wie 
Schleifen ohne nachzudenken anwendet wird das nicht funktionieren.

Wenn man HDL lernt ist es eigentlich am hilfreichsten vorher nur 
Grundkenntnise der Digitaltechnik zu haben, das bringt einen nicht in 
die
Verlegenheit Strategien aus der Softwareentwicklung anwenden zu wollen.

Preview-Kommentar: Staubfänger war schneller und etwas korrekter und 
präziser.
Hinweis: VHDL ist da zum Glück noch etwas weiter weg, es ist sehr 
verlockend in Verilog C-Code zu schreiben (sieht man an diversen 
englischen FPGA-Hilfethreads hier im Forum).

von Staubfänger (Gast)


Lesenswert?

Man kann vielleicht noch hinzufügen, dass man als VHDL-Anfänger mit 
imperativen Erfahrungen letztlich nicht darum herumkommt, ab und zu mal 
in diese Falle zu tappen.

Das wohl schärfste Problem ist, das insbesondere 
"Verhaltensbeschreibungen" durchaus sinnvoll als imperativ zu deuten 
sind. Tatsächlich aber werden auch sie in Strukturen übersetzt. 
Letztlich geht das auch nicht anders, denn im FPGA werden Strukturen 
erzeugt, kein Mechanismus, der Anweisungen interpretiert und ausführt.

Ein ausdrücklich beschriebener Aspekt von VHDL, der mit diesem Thema 
zusammenhängt sind die "concurrent statements". Achte mal auf diese 
Stichwort.

Man muss auch sagen, dass in der Mehrzahl der Text über VHDL keine 
strikte Unterscheidung zwischen "Programm" und "Strukturbeschreibung" 
durchgehalten wird. Wenn auch im Detail immer wieder der Unterschied 
klar wird, so sind gerade in einleitenden Sätzen Phrasen wie "VHDL is a 
programming language" usw. zu lesen.

von Staubfänger (Gast)


Lesenswert?

Noch was, dann bin ich still:

Ich empfinde es als Vorteil, dass ich, zwar mit großem Interesse für uP 
usw. angefangen habe, aber zu allererst herausfinden wollte, wie ein uP 
funktioniert und nicht zuerst wie man ihn programmiert.

Der Unterschied ist vielleicht nicht ganz offensichtlich, aber ich denke 
ich kann ihn erklären:

Ein uP hat selbst eine innere Struktur. Register, ALU und Verbindungen 
zwischen ihnen und ein Steuerwerk, dass diese Verbindungen und die 
Wirkung der ALU kontrolliert. Was dann Eingabe und Ausgabe verbindet ist 
der Ablauf der Steuerschritte.

Und da ist der wesentliche Punkt: Ein Programm schreiben heisst 
zunächst, den Ablauf dieser Steuerschritte zu beschreiben. Man bildet 
eine Folge von Rechenoperationen und Entscheidungen. Und das ist einen 
Schritt tiefer die Manipulation einer konfigurierbaren (und ständig neu 
konfigurierten) Struktur.

In Assembler ist man gezwungen, sich immer dieser Tatsache bewusst zu 
sein. Es gibt nur eine begrenzte Anzahl Register. Es gibt nur bestimmte 
Operationen. Alles andere muss man aus Schritten zusammensetzen.

Wenn man hingegen mit einer höheren imperativen Sprache beginnt, 
fokussiert man fast unwillentlich auf das Problem: z.B. wie eine 
Mittelwertberechnung abläuft oder eine Temperatur von Celsius in 
Fahrenheit umzurechnen ist. Man verwendet munter Variablen und 
Kontrollflussanweisungen und Bedingungen und der Compiler nimmt einem 
die Arbeit ab, zu bestimmen, wie das letztlich als elementare 
Anweisungen aussieht, welche die Struktur steuern (Assembler). Compiler 
selbst sind (bis auf wenige Ausnahmen) nicht so entworfen, dass die 
Steuerung der Struktur im Vordergrund steht, sondern die Wirkung auf 
Daten und Kontrollfluss. OK. Jetzt wird es vielleicht zu abstrakt.

Jedenfalls wollte ich sagen, wer mit uP anfängt und sich mit deren 
Struktur auseinandersetzt, ist sich öft bewusster, was der Unterschied 
zwischen Strukturbeschreibung und Ablaufbeschreibung ist.

von Bitwurschtler (Gast)


Lesenswert?

Sascha W schrieb:
> Warum sind denn vorhandene Programmierkentnisse eher hinderlich?

Weil man beim FPGA-design kein Programm sondern eine digitale Schaltung 
entwirft.

Vorgehen FPGA (vereinfacht):

*Blockbild zeichnen: verwendete Symbole: Counter, FF, Muxer, Logikwolke, 
Memory,FSM

*Blockbild mit den passenden VHDL-templates beschreiben

*Syntax fehlerfrei machen -> Simulation -> funktionale Fehler fixen

*Synthese/Map/P&R _> synthese-Errors beseitigen -> downloadfile erzeugt


Vorgehen Programmieren:

*Grob Programmablauf im Kopf haben

*mit if/then/case/etc. Programm als variablenzuweisung und 
routinenaufruf runtschreiben

*compile bis swyntax error raus, dann debug.


-> da gibt es bis auf die keywords if/then/else keine Gemeinsamkeiten , 
das eine implementiert ein Blockbild aus digitalen Blöcken, das andere 
einen Programmablauf aus Variablenzuweisung.

von Sascha W (Gast)


Lesenswert?

WOW.....vielen Dank für eure Hilfe und Hinweise.

Ich bin nach wie vor davon überzeugt, sodass ich mich nun in dieses 
Gebiet einarbeiten werde.

Viele Grüße

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.