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
> Was haben sie für große Vorteile?
...herausfordernte Denkweise in der Hardwarebescheibung. Wenn das ein
Vorteil sein sollte ;)
Hier ein PDF als Anhang zum Lernen, für das Timing einer VGA Karte. Gruss Holger.
Sinfet, welches Buch wirst Du zum Einstieg benutzen ?
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-21 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.
...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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.