Hi!
Die CPLDs basieren auf Flash-Technologie, die FPGAs auf SRAM,
d.h., die CPLDs behalten ihre Info, die FPGAs benötigen
entweder ein Konfigurations-PROM oder man lädt das Programm
immer wieder rein.
Mich stört diese Angabe „basiert auf Flash-Technolgie“ oder eben „basiert auf SRAM-Technologie“ immer ein bisschen, weil sie den unbedarften Einsteiger ziemlich in die Irre führen kann. Die Hauptfunktion von FPGAs und CPLDs ist ja _Logik_, und wenn man was von „basiert auf xxx-Technologie“ hört, denkt man als erstes an die Logik-Schaltungen. Und die haben nun wirklich nichts mit SRAM oder Flash zu tun.
Dass diese Logik-Elemente auch „eingestellt“, „verdrahtet“, also programmiert werden müssen, ist klar. Dafür kommen beim FPGA SRAM-Zellen, beim CPLD Flash-Zellen zum Einsatz.
Die CPLDs genügen für sehr kleine Anwendung, wie das
synchronisieren von Signalen, EPROM-Emulatoren oder kleine
Spielereien wie Lauflicht etc. Sie sind dabei recht schnell.
Die FPGAs sind für größere Projekte ohne weiteres geeignet
(Audio-Video-verarbeitung, Encodierer usw.), sie lassen sich
bis 200 MHz takten.
FPGAs sind jene Bausteine, die die Weiterentwicklung von Platinen-Technologien (Anzahl der Layer, Toleranzen der Fertigung, minimale Leiterbahnbreite und -abstände, …) am stärksten fordern. Das kommt daher, weil es vorallem bei den großen FPGAs, sehr große Gehäuse gibt. Xilinx hat zB ein Gehäuse mit 1517 Pins (!). Das ist ein Quadrat mit 39*39 Pins. (BGA-Gehäuse = Ball Grid Array). All die Anschlüsse müssen ja unter dem FPGA hervor geleitet werden -> viele Layer und dünne Leitungen.
FPGAs vergessen nach einem Strom-Ausfall ihre Funktion. Daher müssen sie vor jedem Einsatz programmiert werden. Dazu bekommen sie einen Bitstream reingeschickt (welches Bit welche Logik-Funktion bezeichnet ist strenges Geheimnis des jeweiligen Herstellers) der entweder aus einem eigenen Konfigurations-EPROM kommt oder auch von einem Mikrocontroller reingetaktet wird (die Routine dafür zu schreiben ist sehr einfach).
FPGAs können hoch komplexe Logik-Funktionen erledigen, ganze Prozessoren kann man aus ihnen machen, manche haben sogar (zusätzlich zu den Logik-Funktionen) eigene echte Prozessoren (in Silizium gegossen) eingebaut (zB Xilinx Virtex-Pro hat bis zu 4 (!) PowerPC on Chip). FPGAs haben auch eine Menge SRAM (sog. BlockRAM) eingebaut, das sich flexibel innerhalb der Logik nutzen lässt (also nicht für das Verdrahten verwendet wird). Mehrer hundert kBit bis einige MBit sind in den großen Modellen zu finden (die allerdings pro Stück so viel wie ein Mittelklassewagen kosten!). Es gibt auch noch verteilte Speicherelemente in jedem Logikelement, die als Register (im Sinne von D-Flip-Flop, nicht von EAX, EBX, …) verwendet werden.
CPLDs haben eher einfache Logik-Strukturen, können daher auch keine so komplexen Aufgaben erledigen. Sie haben insbesondere eine ganz genau vordefinierte innere Struktur durch die man eindeutig die Durchlaufzeit eines Signals vom Eingang zum Ausgang bestimmen kann. Das ist bei FPGAs je nach Ergebnis der Synthese unterschiedlich.
Es gibt auch recht günstige FPGAs (zB Xilinx Spartan-IIE, ca. € 15,-- aufwärts) die man auch bei RS Components oder Farnell bestellen kann. Die großen Modelle kriegt man aber nur sehr schwer zB bei NuHorizons.
Bye
Hansi