mikrocontroller.net

Forum: FPGA, VHDL & Co. Grundsätzliche Verständnisfrage zu FPGAs und CPLDs


Autor: Sinfet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich will mich ab nächster Woche intensiver mit dem Thema FPGAs und VHDL 
auseinandersetzten. Buch und Demoboard sind schon da bzw. noch auf dem 
Weg.
Finde das ganze sehr interessant...nur eine Frage konnte mir bis jetzt 
noch kein Buch oder Tutorial so richtig beantworten: Was sind die 
Einsatzgebiete von FPGAs?

Ich habe vorher einige Jahre Microcontroller (PICs, ATmegas) 
programmiert und das waren natürlich ganz andere Welten. Bussysteme und 
Protokolle liesen sich mit wenigen Zeilen Code initialisieren. Bei FPGAs 
sieht die Welt dagegen ganz anders aus.

Deshalb frage ich mich für was FPGAs denn prädistiniert sind? Wo braucht 
man sie? Was haben sie für große Vorteile?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sinfet (Gast)

>Was sind die Einsatzgebiete von FPGAs?

- dort, wo uCs u langsam sind
- dort wo DSPs zu langsam sind (z.b. Bildverarbeitung)
- dort wo ein ASICs zu teuer wäre (eigene Logischaltungen, Anpassungen, 
Ersatz von abgekündigten ASICs)
- Prototypen für ASICs, Emulation
- Codeknacker, einige hundert bis tausend FPGAs parallel können einige 
Millionenn Codeschlüssel pro Sekunde prüfen, so wurde schon DES geknackt

>Protokolle liesen sich mit wenigen Zeilen Code initialisieren. Bei FPGAs
>sieht die Welt dagegen ganz anders aus.

Wieso? Dort kann man auch mit relative wenig Zeilen viel erreichen. OK, 
ist nicht C, aber immerhin RTL, vergleichbar mit Assembler.

>Was haben sie für große Vorteile?

- extrem hohe Datenverarbeitungskapazität
- Flexibilität

MFG
Falk

Autor: Johannes Glück (hansimglyck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was haben sie für große Vorteile?
...herausfordernte Denkweise in der Hardwarebescheibung. Wenn das ein 
Vorteil sein sollte ;)

Autor: Holger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein PDF als Anhang zum Lernen,
für das Timing einer VGA Karte.

Gruss Holger.

Autor: Markus_B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinfet, welches Buch wirst Du zum Einstieg benutzen ?

Autor: Sinfet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Infos soweit.
Der Link ist auch sehr interessant. Was man mit so wenig Ressourcen 
alles hinbekommt, wow ;)

Ich habe mir das Buch
http://www.amazon.de/exec/obidos/ASIN/3486258095/z...

VHDL-Synthese
von Jürgen Reichardt und Bernd Schwarz gekauft

Das Buch dürfte morgen kommen. Habe hier im Forum etwas rumgeschaut und 
das Buch scheint hier gute Kritiken zu geniesen.

Autor: Sinfet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und wieder die Hälfte im Text vergessen ;)

Heist das, dass FPGAs prinzipell die selben Aufgaben erledigen können 
wie µC, nur darüber hinaus noch mehr und mit höherer Geschwindigkeit?

@ Johannes Glück
Das war genau einer der Gründe wieso ich mich entschied die FPGAs und 
VHDL näher kennen zu lernen. Ich liebe digitaltechnische 
Herausforderungen :)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sinfet (Gast)

>Heist das, dass FPGAs prinzipell die selben Aufgaben erledigen können
>wie µC, nur darüber hinaus noch mehr und mit höherer Geschwindigkeit?

Prinzipiell ja. Praktisch hat das aber seine Grenzen, weil das 
Abstraktionsnivau recht niedrig ist, sprich, VHDL ist in etwa wie 
Assembler. Und bekanntermassen verliert man bei grösseren Sachen mit ASM 
irgendwann mal den Überblick bzw. der Aufwand wird sehr hoch. Dann 
steigt man auf einem uC auf C oder ähnliches um. Bei FPGAs geht das 
nicht so einfach.

