Unterschied FPGA und CPLD?

T

Thomas Pototschnig

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

Hallo - weiß jemand den Unterschied zwischen FPGA und CPLD? Ich hab schon
gesucht aber nichts gefunden ...
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
 
On Sun, 29 Feb 2004 13:31:58 +0100, "Thomas Pototschnig"
<thomas.pototschnig@gmx.de> wrote:
Hallo - weiß jemand den Unterschied zwischen FPGA und CPLD? Ich hab schon
gesucht aber nichts gefunden ...
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
 
Stefan Heinzmann <stefan_heinzmann@yahoo.com> wrote:
Thomas Pototschnig schrieb:

Hallo - weiß jemand den Unterschied zwischen FPGA und CPLD? Ich hab schon
gesucht aber nichts gefunden ...
In erster Näherung sind Fpgas grösser und komplexer aber auch
flexibler.

FPGA: Viele Flipflops mit relativ mageren Logikressourcen pro Flipflop
(z.B. nur 4 oder 5 Eingänge)
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.

CPLD: Relativ wenige Flipflops mit viel Logik
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.

In der Konsequenz gehen einem im CPLD typischerweise zuerst die
Flipflops aus, im FPGA schafft man das kaum.
Das geht durchaus, wenn man keine Technologie hat in der Logik durch
FF ersetzt werden kann 8(.

FPGAs sind oft SRAM-basiert und müssen "gebootet"werden, während das
typische CPLD nichtflüchtig ist.
Das "oft" und "typisch" sind IMHO eine Entscheidung des Marktes und
hat wenig bis keine technischen Gründe.

bye Thomas
 
Thomas Stanka schrieb:
Stefan Heinzmann <stefan_heinzmann@yahoo.com> wrote:

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


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 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.

CPLD: Relativ wenige Flipflops mit viel Logik


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.
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.

Ü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.
Korrekt.

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


Das geht durchaus, wenn man keine Technologie hat in der Logik durch
FF ersetzt werden kann 8(.
Das habe ich jetzt nicht kapiert. Ist es nicht gerade andersrum?

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


Das "oft" und "typisch" sind IMHO eine Entscheidung des Marktes und
hat wenig bis keine technischen Gründe.
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
 
"Stefan Heinzmann" <stefan_heinzmann@yahoo.com> schrieb:
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.

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
 
Florian-Wolfgang Stock wrote:

Hallo,

"Marc Keller" <marc.keller2@web.de> writes:

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 ?

Gar nicht mehr notwendig, die neuen Xilinx haben sogar einen
PowerPC-Core onboard.
Und, schon so ein Teil gekauft? Sind die nach jahrelanger Ankündigung
inzwischen zu vernüftigen Preisen lieferbar?


Ing.olf
 
Hallo,

"Marc Keller" <marc.keller2@web.de> writes:

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 ?
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)&&
I*l+_*_<6&&26-++u;_=2*l*_+e/80*.09-1,l=I)I=l*l-_*_-2+m/27.;}
 
"Marc Keller" <marc.keller2@web.de> wrote:
"Stefan Heinzmann" <stefan_heinzmann@yahoo.com> schrieb:
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.


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.
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.

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 ?
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
 
Hallo,

Stefan Heinzmann <stefan_heinzmann@yahoo.com> wrote:
Thomas Stanka schrieb:
Stefan Heinzmann <stefan_heinzmann@yahoo.com> wrote:

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.
FULL ACK.

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.
Na dann bau mal eine 64-Bit Multiplikation im CPLD direkt auf :).
Aber im Grunde hast du recht.

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

Das habe ich jetzt nicht kapiert. Ist es nicht gerade andersrum?
Doch ist andersherum, sollte irgendwie meine Mails genauer Korrektur
lesen :=).

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

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

Oliver Bartels hat schon ausgeführt, daß es durchaus technische Gründe
gibt. Aber es stimmt natürlich auch daß es eine Marktentscheidung ist.
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.

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.
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
 
usenet_10@stanka-web.de (Thomas Stanka) writes:

"Marc Keller" <marc.keller2@web.de> wrote:
[...]

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.

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.
Mit (z.B. bei XC2S200) einem Jitter unter 60ps.
--
Dr. Juergen Hannappel http://lisa2.physik.uni-bonn.de/~hannappe
mailto:hannappel@physik.uni-bonn.de Phone: +49 228 73 2447 FAX ... 7869
Physikalisches Institut der Uni Bonn Nussallee 12, D-53115 Bonn, Germany
CERN: Phone: +412276 76461 Fax: ..77930 Bat. 892-R-A13 CH-1211 Geneve 23
 
"Thomas Stanka" <usenet_10@stanka-web.de> schrieb
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.

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)



Nur deinen Opteron mit vielen Mio Gattern und >1GHz bekommst du so
schnell in kein FPGA.

bye Thomas
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
 
"Marc Keller" <marc.keller2@web.de> writes:

"Thomas Stanka" <usenet_10@stanka-web.de> schrieb
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.

Woher willst du denn genau wissen wie, wo und genau mit welchen
dieser Logik-Stufen es die Software im FPGA implementiert ?
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
http://direct.xilinx.com/bvdocs/publications/ds003-3.pdf
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)&&
I*l+_*_<6&&26-++u;_=2*l*_+e/80*.09-1,l=I)I=l*l-_*_-2+m/27.;}
 
"Florian-Wolfgang Stock" <f.stock@tu-bs.de> schrieb
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
http://direct.xilinx.com/bvdocs/publications/ds003-3.pdf
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.

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

cu Marc
 

Welcome to EDABoard.com

Sponsor

Back
Top