Forum: FPGA, VHDL & Co. Suche Beispiele wann CPLDs sinnvoller sind als FPGAs


von Christian (Gast)


Lesenswert?

Hallo,


Als ich angefangen habe mich mit CPLD/FPGA zu beschäftigen habe ich 
gelesen: CPLDs können besser massiv breite Logik verarbeiten als FPGAs.

In einer Anwendung haben wir einen CPLD, der ein asynchrones 
Businterface verarbeiten soll. 32 Bit Daten, 32 Bit Adresse, mindestens 
noch 9 Steuerleitungen. Ein paar Fälle sollen abgefangen werden, die 
meisten werden nur (synchronisiert) weitergereicht. Für meine Begriffe 
schon einigermaßen breit.
Vor einiger Zeit wollte ich das Design um ein paar Funktionalitäten 
erweitern und es hat schon nicht mehr in die CPLD gepasst und es ist 
schon die größte verfügbare CPLD.

Interessehalber habe ich das Design mal auf den kleinsten Spartan 6 FPGA 
umgestellt, der genügend Pins hat. Passte direkt ohne Probleme, lief mit 
einer deutlich höheren Taktrate.

Zugegeben, der Vergleich ist vielleicht nicht ganz Fair, da CoolRunnerII 
vs Spartan 6 zwei recht unterschiedliche Generationen sind.
Allerdings finde ich auch eher realistisch, wenn man die Kosten in den 
Vergleich einbezieht und nicht das Alter. Auch da gewinnt der Spartan 
(wenn ich mich richtig erinnere 100€ vs 25€).

Weitere Vorteile von CPLDs die manchmal genannt werden:
- Direkt nach Einschalten verfügbar.
Hat jemand ein Beispiel in welcher Anwendung das wirklich gebraucht 
wird?

- Feste Durchlaufzeit von Pin zu Pin.
Heutzutage versucht man doch alles, wenn möglich, synchron zu halten. 
Und in einem synchronen FPGA-Design weiß man die Durchlaufzeit doch auch 
recht genau.


Daher meine Frage:
Hat jemand Beispiele, wann CPLDs sinnvoller sind als FPGAs? Ich suche 
Praxisbeispiele, keine theoretischen Argumente.

Schöne Grüße,
Christian

von Christian R. (supachris)


Lesenswert?

Wir setzen die CoolRunner II (und selten XC95XL) eigentlich nur noch da 
ein, wo ein bisschen Logik gebraucht wird und nicht viel Strom zur 
Verfügung steht. Den XC95XL immer mal dann, wenn man ein 5V toleantes 
Interface braucht. Ansonsten sind die eigentlich fast immer durch jeden 
aktuellen FPGA ablösbar. Das mit dem "sofort nach dem Einschalten da" 
stimmt zumindest für Xilinx nicht wirklich, denn die Config wird in 
internen Flash Zellen gespeichert und beim Start geladen. Die aktuellen 
CPLDs sind nämlich auch nur SRAM basiert. Nur geht das halt viel 
schneller als beim FPGA, einige ms dauert das aber auch. Wenn ein FPGA 
nur 512 Makrozellen hätte, würde die Config aus einem externen Flash 
wohl genauso schnell gehen :)

von MCUA (Gast)


Lesenswert?

>Weitere Vorteile von CPLDs die manchmal genannt werden:
>- Direkt nach Einschalten verfügbar.
Das gilt auch für manche neue FPGAs, die (trotzdem) mit PLD bezeichnet 
werden.

>- Feste Durchlaufzeit von Pin zu Pin.
hängt bei FPGA von der benutzten Verschaltung ab

Es gab welche von Altera, die hatten zusätzlich zu LUTs auch noch 
Produktterme.

>Hat jemand Beispiele, wann CPLDs sinnvoller sind als FPGAs?
Ist heute meist nur Frage des Preises

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Christian schrieb:
> Weitere Vorteile von CPLDs die manchmal genannt werden:
> - Direkt nach Einschalten verfügbar.
Auch CPLDs werden schon seit Anfang dieses Jahrtausends erst beim 
Powerup geladen (exotische Ausnahmen bestätigen nur diese Regel).

> Hat jemand ein Beispiel in welcher
> Anwendung das wirklich gebraucht wird?
Nein. Denn wenn ich weiß, dass mein Baustein ein paar ms zum Laden 
braucht, dann lege ich mein Design so aus, dass es das aushält.

