Unterschied FPGA und CPLD?

Hallo - weiß jemand den Unterschied zwischen FPGA und CPLD? Ich hab schon gesucht aber nichts gefunden ...

Reply to
Thomas Pototschnig
Loading thread data ...

Thomas Pototschnig schrieb:

FPGA: Viele Flipflops mit relativ mageren Logikressourcen pro Flipflop (z.B. nur 4 oder 5 Eingänge)

CPLD: Relativ wenige Flipflops mit viel Logik

In der Konsequenz gehen einem im CPLD typischerweise zuerst die Flipflops aus, im FPGA schafft man das kaum.

FPGAs sind oft SRAM-basiert und müssen "gebootet"werden, während das typische CPLD nichtflüchtig ist.

--
Cheers
Stefan
Reply to
Stefan Heinzmann

FPGA: Typischerweise konfigurierbare Logikelemente mit relativ wenigen Eingängen, die über mehrere Stufen regelrecht geroutet werden (z.B. über Leitungen, die mit MOS-Schaltern gekoppelt sind). CPLD: Klassische UND/ODER Feld Architektur mit einem optionalen Speicherelement hintendran und einer (zumindest gedachten) Verbindungsmatrix jeder zu jedem.

Der Übergang ist fließend, so wird das jeder-zu-jedem bei CPLD's gerne auch per Optimierungssoftware erledigt und es gibt mehrstufige CPLD's.

Weil die EEPROM/FLASH-Zellen eher magere Pegel liefern, ist ein mehrstufiges Routing praktisch nur mit zwischengeschalteten Leseverstärkern möglich, weswegen sich die sofortige Verfügbarkeit der Logik nach dem Einschalten typischerweise auf CPLD's beschränkt (eben Und-Funktion direkt auf der Matrix-Spalte differentiell realisiert, dahinter ein Leseverstärker und dann die Oder-Funktion).

Die mehrfach hintereinandergeschalteten MOS-Schalter der FPGA's brauchen klar definierte Pegel wie sie von SRAM Zellen geliefert werden, daher unterliegen FPGA's typischerweise einem Bootprozess, auch wenn der EEPROM/FLASH Speicher intern realisiert ist.

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
Reply to
Oliver Bartels

In erster Näherung sind Fpgas grösser und komplexer aber auch flexibler.

Kannst du bitte erklären was du damit meinst? IdR verwendet man bei Fpgas komplexe Logikblöcke mit 3-5 Eingängen und einem Ausgang die alle Logikfuntionen nachbilden können. Eine Konvention, dass am Ausgang jedes Logikblockes ein FF sein muss, gibt es aber nicht, auch wenn das bei Xilinx so ist.

Ich würde als Unterschied ansehen, dass ein CPLD üblicherweise Pin->PLA-> [FF->] PIN aufgebaut ist. Bei neueren CPLDs sind Schleifen zwischen den Pins erlaubt, allerdings nicht in beliebiger Variation. Beim FPGA hat man (nahezu) jede beliebige Anordnung von Logik und FF zwischen den Pins. Eine mehrstufige Pipeline in CPLDs halte ich nicht für realistisch.

Üblicherweise haben Fpgas längere Laufzeiten zwischen den Pins, mehr Pins, mehr FF und eine langsamere Logik, da die Logik üblicherweise mehrstufig ist, wohingegen die PLA ja nur zweistufig ist.

