CPLD

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Complex Programmable Logic Device (oder auch nur 'PLD') bedeutet allgemein "programmierbarer Baustein", bezeichnet aber konkret eine bestimmte Type. Sie sind von GAL und PAL abzugrenzen.

Übersicht

CPLDs sind programmierbare ICs, die z. B. digitale Schaltungen mit Logik-ICs der 74xx-Reihe ersetzen können. Die Programmierung findet meistens seriell in der Fertigung statt. Der Programm-Code dafür wurde früher mit PLD-Editoren erzeugt. Heute ist die PLD-Entwicklung in der FPGA-tool chain integriert.

Beispiele:

CPLDs verlieren beim Wegfall der Versorgungsspannung im Gegensatz zu FPGAs ihre Programmierinformation nicht, da sie auf EEPROM-Technologie basieren. So entfällt die Bootphase (Konfiguration), wie sie bei SRAM-basierenden FPGAs üblich ist und sie sind nach dem Einschalten sofort aktiv, weshalb sie sich als Supervisor-Chip / BIOS eignen. Auch muss kein externer Programmspeicher bereitgestellt werden.

Aufbau

CPLDs enthalten wie die kleineren GALs eine Und-Oder-Matrix sowie Speicherelemente (FlipFlops, Abk. FF), die frei miteinander verbunden werden können. Im Gegensatz zu FPGAs stehen in CPLDs weniger FFs zur Verfügung. Während schon kleine FPGAs mehrere hundert FFs mitbringen, reicht die Spanne bei CPLDs von 32 bis 512 FFs. Die Anzahl der FFs ist fest an die Anzahl der User-I/O gekoppelt. Meist stehen für ein Pin ein bis zwei FFs zur Verfügung. Deshalb werden die großen CPLDs mit vielen FFs nur in den großen Gehäusen mit 100 und mehr Pins gefertigt.

"Geschwindigkeit"

Bei CPLDs ist die interne Verdrahtung einfacher, als im FPGA, weswegen sich die Signallaufzeiten leichter abschätzen lassen. Der Grund dafür ist die breite AND/OR-Matrix, mit der sich beispielsweise 20 bit breite Decoder in einer flachen Architektur realisieren lassen. Im FPGA müssen dazu mehrere Lookup Tables baumartig verschaltet werden. Das erhöht die Signallaufzeit im FPGA signifikant. Typische Anwendungen im CPLD laufen zwar auch "nur" mit 30 - 200 MHz, sie werden jedoch wegen ihrer kurzen Durchlaufzeit von nur ca. 5 ns von Pin zu Pin in etlichen Schaltungen bevorzugt, wenn z.B. rein kombinatorische Schaltungen gefordert sind.

Konfiguration/Programmierung

Ein CPLD-"Programm" kann auf verschiedene Arten erstellt werden: Man kann entweder die Anordnung der einzelnen digitalen Gatter als Schaltplan zeichnen oder die gewünschte Funktion mit einer Hardwarebeschreibungssprache wie Abel, VHDL oder Verilog beschreiben. Diese Tools werden meist kostenlos vom Hersteller zur Verfügung gestellt. Die "kleinen" Entwurfssprachen wie ABEL sind auch im CPLD-Bereich von den Hochsprachen wie Verilog und VHDL zurück gedrängt worden.

VHDL-Code für FPGAs ist teilweise ineffizient für CPLDs. So spart ein synchroner oder eingesparter Reset Ressourcen im FPGA, während bei CPLDs ein asynchroner Reset zu kleineren Designs führen kann. Auch sind Maßnahmen zur Erhöhung der Taktfrequenz wie Pipelining (FlipFlops in lange kombinatorische Pfade einbauen) für CPLDs meist unnötig und wegen der geringen Anzahl an FlipFlops auch meist nicht möglich.

Bei CPLDs sind wegen der einfacheren Struktur die Bearbeitungsschritte "Mapping" und "Place & Route" zusammengefasst. Bei Xilinx wird anstatt des Mappers (map) und des Routers (par) der Fitter nach der Synthese gestartet (cpld_fit(?)). Während im FPGA-Bereich die Tools meist mehrere Minuten benötigen, benötigt die Umsetzung aus der Beschreibungssprache zur CPLD-Programmierdatei oft nur wenige Sekunden.

PLDs sind aufgund ihres Aufbaus nur begrenzt wiederbeschreibbar, was in Einzelfällen ihre Verwendbarkeit im Sinne des updates im Feld einschränkt. Siehe: http://www.mikrocontroller.net/topic/248137#2550419

Anwendung

CPLDs werden eingesetzt, wo neben einer hohen Packungsdichte:

  • geringem Strombedarf
  • breiter kombinatorischer Logik (Adressdecoder, Busmultiplexer)
  • sofortiger Bereitschaft nach Zuschalten der Spannung
  • geringem Beschaltungsaufwand

verlangt werden.

Auch sind viele CPLDs noch 5V-tolerant und können so als Pegelwandler eingesetzt werden. Zwar gibt es auch 8-bit Mikrocontroller-Designs für CPLDs (Xilinx Picoblaze, siehe FPGA Soft Core), aber die passen nur in die größten CPLDs. Praktisch sinnvoll sind sie nicht, eine State Machine ist hier wesentlich besser. Typische Anwendungen sind:

  • Digitaluhren mit alphanumerischem Display
  • Seriell/Parallel Wandler
  • PWM-Generator
  • Konfigurationslogik für FPGAs
  • Speichercontroller für mehrere CPUs
  • Zeitgesteuerte Einschaltlogik (Einschaltsequenz)

Siehe auch

Links