Complex Programmable Logic Devices (CPLD) stellen in der Digitaltechnik sogenannte programmierbare logische Schaltungen dar. Sie sind technologischer Nachfolger der Programmable Array Logic (PAL) und im Aufbau einfacher als die deutlich komplexeren Field Programmable Gate Arrays (FPGAs).
Aufbau
CPLDs bestehen im Wesentlichen aus folgenden Elementen:
- programmierbare AND/OR-Matrix
- programmierbare Rückkopplung
- Eingabeblock
- Ausgabeblock
Ein-/Ausgabeblöcke können schnelle Speicher, wie Latches, D-Flipflops oder Register, sein. In vielen modernen PLDs stehen programmierbare Ausgänge zur Verfügung, denen man definierte Zustände (active low, active high, tristate) zuweisen kann. Der AND/OR-Matrix als Kern kann jede beliebige kombinatorische Verknüpfung zugewiesen werden.
Ein CPLD setzt sich aus vielen SPLDs (simple programmable logic device) zusammen. Diese werden Makrozellen genannt. Die einzelnen SPLDs werden wiederum über Busse miteinander verbunden. Der homogene Aufbau ermöglicht eine exakte Bestimmung der Durchlaufzeiten, was den wesentlichen Unterschied zu den FPGAs ausmacht. Ein weiterer, allerdings nicht grundlegend notwendiger Unterschied ist die Konfiguration: Durch Fertigung in EECMOS electronically erasable complementary metal oxide semiconductor bleibt nach der Konfiguration das Programm im CPLD und muss nicht bei jedem Start neu geladen werden. Dieses Kriterium der Konfiguration ist kein wesentliches Unterscheidungsmerkmal zwischen CPLDs und FPGAs, allerdings ist es derzeit technologisch noch nicht möglich, die wesentlich komplexeren FPGA-Strukturen gemeinsam mit EEPROM-Zellen wie bei einem CPLD auf einem Chip unterzubringen. Am Markt befindliche rekonfigurierbare FPGA-Bausteine ohne externen Speicher sind derzeit (Mitte 2007) so genannte Multi-Die-Lösungen. Dabei werden mehrere, technologisch unterschiedlich hergestellte Halbleiterchips wie ein herkömmlicher SRAM-basierender FPGA-Chip und ein Flash-Konfigurationschip gemeinsam in einem Chipgehäuse untergebracht. Nach außen hin wird dann für das FPGA kein externer Speicher mehr benötigt.
Durch die hohe Anzahl von Eingängen pro Logikblock bieten sich CPLDs vor allem für die Lösung komplexer, paralleler kombinatorischer AND/OR-Logik an, bei denen viele Ein- bzw. Ausgänge benötigt werden. Gleichzeitig sollte die Anzahl der notwendigen Speicher (Flipflops) bei der Anwendung von CPLDs gering sein, da pro Ein- bzw. Ausgabepins meist nur ein einziges Flipflop als Register zur Verfügung steht. Digitale Schaltungen, welche viele Register erfordern, wie beispielsweise Schieberegister oder digitale Zähler, lassen sich daher nur bis zu einem gewissen Grad in CPLDs effizient realisieren.
Bei steigender Zahl der Zellen werden die Makrozellen mit lokalen Leitungen zu übergeordneten Strukturen wie Logic Array Blocks, LABs zusammengefasst. Diese Bezeichnungen variieren allerdings je nach Hersteller.
Hersteller sind beispielsweise Xilinx, Altera, Lattice, Actel, Lucent, Cypress, Atmel oder Quicklogic.
Weblinks
- CPLD-Grundlagen bei mikrocontroller.net
- OpenFPGA, Open-Source-FGPA- und CPLD-Toolchain (GitHub-Repository)