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
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 :)
>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
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
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,
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"...
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.
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 ;)
>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.
So würde ich das auch sehen. Heutige FPGAs sind aber so schnell, dass sie PLDs in fast allen Apllikationen absorbieren.
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).
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.
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
@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.
@ 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.