Benutzer-Werkzeuge

    ~~ RM: keiner ~~ UI: ---start--- ~~ IP:18.191.195.110~~

Webseiten-Werkzeuge


Dies ist eine alte Version des Dokuments!


Programmierbare logische Schaltung

Eine programmierbare logische Schaltung, häufig auch in deutschsprachiger Fachliteratur als Programmable Logic Device oder kurz PLD bezeichnet, ist ein elektronisches Bauelement für integrierte Schaltkreise. Anders als logische Gatter, die eine feste Funktion vorgegeben haben, erhalten PLDs erst nach der Herstellung ihre Funktion durch die entsprechende Programmierung (Konfiguration).

Grundprinzip eines PLA

Unterscheidung nach Komplexität

Beispiele verschieden komplexer PLDs sind (in aufsteigender Komplexität):

PLA

Einfache programmierbare logische Schaltungen bestehen meist aus einem Array aus UND-Verknüpfungen gefolgt von einem Array aus ODER-Verknüpfungen.

  • Programmable Read-Only Memory (PROM)
    Ein PROM stellt ein festes UND-Array mit einem programmierbaren ODER-Array bzw. eine Lookup-Tabelle (LUT) dar.
  • Programmable Array Logic (PAL) bzw. Generic Array Logic (GAL)
    Ein PAL stellt ein programmierbares UND-Array mit einem festen ODER-Array dar. Ein GAL ist im Gegensatz zu einem PAL wiederbeschreibbar.
  • Programmierbare logische Anordnung (PLA)
    Bei einem PLA sind sowohl das UND-Array als auch das ODER-Array programmierbar.

PLAs wurden meistens eingesetzt, um sogenannte Glue Logic zu ersetzen. Inzwischen werden sie kaum noch eingesetzt und sind von folgenden PLDs ersetzt worden.

PLD

  • Complex Programmable Logic Device (CPLD)
    Ein CPLD besteht aus Blöcken, die ein PLA, Ein- und Ausgangsblöcke sowie eine programmierbare Rückkopplung enthalten. Diese Blöcke können untereinander verbunden werden. In der Regel ist für jeden I/O-Pin auch ein Flip-Flop enthalten.
  • Field Programmable Gate Array (FPGA)
    Ein FPGA besteht ähnlich wie ein CPLD aus untereinander vernetzten Blöcken, jedoch sind diese komplexer. Ein Block besteht hier aus Flip-Flops und LUTs. Auch die Möglichkeiten diese Blöcke untereinander zu verbinden sind gegenüber dem CPLD stark erweitert. Ein FPGA enthält oft auch fertige Funktionsblöcke wie RAM, PLLs oder ganze CPU-Kerne.

CPLDs wie FPGAs verfügen außerdem oft über programmierbare I/O-Zellen, die es erlauben, verschiedene Signalschnittstellen (z.B. TTL, PCI oder LVDS) an den Baustein anzuschließen.

Für die Standart-Amigas sind die Kapitel GAL und PAL interessant.


PAL und GAL

Programmable Array Logic (kurz PAL genannt) sind veraltete elektronische Halbleiterbausteine im Bereich der Digitaltechnik, die durch Programmierung eine logische Verknüpfungsstruktur der Eingangssignale zu den Ausgangssignalen erhalten. Sie wurden 1978 durch die Firma Monolithic Memories Inc. (MMI) entwickelt und in den Folgejahren produziert. PAL

PALs sind Sonderfälle von PLAs (Programmable Logic Arrays) und dadurch gekennzeichnet, dass ausschließlich ihr UND-Array programmierbar ist. PALs sind nur einmal beschreibbar, da die Verknüpfungen auf dem Chip im Rahmen des Programmierprozess mittels „Durchbrennen von Verbindungen“, der sogenannten Antifuse-Technologie, hergestellt werden. Als Weiterentwicklung der PALs kamen zuerst durch die Lattice Semiconductor Corporation die wiederbeschreibbaren Generic Array Logic (kurz GAL genannt) -Bausteine auf den Markt. Sie bestehen aus einer programmierbaren UND-Matrix und einer fest verdrahteten ODER-Matrix. Im gegensatz zum PAL sind sie elektrisch beschreibbar und entweder durch UV-licht (EPLD) oder elektrisch (EEPLD) löschbar, wodurch eine Neuprogrammierung möglich wird.

Die Bezeichnung GAL ist ein Warenzeichen der Firma LATTICE, wodurch es einige Firmen gibt, die diese Bausteine mit ihrem Originalnamen unter Lizenz bezeichnen, und andere Firmen, welche diese Bausteine umbenannt haben (bei AMD beispielsweise unter dem Namen PALCE) - hierbei unterscheidet sich der Programmieralgorithmus, jedoch nicht die Pinbelegung und Funktion.