> - Feste Durchlaufzeit von Pin zu Pin.
Wichtiger ist eine definierte Durchlaufzeit. Denn "fest" ist die 
Durchlaufzeit auch bei CPLDs nicht! Es ist bestenfalls garantiert, dass 
eine maximale Zeit nicht überschritten wird...

Für mich gilt: sobald ein paar Zähler oder Schieberegister im Design 
sind, wird ein FPGA verwendet. Denn es ist schlicht Perlen vor die Säue 
geworfen, wenn ich für ein Zählerbit einen ganzen Produktterm 
verbrauche.

Als kleiner Denkanstoß: Lattice verkaufen ihre kleinen FPGAs als CPLD...

: Bearbeitet durch Moderator
von Fpgakuechle K. (Gast)


Lesenswert?

Christian R. schrieb:

>  Das mit dem "sofort nach dem Einschalten da"
> stimmt zumindest für Xilinx nicht wirklich, denn die Config wird in
> internen Flash Zellen gespeichert und beim Start geladen. Die aktuellen
> CPLDs sind nämlich auch nur SRAM basiert. Nur geht das halt viel
> schneller als beim FPGA, einige ms dauert das aber auch. Wenn ein FPGA
> nur 512 Makrozellen hätte, würde die Config aus einem externen Flash
> wohl genauso schnell gehen :)

??? Also hier wird einiges durcheinander gemischt,
Der klassische CPLD wird durch programmieren eines PLA Feldes 
komfektioniert,
siehe http://de.wikipedia.org/wiki/Programmierbare_logische_Anordnung

das ist wirklich wie ein diskretes "74"-Gatter ab einschalten verfügbar, 
die xilinx XC9500 sollten imho unter diese Klasse fallen.

Dann gibt es die programmierbaren Gate Arrays. Deren Steuerzellen können 
SRAM, Antifuse oder Flash basiert sein. Letztere beide sind 
nichtflüchtig, müßen also nicht nach Power Up konfiguriert werden, sind 
also auch gleich verfügbar.
http://de.wikipedia.org/wiki/Antifuse-Technologie

SRAM basierte FPGA's sind flüchtig, müßen also nach jedem PowerUp 
neu-geladen werden. Bei einigen Xilinx-FPGA's, - die AN (n .. 
nonvolatile)
befindet sich der nichtflüchtige Speicher im FPGA-Gehäuse.) Also immer 
noch SRAM basiert und damit nach PowerUp erstmal Konfiguration nötig, 
auch wenn kein externen Flash/PROM auf dem Board vorzusehen ist.

CPLD bedeutet nun je nach Hersteller was anderes. Für manche ist jeder 
FPGA ein CPLD, für manche nur die PLA-Matrix basierten mit FF's dazu. 
Die klassischen PLD haben nur eine programmierbare OR resp AND Matrix.

MfG,

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fpga Kuechle schrieb:
> das ist wirklich wie ein diskretes "74"-Gatter ab einschalten verfügbar,
> die xilinx XC9500 sollten imho unter diese Klasse fallen.
Wie schonmal gesagt: genau diese CPLDs sind (wie ihre gleich alten 
Brüder von anderen Herstellern) SRAM basiert und werden beim Powerup 
parallel (also nicht seriell wie FPGAs) aus einem "Schatten-EEPROM" 
geladen. Näheres findet sich im Datenblatt unter "Powerup"...

von Fpgakuechle K. (Gast)


Lesenswert?

Lothar Miller schrieb:
> Fpga Kuechle schrieb:
>> das ist wirklich wie ein diskretes "74"-Gatter ab einschalten verfügbar,
>> die xilinx XC9500 sollten imho unter diese Klasse fallen.
> Wie schonmal gesagt: genau diese CPLDs sind (wie ihre gleich alten
> Brüder von anderen Herstellern) SRAM basiert und werden beim Powerup
> parallel (also nicht seriell wie FPGAs) aus einem "Schatten-EEPROM"
> geladen. Näheres findet sich im Datenblatt unter "Powerup"...

Hab gradn nachgelesen bei den antifuse-pld's
http://application-notes.digchip.com/056/56-39745.pdf

