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?
@ 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
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/zanoxde135174-21VHDL-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.
...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 :)
@ 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
> 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.
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.
> 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.
@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 ;)
> 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
> 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.
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.
> 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
> 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...