Die Bezeichnung gibt im Muster an, um was für einen Logikbaustein es sich handelt, und gibt Informationen über seine Eigenschaften. ein GAL16v8 ist ein Gal-baustein mit 16 Matrixeingängen für die Logikmatrix, dem Ausgangstyp v (variable Architektur) und verfügt über acht Ausgänge. Anschließend kommt nach einem minus die Gatterdurchlaufverzögerung in ns und weitere Informationen über Betriebstemperaturen und das Chipgehäuse.

GAL-Bausteine haben drei verschiedene Betriebsmodi, welche durch zwei Architekturbits beim Programmieren festgelegt werden. Ein drittes Bit setzt für Ausgänge die Funktion, ob sie als Eingang oder Ausgang fungieren sollen (AC1(n), n=Pinnummer). Das bedeutet, dass generell jeder Ausgang auch als Eingang verwendet werden kann. Der Simple-Mode (SYN=1, AC0=0) ermöglicht die Verwendung vom GAL-Baustein als einfaches Logikgatter, mit verknüpfung der AND-Bausteine mit nachfolgenden OR-Bausteinen. Der Complex-Mode (SYN=1, AC0=1) lässt das Multiplexen mithilfe von Tristate-ausgängen zu und der letzte der Modis, der Registermodus ermöglicht die Verschaltung von Logikgattern mit Registern durch integrierte D-flipflops. Dadurch kann man sogar kleinere komplexere Schaltungen aufbauen, ohne ständig die Schaltungen durch weitere externe Logikbausteine erweitern zu müssen.

Seit Mitte der 1990er Jahre werden PALs und GALs in neu entwickelten Schaltungen kaum noch eingesetzt und sind fast vollständig durch Complex Programmable Logic Devices (CPLDs) abgelöst worden. CPLDs besitzen keine Einschränkungen bezüglich der Verwendbarkeit der UND-/ODER-Matrizen im Eingangsbereich, sind elektronisch programmier- und löschbar, sind wie Field Programmable Gate Arrays (FPGAs) in einheitlichen Hardware-Programmiersprachen, wie beispielsweise VHDL, programmierbar und umfassen darüber hinaus eine bestimmte Anzahl an Registern.

Vorkommen beim Amiga

Im Amiga wurden zuerst vorwiegend PAL bzw. PALCE verwendet. Später meist GAL.

Nun halten die auch nicht ewig, und einige haben sogar eine begrenzte Laufzeit.

Dazu haben wir einfach mal angefragt:

… we want to put online may be source codes of GALs, including the jedec files, so people can make new ones in case a machine suffers from a defective GAL.

Antwort von Dave Haynie:

I did that myself… put up the PAL/GAL code (all written in CUPL) for the projects I had saved from the Commodore days (the old „Haynie Archives“ that used to be maintained up on thule.no). Particularly some of those GALs have a manufacturer-specified 10-year retention, so there are likely some boards out there that need part reflashing.
Making that stuff available in one place is a great idea.

PAL/GAL Resourcen

Die Source-Files sind alle auf einer einzigen Seite gesammelt (allein schon wegen der Updaterei). Dorthin wird von hier und den betreffenden Rechnern und Listen verlinkt.
Sprich die Doku beim Thema und die Software hier:

Notes from Anthony Hoffman:

http://amiga.serveftp.net/A3000_HardwareGuide/heat-u202.html
FIXME

All of the A3000 original PAL devices (U202, U203, U701, U714) can be replaced with modern GAL devices which have better performance and lower operating temperatures than the original PAL logic. Using the CUPL sources files provided by Dave Haynie, I have compiled JEDEC files for programing GAL16V8 devices using CUPLPLD 4.2a. Thanks to Tobias Seiler for the original conversions and information.

Click here to download U202, U203, U701, U714 JEDEC files. Note that you'll need a suitable GAL programmer. These have been tested in the A3000 using Lattice GAL16V8D-15QPN (Farnell part number 969-9678) but should work for Atmel and other 16V8 PLDs. The original Amiga PALs are 25ns, which happens to be equivalent to the slowest available 16V8 devices. Therefore any device whose part number matches 16V8*-**QP* (* = any character) should in theory work. The 20-pin DIP/DIL package is required. You can view the Lattice 16V8 datasheet for more information.

Datenblätter

Lattice

SGS Thomson

National Semiconductor

Quelle und weitere Datenblätter unter:
www.datasheetfind.com/search/gal1 bzw. www.datasheetfind.com/search/gal2


www.amigawiki.de

Bezugsquellen

Weitere Hinweise

Sehr interessanter Link zum Thema Programmieren:

Zuletzt geändert: 2014/08/01 01:16