Forum: FPGA, VHDL & Co. wie in Materie einsteigen?


von Anfänger (Gast)


Lesenswert?

Hallo,

durch Mitlesen bin ich auf den Geschmack gekommen und würde mich auch 
gerne in FPGA und Co einarbeiten.
Folgende Varianten haben mein Interesse geweckt:

1) 
http://www.cesys.biz/epages/61591539.sf/de_DE/?ObjectPath=/Shops/61591539/Products/C1050-4107

2) 
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_47&products_id=182

3) 
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_114_119&products_id=578

Ich weiß, die sind nicht nur preislich völlig unterschiedlich - deshalb 
meine Fragen dazu:

An Themen interessiert mich v.a. komplexe Motorsteuerungen, der 
Audiobereich aber auch (flotte) Datenerfassung und -übertragung in 
Richtung PC, weshalb ich besonders mit (2) wegen GBit-Ethernet 
liebäugle.

Wie sieht das von den FPGA-Chips aus? Sind die vergleichbar?
Und wie sieht das bei 1 und 3 mit der Geschwindigkeit aus? Läßt sich da 
später noch Gas geben, oder ist dann ein neues Board fällig?

Wie sieht das bei flotten Zusatzkarten aus (so über 50Mhz auf den 
Leitungen) - welcher Variante würdet ihr den Vorzug geben?

Unter der Vorausetzung, dass ich nicht unterwegs schlapp mache, welches 
Board hat die besten Karten, mich langfristig - vielleicht sogar bei 
neuen Anforderungen - zufrieden zu stellen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nummer 3 wäre meine Wahl.

> der Audiobereich
Das ist für ein FPGA schnarchlangsam...

> komplexe Motorsteuerungen, aber auch (flotte) Datenerfassung und
> -übertragung in Richtung PC, weshalb ich besonders mit (2)
> wegen GBit-Ethernet liebäugle.
Du hast gute Chancen, die Latte gleich nach dem Anlauf zu reißen  :-o

von Anfänger (Gast)


Lesenswert?

Hallo Lothar,

erstmal herzlichen Dank für Deine Antwort!

> Nummer 3 wäre meine Wahl.

Könntest Du mir die Wahl bitte etwas erläutern? Die ganzen IO-Teile wie 
LCD, Taster, Segmentanzeigen etc. habe ich schon bei mir rumfahren. Das 
wäre mir z.B. nicht wichtig.

>> der Audiobereich
> Das ist für ein FPGA schnarchlangsam...

auch wenn ich in Richtung digitale Filter, bzw. Equalizer denke?

> Du hast gute Chancen, die Latte gleich nach dem Anlauf zu reißen  :-o

Interpretiere ich das richtig, dass Du meinst, ich würde mir zuviel 
zumuten?
Kann durchaus sein - mal sehen. Aber man muss sich ja Ziele stecken. Ne 
LED zum blinken bringen ist ja nicht wirklich spannend.
Fantasie habe ich reichlich - manchmal fehlt einfach der richtige 
Ansatz.

Wie sieht es denn bei Nummer 3 aus?
Kann man bei dem Board noch GBit-Ethernet nachrüsten?
Wenn ja, wie aufwändig wäre das? - Habe hier noch nicht viele Beiträge 
dazu gefunden.

von J.H. (Gast)


Lesenswert?

Also, ich bin zwar auch wirklich ein Tiefstapler, aber ich hab auch mit 
dem Einstieg begonnen einfach um beruflich nicht ganz den Anschluss zu 
verlieren und in dem Bereich auch etwas Ahnung zu bekommen.
Aber SO problemlos wie man zuerst meint ist das gar nicht finde ich.
Meine Visionen sind allerdings von meinen Kentnissen noch meilenweit weg 
- leider. ich kann allerdings auch noch nciht auf Harware zugreifen.

Anhand meiner Posts kann man sicher ersehen, daß ich mich mit Syntax und 
Denkweise schwer tue... :-(
Bin übrigens nicht unerfahren in embedded Entwicklung mit Assembler und 
c.

Benut wenn du loslegst doch einfach meinen Code Snippe thread damit der 
informativ wird.

Viel Glück und Spaß

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>>> der Audiobereich
>> Das ist für ein FPGA schnarchlangsam...
> auch wenn ich in Richtung digitale Filter, bzw. Equalizer denke?
Ja, auch dann...  ;-)

> Die ganzen IO-Teile wie LCD, Taster, Segmentanzeigen etc. habe ich schon
> bei mir rumfahren. Das wäre mir z.B. nicht wichtig.
Es ist einfach schöner (und damit frustbefreiter), wenn am Anfang alles 
hübsch auf einer Platine ist und sicher funktioniert (weil richtig 
angeschlossen). Das spart gleich mal eine durchgemachte Nacht ;-)

