Was ist der Unterschied zwischen PLA und ROM?

Ich finde es schwer zu verstehen. Was ist der Unterschied zwischen PLA und ROM? Kann jemand bitte einen Link oder eine Erklärung geben?

Beides nutzt niemand mehr. ROMs wurden durch EEPROM oder Flash ersetzt.
@ Brian Carlton: Stimmt, aber masken- oder sicherungsbasierte PLAs wurden auch durch wiederbeschreibbare PLDs ersetzt. Im Allgemeinen gelten die Unterscheidungen zwischen ROMs und PLAs gleichermaßen für ihre Flash-basierten Cousins, außer dass: (1) programmierbare Logikbausteine ​​im Allgemeinen mehr Goodies enthalten als in den vergangenen Jahren, (2) einige Flash-Chips die Adresse speichern können, wenn sie ausgewählt werden, und (3) der relative Geschwindigkeitsunterschied zwischen modernen Flash-Chips und modernen PLDs ist größer als zwischen älteren PLAs und älteren ROMs.
@BrianCarlton erstaunlich ... Ich muss ein Bulletin mit allen Punkten für die Halbleiterindustrie veröffentlichen, um sie wissen zu lassen, dass sie kein ROM mehr verwenden. Sie werden begeistert sein, wie viel Geld sie mit EEPROM sparen können!

Antworten (4)

Das sind ganz unterschiedliche Geräte.

PLA = Programmierbares Logikarray.

Ein PLA- oder PAL-Baustein (Programmable Array Logic) ist wie ein Baby-FPGA, das so programmiert werden kann, dass es grundlegende Logikfunktionen ausführt. Zehn bis Hunderte von Gattern auf einem PAL können verbunden werden, um einfache Logikfunktionen auszuführen. Ein PAL ist oft nur lesbar, insofern muss nach dem Programmieren ein komplettes Löschen durchgeführt werden, um es zu aktualisieren.

ROM = Nur-Lese-Speicher.

Ein ROM führt keine logischen Funktionen aus, sondern speichert Daten. Ein ROM-Typ könnte ein EPROM sein, ein löschbarer programmierbarer Nur-Lese-Speicher.

Sie können ein ROM als Logikgerät verwenden, indem Sie eine einfache Logiktabellensuche implementieren. Wie eine Wahrheitstafel. Dies ist jedoch im Vergleich zur tatsächlichen Verwendung eines PAL oder sogar eines CPLD/FPGA etwas verschwenderisch und teuer.

Das ROM führt tatsächlich Logikfunktionen aus, es ist eine komplizierte Nachschlagetabelle. Früher war es häufiger, aber wenn Sie ein großes ROM benötigen und sicher sein könnten, was es für eine lange Zeit benötigen würde, würden Sie es mit fabrizierter Logik implementieren. Dies bedeutet, dass für jede Adresse die Logik vorhanden ist, um die Ausgabe mit und/oder/nicht-Gattern zu erzeugen. Diese Art von Funktion ist auch sehr schnell.
Ich habe das zu meiner Antwort hinzugefügt.
@Thomas O: kann ich sagen, dass ROM eine feste PLA ist?
Nun, etwas, aber ein ROM kann normalerweise neu programmiert werden, Sie müssen es nur elektronisch (EEPROM) oder mit UV-Licht (EPROM) löschen. Ein PAL ist kein ROM, aber ein ROM kann als PAL fungieren.
@Thomas O: sowieso ein bisschen schwierig, die Implementierung von zu verstehen: EEPROM, EPROM, hast du einige Links zu Grundlagen über ROM und seine Typen, PLA und seine Typen usw.?
Nun, ich bin mir über die verschiedenen Typen von PAL/PLA nicht sicher, aber EEPROM/EPROM/PROM und ROM sind alles nur aufeinander folgende Technologievariationen; ROM ist im Silizium eingebaut, PROM ist einmalig programmierbar (elektronisch), EPROM wird mit UV-Licht gelöscht und elektronisch neu programmierbar und EEPROM ist die aktuelle Variante, die vollelektronisch programmierbar und löschbar ist.
Wenn Sie die Logik fest in das ROM einbauen, können Sie eine niedrige Latenz und niedrige Kosten erzielen. Die Größe des Wafers kann im Vergleich zu einem PLA oder FPGA fast gleich Null sein.
Anscheinend können PLAs nur kombinatorische Logik implementieren. Also kann keiner von beiden eine Logik ausführen, die von vorherigen Zuständen abhängt. Gibt es etwas, was der eine kann, was der andere nicht kann? Oder ist es nur eine Frage der Kosten und der Geschwindigkeit?
Ich bin mir nicht sicher. Ich denke, ein ROM wäre schneller, aber teurer, ein PAL langsamer, aber billiger.
@endolith - es sind Vintage-Teile, aber sehen Sie sich zum Beispiel die PLA 16R8 oder GAL 22V10 an; Sie haben registerfähige Ausgänge, die auch in die Eingangsmatrix zurückgeführt werden, sodass Sie PLD-Geräte bereits 1988 dazu bringen konnten, Zustände zu speichern.
Mein Digitaloszilloskop hat zwei oder drei PALs (der dritte IC wird im Servicehandbuch nicht erwähnt, befindet sich aber in einer ähnlichen Verpackung), es wurde 1993 hergestellt.
Nun, Wikipedia sagte, es sei nur kombinatorisch. PLAs können also einige Dinge tun, die ROMs nicht können.
Interessant. Ich gehe nur von Wissen aus, das ich mir im Internet angeeignet habe; Die meisten Leute scheinen jetzt sowieso FPGAs oder CPLDs zu verwenden, keine PLAs.
Ja, die alten 16L8 'R8 PAL-Dinge sind ziemlich retro, und sogar die GAL-Serie, die sie ersetzt hat, ist altmodisch, aber trotzdem sind sie ziemlich nützlich, um ein paar Logikfunktionen zusammenzuknüppeln, ohne den ganzen Weg zu einem zu gehen FPGA. Sie haben auch den Vorteil, dass sie ihre Konfiguration beim Einschalten nicht von einem seriellen Rom laden müssen.