>VHDL näher kennen zu lernen. Ich liebe digitaltechnische
>Herausforderungen :)

Wo ist da die Herausforderung ? Gibt doch nur 0 und 1 ;-)

MFg
Falk

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Heist das, dass FPGAs prinzipell die selben Aufgaben erledigen können
> wie µC, nur darüber hinaus noch mehr und mit höherer Geschwindigkeit?

Jein. Ein FPGA ist eine riesige Ansammlung von Logikgattern, die man 
dann irgendwie verknüpfen muss - typischerweise wird diese Verknüpfung 
per VHDL definiert. Ein Mikrocontroller ist nun eigentlich auch nichts 
weiter als eine riesige Ansammlung von Logikgattern, die aber bereits 
'ab Fabrik' verknüpft sind. Also kann man eigentlich ein Mikrocontroller 
in einen FPGA einprogrammieren. Andererseits hat ein Mikrocontroller 
viel Onboard-Peripherie, die teilweise zwar auch per FPGA gemacht werden 
kann, teilweise aber nur schwer oder gar nicht: AD-Wandler oder Speicher 
beispielsweise.

Autor: Sinfet (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso. Jetzt kann ich mir ein Bild machen.

>Wo ist da die Herausforderung ? Gibt doch nur 0 und 1 ;-)

Genau desswegen :)
µC wurden mir irgendwie zu trivial. 5 Zeilen Code und schon kann man 
seine Freunde mit einer LCD-Laufschrift beeindrucken...
Da find ichs mal interessanter etwas tiefer in die digitale 
Schaltungstechnik einzusteigen.

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Heist das, dass FPGAs prinzipell die selben Aufgaben erledigen können
> wie µC, nur darüber hinaus noch mehr und mit höherer Geschwindigkeit?

Nein.

Prinzipiell sind µC und FPGAs beide in der Lage, beliebige (digitale) 
Schaltungen zu realisieren. Praktisch teilen sich Schaltungen auf in 
verschiedene Gebiete, wo bestimmte Bausteine oder Kombinationen davon 
besser geeignet sind als andere. Je nach Aufgabe ist also ein µC, oder 
ein FPGA, oder ein µC + ein FPGA, oder auch zwei µC die schnellste, 
kleinste oder billigste Lösung. Ein FPGA kann also nicht "besser" als 
ein µC sein, ohne die Aufgabe zu kennen.

Ein guter Anhaltspunkt für die Entscheidung:
- Kontrollflusslastige Aufgaben -> µC (viele verschiedene 
Einzelaufgaben, die jeweils selten, unter bestimmten Bedingungen und in 
bestimmter Reihenfolge erledigt werden müssen)
- Datenflusslastige Aufgaben -> FPGA (wenige verschiedene 
Einzelaufgaben, die ständig und parallel erledigt werden müssen)

Der VGA-Controller ist sogar mein Lieblingsbeispiel für 
FPGA-Anwendungen: Ein µC wäre damit überfordert, VGA-Signale per 
Programm zu erzeugen. In einem FPGA braucht das eine winzige Ecke der 
Logikressourcen. Grund: Die Berechnungen sind extrem einfach (zwei 
Zähler), müssen aber ständig laufen (um ein stabiles Bild zu bekommen) 
und parallel zu allen anderen Berechnungen.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Falk Brunner

> Prinzipiell ja. Praktisch hat das aber seine Grenzen, weil das
> Abstraktionsnivau recht niedrig ist, sprich, VHDL ist in etwa wie
> Assembler. Und bekanntermassen verliert man bei grösseren Sachen mit ASM
> irgendwann mal den Überblick bzw. der Aufwand wird sehr hoch. Dann
> steigt man auf einem uC auf C oder ähnliches um. Bei FPGAs geht das
> nicht so einfach.

VHDL würde ich eher als Zwischending zwischen C und Assembler 
betrachten. Wenn man es richtig benutzt dann ist es wie eine 
hardwarenahe und portable Programmiersprache. Das gleiche VHDL-Programm 
kann herstellerübergreifend auf völlig unterschiedlichen Architekturen 
funktionieren.