>> Du hast gute Chancen, die Latte gleich nach dem Anlauf zu reißen  :-o
> Interpretiere ich das richtig, dass Du meinst, ich würde mir zuviel
> zumuten?
ACK

> Wie sieht es denn bei Nummer 3 aus?
> Kann man bei dem Board noch GBit-Ethernet nachrüsten?
Du kannst dir (wenn du dann soweit bist) einfach ein aktuelles Board 
mit dieser Schnittstelle kaufen. Eval-Boards verlieren kaum an Wert ;-)

von Anfänger (Gast)


Lesenswert?

Ok, das leuchtet ein! - Danke Dir für Deine Antworten.

Dann werde ich Deinen Rat mal beherzigen :)

von Anfänger (Gast)


Lesenswert?

Öhm - ich hätte da mal ne ganz dumme Frage:

Funktionieren die Schnittstellen wie USB und Ethernet über externe HW, 
oder müssen die im FPGA erst synthetisiert werden?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Funktionieren die Schnittstellen wie USB und Ethernet über externe HW,
Normalerweise ja.
Ein USB-Device gibts bei opencores, das geht also auch im FPGA:
Beitrag "USB-Device von opencores"
Beitrag "USB Device an FPGA oder mc"
Aber oft ist es billiger, einen externen USB-Chip zu verwenden  ;-)

> oder müssen die im FPGA erst synthetisiert werden?
Teile davon können im FPGA synthetisiert werden. Wobei beim Netzwerk 
der Phy in der Regel immer als Hardware angeschlossen ist.

von Anfänger (Gast)


Lesenswert?

OK, ich seh schon, warum Du das mit der Latte geschrieben hast :)

Ein Punkt ist mir noch nicht ganz klar:
Ein FPGA (von Ausnahmen abgesehen) lädt ja sein Programm bei jedem Start 
neu. Ich gehe mal davon aus, dass der Programmlader hart implementiert 
ist, sonst würde ja nix funktionieren.

Kann ich mir ansonsten den FPGA wie einen großen CPLD vorstellen, oder 
muss ich irgendwelche Seiteneffekte berücksichtigen (beim VHDL-proggen, 
bzw. beim Malen mit den Designer)?

In meiner Vorstellung ist so ein Cio-Chip ein blackbox-FSM, der nur das 
tut, was ich ihm synthetisch beigebracht habe. Ist die Vorstellung 
halbwegs brauchbar, oder ziemlich daneben?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Ich gehe mal davon aus, dass der Programmlader hart implementiert
> ist, sonst würde ja nix funktionieren.
Es gibt verschiedene Modi, bei einigen davon ist das FPGA Master und 
lädt sich seine Konfiguration aus einem angeschlossenem Speicher.

> Kann ich mir ansonsten den FPGA wie einen großen CPLD vorstellen
Naja, CPLD heißt Complex Programmable Logic Device. So könnte man sagen, 
auch ein FPGA ist eine komplexe programmierbare Logikeinheit.

Aber unter CPLD hat sich quasi die Weiterentwicklung von PALs/GALs 
manifestiert. Man hat hier mächtige Produktterme, die aufwendige 
kombinatorische/logische Funktionen abbilden können. Aber man hat leider 
nur wenige FFs, um etwas zu speichern. Die Verdrahtung zwischen diesen 
Einheiten ist fest, es werden "nur" die Logikfunktionen abgebildet.

FPGAs dagegen haben viele FFs und jedesmal ein kleines Häppchen 
Kombinatorik davor. Das meiste (und das eigentliche Know-How) ist die 
Verdrahtung dieser Einheiten.

> oder muss ich irgendwelche Seiteneffekte berücksichtigen
> (beim VHDL-proggen, bzw. beim Malen mit den Designer)?
In erster Näherung: Nein.
Aber um die einzelnen Komponenten ideal ausnützen zu können, 
unterscheiden sich meine CPLD-Beschreibungen (oft deutlich) von den 
FPGA-Beschreibungen.

> In meiner Vorstellung ist so ein Cio-Chip ein blackbox-FSM, der nur das
> tut, was ich ihm synthetisch beigebracht habe.
Du selber beschreibst diese Black-Box. Ein FPGA hat nur 
Speicherelemente (FFs), Kombinatorik (LUTs) und Verdrahtung (Routing).

von Anfänger (Gast)


Lesenswert?

Hallo Lothar,

Danke für Deine Ausführungen. Habe also doch schon etwas verstanden :)

>> oder muss ich irgendwelche Seiteneffekte berücksichtigen
>> (beim VHDL-proggen, bzw. beim Malen mit den Designer)?
> In erster Näherung: Nein.
> Aber um die einzelnen Komponenten ideal ausnützen zu können,
> unterscheiden sich meine CPLD-Beschreibungen (oft deutlich) von den
> FPGA-Beschreibungen.