Ein Nur-Lese-Speicher (ROM) ist eine Logikschaltung, die alle möglichen Minterms ihrer Eingänge erzeugen kann.

Acht-Wörter-mal-ein-Bit-Nur-Lese-Speicher

Das sind also die Merkmale des ROM:

Eingabeprodukte sind fest verdrahtet und beinhalten alle möglichen Minterms. Die Ausgangssummierungsschaltung ist programmierbar.


Ein feldprogrammierbares Logikarray (FPLA) erzeugt nur die Minterms, die benötigt werden. Außerdem wird jede nur einmal generiert, auch wenn sie in den Ausgabeausdrücken mehrmals vorkommen kann.

FPLA-Implementierung logischer Funktionen

Das sind also die Merkmale des FPLA:

Die Eingangsproduktschaltung ist programmierbar. Die Ausgangssummierungsschaltung ist programmierbar.


Eine programmierbare Array-Logik (PAL) hat eine ähnliche Eingangsschaltung wie die FPLA. Die Ausgangsschaltung enthält jedoch eine festverdrahtete ODER-Logik und ist nicht programmierbar.

PAL-Implementierung von Logikfunktionen

Das sind also die Eigenschaften des PAL:

Die Eingangsproduktschaltung ist programmierbar. Die Ausgangssummierungsschaltung ist fest verdrahtet.

Nehmen wir zum Beispiel an, Sie haben ein PLA-Gerät und ein ROM, beide mit 12 Eingängen und 8 Ausgängen.

Das ROM hat 8-Bit-Zellen für jede der 2^12 = 4096 Adressen. Dieses ROM hätte daher 32768 einzelne Bitzellen. Die Logik auf dem Chip würde (zumindest in größeren Teilen) einen Demultiplexer für die höherwertigen Eingangsbits enthalten, der eine Bank von beispielsweise 1024 Zellen auswählen würde, und einen Multiplexer für die niederwertigen Eingänge, um die 8 tatsächlichen Ausgänge auszuwählen Stückchen von der Bank. Dies würde in der Größenordnung von vier Gate-Verzögerungen für das Multiplexen ergeben, plus was auch immer die Technologie für die erforderlichen Bitzellen ist. Alte UV-EPROMs brauchten vielleicht 120 ns, um ein Ergebnis auszuhusten, aber es gab (gibt es noch?) einmalig programmierbare ROMs, die die gleiche Aufgabe in einigen zehn Nanosekunden erledigen konnten.