Da steht nix von SRAM-basiert und schatten-EEPROM. Allerdings braucht 
der
chip denoch 250 us bis es losgeht, da ladungspumpen "gefüllt" werden 
müßen.
SRAM ist schlecht für raumfahrt, da durch die kosmische strahlung bits 
in sramzellen leicht kippen. deshalb positioniert actel seine antifuse 
als nicht sram basierte fpga für raumfahrt.



bei xilinx XC9500 cpld steht auch Fastflash und nicht sram basiert:
http://www.xilinx.com/support/documentation/data_sheets/DS063.pdf

Aber auch hier gibt es beim hochfahren eine kleine Pause von 100 - 300 
us
bis verfügbar.

Zusammenfassung:
nicht alle cpld sind sram-basiert, dennoch gibt es auch hier eine 
zeitspanne beim hochfahren bis der chip operable ist; 100 us bis 1 ms
scheinen eine gute grobe abschätzung zu sein.


BTW:
wie schaut es bei ADC's etc aus? die sind auch nicht "sofort" ab power 
Up verfügbar.

von Hans-Georg L. (h-g-l)


Lesenswert?

Wenn du den Unterschied zwischen "echtem" CPLD und FPGA sehen willst, 
bau mit beiden einfach mal ein UND mit 40 Eingängen und schau dir die 
Laufzeiten und die Realisierung mit den LUT vom FPGA an ;)

von MCUA (Gast)


Lesenswert?

>Wenn du den Unterschied zwischen "echtem" CPLD und FPGA sehen willst,
typisch von Geschichte her:
 PLD: Produktterm-orientiert, Ausgänge gehen zentral an ne Matrix
 FPGA: LUTs-orientiert feinkörniger, Ausgänge können lokal (nicht 
zentral)
    verschaltet werden
(daher waren früher PLDs bei breiteren Sachen autom. schneller)
XC9500XL hat ganze 54 bit Eingangsmatrix (vs den 32 der meisten 
anderen), und stdm. 5 PTs je MACzelle (!), da braucht/bräuchte man viele 
LUTs, um das nachzubilden.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

So würde ich das auch sehen. Heutige FPGAs sind aber so schnell, dass 
sie PLDs in fast allen Apllikationen absorbieren.

von Onkel Dittmeyer (Gast)


Lesenswert?

Mir wären spontan keine FPGAs bekannt, die an den statischen 
Stromverbrauch von Low-Power CPLDs herrankommen (z.B. Coolrunner II mit 
20uA). Zugegeben, die meisten Systeme brauchen das nicht. Aber ich habe 
die Dinger schon in ein Paar Projekten eingesetzt, wo ich 
kleinstmöglichen Stromverbrauch haben wollte (weil Akku-betrieben) und 
sie dann quasi-statisch betreibe (mit 32kHz bis 1/16 Hz).

von Sigi (Gast)


Lesenswert?

Hans-Georg Lehnard schrieb:
>Wenn du den Unterschied zwischen "echtem" CPLD und FPGA sehen willst,
>bau mit beiden einfach mal ein UND mit 40 Eingängen und schau dir die
>Laufzeiten und die Realisierung mit den LUT vom FPGA an ;)

Die Std-Synthesetools bauen da wahrschweinlich nur einen Baum, eben
mit der entsprechenden Laufzeit.

Einfache grössere Verschaltungen dieser Art können in FPGAs aber um ein
vielfaches schneller laufen: Einfach die Carry-Chain und die LUT4s etc.
selbst verschalten und schon laufen viele "grosse" Probleme verdammt
schnell.
Einfaches Beispiel: Global-OR (256 Bits) läuft auf einem Virtex4
noch mit weit über 200MHz, ein Virtex5 sogar weit über 300MHz, ein
Spartan3 schaft glaube ich über 100MHz, sicher aber über 50MHz.

von Christoph Z. (christophz)


Lesenswert?

Onkel Dittmeyer schrieb:
> Mir wären spontan keine FPGAs bekannt, die an den statischen
> Stromverbrauch von Low-Power CPLDs herrankommen (z.B. Coolrunner II mit
> 20uA). Zugegeben, die meisten Systeme brauchen das nicht. Aber ich habe
> die Dinger schon in ein Paar Projekten eingesetzt, wo ich
> kleinstmöglichen Stromverbrauch haben wollte (weil Akku-betrieben) und
> sie dann quasi-statisch betreibe (mit 32kHz bis 1/16 Hz).

