by avg » Mon Nov 19, 2007 12:00 am
Hallo,
dies ist ein Thema das in diversen Foren schon bis zum Abwinken durchgekaut wurde (z.B. http://www.mikrocontroller.net/topic/67044).
Aber hier nochmals eine Zusammenfassung der wichtigsten Unterschiede (so wie ich diese sehe).
FPGAs:
- beinhalten vereinfacht ausgedrückt nur Gatter und FlipFlops (ähnlich wie Gals nur sehr viel grösser).
Durch die Programmierung (Konfiguration) verschaltet man die Gatter und Flipflops untereinander sodass eine bestimmte Schaltung entsteht.
Hierbei können natürlich alle Gatter zu selben Zeit arbeiten, d.h. es läuft alles parallel (gleichzeitig) ab (dies ist auch der grösste Unterschied zu einem uC).
- Anwendung immer dort wo hohe Geschwindigkeit erforderlich ist (z.B. Signalverarbeitung mit hohen Sampleraten, Bildverarbeitung, ...)
- Die Vorteile gegenüber einem uC sollten jetzt einigermassen klar sein (=> dass der FPGA "echte Hardware" beinhaltet und dadurch viel schneller ist als ein Prozessor).
- Nachteile sind die viel komplexeren FPGA Entwurfsmethoden (VHDL, Synthese, Place & Route, ...), bedingt dadurch dass beim FPGA alle parallel geschieht.
- FPGAs können alles was ein Prozessor kann (und umgekehrt). Es ist nur eine Frage des Aufwands und der notwendigen Geschwindigkeit. FPGAs haben in der Regel nur digitale E/As. A/D-Wandler etc. sucht man dort vergebens (muss extern angeschlossen werden).
Man kann auch in einem FPGA einen Prozessor implementieren (z.B. beim Elektor FPGA-Kurs wurde ein 8051 Prozessor eingesetzt). Diesen nennt man dann Softcore (da er nicht als "echte Hardware" vorliegt.
uC:
Die Hardware ist fix, nur die Software ist variabel. Der uC arbeitet sein Programm sequentiell ab und kann immer nur einen Befehl zu einer Zeit ausführen (wenn es nicht gerade ein Pentium Prozessor o.ä. ist).
Zum hineinschnuppern ins Thema VHDL und FPGA wären ev. die ersten paar Teile vom Elektor VHDL-Kurs geeignet (auch wenn man kein Elektor FPGA-Board hat).
MfG.
Andreas