Ein PLA hingegen verfügt über ein Array programmierbarer "Sicherungen", die normalerweise viel kleiner sind als die 32768-Bit-Zellen im entsprechenden ROM. Intern stellt ein PLA eine Bank von UND-Gattern bereit, gefolgt von einer Bank von ODER-Gattern und optional einem Flip-Flop pro Ausgang. Ein PLA dieser Größe kann 16 UND-Gatter mit jeweils 8 bis 16 Eingängen haben. Im gelöschten Zustand sind die "Sicherungen" Kurzschlüsse, sodass jeder Eingang jedes UND mit (normalerweise) jedem der Chip-Eingänge oder -Ausgänge oder deren Inversionen verbindbar ist. Wenn Sie das PLA programmieren, brennt der Programmierer die Sicherungen durch, um nur die gewünschten Verbindungen zu hinterlassen. Dann kann das ODER-Array in ähnlicher Weise programmiert werden, um verschiedene Kombinationen der UND-Ausgänge ODER zu verknüpfen. Die Sicherungstechnologie verursacht eine minimale Verzögerung, sodass die Ausbreitungsverzögerung vom Eingangspin zum Ausgangspin nur zwei Gate-Verzögerungen oder bis zu vier betragen kann.

Mit der gleichen Anzahl von Ein- und Ausgängen ist ein ROM zu einer allgemeineren Logik in der Lage, indem Sie jede beliebige Wahrheitstabelle in das ROM brennen können. Als Logikbaustein ist das ROM jedoch nicht optimal. Wenn Sie versuchen, mehrere unabhängige kleine Funktionen in ein ROM zu brennen, werden Sie feststellen, dass Sie viele 'egal'-Fälle haben, die dennoch in das ROM programmiert werden müssen, um die gewünschte Ausgabe zu erhalten. Die PLA ist besser für die Logik, weil Sie sich nicht mit den Don-t-Cares auseinandersetzen müssen, aber der Kompromiss besteht darin, dass Sie keine völlig willkürlichen Funktionen der Bits programmieren können. Sie sind jedoch dennoch ausreichend flexibel, um für viele gängige 'Glue-Logic'-Aufgaben nützlich zu sein, und sie produzieren im Allgemeinen schneller Ergebnisse.

Ein weiterer Unterschied zwischen einem PLA und einem ROM: Wenn z. B. ein 16x1-ROM mit einer Zugriffszeit von 50 ns eine "1" an den Adressen 1100 und 1101 hat, wird es innerhalb von 50 ns nach dem Erscheinen eines dieser Muster hoch ausgegeben, aber wenn die Adresse 1100 ausgewählt ist und das LSB der Adresse hoch geht, dann kann der Ausgang für die nächsten 50 ns in einem beliebigen Muster niedrig und hoch gehen (er muss am Ende hoch sein). Im Gegensatz dazu werden bei einem PLA, das so konfiguriert ist, dass es immer dann ein High ausgibt, wenn die ersten drei Eingänge 110 sind, keine Glitches am Ausgang induziert, wenn sich der vierte Eingang ändert.

Wir können uns ein einfaches programmierbares Logikgerät als ein Array von UND-Gattern vorstellen, gefolgt von einem Array von ODER-Gattern (in Wirklichkeit kann es tatsächlich als zwei Arrays von NAND-Gattern implementiert werden).

In einem PROM ist das „AND-Array“ festgelegt und das „ODER-Array“ programmierbar. Jede Kombination von Eingängen erzeugt genau einen Ausgang des AND-Arrays. Das "OR-Array" wird dann programmiert, um die Logikfunktion zu definieren. Dadurch kann jeder Ausgang eine beliebige Logikfunktion der Eingänge realisieren.

In der Lage zu sein, beliebige Logikfunktionen zu implementieren, klingt attraktiv, aber es gibt zwei praktische Probleme bei der Verwendung von PROMs für Logik. Erstens skaliert es nicht gut, jede zusätzliche Eingabe, die Sie hinzufügen, verdoppelt die erforderliche Größe des Arrays and . Zweitens ist es sehr anfällig für Ausgabestörungen, da die verwendeten Produktbegriffe jeweils genau eine Eingabekombination abdecken.

In einem PAL ist das "ODER-Array" festgelegt und das "UND-Array" programmierbar. Jede Ausgabe muss aus einer begrenzten Anzahl von Produktbegriffen gebildet werden, aber diese Produktbegriffe können jeweils mehrere Eingabekombinationen abdecken.

In einem PLA sind beide Arrays programmierbar. Dies gibt Ihnen mehr Flexibilität, wenn einige Ausgaben mehr Produktbegriffe benötigen als andere oder wenn mehrere Ausgaben Produktbegriffe gemeinsam haben.