Guter Punkt. Das spielt auch ihr erhöhtes Alter als Vorteil rein, da ja 
die statische Stromaufnahme gestiegen ist, mit den kleineren 
Prozessgeometrien.

FPGAs sind da scheinbar immer noch ein Stückchen weg, kurze Recherche 
hat ergeben, dass die kleinen iCE40 von Lattice wohl immer noch mehr 
Ruhestromaufnahme haben als dein Beispiel:

http://latticesemi.com/Products/FPGAandCPLD/iCE40.aspx

Nur der MachXO2 ZE kommt in diese Gegend. Bei mageren 256 LUTs reden sie 
von 19 uW, bei 1280 LUTs noch von 70 uW:
http://latticesemi.com/Products/FPGAandCPLD/MachXO2.aspx

Wenn es dir sogar reicht, dein System mit 1/16 Hz zu takten, dann könnte 
es vielleicht machbar sein, die FlashFreeze Funktion der IGLOO FPGAs von 
Microsemi zu nutzen. Da wird der komplette FPGA zwichenzeitlich 
abgeschaltet und dann versprechen sie einen Leistungsumsatz von 4 uW. 
Braucht dann aber auch Zeit um diesen Modus zu aktivieren und wieder zu 
deaktivieren. Für einen sauberen Vergleich müsste man für ein reales 
Beispiel eine Energiebilanz erstellen:

http://www.microsemi.com/products/fpga-soc/fpga/igloo-nano#product-tables

von Falk B. (falk)


Lesenswert?

@Onkel Dittmeyer (Gast)

>kleinstmöglichen Stromverbrauch haben wollte (weil Akku-betrieben) und
>sie dann quasi-statisch betreibe (mit 32kHz bis 1/16 Hz).

Sowas macht man wahrscheinlich besser mit einem Mikrocontroller.

von Onkel Dittmeyer (Gast)


Lesenswert?

@ Falk

> Sowas macht man wahrscheinlich besser mit einem Mikrocontroller.

Ungern. Ich wollte für diese Anwendung auf jeden Fall reine Logik ohne 
den Faktor Software haben. Es ging um eine Ladeumschaltung von 
Bleizellen und wenn sich da 2 FETs "verschalten", hinterlässt es 
wahrscheinlich einen Krater auf der LP. Aber ich möchte jetzt um Himmels 
willen keine Diskussion um das Thema "sichere Software" vs. Logik vom 
Zaun brechen. War nur ein Beispiel. :)

@christophz

Die Lattice ZE FPGAs kannte ich noch nicht - vielen Dank für den 
Hinweis! Sieht auf den ersten Blick wie eine echte Konkurrenz zum 
Coolrunner aus. Werde mir die mal genauer zu Gemüte führen.

von Selbständiger (Gast)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #3634241:
> So würde ich das auch sehen. Heutige FPGAs sind aber so schnell, dass
> sie PLDs in fast allen Applikationen absorbieren.
In Sachen Geschwindigkeit vielleicht, aber der Stromverbrauch wäre ein 
starkes Argument.

Onkel Dittmeyer schrieb:
> Die Lattice ZE FPGAs kannte ich noch nicht - vielen Dank für den
> Hinweis! Sieht auf den ersten Blick wie eine echte Konkurrenz zum
> Coolrunner aus.
Das SIND PLDs.

von Christoph Z. (christophz)


Lesenswert?

Onkel Dittmeyer schrieb:
> @christophz
>
> Die Lattice ZE FPGAs kannte ich noch nicht - vielen Dank für den
> Hinweis! Sieht auf den ersten Blick wie eine echte Konkurrenz zum
> Coolrunner aus. Werde mir die mal genauer zu Gemüte führen.

Ich habe deine Frage nur mit FPGA Beispielen beantwortet, da dass ja 
hier der Diskussionspunkt ist :-)

Für eine praktische Anwendung muss man fairerweise die aktuellen FPGAs 
mit den aktuellen CPLDs vergleichen. Lattice entwickelt die auch noch 
ein wenig weiter und da gibt es auch ZE Varianten (geht runter bis 10 
uA):
http://latticesemi.com/en/Products/FPGAandCPLD/ispMACH4000ZE.aspx

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
Noch kein Account? Hier anmelden.