Für größere Projekte sollte man sich natürlich vorher überlegen wie man 
es am besten strukturiert. An besten fängt man klein an. Es ist auch 
möglich in beiden Sprachen monolithische Programme zu erstellen in denen 
sich nach kurzer Zeit niemand mehr zurechtfindet.

Als Assembler-Equivalent würde ich eher den Schaltplaneditor sehen. Dort 
kann man einzelne Gatter und vordefinierte Komponenten verbinden und ist 
an eine bestimmte Schaltkreisfamilie gebunden.

Für sehr komplexe Aufgaben gibt es dann Sprachen wie SystemC.

@Morin

Einfachere uC kann man gleich mit ins FPGA einbauen. Es sollte schon 
gute Gründe geben extra noch einen AVR oder PIC ans FPGA anzuschliessen. 
Siehe auch SoftCore.

Das Einsatzgebiet für FPGAs sehe ich hauptsächlich dort:
- wo viele kleinere Aufgaben in garantierter Zeit erledigt werden müssen
- bei Kleinserien für die sich ein ASIC nicht lohnt
- rekonfigurierbarer Hardware
- wo schnelle Entwicklung gefordert wird (ASIC braucht viel Vorlaufzeit)
- Fehlerkorrektur beim Kunden ;)

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Heist das, dass FPGAs prinzipell die selben Aufgaben erledigen können
> wie µC, nur darüber hinaus noch mehr und mit höherer Geschwindigkeit?

Naja ... Man könnte es so formulieren, dass FPGAs echt mächtiger sind 
als µCs ... Ein FPGA kann einen µC nachbilden, aber andersrum 
funktioniert das so gut wie nicht (oder nur ultra-langsam).

Mfg
Thomas Pototschnig

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Naja ... Man könnte es so formulieren, dass FPGAs echt mächtiger sind
> als µCs ... Ein FPGA kann einen µC nachbilden, aber andersrum
> funktioniert das so gut wie nicht (oder nur ultra-langsam).

Genau da erhebe ich Einspruch :) Die Begründung hängt allerdings davon 
ab, was genau du mit "echt mächtiger" meinst.

Falls du meinst, dass man jede µC-Schaltung mit FPGAs nachbauen kann: 
Stimmt, aber das geht umgekehrt ganz genauso. Man braucht nur genügend 
viele oder große µCs. Genau wie man eben nur genügend viele oder große 
FPGAs braucht.

Falls du meinst, dass man jede µC-Schaltung mit FPGAs *mit 
vergleichbaren Kosten* nachbauen kann -> geht nicht. Nimm die billigsten 
ATtinys und sag mir, welchen FPGA du nehmen willst, um nen Tiny für ca. 
2 Euro nachzubauen.

Immer wieder: Zwischen µC und FPGA gibts kein "besser" oder "mächtiger". 
Die unterscheiden sich in den Kosten für verschiedene Anwendungen. Der 
eine ist hier besser, der andere da.

Autor: 6636 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehm jeweils ein CPLD oder ein FPGA wenn ich ein praezises Timing 
haben muss. Je nach Projekt auf die us...10ns genau. Falls es noch 
genauer sein muss, geht das mit etwas Aufwand auch. Ein Controller ist 
bei 10us am Ende.

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Falls du meinst, dass man jede µC-Schaltung mit FPGAs *mit
> vergleichbaren Kosten* nachbauen kann -> geht nicht. Nimm die billigsten
> ATtinys und sag mir, welchen FPGA du nehmen willst, um nen Tiny für ca.
> 2 Euro nachzubauen.

Man kriegt aber in einen 400k Spartan II rund 12 PIC16F84 rein ... da 
ist das FPGA dann billiger als die 12 PICs :-)

Ist aber Wortklauberei, ich weiß schon was du meinst :-)

Mfg
Thomas Pototschnig

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Man kriegt aber in einen 400k Spartan II rund 12 PIC16F84 rein ... da
> ist das FPGA dann billiger als die 12 PICs :-)

Hui, wusste ich gar nicht... fragt sich dann halt, warum die PICs dann 
nicht so hergestellt werden, aber wahrscheinlich gibt es zu wenige 
Anwendungen für ein Array von 12 PICs...

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.