Hm, liegt das daran, dass die Produktterme im FPGA nicht so mächtig 
sind, oder woran liegt das?

Könntest Du mal ein Beispiel nennen?
 - Nur so als Anhaltspunkt, in Welche Richtung man denken sollte (falls 
das möglich ist zu beschreiben).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Hm, liegt das daran, dass die Produktterme im FPGA nicht so mächtig
> sind, oder woran liegt das?
Ein FPGA hat LUTs.
Die im Spartan 3 von Xilinx hat 4 Eingänge. Mit diesem Logikelement kann 
also jede Kombinatorik mit bis zu 4 Variablen ('0' und '1') abgebildet 
werden, also z.B. ein 4-fach UND, ein 4-fach OR, NOR, NAND...
Wenn jetzt ein 5. Eingang nötig wird, braucht man schon 2 solcher LUTs.

Na schön, könnte man sagen. ist doch nicht so schlimm. Aber hinter jeder 
LUT hängt auch ein FlipFlop, das nur über die LUT angefahren werden 
kann. Und wenn ich jetzt eine LUT für den 5. Eingang brauche, dann kann 
ich das FF dahinter nicht mehr nutzen.

Spartan 6 hat z.B. als großen Fortschritt 6-Input LUTs.

von Anfänger (Gast)


Lesenswert?

> Ein FPGA hat LUTs.
> Die im Spartan 3 von Xilinx hat 4 Eingänge. Mit diesem Logikelement kann
> also jede Kombinatorik mit bis zu 4 Variablen ('0' und '1') abgebildet
> werden, also z.B. ein 4-fach UND, ein 4-fach OR, NOR, NAND...
> Wenn jetzt ein 5. Eingang nötig wird, braucht man schon 2 solcher LUTs.

Puh - ich glaube ich spüre, was Du meinst.

Habe gerade nochmal einen Blick ins DB geworfen - dort ist es erwähnt, 
aber nur in einem Diagram. Wenn man's weiß, ist's leicht zu finden, 
ansonsten überliest man es doch schnell.

Was mir dabei aufgefallen ist:
Es wird gewechselt zwischen der Schreibweise A[4..1] und A[3..0]
- ist das völlig Banane, ob man bei 0 oder 1 anfängt, oder hat das 
Seiteneffekte?

Wenn das mit den LUTs so begrenzt ist, macht es dann Sinn, in VHDL einen 
Switch auszucoden, anstatt Logikoperatoren einzusetzen, oder macht der 
Synthetisierer da wieder das gleiche draus?

Bei der Gelegenheit möchte ich Dir auch einmal für Deine sehr 
informative HP danken! Habe schon viel davon gelernt!

Dann habe ich noch ne Frage zur Peripherie-Anbindung. Nachdem ich 
gelesen habe, dass man mit der Lötpad-Technik locker bis 500 MHz packen 
kann, habe ich Mut bekommen, es auch mit eigenen (Addon-)Platinen zu 
versuchen.
Im DB steht ja, dass der Spartan die differentiellen Eingänge selbst 
terminiert hat. Dem entnehme ich, dass man sich das im PCB-Layout 
zumindest für die Seite sparen kann.
Wenn ich jetzt einen anderen Chip habe, der sehr schnelle serielle Daten 
erzeugt und nur single-ended Pins (bei z.B. einem TQFP) hat, wie kann 
ich sinnvollerweise auf differentielle Signale/Leitungen kommen, ohne 
einen Sender zu produzieren?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Es wird gewechselt zwischen der Schreibweise A[4..1] und A[3..0]
> - ist das völlig Banane, ob man bei 0 oder 1 anfängt, oder hat das
> Seiteneffekte?
In Verbindung mit den LUTs habe ich nur A4..A1 gefunden...
DPRAM ist was anderes  ;-)

> Wenn das mit den LUTs so begrenzt ist, macht es dann Sinn, in VHDL einen
> Switch auszucoden, anstatt Logikoperatoren einzusetzen, oder macht der
> Synthetisierer da wieder das gleiche draus?
Das kommt darauf an...
Sieh dir mal nur das eine Beispiel mit dem vertauschten AND an:
http://www.lothar-miller.de/s9y/archives/52-Kompakte-Flankenerkennung.html
Genau die selbe Beschreibung, aber andere Synthese :-o
Allerdings ist das in der Praxis nicht weiter schlimm, denn um an das FF 
zu kommen, muß sowieso über irgendwelche MUX gefahren werden. Ob da noch 
ein Invertrer drin ist, tut normalerweise nichts zur Sache.

Ich nehme die Beschreibung, die besser zu lesen ist. Kombinatorik wird 
üblicherweise Concurrent beschrieben, getaktete Vorgänge im Prozess. 
Allerdings ist die Hemmschwelle, won diesen Vorgaben abzuweichen, nicht 
allzu hoch angesetzt.

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.