Das geht durchaus, wenn man keine Technologie hat in der Logik durch FF ersetzt werden kann 8(.

Das "oft" und "typisch" sind IMHO eine Entscheidung des Marktes und hat wenig bis keine technischen Gründe.

bye Thomas

Reply to
Thomas Stanka

Ich meine damit, daß man bei CPLDs am Eingang jedes FF wesentlich mehr Eingangssignale verknüpfen kann. Das liegt natürlich an der PLA-Struktur. Beim Xilinx XC9500 zum Beispiel hat man die Möglichkeit,

36 Signale zu verknüpfen, um den D-Eingang eines FF zu versorgen. Das erlaubt natürlich viel komplexere Logik als die 3-5 Eingänge bei einem FPGA-Logikblock. Man wird dafür im FPGA mehrstufig arbeiten müssen, wodurch natürlich die Laufzeiten ansteigen.

Eine Konvention daß am Ausgang eines Logikblocks ein FF sitzen muß gibt's selbstverständlich nicht. Trotzdem ist es bei den allermeisten FPGAs so. Bausteine, bei denen das nicht so ist, kann man guten Gewissens als Exoten bezeichnen.

Es gibt inzwischen doch etliche CPLDs, bei denen ein guter Teil der Flipflops (bzw Makrozellen) nicht einem Pin zugeordnet ist, sondern für intern rückgeführte Signale verwendet wird. Mehrstufige Logik ist damit ohne weiteres möglich und wird nach meiner Kenntnis auch oft benutzt.

Aber es stimmt: Pipelines sind eher eine FPGA-Domäne, zum einen weil sie FF-hungriger sind, zum anderen weil man damit bei FPGAs die kurzen Laufzeiten erreichen kann, die bei CPLDs auch direkt erreichbar sind.

Korrekt.

Das habe ich jetzt nicht kapiert. Ist es nicht gerade andersrum?

Oliver Bartels hat schon ausgeführt, daß es durchaus technische Gründe gibt. Aber es stimmt natürlich auch daß es eine Marktentscheidung ist.

Es gibt z.B. bei den FPGAs auch einmal programmierbare Varianten, die auf einer Fuse- oder Antifuse-Technik beruhen. Diese sind aber bei weitem nicht so verbreitet wie die SRAM-basierten Typen, wahrscheinlich weil das Auswechseln des Chips bei heutigen IC-Gehäusen immer problematischer wird und daher in der Entwicklungsphase unpraktisch ist.

--
Cheers
Stefan
Reply to
Stefan Heinzmann

"Stefan Heinzmann" schrieb:

Ergänzend würde ich noch erwähnen, das das Timingverhalten bei den FPGAs aufgrund der von Dir genannten Dinge ziemlich schwer bis gar nicht genau vorraussagbar ist. Das ist wiederum der Vorteil bei den "einfacher" aufgebauten CPLDs. Da ist es recht genau vorrauszuberechnen. Ist eben nur Logik mit der programmierbaren AND Matrix, der festen ODER Matrix und den ggf. nachgeschalteten FFs. Das läßt sich gut berechnen. Allerdings kann man sich aber dafür mit CPLDs auch keinen eigenen Prozessor zusammen basteln, etwas, das mit FPGAs (die größeren klar) ohne weiteres machbar ist. Hat sich schon mal jemand so tief reingewagt und so was realisiert ?

Opteron "made by self", das wär doch mal was :-)

cu Marc

Reply to
Marc Keller

Und, schon so ein Teil gekauft? Sind die nach jahrelanger Ankündigung inzwischen zu vernüftigen Preisen lieferbar?

Ing.olf

Reply to
Ingolf Pohl

Gar nicht mehr notwendig, die neuen Xilinx haben sogar einen PowerPC-Core onboard.

Florian

--
int m,u,e=0;float l,_,I;main(){for(;1840-e;putchar((++e>907&&942>e?61-m:u)
["\t#*fg-pa.vwCh`lwp-e+#h`lwP##mbjqloE"]^3))for(u=_=l=0;79-(m=e%80)&&
 Click to see the full signature
Reply to
Florian-Wolfgang Stock

Bitte? Da Timingverhalten lässt sich genauso gut vorhersagen. Wenn du einigermassen weisst was du tust und die Technik kennst, kannst du schnell abschätzen viele Stufen deine Logik hat. Nach Synthese und Layout bekommst du das genaue Timing.

Dazu braucht es keinen grossen FPGA. Ein 8-16 Bit Risc mit wenig Schnickschnack lässt sich im XC4000 in 400 CLB unterbringen. Es gibt massig IP Cores fuer kleine 8-32 Bit Prozessoren, die oftmals in weniger als 100k Gatteraequivalenzen unterkommen. Nur deinen Opteron mit vielen Mio Gattern und >1GHz bekommst du so schnell in kein FPGA. bye Thomas

Reply to
Thomas Stanka

FULL ACK.

Na dann bau mal eine 64-Bit Multiplikation im CPLD direkt auf :). Aber im Grunde hast du recht.

Doch ist andersherum, sollte irgendwie meine Mails genauer Korrektur lesen :=).

