www.mikrocontroller.net

CPLD

Complex Programmable Logic Device

Inhaltsverzeichnis

[Bearbeiten] Übersicht

CPLDs sind programmierbare ICs, die z. B. digitale Schaltungen mit Logik-ICs der 74xx-Reihe ersetzen können. Die Programmierung findet meistens seriell statt.

Beispiele:

CPLDs verlieren ihre Programmierung nicht beim Wegfall der Versorgungsspannung, weil sie auf EEPROM-Technologie aufbauen. So entfällt die Bootphase (Konfiguration), wie sie bei SRAM-basierenden FPGAs üblich ist. Auch muss kein externer Programmspeicher zugeschaltet werden.

[Bearbeiten] 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 steht 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.

[Bearbeiten] "Geschwindigkeit"

Bei CPLDs ist die interne Verdrahtung einfacher als im FPGA, die Signallaufzeiten lassen sich leicht abschätzen. Grund dafür ist die breite AND/OR-Matrix, mit der sich beispielsweise 20 bit breite Decoder "in einem Rutsch" realisieren lassen. Im FPGA müssen dazu mehrere Lookup Tables verschaltet werden. Das erhöht die Signallaufzeit im FPGA wesentlich. Typische Anwendungen im CPLD laufen mit 30 - 200 MHz. CPLDs werden auch wegen ihrer kurzen Durchlaufzeit von ca. 10 - 5 ns von Pin zu Pin bevorzugt in rein kombinatorischen Schaltungen eingesetzt.

[Bearbeiten] 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.

[Bearbeiten] Anwendung

CPLDs werden eingesetzt, wo es neben einer hohen Packungsdichte nach:

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

verlangt.

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)

[Bearbeiten] Siehe auch

[Bearbeiten] Links

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net