Oliver beschreibt ein SRAM-basiertes FPGA mit integriertem Flash statt externem EPROM. Mir fällt dazu kein passendes Device ein, das die Technik verwendet. Soweit ich weiss, sind die Actel ProAsic echte flashbasierende Bausteine, es scheint also doch technisch machbar zu sein.

Ein viel grösseres Problem ist nicht das umlöten, sondern die Tasache dass ein kleiner Designfehler ein Baustein unbrauchbar macht. Die (Anti-)Fusebased FPGA sind somit eher Asic-ersatz für kleine Stückzahlen oder sehr schnellen Designflow. Im Gegenzug hat es in echten Geräten grosse Vorteile, wenn man keinen zweiten Baustein (EPROM) braucht und die Schaltung mit Powerup sofort tut.

bye Thomas

Reply to
Thomas Stanka

[...]

Mit (z.B. bei XC2S200) einem Jitter unter 60ps.

--
Dr. Juergen Hannappel          http://lisa2.physik.uni-bonn.de/~hannappemailto:hannappel@physik.uni-bonn.de  Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany     
 Click to see the full signature
Reply to
Juergen Hannappel

"Thomas Stanka" schrieb

Woher willst du denn genau wissen wie, wo und genau mit welchen dieser Logik-Stufen es die Software im FPGA implementiert ? Es ist nicht umsonst das alle Lehrbücher diesen spez. Tip geben, das das Laufzeitverhalten bei komplexeren FPGA Aufganben eben nicht für alle Signale super genau vorraussagbar zu berechnen ist. Vorallen Dingen wenn bei Signalen die eigentlich gleichzeitig ankommen "sollten" doch eine ungeahnte Latenz bei einem der Signale auftritt (deren Logik-implementierung auch entsprechend komplexer ist als bei dem anderen Signal)

Das mit dem Opteron war just kidding! Das man dieses komplexe Ding nie so hibbekommt, vorallen Dingen mit der Geschwindigkeit ist doch klar. Sonst wär sicherlich schon früher jemand auf so was gekommen, oder der Opteron wär schon lange auf dem Markt.... :-)

cu Marc

Reply to
Marc Keller

er meinte nach Synthese und p&r. Normalerweise gibt Abschätzungen die man schon vorher machen kann, die sind auch recht ungenau, dienen oft dazu um zu simulieren, ob das ganze funktional das tut was man will.

Aber nach dem place and route steht exakt fest was wo wie codiert ist, und wie es miteinander verbunden ist. Und dafür existeren genaue Werte der Hersteller. Schau dir z.B. mal

formatting link
Seite 14/24 an. (habe ich gerade zufälligerweise im Browser offen, weil ich es für eine Implementation benötigte, gibt auch bei jedem anderen Hersteller so etwas).

Da siehste beispielsweise genau wie lange ein Signal von ein Logikblockeingang bis zum Ausgang braucht. Deine Software handelt dass dann für dich, und kann dir sehr genaue Abschätzungen geben, was machbar ist und was nicht.

Florian

--
int m,u,e=0;float l,_,I;main(){for(;1840-e;putchar((++e>907&&942>e?61-m:u)
["\t#*fg-pa.vwCh`lwp-e+#h`lwP##mbjqloE"]^3))for(u=_=l=0;79-(m=e%80)&&
 Click to see the full signature
Reply to
Florian-Wolfgang Stock

"Florian-Wolfgang Stock" schrieb

Danke werd es mir zu Gemüte führen... Man lernt ja sowie so nie aus ;-)

cu Marc

Reply to
Marc Keller

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.