DE68924138T2 - Daten-kompressions/dekompressionsanordnung. - Google Patents

Daten-kompressions/dekompressionsanordnung.

Info

Publication number
DE68924138T2
DE68924138T2 DE68924138T DE68924138T DE68924138T2 DE 68924138 T2 DE68924138 T2 DE 68924138T2 DE 68924138 T DE68924138 T DE 68924138T DE 68924138 T DE68924138 T DE 68924138T DE 68924138 T2 DE68924138 T2 DE 68924138T2
Authority
DE
Germany
Prior art keywords
register
counter
pla
state
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68924138T
Other languages
English (en)
Other versions
DE68924138D1 (de
Inventor
Harold Louis Lansdale Pa 19446 Gibson
Anthony Paul Lafayette Hill Pa 19444 Schiavo
Paul Hanson Iii. Norristown Pa 19401 Selby
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Publication of DE68924138D1 publication Critical patent/DE68924138D1/de
Application granted granted Critical
Publication of DE68924138T2 publication Critical patent/DE68924138T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)
  • Auxiliary Devices For And Details Of Packaging Control (AREA)

Description

    Stand der Technik
  • Die vorliegende Erfindung betrifft Datenkompressions- und Dekompressionseinrichtungen und insbesondere eine verbesserte Einrichtung mit gemeinsamer Schaltung für die Kompression und Dekompression.
  • In US-A-4,464,650 ist eine Datenkompressions- und Dekompressionseinrichtung offenbart, die einen Strom von Eingangsdatensymbolen syntaktisch in adaptiv wachsende Symbolfolgen zerlegt. Diese Einrichtung benötigt zahlreiche Speicherzugriffszyklen für jedes Eingangszeichen und bedient sich zur Kompression und Dekompression zeitaufwendiger Multiplikations- und Teilungsverfahren. Darüber hinaus erfordert die offenbarte Vorrichtung getrennte und unterschiedliche Vorrichtungen zur Durchführung der Kompression und Dekompression.
  • In US-A-4,558,302 wird eine Datenkompressions- und Dekompressionseinrichtung offenbart, bei der ein Datenkomprimierer einen Eingangsstrom von Datenzeichen komprimiert, indem er Ketten von im Eingangsstrom angetroffenen Datenzeichensignalen in einer Kettentabelle speichert. Zum Dekomprimieren der komprimierten Daten ist ein getrennter Dekomprimierer vorgesehen. Der Komprimierer durchsucht den Eingangsdatenstrom, um die längste Übereinstimmung mit einer gespeicherten Kette zu bestimmen. Jede gespeicherte Kette umfaßt eine Vorsatzkette und ein Zusatzzeichen, wobei das Zusatzzeichen das letzte Zeichen in der Kette ist und die Vorsatzkette alle Zeichen außer dem Zusatzzeichen umfaßt. Mit jeder Kette ist ein Kodewort verbunden und eine Kette wird zumindestens implizit durch Speichern des Kodewortes für die Kette, des Kodewortes für den Kettenvorsatz und des Zusatzzeichens in der Kettentabelle gespeichert. Wenn die längste Übereinstimmung zwischen dem Eingangsdatenzeichenstrom und den gespeicherten Ketten bestimmt worden ist, wird das Kodewort für die längste Übereinstimmung als das komprimierte Kodesignal für die angetroffene Zeichenkette übertragen und eine erweiterte Kette wird in der Kettentabelle gespeichert. Der Vorsatz der erweiterten Kette ist die längste Übereinstimmung und das Zusatzzeichen der erweiterten Kette ist das der längsten Übereinstimmung folgende nächste Eingangsdatenzeichen. Durchsuchen der Kettentabelle und Eintragen von erweiterten Ketten darin wird durch ein begrenztes Haschsuchverfahren bewirkt. Die Komprimierung wird durch einen Dekomprimierer bewirkt, der die komprimierten Kodesignale empfängt und eine Kettentabelle gleich der vom Komprimierer aufgebauten erzeugt, um das Nachsehen der empfangenen Kodesignale zu bewirken, um die eine gespeicherte Kette umfassenden Datenzeichensignale wiederzugewinnen. Die Dekomprimiererkettentabelle wird durch Speichern einer Kette mit einem Zusatz entsprechend einem vorher empfangenen Kodesignal und eines Zusatzzeichens entsprechend den ersten Zeichen der momentan wiedergewonnenen Kette aktualisiert.
  • Ein Nachteil dieser bekannten Vorrichtung besteht darin, daß das Löschen der Kettentabelle verhältnismäßig sehr zeitaufwendig ist. Die Kettentabelle wird "müde", indem die darin aufbewahrte Ansammlung von Ketten nach einem gewissen Zeitraum unter Umständen nicht die Ketten darstellt, die am wahrscheinlichsten in neueren ankommenden Daten erscheinen. Es ist daher notwendig, die Kettentabelle zu löschen bzw. aufzufrischen und eine neue Menge von Ketten zu beginnen. Die Adressierung und Löschung jeder Stelle in der Kettentabelle nimmt jedoch eine beträchtliche Zeit in Anspruch, während der keine Komprimierung stattfinden kann. Nach der vorliegenden Erfindung findet keine eigentliche Löschung der Kettentabelle statt. Statt dessen ist ein Teilblockzähler vorgesehen und sein Inhalt wird mit jedem Vorsatzkode in die Kettentabelle eingeschrieben. Nach Einschreiben einer vorbestimmten Anzahl von Kettenkodes in die Kettentabelle wird der Zähler erhöht. Jedesmal, wenn auf eine Stelle in der Kettentabelle zugegriffen wird, um zu sehen, ob sie leer ist, wird die an dieser Stelle gespeicherte Teilblockzählung mit der Zählung im Zähler verglichen. Wenn die beiden nicht gleich sind, dann wird die Stelle als leer angesehen.
  • DARSTELLUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Datenkompressionseinrichtung mit einer Kettentabelle bereitzustellen, in der Speicherstellen, ohne jede Stelle adressieren zu müssen, "gelöscht" werden.
  • Eine weitere Aufgabe nach einem weiteren Aspekt der vorliegenden Erfindung besteht in der Bereitstellung einer Datenkompressionseinrichtung, bei der sowohl die Komprimierung als auch die Dekomprimierung durch gemeinsame Schaltungen durchgeführt werden.
  • Um diese Aufgabe zu erfüllen, ist nach der vorliegenden Erfindung eine Datenkompressionseinrichtung mit folgendem vorgesehen: ein Kettentabellenspeichermittel mit einer Mehrzahl von adressierbaren Speicherstellen, die jeweils einen Vorsatzkodeteil, einen Kettenkodeteil und einen Teilblockzählungsteil aufweisen; einen Kettenkodezähler zum Erzeugen eines Ausgangssignals bei Erreichen einer vorbestimmten Zählung; Mittel zur Erhöhung des besagten Kettenkodezählers, jedesmal dann, wenn ein Kettenkode in das besagte Kettentabellenspeichermittel eingeschrieben wird; einen Teil blockzähler; auf das Ausgangssignal vom Kettenkodezähler reagierende Mittel zum Erhöhen der Zählung im besagten Teilblockzähler; auf ein ankommendes Datenzeichen in einem Strom unkomprimierter Daten reagierende Adressenhaschmittel zum aufeinanderfolgenden Adressieren des besagten Kettentabellenspeichermittels zum Auslesen des Inhalts des Vorsatzkodeteils und des Teilblockzählungsteils aus den adressierten Stellen; ein erstes Vergleichsmittel zum Vergleichen jeder aus dem besagten Kettentabellenspeichermittel ausgelesenen Teilblockzählung mit der Zählung im besagten Teilblockzähler und Erzeugen eines Vergleichssignals bei ihrer Gleichheit; und auf das besagte erste Vergleichsmittel reagierende Mittel, um nur dann die Teilblockzählung in den besagten Teilblockzähler, den Kettenkode in den besagten Kettenkodezähler und einen Vorsatzkode in das besagte Kettentabellenspeichermittel einzuschreiben, wenn das besagte erste Vergleichsmittel nicht das besagte Vergleichssignal erzeugt.
  • Weitere Ausführungsformen der Erfindung sind in den Unteransprüchen definiert.
  • So ist erfindungsgemäß ein Teilblockzähler vorgesehen, und jedesmal, wenn ein Kettenkode in eine Stelle in der Kettentabelle eingeschrieben wird, wird der Inhalt des Zählers ebenfalls in die Stelle eingeschrieben. Nach Einschreiben einer vorbestimmten Anzahl von Kettenkodes in die Kettentabelle wird der Zähler erhöht. Jedesmal, wenn auf eine Stelle zugegriffen wird, wird die darin gespeicherte Teilblockzählung mit dem Inhalt des Zählers verglichen. Wenn die beiden ungleich sind, dann wird die Stelle als "leer" erachtet und kann auch beschrieben werden.
  • Weitere Aufgaben und ihre Betriebsweise werden bei Betrachtung der folgenden Beschreibung und der beiliegenden Zeichnungen offenbar.
  • Kurze Beschreibung der Zeichnungen
  • Figur 1A ist ein Blockschaltbild einer Kompressions-/Dekompressionsanlage;
  • Figur 1B ist ein Blockschaltbild einer Kompressions-/Dekompressionsschaltung und zeigt die Kanalzerhacker, Kompressions- /Dekompressionssteuerungen, Kettentabellen, Zerhackerpuffer, Puffersteuerungen und Bandpuffer;
  • Figur 2 ist ein Blockschaltbild der Datenwege durch einen Kanalzerhacker;
  • Figuren 3-6 zeigen die Logikschaltungen zur Steuerung eines Kanalzerhackers;
  • Figur 7 zeigt eine Kettentabelle;
  • Figuren 8 und 9 enthalten ein Blockschaltbild der Datenwege in den Kompressions-/Dekompressionssteuerungen;
  • Figuren 10 und 11 zeigen die Logikschaltungen zur Steuerung der Register in den Kompressions-/Dekompressionssteuerungen;
  • Figur 12 zeigt die Logik zur Steuerung der Kettentabelle;
  • Figur 13 ist ein Blockschaltbild der Datenwege durch einen Zerhackerpuffer; und
  • Figuren 14 und 15 zeigen die Logik zur Steuerung eines Zerhackerpuffers.
  • Detaillierte Beschreibung der Erfindung Übersicht
  • Wie in der Figur 1A gezeigt, umfaßt eine entsprechend den Grundsätzen der vorliegenden Erfindung aufgebaute Datenkompressions-/Dekompressionsanlage Kanaldatenzerhacker 100, eine Kompressions-/Dekompressions-(C/D)Steuerung 102, Banddatenzerhacker 104, eine Bandpuffersteuerung 106 und einen Bandpuffer 108. Die in der Figur 1A gezeigte Kompressions-/Dekompressionsanlage ist an einem Ende mit einem Kanalpuffer 110 verbunden, der wiederum mit einem Kanal wie beispielsweise dem Unisys SU-39, SU-212 oder FIPS 60 verbunden ist. Am anderen Ende ist dargestellt, daß die Kompressions-/Dekompressionsanlage über eine gebräuchliche intelligente Peripherieschnittstelle (IPI - Intelligent Peripheral Interface) 112 mit einer Magnetbandeinheit 114 verbunden ist. Es ist jedoch zu verstehen, daß die Bandeinheit ganz einfach eine Ausgangsvorrichtung darstellt, die viele Formen wie beispielsweise eine magnetische Floppy- oder Festplatte, optische Laserplatte, einen Kommunikationskanal usw. annehmen kann.
  • Wenn die Ausgangsvorrichtung eine Bandeinheit oder eine sonstige derartige Einheit ist, in der Daten in einer Richtung aufgezeichnet und in der entgegengesetzten Richtung ausgelesen werden, dann ist eine Rückwärts-lesesteuerungsschaltung 116 erforderlich.
  • Eine Steuerung 118 enthält einen Mikroprozessor mit einem zweiseitig gerichteten Datenbus BPDBUS und einen Adreßbus PROCAD, die, wie in Figur 1A dargestellt, mit verschiedenen Einheiten der Anlage verbunden sind. Vom Mikroprozessor wird die Zeit zum Starten der Bandeinheit berechnet, der Zustand überwacht und Befehle für die Kompressions- /Dekompressionsanlage, wie unten beschrieben, bereitgestellt. Die Steuerung enthält einen gebräuchlichen Mikroprozessor wie beispielsweise des Typs 68000 und Speicher.
  • Wie in der Figur 1B dargestellt, umfassen die Kanaldatenzerhacker 100 einen Hauptkanaldatenzerhacker 100a und einen Nebenkanaldatenzerhacker 100b. Auf gleiche Weise umfassen die Banddatenzerhacker 104 einen Hauptbanddatenzerhacker 104a und einen Nebenbanddatenzerhacker 104b. Auch gibt es eine Haupt-C/D-Steuerung 102a mit einer zugehörigen Hauptkettentabelle 103a und eine Neben-C/D-Steuerung 102b mit einer zugehörigen Nebenkettentabelle 103b. Die Haupt- und Nebeneinheiten sind identisch und parallel zueinander geschaltet. Verschiedene (nicht gezeigte) Vergleicher können zum Vergleichen der Zustände einer Hauptund einer Nebeneinheit oder der darin verarbeiteten Daten benutzt werden, um Fehlfunktionen zu erkennen und der Steuerung Zustandssignale bereitzustellen. Die Schaltungen zur Meldung solcher Zustände an die Steuerung bilden keinen Teil der vorliegenden Erfindung und sind in den Zeichnungen nicht dargestellt.
  • Die Kanaldatenzerhacker 100a, 100b (Kanalzerhacker) sind durch einen 9-Bit-Datenbus FIFBPD mit dem Kanalpuffer 110 und einem LIFO-Speicher in den Rückwärtsleseschaltungen 116 verbunden. Während einer Komprimierungsoperation werden mit dem Empfang von Datenbyte vom Kanalpuffer Paritäten überprüft und aus den Byte verworfen. Die Haupt- und Nebenkanalzerhacker formen die Daten in 9-Bit-Byte (ohne Parität) um, die dann über Busse D9IN und SD9IN den Haupt- bzw. Neben-C/D-Steuerungen 102a, 102b zugeführt werden. Die Daten werden komprimiert, indem die C/D-Steuerungen, wie unten erläutert, zusammen mit den Haupt- und Nebenkettentabellen 103a und 103b wirken. Die C/D-Steuerungen erzeugen 12-Bit-Worte komprimierter Daten, die über die Busse D12OUT und SD12OUT an die Banddatenzerhacker 104a und 104b angelegt werden. Die hiernach als Zerhackerpuffer bezeichneten Banddatenzerhacker zerhacken die komprimierten Daten in 8-Bit-Byte, erzeugen für jedes Byte ein Paritätsbit und übertragen dann das Byte und seine Parität über einen Bus BPBUFMEM zum Puffer 108 und zur Puffersteuerung 106. Die Puffersteuerung 106 steuert den Puffer 108 an, so daß er die komprimierten Daten über einen Bus CDBPBUS der IPI 112 (Figur 1A) führt, die die Aufzeichnung der komprimierten Daten durch die Bandeinheit 114 steuert.
  • Während einer normalen Dekomprimierungsoperation funktioniert die Schaltung im wesentlichen umgekehrt wie während der Komprimierung. Die komprimierten Daten werden durch die IPI 112 vom Band ausgelesen und über den Bus CDBPBUS der Bandpuffersteuerung 106 zugeführt. Die Puffersteuerung 106 steuert den Bandpuffer 108 und die Zerhackerpuffer 104 so an, daß die komprimierten Datenbyte (8 Bit zuzüglich Parität) den Zerhackerpuffern 104a, 104b zugeführt werden. Von den Zerhackerpuffern werden die Paritäten ausgeblendet und die Daten in 12-Bit- Worte umgeformt, die über Busse D12IN und SBCMD12IN den C/D-Steuerungen 102a, 102b übermittelt werden. Von den C/D-Steuerungen werden die Daten dekomprimiert und in 9-Bit-Byte umgeformt, die über Busse D9IN und SD9IN zu den Kanalzerhackern 100a, 100b übertragen werden. Von den Kanalzerhackern werden die Daten in 8-Bit-Byte umgeformt, die Parität jedes Bytes berechnet und jedes Byte und seine Parität über den Bus FIFBPDBUS zum Kanalpuffer 110 übertragen.
  • Während einer Rückwärtslesedekompromierungsoperation wird von der Bandeinheit 114 über IPI 112 ein gesamter Block komprimierter Daten zum Bandpuffer 108 ausgelesen. Danach werden die komprimierten Daten aus dem Bandpuffer in umgekehrter Reihenfolge zu der, mit der sie in den Puffer eingetragen wurden, ausgelesen und an die Bandpuffersteuerung 106 angelegt. Danach werden die Daten wie bei einer normalen Dekomprimierungsoperation dekomprimiert. Der am Ausgang der Kanalzerhacker 100 erscheinende Block dekomprimierter Daten wird jedoch in einen LIFO-Speicher in den Rückwärtsleseschaltungen 116 eingegeben. Danach werden die Daten auf den Kanal 122 ausgelesen. Die Rückwärtsleseschaltungen 116 sind wahlfrei und nur dann erforderlich, wenn Rückwärtslesen erfordert, daß Daten dem Kanal 122 in der umgekehrten Richtung ihres Einschreibens angeboten werden.
  • Kanal zerhacker
  • Die Figuren 3-6 zeigen die Schaltungen zur Steuerung der Kanalzerhackerregister und des zwischen dem Kanalzerhacker und dem Pufferregister 110 und den C/D-Steuerungen 102 erforderlichen Quittungsbetriebs. Obwohl dies in den Zeichnungen nicht dargestellt ist, enthält der Kanalzerhacker Takterzeugungsschaltungen zur Erzeugung von 4 als CLK1 bis CLK4 bezeichneten Phasentaktsignalen während jedes 100-ns-Zyklus. Diese Taktsignale werden allen Logikschaltungen in der Kompressions-/Dekompressionsanlage zugeführt.
  • In der Figur 3 ist der Kanalzerhacker mit einem Steuerregister 300 versehen, das über den Bus BPDBUS mit der Steuerung 118 verbunden ist. Von dem Signal H OCSELWRO wird ein Steuerwort auf dem Bus in das Register 300 eingesteuert. Dieses Signal wird in den Bandpuffersteuerschaltungen als Reaktion auf einen Mikroprozessorbefehl erzeugt. Die vom Register 300 erzeugten Signale werden zur Steuerung verschiedener Funktionen in der ganzen Kompressions-/Dekompressionsanlage verteilt.
  • Am Steuerregister 300 werden nur Bit 0-5 vom BPDBUS benutzt. Bit 0 ist das Rücksetzbit. Wenn es 1 ist, wird Bit 0 des Registers 300 gesetzt und erzeugt ein Ausgangssignal, das durch OR 312 zum FF 314 läuft. Bei dem nächsten CLK3 wird der Flipflop rückgesetzt, um das Signal H CLR zu erzeugen, das verschiedene Schaltungen in der Anlage rücksetzt.
  • Bit 1 ist das Kettentabellenzugriffsbit, und wenn es eine 1 ist, ermöglicht es den C/D-Steuerungen, auf die Kettentabelle zuzugreifen, indem es das Register 300 zum Erzeugen des Signals L STEN auf der Leitung 305 veranlaßt.
  • Bit 2 ist das Rückwärtslesebit. Wenn es null ist, erzeugt das Register 300 das Signal H BKWD auf der Leitung 307 zur Steuerung des Rückwärtslesens.
  • Bit 3 ist das Kompressionsbetriebssignal. Wenn es eine 1 ist, signalisiert es die Kompressionsbetriebsart, und wenn es eine Null ist, signalisiert es die Dekompressionsbetriebsart.
  • Wenn das Bit 4 eine 1 ist, blockiert es die Kompressions-/Dekompressionsanlage, so daß der einzige Datenweg zwischen Kanalpuffer 110 und der IPI 112 ein (nicht gezeigter) Datenüberbrückungsbus ist. Wenn das Bit 4 eine 0 ist, sind die Kompressions-/Dekompressionsschaltungen aktiv zwischen den Puffer 110 und die IPI 112 geschaltet.
  • Bit 5 ist das Bandstartbit. Wenn es eine 0 ist, erzeugt das Register 300 das Signal H STARTAPE, das den Bandpuffersteuerungen 106 ermöglicht, Daten während einer Kompressionsoperation zur IPI 112 zu senden. Wenn das Bit eine 1 ist, sind Schaltungen blockiert, um zu verhindern, daß Daten während der Komprimierung von den Puffersteuerungen zur IPI gesandt werden. Am Anfang einer Datenkomprimierungsoperation ist das Bit 5 vorzugsweise auf 1 gesetzt, wird aber, nachdem die Komprimierung lang genug gelaufen ist, auf 0 gesetzt, um das Gleichgewicht zwischen Komprimierung und Leistung zu optimieren.
  • Vor einer Komprimierungs- oder Dekomprimierungsoperation kann das Rücksetzbit 0 des Kontrollregisters 300 ein- und ausgeschaltet, d.h. gesetzt und dann rückgesetzt werden, um verschiedene Register und Flipflop in der ganzen Kompressions-/Dekompressionsanlage zu löschen. Wenn das Bit gesetzt ist, durchläuft die Ausgabe des Registers 300 das OR 312 und bei CLK3 wird das FF 314 rückgesetzt, um H CLR zum Löschen der Kompressions-/ Dekompressionsanlage auf einen Anfangszustand zu erzeugen.
  • Die Ausgaben von Stufen 3 und 4 des Registers 300 werden an ein AND 302 und ein NAND 304 angelegt. AND 302 erzeugt ein Signal zum Setzen von FF 310, um das Signal H COMP1 zu erzeugen, und das NAND 304 erzeugt das Signal L COMP2A, wenn die Anlage im Dekompressionsbetrieb arbeiten soll. Die Ausgabe von Stufe 3 wird bei 306 invertiert und an AND 308 angelegt. Die Ausgabe der Stufe 4 wird an den zweiten Eingang von AND 308 angelegt, so daß es das Signal H COMP erzeugt, wenn die Anlage im Kompressionsbetrieb arbeiten soll.
  • Die Figur 2 ist ein Blockschaltbild auf Registerebene eines der Kanalzerhacker 100. Der Kanalzerhacker enthält sieben Register 200-206 und zwei Gruppen von programmierbaren Logikanordnungen (PLA - Programmable Logic Arrays) 208 und 210. Jede Gruppe enthält zwei PLA. Während einer Komprimierung werden vom Kanalpuffer 110 über den Bus FIFBPDBUS erhaltene Datenbyte in das Register 200 eingetaktet. Am Ausgang des Registers wird das Paritätsbit von einer (nicht gezeigten) Schaltung überprüft und das Paritätsbit verworfen. Die übrigen acht Bit werden zum Register 201 übertragen. Der Ausgang des Register 201 ist mit den PLA 208 und mit dem Register 202 verbunden, dessen Ausgang ebenfalls mit den PLA verbunden ist. Die PLA formen die 8-Bit-Byte in 9-Bit-Byte um, die in das Register 203 eingegeben werden. Vom Register 203 werden die Daten über den D9IN-Bus zu den C/D-Steuerungen 102 übertragen.
  • Während der Datendekomprimierung werden über den D9OUT-Bus von den C/D-Steuerungen 102 empfangene 9-Bit-Byte (Worte) in die Register 204 und 205 eingegeben. Die Ausgänge dieser Register sind mit den PLA 210 verbunden, die die Daten in 8-Bit-Byte umformen.
  • Die Parität jedes von den PLA 210 erzeugten Bytes wird von einem (nicht gezeigten) Paritätsgenerator erzeugt, und jedes Byte und seine Parität wird in das Register 206 eingegeben, von wo es über den Bus FIFBPDBUS zum Kanalpuffer 110 weiterläuft.
  • Der Ablauf des Kanalzerhackers wird während einer Komprimierungsoperation von zwei PLA 400 und 402 und während einer Dekomprimierungsoperation von zwei PLA 500 und 502 gesteuert.
  • Kanalzerhacker-Kompressionslogikschaltungen
  • Bezugnehmend auf Figur 4 empfangen die PLA 400 und 402 eine Mehrzahl von Eingangssignalen und erzeugen je nachdem, welche Signale aktiv sind, eine Kombination von Ausgangssignalen, die am nächsten CLK1 abgetastet werden, um die Logikschaltung anzusteuern und einige der nächsten Eingangssignale in die PLA zu entwickeln.
  • PLA 400 erzeugt die Signale NS (07-00) zum Definieren des nächsten Zustands der Logikschaltungen. Diese Signale werden an die Eingänge des Registers 404 und Zählers 406 angelegt. Die Ausgangssignale CS (03-00) vom Zähler 406 werden an Eingänge der PLA 400, 402 angelegt und definieren den aktuellen Zustand. Die Ausgangssignale NS (07-04) von PLA 400 werden mit jedem CLK1 in das Register 404 eingetaktet, und die Ausgangssignale vom Register bestimmen (zusammen mit den Ausgangssignalen vom Zähler 406) den Logikzustand bis zum nächsten CLK1.
  • Der Zähler 406 kann bei CLK1 mit den Ausgangssignalen NS (03-00) von PLA 400 geladen werden, wenn das Signal LD aktiv (niedrig) ist. Dies ist das einzige Ausgangssignal von PLA 402, das aktiv niedrig ist, während alle anderen Ausgangssignale aktiv hoch sind. Als Alternative kann die Zählung im Zähler 406 bei CLK1 erhöht werden, wenn das Signal UP von PLA 402 aktiv ist.
  • PLA 402 erzeugt das Signal H 9RDYA 02 auf der Leitung 421 jedesmal dann, wenn der Kanalzerhacker zur Annahme eines weiteren 8-Bit-Datenbyte vom Kanalpuffer 110 bereit ist. In der Figur 6 wird H 9RDYA 02 an ein AND 604 angelegt. Wenn der Kanalpuffer 110 (Figur 2) ein Datenbyte auf den FIFBPDBUS gelegt hat, wird sich das FF 612 in einem Rücksetzzustand befinden, um das AND 604 freizugeben. Das Ausgangssignal von AND 604 setzt das FF 606, um das Signal H SOURCERYA zu erzeugen. Dieses Signal wird an NAND 608 und an die PLA 400 und 402 angelegt. Das FF 606 erzeugt außerdem ein Signal, das an NOR 610 angelegt wird, um die Löschung von FF 612 zu blockieren.
  • Wenn FF 606 rückgesetzt wird, gibt es NAND 608 frei, das ebenfalls das Signal H DIFIFTOBUSRDY vom Kanalpuffer 110 empfängt, wenn der Puffer ein Datenbyte auf FIFBPDBUS gelegt hat. Das Ausgangssignal vom NAND 608 setzt das FF 612 und blockiert damit das AND 604.
  • Das Ausgangssignal von NAND 608 ist das Signal L RDYENA, das über die Leitung 619 an die Puffersteuerschaltungen angelegt wird, wo es einen Zähler 1630 erhöht, der die Anzahl der vom Komprimierer empfangenen Datenbyte zählt. L RDYENA wird auch bei 614 invertiert, um H RDYEN auf der Leitung 621 zu erzeugen. Dieses Signal wird an das Register 200 angelegt, um das Datenbyte auf FIFBPDBUS in das Register einzusteuern. Gleichzeitig setzt das Ausgangssignal vom NAND 608 das FF 616, und das FF erzeugt ein Ausgangssignal, das über einen Treiber 602 die Erzeugung von H BUSWTACK bewirkt. Dieses Signal wird zum Kanalpuffer 110 zurück übertragen, wo es bewirkt, daß der Puffer H DIFIFTOBUSRDY auf Falsch steuert, ein neues Datenbyte auf FIFBPDBUS lädt und H DIFIFTOBUSRDY wieder Wahr macht. Wenn H DIFIFTOBUSRDY auf Falsch geht, löscht es das FF 616 und schließt damit H BUSWTACK auf der Leitung 613 ab und blockiert das NAND 608 und steuert damit L RDYENA und H RDYEN auf Falsch.
  • Sollte PLA 402 H 9RDYA 02 erzeugen, während FF 612 gesetzt ist, wird H 9RDYA 02 bei AND 604 durch das niedrige Ausgangssignal von FF 612 gesperrt. Bei CLK1 wird FF 606 rückgesetzt, um H SOURCERYA auf Falsch zu steuern und zu ermöglichen, daß CLK2 das FF 612 löscht.
  • PLA 402 erzeugt das Signal H 9REGA auf der Leitung 425, wenn Daten in den Registern 200 und 201 zu den Registern 201 und 202 zu übertragen sind. H 9REGA wird bei CLK1 in das Register 618 eingespeichert, und das Ausgangssignal des Registers wird mit CLK1 bei 622 AND-verknüpft, um H AMREG zu erzeugen. In der Figur 2 taktet dieses Signal die Daten vom Register 200 in das Register 201 und die Daten im Register 201 in das Register 202 ein.
  • PLA 402 erzeugt das Signal H 9REGB auf der Leitung 427, wenn das 9- Bit-Ausgangssignal von den PLA 208 in das Register 203 einzuladen ist. H 9REGB wird bei CLK1 in das Register 618 eingespeichert, und das Ausgangssignal des Registers wird mit CLK1 bei 622 AND-verknüpft, um H BMREG zu erzeugen. In der Figur 2 taktet dieses Signal die Daten von den PLA 208 in das Register 203 ein.
  • PLA 402 erzeugt das Signal H 9RDYA 01, wenn der Kanalzerhacker das Register 203 beladen hat und bereit ist, den C/D-Steuerungen 102 zu signalisieren, daß ein Datenbyte auf dem D9IN-Bus 211 zur Verfügung steht. H 9RDYA 01 wird bei CLK1 in die Stufe 3 des Registers 408 eingesteuert. Das Ausgangssignal der Stufe 3 wird an den Wähler 410 angelegt. H COMP2 auf der Leitung 315 ist während des Komprimierungsbetriebs Falsch und H 9RDVA 01 durchläuft daher den Wähler und wird an AND 412 angelegt. Das Signal H D9ACK1 auf der Leitung 1007 ist ein von der C/D-Steuerung 102 erzeugtes Bestätigungssignal. Wenn es Falsch ist, wird es bei 414 invertiert und gibt AND 412 frei, das dann das Signal H DgRDY auf der Leitung 413 erzeugt. Dieses Signal wird zu den C/D-Steuerungen 102 übertragen, um diese darüber zu informieren, daß auf dem D9IN-Bus 211 ein Datenbyte vorliegt. Wenn die C/D-Steuerungen 102 das Datenbyte annehmen, erzeugen sie H D9ACK1. In der Figur 4 bewirkt dieses Signal, daß H D9RDY auf Falsch geht. H D9ACK1 wird auch an die PLA 400 und 402 angelegt.
  • Das Signal H 9AEND wird am Ende einer Komprimierungsoperation erzeugt, um die C/D-Steuerungen 102 darüber zu informieren, daß der Kanalzerhacker 100 das letzte Datenbyte übertragen hat. H 9AEND wird in das Register 408 eingetaktet, und das Ausgangssignal des Registers durchläuft den Wähler 410, um H D9END auf der Leitung 415 zu erzeugen. Danach wird H D9END zu den C/D-Steuerungen 102 übertragen.
  • Wenn der Kanalpuffer 110 das letzte Datenbyte zum Kanalzerhacker übertragen hat und nachdem H DIFIFTOBUSRDY auf Falsch gegangen ist, wird das Signal H LASTBYT vom Kanalpuffer 110 an die Stufe 2 des Registers 408 angelegt. Bei CLK1 wird das Signal in das Register eingetaktet, und das Register erzeugt ein Signal zur Freigabe von AND 416. Wenn das Signal H SOURCERYA auf der Leitung 607 Wahr ist, erzeugt AND 416 das Signal H LASTREV, das an die PLA 400 und 402 angelegt wird.
  • Eine Komprimierungsoperation wird eingeleitet, wenn die Steuerung 118 das Steuerregister 300 adressiert und es mit einem solchen Wert belädt, daß die Signale H COMPRESSEN, H COMP und L STEN alle Wahr sind. In der Figur 12 steuert L STEN die Kettentabellenfreigabeschaltungen derart, daß sie auf Signale von den C/D-Steuerungen 102 reagieren können. Das Signal H COMPRESSEN wird auch an die Figur 6 angelegt, wo es bei 600 invertiert und als Freigabesignal für den Satz Treiber 602 angelegt wird. Das Signal H COMP wird an das Register 408 angelegt und bei jedem CLK1 in das Register eingetaktet. Das Register 408 erzeugt dann das Signal H COMP1, das an die PLA 400 und 402 angelegt wird. Das Signal H COMP2 ist das Aktivierungssignal für die PLA und muß während einer ganzen Komprimierungsoperation Wahr sein.
  • Kanalzerhacker-Kompressionslogikzustände Zustand 00.
  • Bevor H COMPI auf Wahr geht, befindet sich die Kanalzerhackerkompressionslogik im Zustand 00. In diesem Zustand ist das einzige aktive Ausgangssignal von den PLA 400 und 402 das Signal LD. Da alle Ausgänge von PLA 400 inaktiv sind, wird das Register 404 und der Zähler 406 bei jedem CLK1 mit dem Wert 00 beladen.
  • Wenn H COMP1 auf Wahr geht, gibt PLA 400 den Wert 3 an das Register 404 ab, während PLA 402 die Signale H 9RDVA 02 und L LD abgibt. Bei CLK1 wird der Wert 30 in das Register 404 und den Zähler 406 eingetaktet, um den Zustand 30 zu signalisieren. Zur gleichen Zeit bewirkt H 9RDYA 02, daß die Schaltungen der Figur 6, wie schon beschrieben, H SOURCERYA und H RDYEN erzeugen. Mit H RYDEN wird das erste 9-Bit- Datenbyte vom Kanalpuffer 110 in das Register 200 eingetaktet. Zustand 30. Solange H COMP1 und H SOURCERVA Wahr sind und H LSTREV Falsch ist, bleibt die Logik im Zustand 30. PLA 400 gibt den Wert 3 zum Register 404 aus und PLA 402 erzeugt das Signal H 9RDVA 02, das bei AND 604 gesperrt wird.
  • Sollte H LASTREV auf Wahr gehen, ehe H SOURCERYA auf Falsch geht, bedeutet das, daß der Kanalpuffer keine Daten zu senden hat, und die Logik schreitet damit zu einer Beendigungsfolge fort. Von PLA 400 wird der Wert 62 zum Register 404 und dem Zähler 406 ausgegeben und PLA 402 erzeugt die Signale H 9AEND und L LD. H 9AEND bewirkt, daß H DgEND auf der Leitung 415 an die Kompressions-/Dekompressionssteuerung angelegt wird, um eine Beendigungsfolge einzuleiten. Von CLK1 wird der Wert 62 in das Register 404 und den Zähler 406 eingetaktet, so daß der nächste Logikzustand der Endzustand 62 ist.
  • Wenn H SOURCERYA auf Falsch geht, wird vom PLA 400 der Wert 3 zum Register 404 ausgegeben, während PLA 402 die Signale H 9RDYA 02, H 9REGA und UP erzeugt. H 9REGA bewirkt, daß das Signal H AMREG auf der Leitung 603 erzeugt wird, und dieses Signal taktet das erste Datenbyte vom Register 200 in das Register 201 ein. Gleichzeitig bewirkt H 9RDYA 02, daß die Schaltungen der Figur 6 H SOURCERYA, H BUSWTACK und H RDYEN erzeugen. Das Signal H RYDEN bewirkt, daß das zweite Datenbyte vom Kanalpuffer 110 in das Register 200 eingesteuert wird, und H BUSWTACK informiert den Kanalpuffer darüber, daß die Daten angenommen worden sind. Der Wert 3 wird in das Register 404 eingegeben und das Signal UP bewirkt, daß der Zähler 406 erhöht wird, so daß der nächste Zustand 31 ist.
  • Zustand 31.
  • Solange H COMP1 und H SOURCERYA Wahr sind und H LASTREV Falsch ist, bleibt die Logik im Zustand 31. Von PLA 400 wird der Wert 3 ausgegeben, während PLA 402 das Signal H 9RDVA 02 erzeugt, das bei AND 604 blockiert wird.
  • Sollte H LASTREV auf Wahr gehen, ehe H SOURCERYA auffalsch geht, wird von PLA 400 der Wert 5 zum Register 404 ausgegeben und PLA 402 erzeugt H CLRREG1, um Register 200 zu löschen. Bei CLK1 schreitet die Logik zum Zustand 5X fort, wobei X die Zählung (1) im Zähler 406 darstellt. Aus dem Zustand 5X wird, wie unten beschrieben, eine Beendigungsfolge durchgeführt.
  • Wenn H SOURCERVA auf Falsch geht und H LASTREV Falsch ist, wird von PLA 400 der Wert 32 zum Register 404 und Zähler 406 ausgegeben, während PLA 402 die Signale H 9REGA und LD erzeugt. Mit LD wird bei CLK1 der Zähler 406 mit dem Wert 2 von PLA 400 beladen, und gleichzeitig wird der Wert 3 von PLA 400 in das Register 404 eingegeben. Die Zählung im Zähler 406 wird an die PLA 208 angelegt, um das erste 9-Bit- Datenbyte von den Byte in den Registern 202 und 201 zu bilden. H 9REGA bewirkt, daß H AMREG auf der Leitung 603 erzeugt wird, und mit diesem Signal wird das erste Datenbyte vom Register 201 in das Register 202 und das zweite Datenbyte vom Register 200 in das Register 201 eingesteuert.
  • Zustand 32.
  • Im Zustand 32 wird von PLA 400 der Wert 7 zum Register 404 ausgegeben, während PLA 402 die Signale H 9RDYA 02, H 9RDYA 01, H 9REGB und UP erzeugt. Das UP-Signal erhöht den Zähler 406 auf 3, so daß der nächste Zustand 73 sein wird. H 9REGB bewirkt, daß das Signal H BMREG erzeugt wird, damit das erste 9-Bit-Wort von den PLA 208 in das Register 203 eingesteuert wird. H 9RDYA 01 bewirkt, daß das Signal H D9RDY über die Leitung 413 an die C/D-Steuerungen 102 angelegt wird, um diesen zu signalisieren, daß auf dem Bus 211 ein Datenwort vorliegt. H 9RDYA 02 bewirkt, daß H RYDEN und H BUSWTACK, wie oben beschrieben, auf Wahr gehen, um das nächste Datenbyte vom FIFBPDBUS in das Register 200 einzusteuern und ein Bestätigungssignal zum Kanalpuffer 110 zu senden.
  • Zustand 7X.
  • Die Logik bleibt so lange im Zustand 7X, bis die C/D- Steuerungen 102 das Datenbyte auf dem Bus 211 annehmen und das Bestätigungssignal H D9ACK1 erzeugen. Die während dieses Zeitraumes erzeugten besonderen Ausgangssignale sind von den Zuständen der an die PLA 400 und 402 angelegten Steuersignale abhängig.
  • Wenn H SOURCERYA Wahr sind und H LASTREV Falsch ist, wird von PLA 400 der Wert 7 zum Register 404 abgegeben, während PLA 402 H 9RDYA 02 und H gRDYA 01 erzeugt. Vom AND 604 wird H 9RDYA 02 gesperrt, aber H 9RDYA 01 bewirkt, daß H D9RDY auf der Leitung 413 die C/D-Steuerungen 102 wieder darüber informiert, daß ein Datenwort für die Übertragung über den Bus 211 bereitsteht. Die Zählung im Zähler 406 ändert sich nicht.
  • Wenn H SOURCERYA Falsch ist, dann wird von PLA 400 der Wert 7 zum Register 404 ausgegeben und PLA 402 erzeugt das Signal H 9RDYA 01, um damit das Signal H D9RDY auf der Leitung 413 zu erzeugen. Die Zählung im Zähler 406 ändert sich nicht.
  • Wenn H SOURCERYA und H LASTREV Wahr sind, wird von PLA 400 der Wert 7 zum Register 404 ausgegeben, während PLA 402 die Signale H 9RDYA 02 und H 9RDYA 01 erzeugt. H 9RDVA 02 wird vom AND 604 gesperrt, aber H 9RDYA 01 bewirkt wieder, daß H D9RDY über die Leitung 413 zu den C/D-Steuerungen 102 gesandt wird. Die Zählung im Zähler 406 ändert sich nicht.
  • Wenn die C/D-Steuerungen 102 das erste Datenwort auf dem Bus 211 annehmen und auf der Leitung 1007 H D9ACK1 zurücksenden, werden die von PLA 400 und 402 erzeugten besonderen Ausgangssignale durch die Zustände der anderen an die PLA angelegten Steuersignale bestimmt.
  • Wenn H LASTREV Wahr ist und im Register 404 und dem Zähler 406 der Zustand 7X vorliegt (wobei X weniger als 9 beträgt), wird von PLA 400 der Wert 5 zum Register 404 ausgegeben und PLA 402 erzeugt H CLRREG1, um das Register 200 zu löschen. Bei CLK1 schreitet die Logik zum Zustand 5X fort, wobei X die Zählung (3 bis 8) im Zähler 406 ist. Der Zustand 5X ist der Anfang einer unten beschriebenen Beendigungsfolge. Genau dieselben Signale werden erzeugt, wenn der Zustand 79 ist und H SOURCERYA und H LASTREV Wahr sind.
  • Wenn H SOURCERVA Wahr und H LASTREV Falsch ist, wird von PLA 400 der Wert 1 zum Register 404 ausgegeben, während PLA 402 das Signal H 9RDVA 02 erzeugt, das bei AND 604 gesperrt wird. Bei CLK1 wird der Wert 1 in das Register 404 eingesteuert, aber die Zählung im Zähler 406 bleibt unverändert, so daß der nächste Zustand 1X ist.
  • Wenn H SOURCERYA und H LASTREV Falsch sind, wird von PLA 400 der Wert 2 zum Register 404 ausgegeben, während PLA 402 die Signale H 9RDYA 02 und H 9REGA erzeugt. Bei CLK1 bewirken H 9REGA und H 9RDYA 02, daß H AMREG und H RDYEN auf den Leitungen 603 und 621 erzeugt werden, um die Daten in den Registern 200 und 201 in die Register 201 und 202 zu schieben und ein weiteres Datenbyte in das Register 200 einzutakten.
  • Mit CLK1 wird das Ausgangssignal von PLA 400 in das Register 404 eingesteuert, aber die Zählung im Zähler 406 bleibt unverändert, so daß der nächste Zustand 2X ist.
  • Zustand 1X.
  • Wenn die Logik den Zustand 1X annimmt, bleibt sie so lange in diesem Zustand, wie H SOURCERYA Wahr und H LASTREV Falsch ist. Von PLA 400 wird der Wert 1 zum Register 404 ausgegeben, während PLA 402 H 9RDYA 02 erzeugt, das bei AND 604 gesperrt wird.
  • Wenn H LASTREV auf Wahr geht, wird von PLA 400 der Wert 5 zum Register 404 ausgegeben und PLA 402 erzeugt H CLRREG1, um das Register 200 zu löschen. Bei CLK1 schreitet die Logik zum Endfolgenzustand 5X vor, wobei X die Zählung im Zähler 406 ist.
  • Wenn H SOURCERYA auf Falsch geht, wird von PLA 400 der Wert 2 ausgegeben, während PLA 402 die Signale H 9RDYA 02 und H 9REGA erzeugt. Bei CLK1 bewirken H 9REGA und H 9RDYA, daß H AMREG und H RDYEN erzeugt werden, um die Daten in den Registern 200 und 201 in die Register 201 und 202 zu schieben und ein weiteres Datenbyte in das Register 200 einzutakten. Mit CLK1 wird das Ausgangssignal von PLA 400 in das Register 404 eingesteuert, aber die Zählung im Zähler 406 bleibt unverändert, so daß der nächste Zustand 2X ist.
  • Von Zustand 1X wechselt die Logik in den Zustand 29, wenn die Zählung am Zähler 406 auf 8 steht. Der Grund dafür ist, daß aus jeweils neun Acht-Bit-Byte acht Neun-Bit-Worte gebildet werden, weshalb nach jedem achten Neun-Bit-Wort eine Sondereinschiebung in die Register 201 und 202 stattfinden muß. Wenn der Zähler 406 nicht eine Zählung von 8 enthält, schreitet die Logik, wie oben angedeutet, zum Zustand 2X fort.
  • Zustand 2X.
  • Im Zustand 2X (X ist nicht 9) wird von PLA 400 der Wert 7 ausgegeben, während PLA 402 die Signale H 9RDYA 02, H 9RDYA 01, H 9REGB und UP erzeugt. Bei CLK1 erzeugen diese Signale die Einsteuersignale, die die Register 200-204 takten, um eine neues Datenwort auf den D9IN-Bus 211 zu legen und ein neues Datenbyte vom FIFBPDBUS in das Register 200 einzuladen. Zusätzlich bewirkt H 9RDYA 01, daß H D9RDY auf der Leitung 413 erzeugt wird, um die C/D-Steuerungen darüber zu informieren, daß auf dem Bus 211 ein Datenbyte zur Verfügung steht. Das Signal UP bewirkt, daß die Zählung im Zähler 406 bei CLK1 erhöht wird, zur gleichen Zeit wie der Wert 7 in das Register 404 eingetaktet wird. Die Logik kehrt somit zum Zustand 7X zurück, wobei X der Wert im Zähler 406 ist und um eins größer ist als das letzte Mal, als der Zustand 7X ausgeführt wurde.
  • Zustand 29.
  • In Zustand 29 wird von PLA 400 der Wert F ausgegeben, während PLA 402 dieselben Signale wie in Zustand 2X erzeugt. Dadurch wird ein Datenbyte in das Register 203 eingegeben, der Inhalt der Register 200 und 201 in die Register 201 und 202 eingegeben und ein Datenwort vom FIFBPDBUS in das Register 200 eingetaktet. H D9RDY wird auf der Leitung 413 erzeugt, um die C/D-Steuerungen 102 zu benachrichtigen, daß auf dem Bus 211 ein Datenwort vorliegt. Das Signal UP bewirkt, daß der Zähler 406 auf A erhöht wird, wenn der Wert F in das Register 404 eingetaktet wird, so daß der nächste Zustand FA ist. Zustand FA. Die Logik bleibt im Zustand FA, bis die C/D-Schaltungen das Datenwort auf dem Bus 211 annehmen und reagieren, indem sie H D9ACK1 auf Wahr setzen. Wenn H SOURCERYA Wahr ist und H LASTREV Falsch ist, wird von PLA 400 der Wert F zu den Registern 404 ausgegeben und PLA 402 erzeugt die Signale H 9RDYA 02 und H9RDYA 01. H 9RDYA 02 ist bei AND 604 gesperrt, aber H 9RDYA 01 bewirkt, daß H D9RDV zu den C/D- Steuerungen gesandt wird. Bei CLK1 wird der Wert F in das Register 400 eingegeben und der Zähler 406 behält seine Zählung von A.
  • Wenn H SOURCERYA Falsch ist, wird von PLA 400 der Wert F zum Register 404 ausgegeben und PLA 402 erzeugt die Signale H 9RDYA 01 und H 9REGA. Bei CLK1 geht H RDYEN auf Wahr auf der Leitung 413, um ein Datenbyte vom FIFBPDBUS in das Register 200 einzutakten und H AMREG geht auf Wahr, um den Inhalt der Register 200 und 201 in die Register 202 und 203 einzutakten. Zusätzlich wird H D9RDY erzeugt und zu den C/D-Schaltungen gesandt. Der Wert F wird in das Register 404 eingegeben und der Zähler 406 behält seine Zählung von A.
  • Wenn H SOURCERYA und H LASTREV beide Wahr sind, wird von PLA 400 der Wert F zum Register 404 ausgegeben und PLA 402 erzeugt die Signale H 9RDYA 02 und H 9RDYA 01. H 9RDYA 02 ist bei AND 604 gesperrt, aber H 9RDYA 01 bewirkt daß H D9RDY über die Leitung 413 zu den C/D-Steuerungen gesandt wird. Der Zähler 406 behält eine Zählung von A.
  • Wenn die C/D-Steuerungen das Datenwort auf dem Bus 211 annehmen und die Reaktion H D9ACK1 erzeugen, kann die Logik zum Zustand 30, Zustand 31 oder Zustand 62 fortschreiten.
  • Wenn H SOURCERYA Wahr ist und H LASTREV Falsch ist, wird von PLA 400 der Wert 30 zum Register 404 und Zähler 406 ausgegeben. Von PLA 402 wird das Signal H 9RDYA 02 erzeugt, das bei AND 604 gesperrt wird, und das Signal LD, das den Zähler 406 freigibt. Bei CLK1 wird der Wert 30 in das Register 404 und den Zähler 406 eingegeben.
  • Wenn H SOURCERYA und H LASTREV Falsch sind, wird von PLA 400 der Wert 31 zum Register 404 und dem Zähler 406 ausgegeben. PLA 402 erzeugt die Signale H 9RDYA 02, H 9REGA und LD. H 9REGA erzeugt H AMREG auf der Leitung 603, um den Inhalt der Register 200 und 201 in die Register 201 und 202 zu schieben. H 9RDYA 02 erzeugt H RDYEN, um ein Datenbyte vom FIFBPDBUS in das Register 200 einzusteuern. Bei CLK1 wird der Wert 31 in das Register 404 und den Zähler 406 eingegeben.
  • Wenn H LASTREV Wahr ist, dann wird vom PLA 400 der Wert 62 zum Register 404 und Zähler 406 ausgegeben. PLA 402 erzeugt die Signale H 9AEND und LD. H 9AEND wird von CLK1 in das Register 408 eingesteuert und das Ausgangssignal des Registers durchläuft den Wähler 410, um zum Signal H D9END auf der Leitung 415 zu werden. Dieses Signal wird an die C/D- Steuerungen angelegt, um, wie unten beschrieben, einen Kompressionsendzyklus zu erzwingen. Mit CLK1 wird der Wert 62 in das Register 404 und den Zähler 406 eingetaktet.
  • Zustand 62.
  • Zustand 62 ist der Endzustand einer Komprimierungsoperation, und wenn die Logik in diesen Zustand eingeht, bleibt sie dort, bis H COMP1 auffalsch geht. Während H COMP1 Wahr bleibt, wird von PLA 400 der Wert 62 zum Register 404 und Zähler 406 ausgegeben, und PLA 402 erzeugt das Signal H 9AEND, um das Signal H D9END auf der Leitung 415 auf Wahr zu halten.
  • Zustand 5X.
  • Die Logik bleibt nur einen Zyklus lang im Zustand 5X (wobei X nicht gleich 8 ist), währenddessen die PLA 400 den Wert 4 zum Register 404 ausgibt und PLA 402 die Signale H 9REGA und H CLRREG1 erzeugt. Bei CLK1 bewirkt H 9REGA, daß das Signal H AMREG an die Register 201 und 202 angelegt wird, um die Byte in den Registern 200 und 201 in Register 201 und 202 einzutakten. H CLRREG1 löscht das Register 200. Zur gleichen Zeit wird der Wert 4 in das Register 404 eingetaktet, so daß der nächste Zustand 4X ist.
  • Im Zustand 5X, wobei X gleich 8 ist, wird von der PLA 400 H NS 07 und H NS 06 aktiv gemacht, während PLA 402 H 9RDYA 01, H 9REGA und H 9REGB aktiv macht. Damit wird das Register 203 geladen, der Inhalt der Register 200 und 201 in die Register 201 und 202 geschoben, H D9RDY zu den C/D-Steuerungen gesandt und C8 zum nächsten Zustand gemacht.
  • Zustand C8.
  • Im Zustand C8 wird bei Falschem H D9ACK1 H 9RDYA 01 von der PLA 402 aktiv gemacht, um H D9RDY zu den C/D-Steuerungen zu senden, und PLA 400 macht zur Wiederholung des Zustandes H NS 07 und H NS 06 aktiv.
  • Wenn H D9ACK1 auf Wahr geht, wird von PLA 402 H UP aktiv gemacht, um den Zähler 406 zu erhöhen, und PLA 400 macht H NS 06 aktiv, so daß die Logik zum Zustand 49 fortschreitet.
  • Zustand 4X.
  • Die Logik bleibt nur einen Zyklus lang im Zustand 4X (X ist nicht gleich 9), währenddessen von PLA 400 der Wert 61 zum Register 404 und Zähler 406 ausgegeben wird, während PLA 404 die Signale H 9RDYA 01, H 9REGB und L LD erzeugt. Bei CLK1 wird H 9REGB in das Register 618 eingespeichert und AND 622 erzeugt H BMREG, um das letzte Datenwort in das Register 203 einzusteuern. Zur gleichen Zeit wird H 9RDYA 01 in das Register 408 eingegeben und das Ausgangssignal des Registers durchläuft den Wähler 410 und das AND 412, um H D9RDY auf der Leitung 413 zu erzeugen. Mit diesem Signal werden die C/D-Steuerungen darüber informiert, daß auf Bus 211 ein Datenwort vorliegt. Mit dem CLK1-Signal wird der Wert 61 in das Register 404 und den Zähler 406 eingetaktet.
  • Wenn X gleich 9 ist, wird von der PLA 402 zum Übertragen von H D9RDY zu den C/D-Steuerungen 102 H 9RDYA 01 aktiv gemacht, zum Laden des Registers 203 aus den PLA 208 H 9REGB aktiv gemacht und zum Laden des Zustandszählers 406 L LD aktiv gemacht. PLA 400 gibt den Wert 6F zum Register 404 und den Zähler 406 aus, um den nächsten Zustand zu definieren.
  • Zustand 6F.
  • Wenn H D9ACK1 Falsch ist, wird von PLA 400 der Wert 6 zum Register 404 ausgegeben, um den Zustand 6F zu wiederholen, und von PLA 402 wird H 9RDYA 01 aktiv gemacht, um H D9RDY zu den C/D-Steuerungen 102 zu senden.
  • Wenn H D9ACK1 auf Wahr geht, wird H 9AEND von PLA 402 aktiv gemacht, um H DgEND zu den C/D-Steuerungen zu senden. PLA 402 macht L LD aktiv und PLA 400 macht H NS 06, H NS 05, H NS 03, H NS 02 und H NS 01 aktiv, so daß die Logik zum Zustand 6 E fortschreitet.
  • Zustand 6E.
  • Im Zustand 6E erzeugt PLA 208 das Signal H LASTBYTCOND auf der Leitung 213 und dieses Signal wird in das Register 506 eingegeben, um das Signal H LASTCOND zu erzeugen, das über die Leitung 527 an die Zerhackerpufferschaltungen der Figur 14 angelegt wird. Von PLA 402 wird H 9AEND aktiv gemacht, so daß H D9END zu den C/D-Steuerungen 102 gesandt wird. PLA 400 macht H NS 06 und H NS 05 aktiv, um den Zustand 6E zu wiederholen. Der Zustand wird so lange wiederholt, wie H COMP1 Wahr bleibt.
  • Zustand 61.
  • Die Logik bleibt in Zustand 61, bis die C/D-Steuerungen 102 das Datenbyte auf dem Bus 211 annehmen und H DACK1 auf der Leitung 1007 erzeugen. Während dieser Zeit wird von PLA 400 der Wert 6 zum Register 404 ausgegeben und PLA 402 erzeugt H 9RDVA 01, so daß bei CLK1 der Wert 6 in das Register 404 eingegeben wird und das Signal H D9RDY zu den C/D-Steuerungen gesandt wird. Wenn die C/D-Steuerungen mit der Erzeugung von H DACK1 reagieren, werden von PLA 400 Signale, die den Wert 6 darstellen, an das Register 404 angelegt, während PLA 402 das Signal UP erzeugt. Bei CLK1 wird der Wert 6 in das Register 404 eingegeben und die Zählung in Zähler 406 wird erhöht, so daß der schon beschriebene Zustand 62 der nächste Logikzustand ist.
  • Kanalzerhacker-Dekompressionslogikschaltungen
  • Während einer Dekomprimierungsoperation wird die Funktionsweise des Kanalzerhackers 100 durch die PLA 500 und 502 gesteuert. Von PLA 502 werden die nächsten Zustandssignale NS (03-00) erzeugt, die an den Zustandszähler 504 angelegt werden. Die Zustandssignale werden von CLK1 in den Zähler 504 eingetaktet, wenn das Signal L LD von PLA 500 aktiv gemacht wird. Als Alternative kann der Zähler 504 von CLK1 erhöht werden, wenn PLA 500 das Signal H UP auf Wahr setzt. Der Zähler erzeugt die aktuellen Zustandssignale CS (03-00), die an die PLA 500 und 502 angelegt werden. Das Ausgangssignal des Zählers wird auch über Leitungen 521 an die PLA 210 angelegt.
  • Von PLA 502 wird auch das nächste Zustandssignal NS 04 erzeugt und PLA 500 erzeugt die nächsten Zustandssignale NS 05 und NS 06. Diese Signale werden an ein Register 506 angelegt und von CLK1 in das Register eingetaktet. Die sich ergebenden Ausgangssignale vom Register sind die aktuellen Zustandsignale CS 06-CS 04, die an die Eingänge von den PLA 500 und 502 angelegt werden. Die vom Zähler 504 und Register 506 erzeugten aktuellen Zustandssignale CS 06-CS 00 definieren den aktuellen Zustand der Logikschaltungen während einer Dekomprimierungsoperation.
  • Die PLA 502 erzeugen die Signale H REG1, H REG2 und H 98RDYA, um Daten in die Register 204, 205 und 206 einzutakten. Die Signale durchlaufen Speicherregister 508, um drei AND 510, 512 und 514 freizugeben. Bei CLK1 werden die Signale in das Register 508 eingespeichert. Zur gleichen Zeit wird CLK1 an die AND 510, 512 und 514 angelegt. Das Ausgangssignal des AND 514 ist das Signal H 98RDY, das an das Register 206 angelegt wird, um ein Datenbyte aus den PLA 210 in das Register einzutakten. Die Ausgänge der AND 512 und 510 sind die Signale H 8REG1STEP bzw. H 8REG2STEP, die an die Register 204 bzw. 205 angelegt werden, um Daten auf dem D9OUT-Bus in die Register einzutakten.
  • Von PLA 500 wird das Signal H LAST erzeugt, wenn das letzte Byte dekomprimierter Daten auf den FIFBPDBUS 155 gelegt worden ist. H LAST wird von CLK1 in das Register 506 eingetaktet und das Register erzeugt das Signal H FIFOLASBYT auf der Leitung 523. In der Figur 6 durchläuft dieses Signal einen Treiber 602, um H FIFLASSY auf der Leitung 615 zu erzeugen. H FIFLASSY wird an den Kanalpuffer 110 und die Rückwärtsleseschaltungen 116 angelegt, um zu signalisieren, daß das letzte Byte dekomprimierter Daten übertragen worden ist.
  • Von PLA 500 wird das Signal H D98AACK aktiv gemacht, um den Kanalpuffer 110 oder die Rückwärtsleseschaltungen 116 darüber zu informieren, daß auf dem FIFBPDBUS 155 ein Byte dekomprimierter Daten zur Verfügung steht. H D9BAACK wird an einen Eingang des AND 630 angelegt. Angenommen, daß H BPBUSTOFIFACK auf der Leitung 157 Falsch ist, so wird mit dem Ausgangssignal des Invertierers 632 der zweite Eingang des AND 630 freigegeben. Das AND erzeugt ein Ausgangssignal, daß bei CLK2 das FF 634 setzt. Das Ausgangssignal von FF 632 bewirkt, daß ein Treiber 602 das Signal H RDY auf der Leitung 611 erzeugt. Dieses Signal wird zum Kanalpuffer 110 und den Rückwärtsleseschaltungen 116 übertragen als Anzeige dafür, daß auf dem FIFBPDBUS 155 ein Datenbyte zur Verfügung steht. Als Reaktion auf das Signal H RDY nehmen der Kanalpuffer 100 oder die Rückwärtsleseschaltungen 116 das Datenbyte an und erzeugen das Signal H BPBUSTOFIFACK auf der Leitung 157, um das AND 630 zu sperren. Bei der nächsten CLK2 wird FF 634 rückgesetzt und H RDY damit abgeschlossen. Als Reaktion bewirken der Kanalpuffer 110 oder die Rückwärtsleseschaltungen 116, daß H BPBUSTOFIFACK auf Falsch geht.
  • Wenn H BPBUSTOFIFACK Falsch ist, erzeugt der Invertierer 632 das Signal H IPIACK, das über die Leitung 633 and die Stufe 4 des Registers 506 angelegt wird. Das Register erzeugt ein Ausgangssignal aus der Stufe 4, um einen Eingang des AND 516 freizugeben. Am zweiten Eingang des AND 516 liegt das Signal H SETRDYA, das von FF 617 erzeugt wird. Wenn daher der Kanalpuffer oder die Rückwärtsleseschaltung 116 nicht zur Aufnahme eines Datenbytes bereit sind und der Kanalzerhacker FF 634 nicht gesetzt hat, um H RDY zu erzeugen, erzeugt 516 ein Ausgangssignal L RDYACK, das an die PLA 500 und 502 angelegt wird. Andererseits ist, wenn FF 634 gesetzt ist, um damit anzuzeigen, daß sich auf dem FIFBPDBUS ein Datenbyte befindet, das von FF 634 erzeugte Signal H SETRDY Wahr und dieses Signal wird an die PLA 500 und 502 angelegt.
  • Von PLA 500 wird das Signal H 9BRDY erzeugt, wenn der Kanalzerhacker 100 für den Empfang eines weiteren Datenbyte von den C/D-Steuerungen 102 bereit ist. Von CLK1 wird H 98RDY in 506 eingetaktet und das Register erzeugt H D98ARDY auf der Leitung 501. In der Figur 4 durchläuft H D98ARDY den Wähler 410 (H COMP2 ist Wahr) und gibt einen Eingang des AND 412 frei. Wenn H D9ACK1 auf Falsch geht (100 ns lang bei Beginn der Dekomprimierung, oder wenn die C/D-Steuerungen ein Datenbyte auf den D9OUT-Bus gelegt haben), erzeugt das AND 412 H D9RDY, um den C/D-Steuerungen mitzuteilen, daß der Kanalzerhacker für den Empfang eines Datenbyte bereit ist. Die C/D-Steuerungen reagieren, indem sie ein Datenbyte auf den D9OUT-Bus legen und H D9ACK1 auf der Leitung 1007 erzeugen. Damit wird H D9RDY abgeschlossen, womit wiederum H D9ACK1 abgeschlossen wird.
  • Kanalzerhackerdekomprimierungslogikzustände Zustand 00.
  • H COMP2 auf der Leitung 315 ist das Signal, das die PLA 500 und 502 für Dekomprimierung aktiviert. H COMP2 auf der Leitung 315 muß während der gesamten Dekomprimierungsoperation Wahr sein. Auch muß das Steuerregister 300 geladen sein, so daß die Schaltungen der figur 3 für die Freigabe des Registers 206 L COMP2A auf der Leitung 301, für die Freigabe des Treibers 602 H COMPRESSEN auf der Leitung 313 und für die Freigabe der Kettentabellenschaltungen der Figur 12 L STEN erzeugen.
  • Vor dem Zeitpunkt, wenn H COMP2 auf Wahr geht, ist das einzige aktive Ausgangssignal von PLA 500 das Signal L LD, mit dem das Beladen des Zählers 504 freigegeben wird. Da alle anderen Ausgangssignale von den PLA 500 und 502 Falsch sind, wird bei jedem CLK1 der Zustand 00 in das Register 506 und den Zähler 504 geladen, so daß der Zustand wiederholt wird. Wenn H COMP2 auf Wahr geht, bleibt die Logik im Zustand 00, bis die C/D-Steuerungen H D9ACK1 auf der Leitung 1007 erzeugen. Zu diesem Zeitpunkt setzt PLA 500 H 9BRDY, H NS 05 und L LD auf aktiv, während PLA 502 H NS 04 erzeugt. H 9BRDY bewirkt, daß H D9RDY, wie schon beschrieben, zu den C/D-Steuerungen 102 übertragen wird. Mit L LD werden Nullen in den Zähler 504 eingeladen. Das Register 506 und der Zähler 504 geben daher Signale aus, die als den nächsten Logikzustand 30 darstellen.
  • H D9TERM1 sollte Wahr sein, da die C/D-Steuerungen keine Worte zu senden haben, PLA 500 setzt die Signale H LAST, H NS 05 und L LD auf aktiv, während PLA 502 H NS 04, H NS 01 und H NS 00 auf Wahr setzt. H LAST bewirkt, daß H FIFLASSY über die Leitung 615 zum Kanalpuffer 110 und den Rückwärtsleseschaltungen 116 gesandt wird, um zu signalisieren, daß es keine weiteren Byte zu übertragen gibt. Die Logik schreitet zum Endzustand 33 fort.
  • Zustand 30.
  • Die Logik wartet im Zustand 30 darauf, daß entweder H D9ACK1 auf Wahr geht, womit signalisiert wird, daß die C/D-Steuerungen 102 ein Wort auf den D9OUT-Bus gelegt haben, oder darauf, daß H D9TERM1 auf Wahr geht, womit signalisiert wird, daß die C/D-Steuerungen das letzte Wort zum Kanalzerhacker 100 übertragen haben.
  • Während des Wartens macht PLA 500 H 98RDY und H NS 05 aktiv in jedem Zyklus, während PLA 502 H NS 04 aktiv macht. So wird H D9RDY zu den C/D-Steuerungen gesandt und der Zustand 30 wird wiederholt.
  • Wenn H D9ACK1 auf Wahr geht, macht PLA 500 die Signale L LD und H NS 05 aktiv, während PLA 502H NS 04, H REG1 und H NS 00 aktiv macht. Das Datenbyte auf dem D9OUT-Bus wird in das Register 204 eingetaktet und die Logik schreitet zum Zustand 31 fort.
  • Wenn H D9TERM1 auf Wahr geht, erzeugt PLA 500 L LD, H NS 05 und H LAST, während PLA 502 H NS 04, H NS 01 und H NS 00 erzeugt. H LAST bewirkt, daß H FIFLASSY zum Kanalpuffer 110 und den Rückwärtsleseschaltungen 116 gesandt wird und die Logik zum Beendigungszustand 33 fortschreitet.
  • Zustand 31.
  • Im Zustand 31 erzeugt PLA 500 H 9BRDY, so daß H D9RDY über die Leitung 413 zu den C/D-Steuerungen gesandt wird. Von PLA 500 wird auch H D98AACK aktiv gemacht, um das Signal H RDY zum Kanalpuffer und den Rückwärtsleseschaltungen zu senden, um anzuzeigen, daß sich auf dem FIFBPDBUS 155 ein Datenbyte befindet. PLA 502 macht H 98RDYA aktiv, so daß ein Datenbyte von den PLA 210 in das Register 206 eingetaktet wird, so daß es auf dem Bus zur Verfügung steht. Die PLA machen H NS 04 und H UP aktiv, so daß der nächste Zustand 1X ist, wobei X nunmehr 2 ist.
  • Zustand 1X.
  • Die Logik wartet im Zustand 1X darauf, daß die C/D-Steuerungen 102 das Signal H D9ACK1 auf der Leitung 1007 erzeugen und damit signalisieren daß ein zweites Wort auf den D9OUT-Bus 920 gelegt worden ist, oder das Signal H D9TERM1 auf der Leitung 1000 erzeugen, um zu signalisieren, daß das letzte Wort auf den Bus gelegt worden ist. Die von den PLA 500 und 502 erzeugten Ausgangssignale sind, je nachdem ob das AND 516 das Signal L RDYACK erzeugt oder FF 634 das Signal H SETRDY erzeugt, unterschiedlich.
  • Wenn H SETRDY Wahr ist und L RDYACK Falsch ist, wird von PLA 500 H D98AACK und H 98RDY erzeugt um dem Kanalpuffer 110 (beziehungsweise den Rückwärtsleseschaltungen 116) zu signalisieren, daß sich auf dem FIFBPDBUS ein Datenbyte befindet, und den C/D-Steuerungen zu signalisieren, daß der Kanalzerhacker zur Aufnahme eines weiteren Wortes oereit ist. PLA 502 erzeugt nur H NS 04, und da sich die Zählung im Zähler 504 nicht verändert, wird der Zustand 1X wiederholt.
  • Wenn H SETRDY Falsch ist und L RDYACK Falsch ist, oder wenn H SETRDY und H D9TERM1 Falsch sind und L RDYACK Wahr sind, dann erzeugt PLA 502 nur H 98RDY so daß den C/D-Steuerungen 102 H D9RDY zugesandt wird. PLA 502 erzeugt nur H NS 04, so daß der Zustand 1X wiederholt wird.
  • Wenn H D9TERM1 auf Wahr geht, macht PLA 500 H LAST, L LD und H NS 05 aktiv, während PLA 502 H NS 04, H NS 01 und H NS 00 Wahr macht. H LAST bewirkt, daß als Anzeige dafür, daß der Kanalzerhacker das letzte Byte übertragen hat, H FIFLASSY über die Leitung 615 dem Kanalpuffer 110 und den Rückwärtsleseschaltungen 116 zugeführt wird. H NS 05, H NS 04, H NS 01, H NS 00 und L LD bewirken, daß die Logik zum Beendigungszustand 33 fortschreitet.
  • Wenn H D9ACK1 auf Wahr geht, während sich die Logik im Zustand 1X befindet, sind die von den PLA 500 und 502 erzeugten Ausgangssignale vom Zustand der Signale H SETRDY und L RDYACK abhängig, und davon, ob der Zustand geradzahlig oder ungeradzahlig ist, d.h. ob das vom Zähler 504 erzeugte Signal H CS 00 Wahr ist oder Falsch.
  • Wenn L RDYACK Wahr ist und H SETRDY und H CS 00 Falsch sind, erzeugt PLA 502 H REG2, um das Wort aus dem D9OUT-Bus in das Register 205 einzulesen. Wenn andererseits L RDYACK Wahr ist, H SETRDY Falsch ist und CS 00 Wahr ist, dann erzeugt PLA 502 H REG1, um das Wort vom D9OUT-Bus in das Register 204 einzutakten. In beiden Fällen erzeugt PLA 500 H NS 06, so daß die Logik zum Zustand 4X fortschreitet, wobei X die im Zähler 504 enthaltene Zählung ist.
  • Wenn H SETRDY Wahr ist und L RDYACK und H CS 00 Falsch sind, dann erzeugt PLA 502 H REG2, um das Wort vom D9OUT-Bus in das Register 205 einzulesen. Wenn jedoch H SETRDY und H CS 00 Wahr sind und L RDYACK Falsch sind, dann erzeugt PLA 502 H REG1, um das Wort vom D9OUT-Bus in das Register 204 einzutakten. In beiden Fällen erzeugt PLA 500 H D9BAACK, um zu bewirken, daß H RDY über die Leitung 611 zu dem Kanalpuffer und den Rückwärtsleseschaltungen gesandt wird. Von PLA 500 wird auch H NS 05 erzeugt, so daß die Logik zum Zustand 5X fortschreitet.
  • Wenn H SETRDY und L RDYACK Falsch sind und H CS 00 Falsch ist, dann wird von PLA 502 H REG2 erzeugt, so daß das Wort auf dem D9OUT-Bus in das Register 205 eingeladen wird. Wenn andererseits H CS 00 Wahr ist, dann erzeugt PLA 502 H REG1, so daß das Wort auf dem Bus in das Register 204 eingetaktet wird. In beiden Fällen erzeugt PLA 500 H NS 05, so daß der nächste Zustand 5X ist.
  • Zustand 2X.
  • Im Zustand 2X erzeugt PLA 502 keine Ausgangssignale, wenn L RDYACK Falsch ist. Wenn auch H SETRDY Wahr ist, dann setzt PLA 500 H D98AACK und H NS 05 auf Wahr, um H RDY zum Kanalzerhacker und den Rückwärtsleseschaltungen zu senden und den Zustand 2X zu wiederholen. Wenn H SETRDY Falsch ist, dann wird von der PLA 500 einfach H NS 05 aktiv gemacht, um den Zustand 2X zu wiederholen.
  • Wenn L RDYACK Wahr ist und H SETRDY Falsch ist, dann sind die im Zustand 2X erzeugten Signale abhängig davon, ob X = 8 ist oder nicht. Wenn X nicht gleich 8 ist (d.h. CS 03 Falsch ist), so macht PLA 500 H 98RDY, H D98AACK und H UP aktiv, während die PLA 502 H NS 04 und H 98RDYA aktiv macht. Wenn andererseits X gleich acht ist, dann macht PLA 500H D98AACK, H NS 06 und H UP aktiv. So wird, wenn X = 8, H RDV über die Leitung 611 zum Kanalpuffer und den Rückwärtsleseschaltungen gesandt, H D9RDY über die Leitung 413 zu den C/D-Steuerungen gesandt, das Register 206 mit einem Datenbyte beladen, das auf den FIFBPDBUS gelegt wird, und die Logik schreitet zu 1X fort, wobei X nunmehr um eins größer als vorher ist. Wenn X gleich 8 ist, dann bewirkt H D98AACK, daß H RDY zum Kanalpuffer und den Rückwärtsleseschaltungen gesandt wird und das Programm schreitet zum Zustand 59 fort.
  • Die verschiedenen Operationen, bei denen X = 8 ist, ergeben sich aus der Tatsache, daß während der Dekomprimierung die PLA 210 9-Bit-Byte in 8-Bit-Byte zerhacken. Nachdem daher 8 Byte vom D9OUT-Bus ausgelesen worden sind, haben die PLA 210 9 Byte geformt, und bevor der Kanalzerhacker zur Aufnahme eines weiteren Wortes von den C/D-Steuerungen bereit ist, muß daher eine zusätzliche Übertragung zum Kanalpuffer und den Rückwärtsleseschaltungen stattfinden.
  • Zustand 4X.
  • In den Zustand wird, wie schon beschrieben, aus dem Zustand 1X eingetreten. Wenn X nicht gleich 8 ist, erzeugt PLA H 98RDY, um H D9RDV über die Leitung 413 zu den C/D-Steuerungen zu senden, um anzuzeigen, daß der Kanalzerhacker zum Empfang eines weiteren Wortes bereit ist. Von der PLA 500 wird auch H D98AACK erzeugt, um H RDY über die Leitung 413 zum Kanalzerhacker und den Rückwärtsleseschaltungen zu senden. Von PLA 502 wird H 98RDYA erzeugt, um ein Byte in das Register 206 einzuladen. Die PLA 500 und 502 machen auch H UP und H NS 04 aktiv, so daß die Logik zum Zustand 1X zurückkehrt, wobei X um eins größer ist als das letzte Mal, wenn in den Zustand 1X eingegangen wurde.
  • Wenn X gleich 8 ist, macht PLA 500 H D98AACK, H NS 06 und H UP aktiv, während PLA 502 H NS 04 und H 98RDYA aktiv macht. Diese Signale bewirken, daß ein Datenbyte von den PLA 210 in das Register 206 eingeladen und das H RDY-Signal zum Kanalpuffer und den Rückwärtsleseschaltungen gesandt wird, um diese darüber zu informieren, daß sich auf dem FIFBPDBUS ein Datenbyte befindet, und der Zähler 504 erhöht wird, so daß der nächste Logikzustand 59 ist.
  • Zustand 59.
  • Wenn L RDYACK Falsch ist und H SETRDY Wahr ist, dann erzeugt PLA 500 H D98AACK und H NS 06, während PLA 502 H NS 04 erzeugt. H D98AACK bewirkt, daß H RDY zum Kanalpuffer und den Rückwärtsleseschaltungen gesandt wird und der Zustand 59 wiederholt wird.
  • Abgesehen von H D98AACK werden von den PLA 500 und 502 dieselben Signale erzeugt, wenn L RDYACK und H SETRDY Falsch sind.
  • Wenn H REVFFD02 und H SETRDY Falsch sind und L RDYACK Wahr ist, dann macht PLA 500 H D9AACK, H NS 06 und L LD aktiv, während PLA 502 H 98RDYA, H NS 04, H NS 03 und H NS 01 aktiv macht. H 98RDYA bewirkt, daß ein Datenbyte in das Register 206 eingeladen wird und H D98AACK bewirkt, daß H RDV zum Kanalpuffer und den Rückwärtsleseschaltungen gesandt wird, um diese darüber zu informieren, daß auf dem FIFBPDBUS ein Byte zur Verfügung steht. L LD lädt den Wert A (NS 03 und NS 01) in den Zähler 504, so daß der Zustand 5A ist.
  • Wenn H REVFFD02 und L RDYACK Wahr sind, H SETRDY aber Falsch ist, dann macht PLA 500 H NS 06 und L LD aktiv, während PLA 502 H 98RDYA, H NS 04, H NS 03, H NS 01 und H NS 00 aktiv macht. Damit wird das Ausgangssignal der PLA 210 in das Register 206 geladen und der Wert B in den Zähler 504 geladen, so daß der nächste Zustand 5B ist.
  • Zustand 5A.
  • Solange L RDYACK Falsch ist und H SETRDY Wahr ist, macht PLA 500 H D98AACK und H NS 06 aktiv, während PLA 502 H NS 04 aktiv macht. H D98AACK versucht, FF 634 zu setzen und H RDY auf der Leitung 611 zu erzeugen, wenn H BPBUSTOFIFACK auf der Leitung 157 Falsch ist. Die Zählung im Zähler 504 hat sich nicht geändert und somit wird der Zustand 5A wiederholt.
  • Wenn L RDYACK Falsch ist und H SETRDY auf Falsch geht, dann macht PLA 500 nur H NS 06 aktiv, während PLA 502 nur H NS 04 aktiv macht, so daß der Zustand 5A wiederholt wird.
  • Wenn L RDYACK auf Wahr geht und H SETRDY auf Falsch geht, dann erzeugt PLA 500 H 98RDY, H NS 05 und L LD, während PLA 502 H NS 04 erzeugt. Damit wird bewirkt, daß H D9RDY zu den C/D-Steuerungen 102 gesandt wird und die Logik zum Zustand 30 fortschreitet.
  • Zustand 5B.
  • Im Zustand 5B wartet die Logik darauf daß die C/D-Steuerungen H D9TERM1 oder H D9ACK1 zum Kanalzerhacker senden. Solange beide Signale Falsch sind, erzeugt PLA 500 H 98RDY, so daß H D9RDY zu den C/D-Steuerungen über die Leitung 413 zugesandt wird, um anzuzeigen, daß der Kanalzerhacker für den Empfang eines weiteren Wortes bereit ist. PLA 500 versetzt H NS 06 in den Aktivzustand, während PLA 502 H NS 04 in den Aktivzustand versetzt, so daß der Zustand B wiederholt wird.
  • Wenn H D9TERM1 auf Wahr geht, erzeugt PLA 500 H LAST, so daß dem Kanalpuffer und den Rückwärtsleseschaltungen H FIFLASSY über die Leitung 615 zugesandt wird. Von PLA 500 wird H NS 05 und L LD in den Aktivzustand versetzt, während PLA 502 H NS 04, H NS 01 und H NS 00 aktiv macht, so daß der nächste Zustand der Endzustand 33 ist.
  • Wenn H D9ACK1 auf Wahr geht, erzeugt PLA 500 H D98AACK, H NS 06 und H UP, während PLA 502 H NS 04 und H REG1 erzeugt. Das Register 204 wird mit dem Wort vom D9OUT-Bus beladen, und dem Kanalpuffer und den Rückwärtsleseschaltungen wird H RDY zugesandt. Der Zähler 504 wird erhöht, so daß die Logik zum Zustand 5C fortschreitet.
  • Zustand 5C.
  • Die Logik wartet im Zustand 5C, bis L RDYACK auf Wahr geht. Wenn H SETRDY ebenfalls Wahr ist, dann werden H D98AACK und H NS 06 von PLA 500 in den Aktivzustand versetzt, während PLA 502 H NS 04 aktiv macht. H D98AACK setzt FF 634, um H RDV zu erzeugen, wenn H BPBUSTOFIFACK auf der Leitung 157 Falsch ist. Der Zustand 5C wird wiederholt.
  • Wenn H SETRDY Falsch ist, dann macht die PLA 520 H NS 06 aktiv, während PLA 502 H NS 04 aktiv macht, so daß der Zustand 5C wiederholt wird.
  • Wenn L RDYACK Wahr ist und H SETRDY Falsch ist, dann werden von der PLA 500 H NS 05 und L LD in den Aktivzustand versetzt, während PLA 502 H NS 04 und H NS 00 aktiv macht. Die Logik schreitet daher zum Zustand 31 fort.
  • Zustand 33.
  • Im Beendigungszustand 33 erzeugt PLA 500 H LAST und H NS 05, während PLA 502 H NS 04 erzeugt. Der Zustand 33 wird fortlaufend wiederholt, und mit jedem Zyklus wird H FIFLASSY zum Kanalpuffer 110 und den Rückwärtsleseschaltungen 116 gesandt.
  • Kompressions-/Dekompressionsalgorithmus
  • In der vorliegenden Erfindung wird die Komprimierung durch Ersetzen einer Kette von zwei oder mehr Zeichen durch einen einzigen Kettenkode erreicht. Eine neue Kette wird gebildet, indem ein Zeichen an eine alte Kette angehängt wird. So kann jede gesetzliche Kette ungeachtet ihrer Länge durch den vorher der alten Kette zugewiesenen (Vorsatz genannten) Kettenkode und das (Zusatzzeichen genannte) angehängte Zeichen gekennzeichnet werden. Die Kettenkodes werden in einer Kettentabelle 700 gespeichert. Jede Stelle in der Kettentabelle ist entweder "leer" (d.h. nutzbar) oder enthält einen Kettenkode. Wenn er besteht, dann wird der Kettenkode, der durch den Vorsatzkode (P) und das Zusatzzeichen (E) definierten Kette entspricht, an der Stelle gespeichert, deren Adresse eine Hashsumme von P und E ist. Da durch Hashkodierung mehr als eine Kette an dieselben Stelle adressiert werden könnten, wird auch der Vorsatzkode P an der Stelle gespeichert, um die Kette zu kennzeichnen, die darin gespeichert ist. So kann, wie in Figur 7 gezeigt, jede Stelle einer Kettentabelle 700 einen 12-Bit- Vorsatzkode, einen 12-Bit-Kettenkode und eine 6-Bit-Teilblockzählung speichern. Die Hashfunktion ist so gewählt, daß keine zwei Ketten mit demselben Vorsatzkode P, aber unterschiedlichen Zusatzzeichen E, gemischt an derselben Tabellenadresse gespeichert werden können. Es stehen vier Hashfunktionen zur Verfügung. Wenn mit keiner der vier Hashfunktionen eine Übereinstimmung gefunden wird, wird der Kettenkode verworfen und der Zeichenkode wird mit einem linken Nullzusatz von 3 Bit zum Ausgangssignal des Komprimierers.
  • Anfangs sind die einzigen definierten Kettenkodes solche für jedes Eingangszeichen. Da der Kettenkode 12 Bit lang ist und das Zeichen nur 9 Bit aufweist, tritt eine Datenerweiterung ein, wenn ein Zeichen durch seinen Kettenkode ersetzt wird. Zeichenkodes, d.h. einzelne Zeichen darstellende Kettenkodes, werden nicht in der Kettentabelle gespeichert, sondern als Vorsatzkodes benutzt, um zwei-Zeichen-Ketten herzustellen.
  • Dekomprimierung ist der Vorgang der Wiederherstellung von Zeichenketten aus ihren Kettenkodes. Da während der Komprimierung ein Kettenkode nicht vor dem zweiten Erscheinen der Kette erzeugt wird, ist es möglich, die Kettentabelle während der Dekomprimierung wieder aufzubauen, jedoch in etwas unterschiedlicher Form. Die Kettentabelle für die Komprimierung enthält den Vorsatzkode und das Zusatzzeichen an der vom Kettenkode gegebenen Adresse. Zeichenkodes adressieren nicht die Kettentabelle. Statt dessen werden die links erweiternden drei Nullen beseitigt und das Zeichen zum Kanalzerhacker übertragen. Obwohl während der Komprimierung jede Kette einem zugehörigen Vorsatzkode zugewiesen wird, ist sie während der Dekomprimierung mit einem Zusatzzeichen verbunden. Um daher einen Eintrag in der Dekomprimierungskettentabelle zu schaffen, wird der Vorsatzkode von den komprimierten Daten erhalten, und das Zusatzzeichen wird von der nächsten Kette bei ihrer Dekodierung erhalten. Dazu ist erforderlich, daß ein vorheriger Kettenkode in einem LIFO-Speicher gesichert wird, um bei Dekodierung der nächsten Kette einen Tabelleneintrag zu tätigen. Die Ketten werden in umgekehrter Reihenfolge dekomprimiert, und der LIFO- Speicher wird zum Speichern der Kette und Korrigieren der Reihenfolge bei Ausgabe zum Kanalzerhacker 100 benutzt.
  • C/D-Steuerung
  • Figuren 7, 8 und 9 umfassen ein Blockschaltbild der Schaltungen 102, die die Komprimierung oder Dekomprimierung durchführen, auf Registerebene.
  • Wie in der Figur 7 dargestellt, ist die Kettentabelle 700 ein Speicher zur Speicherung eines 12-Bit-Vorsatzkodes, eines 12-Bit-Kettenkodes und einer 6-Bit-Teilblockzählung bei jeder adressierbaren Stelle. Die Kettentabelle 700 kann durch eine über einen Satz Treiber 702 angelegte Adresse adressiert werden. Die Adresse wird von einem Adreßregister 804 abgeleitet, das von einem Adreßmultiplexer 802 beladen wird. Die 0-Eingänge des Multiplexers 802 sind mit dem Ausgang des Adreßregisters 804 verbunden. Die Eingänge 3 des Multiplexers 802 sind mit dem Ausgang eines Kodezählers 808 verbunden, während die Eingänge 5 den Vorsatzkode von der Kettentabelle 700 über den MCCODE-Bus empfangen. Eingänge 7 des Multiplexers 802 empfangen die 12-Bit-Datenbyte vom Zerhackerpuffer 104 über den D12IN-Bus während der Dekomprimierung.
  • Die Eingänge 1, 2 und 4 des Multiplexers 802 sind mit drei Hash-Schaltungen 800a, 800b bzw. 800c einer Adressenhashschaltung 800 verbunden. Über den D9IN-Bus 211 vom Kanalzerhacker 100 empfangene Datenbytes werden bei 810 invertiert und an die Hashschaltungen 800a und 800b angelegt. Die Hashschaltung 800a verknüpft das invertierte Datenbyte und den Inhalt eines Zeichenregisters 900 nach einer exklusiven Oder (XOR-)Funktion. Die Hashschaltung 800b verknüpft das invertierte Datenbyte und einen aus der Kettentabelle 700 ausgelesenen Kettenkode nach einer XOR-Funktion. Die Hashschaltung 800c summiert die Ausgabe des Adressenregisters 804 mit eins zuzüglich zweimal dem Ausgang eines Koderegisters 902.
  • Zum "Löschen" oder Wiederherstellen der Kettentabelle 700 ist ein Teilblockzähler 812 vorgesehen. Diese Einteilung in Teilblöcke ist erforderlich, um einer hardware-Kettentabelle von sinnvoller Größe das Überspannen von großen Datenblöcken ohne übermäßige Verringerung der Komprimierungsleistung zu ermöglichen. Jedesmal, wenn ein Kettenkode in die Kettentabelle 700 eingeschrieben wird, wird ein Kodezähler 808 erhöht. Wenn der Kodezähler eine Zählung von 4092 erreicht (die Kapazität der Kettentabelle beträgt 4096), wird der Teilblockzähler 812 erhöht. Der Ausgang des Teilblockzählers ist mit einem Eingang eines Vergleichers 806 verbunden. Der Ausgang des Teilblockzählers ist auch über Treiber 814, über den MCCODE-Bus und über Treiber 710 an den Dateneingang der Kettentabelle angelegt, so daß mit jedem Kettenkode eine Teilblockzählung in die Kettentabelle eingeschrieben wird. Beim Durchsuchen der Kettentabellen nach einer leeren Stelle, in die ein Kettenkode eingeschrieben werden kann, wird die aus einer Stelle ausgelesene Teilblockzählung mit der Zählung im Teilblockzähler 812 verglichen. Wenn die Zählungen nicht gleich sind, dann wird die Stelle als leer angesehen und kann beschrieben werden.
  • Vorsatzkodes werden vom Koderegister 902 in die Kettentabelle 700 eingegeben. Dieses Register wird von einem Multiplexer 904 beladen, dessen Eingänge mit dem Koderegister 902, dem Kettenkodeausgang der Kettentabelle 700, dem Zeichenregister 900 und dem Adreßregister 804 verbunden sind. Der Ausgang des Koderegisters 902 ist mit einem Vergleicher 906 und über einen Satz Treiber 908, den MCCODE-Bus und Treiber 710 mit der Kettentabelle verbunden. Während der Komprimierung werden die von den C/D-Steuerungen gebildeten 12-Bit-Kettenkodes in das Koderegister 902 eingegeben und über den D12OUT-Bus 933 an den Zerhackerpuffer 104 angelegt.
  • Kettenkodes werden entweder vom Kodezähler 808 oder einem Zeichenregister 900 in die Kettentabelle eingegeben. Das Zeichenregister 900 wird von einem Multiplexer 910 beladen, der vier Sätze von Eingängen aufweist, die für die Aufnahme der Kettenkodeausgabe der Kettentabelle 700, der Ausgabe des Adreßregisters 804, der Ausgabe eines LIFO-Speichers 912 oder der vom Kanalzerhacker über den D9IN-Bus 211 empfangenen Datenbyte geschaltet sind. Die Ausgänge des Zeichenregisters 900 und des Kodezählers 808 sind mit den Eingängen eines Wählers 914 verbunden. Das Ausgangssignal des Wählers wird über den MCCODE-Bus und über Treiber 710 an die Kettentabelle 700 angelegt.
  • Der Ausgang des Zeichenregisters 900 ist auch mit einem Ausgangsregister 916 und einem Satz Treiber 918 verbunden. Während der Dekomprimierung besteht die Ausgabe des Registers 916 aus dekomprimierten 9- Bit-Datenbyte, die über den D9OUT-Bus 920 zum Kanalzerhacker 100 übertragen werden. Die Treiber 918 sind mit dem Dateneingang des LIFO- Speichers 912 verbunden, dessen Verwendungszweck unten erläutert wird. Der LIFO-Speicher wird von einem Vorwärts-/Rückwärts-Längenzähler 922 adressiert. Um zu erfassen, wenn die Zählung im Zähler 922 null ist, ist eine Erkennungsschaltung 924 vorgesehen.
  • Kettenkodes in der Kettentabelle 700 können über einen Satz Treiber 708 zum MCCODE-Bus ausgelesen werden, und die Teilblockzählungen und Vorsatzkodes können über einen Satz Treiber 706 zum selben Bus ausgelesen werden. In den Figuren 8 und 9 werden die Kettenkodes an die Adreßhashschaltung 800b und einen Eingang der Multiplexer 802, 904 und 910 angelegt. Die Vorsatzkodes werden an den Multiplexer 802 und einen Eingang des Vergleichers 906 angelegt. Die Teilblockzählungen werden für den Vergleich mit dem Inhalt des Teilblockzählers 812 an den Vergleicher 806 angelegt.
  • Ein NOR 820 ist mit den Ausgängen der Stufen 9-11 des Adreßregisters 804 verbunden und erzeugt das Signal L AR512 auf der Leitung 801, wenn die Adresse im Register 512 (200H) oder größer ist.
  • Ein NAND 822 ist mit dem D12IN-Bus verbunden und erfaßt Sonderzeichen FFC-FFF während der Dekomprimierung. Wenn eines dieser Zeichen auf dem D12IN-Bus erscheint, wird von dem NAND das Signal L THROT auf der Leitung 809 erzeugt.
  • Ein NAND 960 ist vorgesehen, um zu erfassen, wenn die Zählung im Kodezähler 808 4092 beträgt. Wenn diese Zählung erkannt wird, erzeugt das NAND das Signal L 4092 auf der Leitung 961.
  • Die Ausgangssignale vom NOR 820, NAND 822 und NAND 960 werden an die vier PLA 1000-1003 angelegt.
  • Die Abfolge der Kompressions-/Dekompressionsschaltungen der Figuren 8 und 9 und der Kettentabelle der Figur 7 wird von den vier in Figur 10 gezeigten PLA 1000-1003 gesteuert, entweder durch direkt von den PLA angelegte Signale oder durch von den Logikschaltungen der Figuren 11 und 12 als Reaktion auf von den PLA erzeugte Signale abgeleitete Signale. Alle die PLA empfangen dieselben Eingangssignale, und diese Signale ändern die Zustände der PLA, was sich in den von ihnen erzeugten Ausgangssignalen widerspiegelt. Der Logikzustand wird von der Hexadezimalzählung in einem FF 1100 und einem Zähler 1004 definiert. Alle Zustandsänderungen treten bei CLK1 ein, wenn der Zähler 1004 erhöht oder beladen wird. Gleichzeitig wird das Register 100 von einigen der Ausgänge der PLA beladen, und die Ausgangssignale der PLA werden im Speicherregister 1008 gespeichert.
  • In der nachfolgenden Besprechung wird angenommen, daß der Mikroprozessor das Steuerregister 300 im Kanalzerhacker 100 beladen hat und die Signale L STFN auf der Leitung 305 und H COMPRESSEN auf der Leitung 313 Wahr sind. In der Figur 8 wird H COMPRESSEN bei 816 invertiert und gibt das Adreßregister 804 frei. In der Figur 12 gibt L STEN zwei Sätze Treiber 1206 und 1208 frei. Die Treiber 1206 werden, wie unten beschrieben, zur gezielten Erzeugung der Signale H AWR (01-04) angesteuert. Wenn diese Signale Wahr sind, wird die Kettentabelle 700 bei der vom Adreßregister 804 angegebenen Adresse gelesen, und wenn sie Falsch sind, wird diese Adresse beschrieben. Die von den Treibern 1208 erzeugten Signale H ENA (01-04) sind Falsch, und in der Figur 7 geben diese Signale die Kettentabelle 700 zum Lesen oder Schreiben frei. Das Signal L STEN auf der Leitung 305 wird zum Signal L COMPRESSEN, das über die Leitung 1201 an die Treiber 702 und 710 angelegt wird, durch die die Adreß- und Datensignale an die Kettentabelle 700 angelegt werden.
  • PLA 1003 erzeugt die Signale zur Bestimmung des nächsten Zustands der C/D-Steuerungen. Sie erzeugt die nächsten Zustandssignale H NS (03- 01), die an den Zustandszähler 1004 angelegt werden. Diese Signale werden nur dann in den Zähler eingegeben, wenn das von der PLA 1003 erzeugte Signal H PESTR Wahr ist. H PESTR wird vor seinem Anlegen an den Zähler 1004 bei 1010 invertiert. H PESTR bewirkt auch, daß das Speicherregister 1008 H SLPESTR auf der Leitung 1029 erzeugt. In der Figur 11 gibt dieses Signal einen Eingang des AND 1106 frei. Das von der PLA 1003 auf der Leitung 1055 erzeugte Signal H NS 04 wird an den Dateneingang von FF 1100 angelegt. Bei CLK1 wird H NS (0400) in das FF 1100 und den Zähler 1004 eingetaktet, wenn H PESTR Wahr ist, um damit den nächsten Zustand zu definieren.
  • PLA 1003 erzeugt auch das Signal H CEPSTR, und wenn das Signal Wahr ist, gibt es den Zähler 1004 für seine Erhöhung durch CLK1 frei.
  • Die Ausgangssignale CS (0-00) vom Zähler 1004 und CS04 von FF 1100 werden zur Definierung des Logikzustands fortlaufend an die PLA 1000- 1003 angelegt. Zusätzlich ist die Rücksetzausgabe des FF 1100 das Signal L C504, mit dem der Wähler 914 zur Auswahl der Quelle einer Kettenzählung adressiert wird, die in die Kettentabelle 700 einzuschreiben ist.
  • PLA 1000 erzeugt die Signale H ARMUXS02- H ARMUXS00, die über Leitungen 1035 an die Adressierungseingänge des MUX 802 angelegt werden, um die Quelle der nächsten an das Adreßregister 804 anzulegenden Adresse auszuwählen. Die PLA erzeugt auch die Signale H CRMUXS01 und H CRMUXS00 auf den Leitungen 1039 und 1041 zur Adressierung von MUX 904 und Auswahl der Quelle eines in das Koderegister 902 einzugebenden Zeichens. Die Signale H CHMUXS01 und H CHMUXS00 werden auf den Leitungen 1043 und 1045 zur Adressierung von MUX 910 und Auswahl der Quelle eines in das Zeichenregister 901 einzugebenden Zeichens erzeugt.
  • PLA 1000 erzeugt das Signal H CHCONTR, um das Eintakten von Zeichen in das Koderegister 902 und Zeichenregister 900 zu erlauben. Das Signal durchläuft das Speicherregister 1008, so daß H SLCHGONTR auf der Leitung 10C19 H CHCONTR folgt. H SLCHCONTR wird an AND 1104 angelegt und gibt das AND zur Weitergabe eines CLK1-Signals zur Erzeugung von H CHCLK auf der Leitung 1105 frei. In der Figur 11 taktet dieses Signal die Ausgangssignale der MUXe 904 und 910 in die Register 902 und 900 ein.
  • Die Signale H PECC und H CEPCC werden von der PLA 1001 zur Steuerung des Kodezählers 808 erzeugt. H PECC wird bei 818 invertiert, um das Einladen eines Wertes in den Zähler bei CLK1 zu ermöglichen. Wenn sowohl H CEPCC und H PECC Wahr sind, wird der Hexadezimalwert 200 (512) in den Zähler eingeladen. Wenn H PECC Falsch ist und H CEPCC Wahr ist, dann wird die Zählung im Zähler bei CLK1 um eins erhöht.
  • Die Signale H SBC1 und L OSBC werden von der PLA 1001 zur Steuerung des Teilblockzählers 812 erzeugt. Wenn beide Signale aktiv (Wahr) sind, wird bei CLK1 eine Nullzählung vom Zähler geladen. Wenn L OSBC Falsch ist und H SBC1 Wahr ist, wird der Zähler bei CLK1 erhöht.
  • Vom PLA 1001 werden die Signale H PCSBWR und H SCWR zur Steuerung der Kettentabelle 700 erzeugt. Wenn H PCSBWR Wahr ist, dann wird die Kettentabelle zum Einlesen eines Vorsatzkodes (PCODE) eines Teilblockkodes (SBCODE) in die Kettentabelle freigegeben. Wenn H PCSBWR Falsch ist, dann wird damit die Kettentabelle zum Schreiben eines PCODES und eines SBCODES freigegeben. In ähnlicher Weise steuert H SCWR das Einschreiben oder Auslesen eines Kettenkodes (SCODE) in die bzw. aus der Kettentabelle 700. H PCSBWR und H SCWR werden als "aktiv" erachtet, wenn sie Falsch sind, d.h. sie sind aktiv, um das Einschreiben in die Kettentabelle 700 zu bewirken.
  • H PCSBWR und H SCWR werden an das Register 1006 angelegt und bei CLK1 in das Register eingetaktet. Das Register 1006 erzeugt dann H PCWRT und H SCWRT, die über Leitungen 1003 und 1013 zum Setzen bzw. Rücksetzen von FF 1202 und FF 1204 angelegt werden. Zusätzlich gibt H PCWRT, wenn es Falsch ist, die Treiber 814 und 908 frei, um einen SBCODE und PCODE über den MCCODE-Bus zur Kettentabelle 700 weiterzugeben. Wenn H SCWRT Falsch ist, gibt es den Wähler 914 frei, einen SCODE über den MCCODE-Bus an die Kettentabelle anzulegen.
  • In der Figur 12 ist H PCWRT bei 1212 invertiert, um L PCWRT auf der Leitung 1217 zu erzeugen, während H SCWRT bei 1214 invertiert ist, um L SCWRT auf der Leitung 1219 zu erzeugen. In der Figur 7 gibt L SCWRT, wenn es Wahr ist, die Treiber 708 frei, um einen SCODE aus der Kettentabelle 700 auszulesen, während L PCRT, wenn es Wahr ist, die Treiber 706 zum Auslesen eines PCODES und SBCODES aus der Kettentabelle freigibt. Der PCODE und SBCODE werden über den MCCODE-Bus zum Vergleicher 806 bzw. Vergleicher 906 zum Vergleich mit den Ausgangssignalen des Teilblockzählers 812 bzw. Koderegisters 902 übertragen. Auch wird der PCODE an den Eingang 5 des Adreß-MUXes 802 angelegt. Der SCODE wird an die Adreßhashschaltung 800 und MUXe 904 und 910 angelegt.
  • In der Figur 12 wird, wenn H PCWRT Falsch ist, FF 1202 bei CLK2 rückgesetzt. Das Ausgangssignal vom FF bewirkt, daß Treiber 1206 die Signale H AWRO1 und H AWRO4 Falsch machen. In der Figur 7 geben diese Signale die Kettentabelle zum Schreiben eines PCODEs und eines SBCODEs frei. Wenn H PCWRT Wahr ist, dann wird FF1202 von CLK2 gesetzt, und die Signale H AWR01 und H AWR04 sind Wahr, um die Kettentabelle zum Auslesen eines PCODEs und eines SBCODEs freizugeben.
  • Ebenfalls in der Figur 12 wird von H SCWRT das Setzen bzw. Rücksetzen des FF 1204 gesteuert. Das Ausgangssignal dieses FF wird an Treiber 1206 zur Steuerung der Erzeugung der Signale H AWR02 und H AWR03 angelegt. In der Figur 7 steuern H AWR02 und H AWR03 die Kettentabelle zum Lesen oder Schreiben eines SCODEs an. Lesen findet statt, wenn FF 1204 durch H SCWRT gesetzt wird, und Schreiben findet statt, wenn der FF durch H SCWRT rückgesetzt wird. Bei jedem CLK4 werden sowohl FF 1202 als auch FF 1204 gelöscht (gesetzt). Auslesen aus oder Einschreiben in die Kettentabelle findet zwischen CLK2 und CLK4 statt (dem Zeitabstand, wenn FF 1202 und FF 1204 gesetzt/ rückgesetzt werden).
  • PLA 1002 erzeugt die Signale H OLC, H SLC1 und H PLC1 zur Steuerung des den LIFO-Speicher 912 adressierenden Längenzählers 922. H SLC1, H PLC1 und H OLC werden an Speicherregister 1008 angelegt und erzeugen die Signale H SLCLC1, H SLPLC1 und H SLOLC auf Leitungen 1021, 1023 und 1025. Die Signale werden bei CLK1 im Register 1008 gespeichert. In der Figur 11 gibt H SLSCL1 das NAND 1116 frei, H SLPLC1 gibt das NAND 1110 frei, und H SL0LC gibt das NAND 1108 frei. Alle diese NAND empfangen das Signal CLK1.
  • Wenn H SL0LC Wahr ist, dann bewirkt CLK1, daß das NAND 1108 L PRESET auf der Leitung 1103 erzeugt, und in der Figur 9 lädt dieses Signal eine Nullzählung in den Längenzähler 922 ein. Wenn H SLSLC1 Wahr ist, dann bewirkt CLK1, daß das NAND 1116 H LIFODECR auf der Leitung 1101 erzeugt, und in der Figur 9 erniedrigt dieses Signal die Zählung im Längenzähler 922. Wenn H SLPLC1 Wahr ist, dann bewirkt CLK1, daß das NAND 1110 H LIFOINCR auf der Leitung 1109 erzeugt, und in der Figur 9 erhöht dieses Signal die Zählung im Zähler.
  • Von PLA 1002 wird das Signal H LWR zur Steuerung des Auslesens aus dem bzw. Einschreibens in den LIFO-Speicher 912 erzeugt. Wenn L LWR aktiv (Falsch) ist, dann findet Einschreiben statt. Wenn H LWR Wahr ist, dann wird der LIFO-Speicher zum MUX 910 ausgelesen. H LWR wird an das Register 1006 angelegt und durch CLK1 in das Register eingetaktet, und gleichzeitig erzeugt das Register H LIFO auf der Leitung 1005. Wenn in der Figur 11 H LIFO Falsch ist, löscht es FF 1118 bei CLK3, und wenn H LIFO Wahr ist, setzt es das FF und erzeugt das Signal H LIFOWR auf der Leitung 1111. Wenn H LIFOWR Wahr ist, wird der LIFO-Speicher zum Lesen freigegeben, und wenn H LIFOWR Falsch ist, wird der LIFO-Speicher zum Schreiben freigegeben. Die Taktgabe ist so, daß der Zustand von H LWR während eines Zyklus das Lesen oder Schreiben im Speicher 912 während des nächsten Zyklus steuert.
  • PLA 1002 erzeugt die Quittungsbetriebssignale für die Steuerung der Datenübertragung zwischen dem Kanalzerhacker 100 und den C/D-Steuerungen und zwischen dem Zerhackerpuffer 104 und den C/D-Steuerungen. Während der Komprimierung erzeugt PLA 1002 das Signal H D9ACK jedesmal, wenn die C/D-Steuerungen ein auf den D9IN-Bus 211 gelegtes Datenbyte annehmen. Das Signal wird an das Register 1006 angelegt und bei CLK1 in das Register eingegeben. Das Register erzeugt das Signal H D9ACK1, das über die Leitung 1007 dem Kanalzerhacker zugeführt wird.
  • Während der Dekomprimierung ist zu der Zeit, wenn H D9ACK auf Wahr geht, das vom Register 1006 erzeugte Signal H D9ACK1 Falsch. H D9ACK1 wird bei 974 invertiert und gibt das AND 970 frei, um ein Ausgangssignal zu erzeugen, das das FF 972 bei CLK4 setzt. Das Ausgangssignal des FF taktet das nächste Datenbyte in das Register 916 zur Übertragung zum Kanalzerhacker 100 ein. Bei dem ersten CLK1, nachdem H D9ACK auf Wahr geht, wird dieses in das Register 1006 eingesteuert. H D9ACK geht auf Wahr und wird bei 974 invertiert und sperrt damit AND 1120. H D9ACK1 wird über die Leitung 1007 auch zum Kanalzerhacker 100 übertragen, um zu signalisieren, daß sich auf dem D9OUT-Bus ein Datenbyte befindet und zu seiner Annahme durch den Kanalzerhacker bereit ist.
  • PLA 1002 erzeugt das Signal H D9TERM während einer Dekomprimierungsoperation, um dem Kanalzerhacker 100 anzuzeigen, daß das letzte Wort zum Kanalzerhacker 100 übertragen worden ist. Dieses Signal wird durch CLK1 in das Register 1006 eingesteuert, um H D9TERM1 zu erzeugen, das über die Leitung 1009 zum Kanalzerhacker übertragen wird.
  • PLA 1002 erzeugt während einer Komprimierungsoperation das Signal H D12ACK, um dem Zerhackerpuffer 104 anzuzeigen, daß die C/D-Steuerungen einen Kettenkode für die Übertragung zum Zerhackerpuffer bereithalten. Während einer Dekomprimierungsoperation wird das Signal erzeugt, um anzuzeigen, daß die C/D-Steuerungen für die Annahme eines weiteren Kettenkodes vom Zerhackerpuffer bereit sind. H D12ACK wird durch CLK1 in das Register 1006 eingesteuert. Das Register erzeugt H D12ACK1 auf der Leitung 1011 zur Signalisierung zum Zerhackerpuffer.
  • PLA 1002 erzeugt während einer Komprimierungsoperation das Signal H D12TERM, um dem Zerhackerpuffer anzuzeigen, daß die C/D-Steuerung den letzten Kettenkode gesandt hat. H D12TERM wird durch CLK1 in das Register 1006 eingesteuert. Das Register erzeugt H D12TERM1 auf der Leitung 1001 zur Signalisierung zum Zerhackerpuffer.
  • Die von der C/D-Logik durchgeführten Handlungen werden unten für die verschiedenen von den PLA 1000-1003 angenommenen Zustände zusammengefaßt. Die Ausgangs- und Eingangssignale werden definiert, aber die resultierenden Handlungen werden ohne Verfolgung der Funktion jedes Signals zusammengefaßt, um unnötige Wiederholung zu vermeiden. Um zu bestimmen, welche Handlungen von jedem aktiven PLA-Ausgangssignal gesteuert werden, kann auf die obige Beschreibung Bezug genommen werden. In dieser Hinsicht ist zu bedenken, daß H PCSBWR und H SCWR, wenn sie aktiv sind, das Schreiben der Kettentabelle 700 steuern und daß H LWR, wenn es aktiv ist, das Schreiben des LIFO-Speichers 912 steuert. Wenn diese Signale inaktiv sind, dann findet an der Kettentabelle und dem LIFO-Speicher 912 eine Leseoperation statt.
  • C/D-Steuerungs-Logikzustände bei Kompression Zustand 00.
  • Wenn der Zähler 1004 und das FF 1100 rückgesetzt sind, sind alle Eingänge CS03-00 zu den PLA 1000-1003 Falsch, und die Logik ist im Zustand 00. Die aktiven Ausgangssignale von den PLA sind L 0SBC zum Beladen des Teilblockzählers 812 mit einer Nullzählung, H PECC zum Beladen des Kodezählers 808 mit einer Nullzählung, und H PCSBWR, H SCWR und H CEPSTR. H PCSBWR und H SCWR werden bei CLK1 im Register eingesetzt, um das Lesen der Kettentabelle 700 zu steuern. H CEPSTR bewirkt, daß der Zähler 1004 zum Definieren des Zustands 01 erhöht wird.
  • Zustand 01.
  • Dies ist ein Initialisierungszustand. Er wird wiederholt, und bei jeder Wiederholung wird eine Stelle in der Kettentabelle 700 gelöscht. Aktive Ausgangssignale der PLA sind H ARMUXS01und H ARMUXS00, die den Inhalt des Kodezählers 808 (nunmehr auf null) durch den MUX 802 in das Adreßregister 804 einsteuern, H CEPCC, das die Erhöhung des Kodezählers 808 freigibt, H PCSBWR und H SCWR zur Steuerung des Einschreibens in die Kettentabelle. H PCSBWR und H SCWR sind aktiv (niedrig), bei Adresse 0 findet eine Schreiboperation statt zum Einschreiben des Inhalts des Teilblockzählers 104, Koderegisters 902 und Zeichenregisters 900, die alle leer sind.
  • Die Logik bleibt im Zustand 01, bis der Kodezähler 808 eine Zählung von 4092 erreicht. Bei jedem Zyklus wird die Zählung im Kodezähler zur Adressierung der Kettentabelle zum Löschen der adressierten Stelle benutzt, und danach wird der Zähler erhöht. Bei dem Zyklus, bei dem die Adresse 4091 gelöscht wird, erreicht die Zählung im Zähler 808 4092. Dies wird von dem NAND 960 erkannt, das das Signal L 4092 über die Leitung 961 an die PLA 1000-1003 anlegt. Die PLA reagieren, indem sie die Signale H NS 00, H NS 03 und H PESTR aktiv machen, um FF 1100 zu löschen und den Zähler 1004 auf den Zustand 09 zu setzen.
  • Zustand 09.
  • Im Zustand 09 erzeugen die PLA wiederum die Signale H ARMUXS 01 und H ARMUXS 00 zum Einsteuern der nächsten Adresse (4092) in das Adreßregister 804 zum Adressieren und Löschen der Stelle 4092. Das Signal H CEPCC ist aktiv, um den Kodezähler 808 auf eine Zählung von 4093 zu erhöhen. H PCSBWR und H SCWR sind aktiv, um das Einschreiben in die Kettentabelle zu steuern. H CEPSTR wird in den Aktivzustand versetzt, so daß die Zählung im Zähler 1004 erhöht werden kann, um damit den Zustand 0A zu definieren.
  • Zustand 0A.
  • Im Zustand 0A werden die Signale H ARMUXS 01 und H ARMUXS 00 aktiv gemacht, um die Adresse 4093 durch MUX 802 in das Adreßregister 804 einzusteuern, um die Stelle 4093 zu adressieren und zu löschen. H CEPCC ist aktiv, um die Zählung im Kodezähler 808 auf 4094 zu erhöhen. H PCSBWR und H SCWR werden wiederum in den Aktivzustand versetzt, um das Einschreiben in die Kettentabelle zu steuern. H CEPSTR wird aktiv gemacht, so daß der Zähler 1004 erhöht werden kann, um damit den Zustand 0B zu definieren.
  • Zustand 0B.
  • Im Zustand 0B werden die Signale H ARMUXS 01 und H ARMUXS 00 aktiv gemacht, um die Adresse 4094 durch den MUX 802 in das Adreßregister 804 einzusteuern, um die Stelle 4094 zu adressieren und zu löschen. H CEPCC ist aktiv, so daß der Kodezähler 808 auf 4095 erhöht wird. H PCSBWR und H SCWR werden in den Aktivzustand versetzt, um das Einschreiben in die Kettentabelle 700 zu steuern. H CEPSTR wird aktiv gemacht und steuert das Erhöhen des Zählers 1004 zur Zählung C, um damit den Zustand 0B zu definieren.
  • Zustand 0C.
  • Im Zustand 0C werden H ARMUXS 01 und H ARMUXS 00 in den Aktivzustand versetzt, um die Adresse vom Kodezähler 808 durch den MUX 802 in das Adreßregister 804 einzusteuern, um die Stelle 4095 zu adressieren und zu löschen. H GEPCC wird aktiv gemacht, so daß der Kodezähler 808 auf null erhöht wird. H PCSBWR und H SCWR werden aktiv gemacht, um in die Kettentabelle einzuschreiben. H PESTR und H NS 01 werden aktiv gemacht, damit FF 1100 gelöscht und der Zähler 1004 mit dem Wert 2 beladen werden kann, um damit den Zustand 02 zu definieren.
  • Zustand 02.
  • Der Zustand 02 ist ein Wartezustand, der von den C/D- Steuerungen aufrechterhalten wird, bis die PLA ein Startsignal erhalten. Dieses Startsignal kann entweder das Signal H D9RDY auf der Leitung 413 sein, das während einer Komprimierungsoperation auf Wahr gesetzt wird, wenn der Kanalzerhacker 100 ein Datenbyte auf den D9IN- Bus 211 gelegt hat, oder das Signal H D12RDY auf der Leitung 1509, das während einer Dekomprimierungsoperation auf Wahr gesetzt wird, wenn vom Zerhackerpuffer 104 ein Datenbyte auf den D12IN-Bus 1309 gelegt worden ist.
  • Man nehme als erstes an, daß eine Komprimierungsoperation durchgeführt wird. Solange H D9RDY falsch ist, gibt es keine aktiven Ausgangssignale von PLA 1000-1003. Wenn H D9RDY auf Wahr geht, machen die PLA H D12ACK aktiv, so daß H D12ACK1 zu dem Zerhackerpuffer 104 gesandt wird. Der Zerhackerpuffer reagiert, indem er das Signal H D12RDY auf der Leitung 1509 Wahr macht. H PESTR, H NS04 und H NS01 werden in den Aktivzustand versetzt, um zum Zustand 12 fortzuschreiten.
  • Zustand 12.
  • Dieser Zustand steuert den Anfang eines Blocks. H GHMUXS00, H CHMUXS01 und H CHGONTR werden in den Aktivzustand versetzt, um das Zeichendatenbyte auf dem D9IN-Bus 211 durch den MUX 910 durchzusteuern und es in das Zeichenregister 900 einzutakten. H OLC wird aktiv gemacht, um den Längenzähler 922 auf null rückzusetzen. H D9ACK ist aktiv, so daß H D9ACK1 als Signal, daß das Datenbyte auf dem D9IN-Bus angenommen worden ist, zum Kanalzerhacker 100 gesandt wird. H CEPSTR wird aktiv gemacht, so daß der Zähler 1004 auf 3 erhöht wird und damit den Zustand 13 definiert.
  • Zustand 13.
  • Wenn der Kanalzerhacker 100 das nächste Datenbyte auf den D9IN-Bus legt und das Signal H D9RDY erzeugt (wobei DgEND falsch ist), erzeugen die PLA 1000-1003 die Signale H CHMUXS01, H CHMUXS00 und H CRMUXS01, um das erste Datenbyte vom Zeichenregister 900 durch den MUX 904 durchzusteuern und das zweite Datenbyte vom D9IN-Bus durch den MUX 910 durchzusteuern. H CONTR ist aktiv, um H CHCLK zu erzeugen, das das erste Datenbyte in das Koderegister 902 und das zweite Datenbyte in das Zeichenregister 904 eintaktet.
  • Da H PCSBWR und H SCWR nicht aktiv sind, und da das Adreßregister 804 frei ist, wird die Stelle 0 aus der Kettentabelle 700 ausgelesen, und die Kettenzählung von dieser Stelle wird an die Hashschaltung 800a angelegt. Das zweite Datenbyte wird ebenfalls an die Hashschaltung 800a angelegt. H ARMUXS00 ist aktiv und steuert das Ausgangssignal der Hashschaltung 800a durch den MUX 802 zum Adressenregister 804, um als nächste Adresse zum Auslesen aus der Kettentabelle zu dienen.
  • H SBG1 ist aktiv, um den Teilblockzähler 812 zu erhöhen. H PECC und H CEPCC sind aktiv, um den Wert 512 (hexadezimal 200) in den Kodezähler 808 einzuladen. H D9ACK ist aktiv, um zu bewirken, daß H D9ACK1 als Bestätigung der Annahme des Datenbyte auf dem D9IN-Bus zum Kanalzerhacker zurückgesandt wird.
  • H PESTR, H NS 04 und H NS 03 sind aktiv, so daß der nächste Zustand 18 ist.
  • Im Zustand 13 werden, wenn H D12RDV und H D9END Wahr sind, H GRMUXS01 und H CHCONTR aktiv gemacht, um das Ausgangssignal des Zeichenregisters 900 in das Koderegister 902 einzusteuern. H D12ACK wird in den Aktivzustand versetzt, um H D12ACK1 zum Zerhackerpuffer 104 zu senden, um ihn darüber zu informieren, daß sich auf dem D12OUT-Bus 933 ein Kettenkode befindet. H PESTR, H NS 04, H NS 02 und H NS 00 werden aktiv gemacht, so daß die Logik zum Beendigungszustand 15 fortschreitet.
  • Zustand 18.
  • Solange wie die Eingänge GS 04-GS 00 zu den PLA 1000-1003 den Zustand 18 definieren, haben die anderen Eingänge in die PLA keine Auswirkung auf die Ausgangssignale von den PLA. Zustand 18 ist der erste Hashsuchzustand. In diesem Zustand wird die während des vorhergehenden Zustands durch das MUX 802 durchgesteuerte Hashadresse zur Adressierung der Kettentabelle benutzt, um SBCODE, PCODE und SCODE aus der Hashadresse auszulesen.
  • Vom Vergleicher 806 wird SBGODE mit dem Ausgangssignal des Teilblockzählers 812 verglichen und bei Gleichheit das Signal L SBSBG an die PLA 1000-1003 angelegt. Der Vergleicher 906 vergleicht PCODE mit dem Inhalt des Koderegisters 902 und legt bei Gleichheit das Signal L PGGR an die PLA an.
  • H PLC1 ist zur Erhöhung des Längenzählers 922 aktiv, und H CEPSTR ist aktiv, um damit den Zustand 19 zu definieren.
  • Zustand 19.
  • Der Zustand 19 ist der erste Hashprüfzustand. Die Ausgangssignale der PLA 1000-1003 sind von den Ergebnissen der Vergleiche von SBCODE und PCODE mit dem Teilblockzähler 812 und Koderegister 902 am Vergleicher 806 und 906 abhängig. Diese Vergleicher erzeugen die Signale L SBSBC und L PCCR.
  • Man nehme zuerst an, daß eine Übereinstimmung gefunden worden ist (L SBSBC und L PCCR sind Wahr) und keine weiteren Zeichen vom Kanalzerhacker 100 abgegeben werden (H D9END ist Wahr). H CRMUXS00 und H CHCONTR werden in den Aktivzustand versetzt, um SCODE vom MCCODE-Bus durch MUX 904 durchzusteuern und in das Koderegister 902 einzugeben. H PESTR, H NS04 und H NS02 sind aktiv, so daß der Zähler 1004 und das ff 1100 auf 14 gesetzt sind. Die Logik springt daher zum Blockendezustand 14.
  • Wenn keine Übereinstimmung gefunden wird (L SBSBC ist Wahr und L PCCR ist Falsch), ist H ARMUXS02 aktiv, um das Ausgangssignal der Hashschal tung 80ºC durch den MUX 802 zum Adreßregister 804 durchzusteuern. H CEPSTR ist aktiv zur Erhöhung des Zählers 1004, um damit den Zustand 1A zu definieren. Die Logik springt damit zu dem nachfolgend beschriebenen zweiten Hashsuchzustand 1A.
  • Wenn eine leere Stelle gefunden worden ist (L SBSBC ist Falsch) und sie nicht das Ende einer Kette ist (L LCO ist Falsch), dann muß ein Tabelleneintrag getätigt werden. H PCSBWR und H SCWR sind aktiv, um den Inhalt des Koderegister 902, Kodezählers 808 und Teilblockzählers 812 in die Kettentabelle einzuschreiben. Wenn H D12RDY Wahr ist, dann sind zusätzlich H D12ACK und H OLC aktiv, um den Längenzähler 922 zu löschen und ein D12ACK1-Signal zum Pufferzerhacker zu senden, um ihn darüber zu informieren, daß der D12OUT-Bus ein Ausgangszeichen vom Koderegister 902 führt, das abgetastet werden sollte. H PESTR, H NS 04, H NS 02 und H NS 01 sind aktiv, so daß der nächste Logikzustand der Kettenendezustand 16 sein wird. Wenn die Eingangsbedingungen dieselben sind, außer daß L LC0 Wahr ist, werden dieselben Funktionen durchgeführt, nur sind H PCSBWR und H SCWR nicht aktiv, um Einschreiben in die Kettentabelle zu bewirken.
  • Wenn eine Übereinstimmung besteht (L SBSBC und L PCCR sind beide Wahr) und weitere Zeichen zu verarbeiten sind (H D9RDV is Wahr und H D9END ist Falsch), ist H ARMUXS01 aktiv, um das Ausgangssignal der Hashschal tung 800b durch den MUX 802 zum Adreßregister 804 durchzusteuern. H CRMUXS00, H CHMUXS01, H CHMUXS00 und H CHCONTR sind alle aktiv, um das Zeichen auf dem D9IN-Bus durch den MUX 910 in das Zeichenregister 900 und den SCODE vom MCCODE-Bus in das Koderegister 902 zu steuern. H D9ACK ist aktiv, um zu bewirken, daß H D9ACK1 als Bestätigung, daß das Zeichen vom D9IN-Bus abgelesen worden ist, zum Kanalzerhacker zurückgesandt wird. H PESTR, H NS 04 und H NS 03 sind aktiv, so daß der nächste Zustand wiederum die erste Hashsuche im Zustand 18 sein wird.
  • Zustand 1A.
  • Der Zustand IA ist der zweite Hashsuchzustand. In ihn wird vom Zustand 19 aus eingegangen, wenn während des ersten Hashprüfzustands 19 keine Übereinstimmung gefunden wurde. Die Hashadresse von 800c wird zur Adressierung der Kettentabelle zum Auslesen von SBCODE, PCODE und SCODE und, wie hinsichtlich des Zustands 18 beschrieben, der Erzeugung der Vergleichssignale L SBSBC und L PCCR benutzt. Der Längenzähler 922 wird nicht erhöht. H CEPSTR ist aktiv zur Erhöhung des Zählers 1004, so daß der nächste Zustand 1B ist.
  • Zustand 1B.
  • Dies ist der zweite Hashprüfzustand. Dieselben Signale werden erzeugt, um genau dieselben Funktionen, wie oben für den Zustand 19 beschrieben, zu bewirken. In dem Fall, wo keine Übereinstimmung gefunden wird (L PCCR ist Falsch), bewirkt die Erhöhung des Zählers 1004 jedoch, daß der nächste Zustand 1C ist.
  • Zustand 1C.
  • Dies ist der dritte Hashsuchzustand. Er wird genau wie der Zustand 1A ausgeführt, nur wird die im Zustand 1B entwickelte Hashadresse zur Adressierung der Kettentabelle benutzt. Auch bewirkt die Erhöhung des Zählers 1004, daß der nächste Zustand 1D ist.
  • Zustand 1D.
  • Der Zustand 1D ist der dritte Hashprüfzustand. Die im Zustand 10 durchgeführten Funktionen sind dieselben wie die in den Zuständen 19 und 1B durchgeführten. Sollte jedoch keine Übereinstimmung bestehen (L SBSBC ist Wahr und L PCCR ist Falsch), so bewirkt die Erhöhung des Zählers 1004, daß der nächste Zustand 1E ist.
  • Zustand 1E.
  • Im Zustand 1E werden genau dieselben Funktionen wie in den Zuständen 1A und 1C durchgeführt. Der Unterschied ist nur, daß die Hashadresse die im Zustand 10 entwickelte ist. Die Erhöhung des Zählers 1004 bewirkt, daß der nächste Zustand 1F ist.
  • Zustand 1F.
  • Wenn die adressierte Stelle voll ist (L SBSBC ist Wahr), dann gibt es keine Übereinstimmung (L PCCR ist Falsch) und der Zerhackerpuffer 104 ist für den Empfang eines Worts bereit (H D12RDY ist Wahr), H D12ACK wird aktiv gemacht, so daß D12ACK1 zum Zerhackerpuffer übertragen wird, um ihn darüber zu informieren, daß ein weiteres Wort (im Koderegister 902) auf dem D12OUT-Bus bereitsteht. H OLC ist aktiv zum Löschen des Längenzählers 922. H PESTR, H NS 04, H NS 02 und H NS 01 sind aktiv, so daß FF 1100 und Zähler 1004 auf 16 gesetzt sind.
  • Wenn die adressierte Stelle leer ist (L SBSBC ist Falsch) und es nicht das Ende einer Kette ist (L LCO ist Falsch) und der Kanalzerhacker zum Empfang eines weiteren Wortes bereit ist (H D12RDV), werden H PCSBWR und H SCWR aktiv gemacht, so daß ein Eintrag in die Kettentabelle eingeschrieben werden kann. H PESTR, H NS 04, H NS 02 und H NS 01 sind aktiv, so daß FF 1100 und Zähler 1004 auf 16 gesetzt sind.
  • Wenn die adressierte Stelle leer ist (L SBSBC ist Falsch) und der Zerhackerpuffer zum Empfang eines weiteren Wortes bereit ist (H D12RDY ist Wahr), dann ist H D12ACK aktiv, um dem Zerhackerpuffer 104 zu signalisieren, daß sich auf dem D12OUT-Bus 933 ein Wort befindet, und H OLC ist aktiv, um den Längenzähler 922 zu löschen. H PESTR, H NS04, H NS02 und H NS01 sind aktiv, so daß FF 1100 und der Zähler 1004 zur Darstellung des Zustands 16 gesetzt werden.
  • Wenn die adressierte Stelle nicht leer ist (L SBSBC ist Wahr), ist eine Übereinstimmung gefunden worden (L PCCR ist Wahr) und der Kanalzerhacker 100 hat ein weiteres Wort zu übertragen (H D9RDY ist Wahr), signalisiert aber keinen Endezustand (L D9END), dann ist H ARMUXS01 aktiv, um das Ausgangssignal der Adreßhashschaltung 800a durch den MUX 802 zum Adreßregister 804 durchzusteuern. H CRMUXS00 ist aktiv, um den SCODE durch MUX 904 hindurchzugeben, und H CHMUXS01 und H CHMUXS00 sind aktiv, um das Wort auf dem D9IN-Bus durch den MUX 910 durchzugeben. H CHCONTR ist aktiv, um die Ausgangssignale der MUXe 904 und 910 in die Register 902 und 900 einzutakten. H D9ACK ist aktiv, so daß H D9ACK1 zurück zum Kanalzerhacker 100 gesandt wird. H PESTR, H NS 04 und H NS 03 sind aktiv, so daß der nächste Zustand der erste Hashsuchzustand 18 ist.
  • Wenn die adressierte Stelle voll ist (L SBSBC ist Wahr), eine Übereinstimmung besteht (L PCCR ist Wahr) und der Kanalzerhacker ein Ende signalisiert (H D9END ist Wahr), dann sind H CRMUXS00 und H CHCONTR aktiv, um den SCODE vom MCCODE-Bus durch MUX 904 hindurch und in das Koderegister 902 einzusteuern. H PESTR, H NS 04 und H NS 02 sind Wahr, so daß FF 1100 und Zähler 1004 den Blockendezustand 14 als den nächsten Zustand bezeichnen.
  • Zustand 16.
  • Zustand 16 ist der Kettenendezustand. Wenn H D9RDY Wahr ist, H D9END Falsch ist und L 4092 Falsch ist, dann ist H ARMUXS00 aktiv, um das Ausgangssignal der Adreßhashschaltung 800a durch den MUX 802 hindurch zum Adreßregister 804 zu steuern. H CRMUXS01 ist aktiv, um das Ausgangssignal des Zeichenregisters 900 durch den MUX 904 zum Koderegister 902 durchzusteuern. H CHMUXS01 und H CHMUXS00 sind aktiv, um das Wort auf dem D9IN-Bus durch den MUX 910 zum Zeichenregister 900 durchzusteuern. H CHCONTR ist aktiv, um die Ausgangssignale der MUXe 904 und 910 in Register 902 bzw. 900 einzutakten. H CEPCC ist aktiv, um die Zählung im Kettenkodezähler 808 zu erhöhen. H D9ACK ist aktiv, so daß H D9ACK1 zurück zum Kanalzerhacker gesandt wird, um zu bestätigen, daß das Wort auf dem D9IN-Bus angenommen worden ist. H OLC ist aktiv, um den Längenzähler 922 zu löschen. H PESTR, H NS 04 und H NS 03 sind aktiv, so daß die Logik zum ersten Hashsuchzustand 18 fortschreitet.
  • Wenn H D9RDY und H D12RDY Wahr sind, H D9END Falsch ist und der Kodezähler eine Zählung von FFE (L 4092 ist Wahr) enthält, dann ist H OLC aktiv, um den Längenzähler 922 zu löschen. H PESTR, H NS04, H NS01 und H NS00 sind aktiv, so daß die Logik zum Teilblockanfangszustand 13 fortschreitet.
  • Wenn der Kanalzerhacker 100 H D9END erzeugt hat und der Zerhackerpuffer 104 das Signal H D12RDY erzeugt hat, dann sind H CRMUXS01 und H CHCONTR aktiv, um das Ausgangssignal des Zeichenregisters 900 durch MUX 904 hindurch und in das Koderegister 902 zu übertragen. H D12ACK wird aktiv gemacht, um H D12ACK1 zu erzeugen, um den Zerhackerpuffer 104 darüber zu informieren, daß auf dem D12OUT-Bus 933 ein weiteres Wort zur Verfügung steht. H PESTR, H NS 04, H NS 02 und H NS 00 sind aktiv, um den Endzustand 15 als den nächsten Zustand zu bezeichnen.
  • Zustand 14.
  • Im Zustand 14 wartet die Logik, bis der Zerhackerpuffer 104 das Signal H D12RDY erzeugt. H D12ACK geht dann auf Wahr, so daß H D12ACK1 zum Zerhackerpuffer gesandt wird, und der Zerhackerpuffer das Wort, das sich im Kettenkoderegister 902 und auf dem D12OUT-Bus 933 befindet, abtastet. H CEPSTR wird erhöht, so daß der Endzustand 15 als der nächste Zustand bezeichnet wird.
  • Zustand 15.
  • Im Zustand 15 wartet die Logik, bis der Zerhackerpuffer 104 das Signal H D12RDY erzeugt. H D12TERM wird in den Aktivzustand versetzt, so daß H D12TERM1 zur Signalisierung des Abschlusses der Funktion zum Zerhackerpuffer gesandt wird. H PESTR ist aktiv, aber H NS 04-H NS 00 sind inaktiv, so daß FF 1100 und Zähler 1004 gelöscht werden, um den Logikzustand 00 als den nächsten Zustand zu bezeichnen.
  • C/D-Steuerungs-Logikzustände bei Dekomprimierung
  • Die Initialisierung der C/D-Steuerungen vor einer Dekomprimierungsoperation ist genau dieselbe wie bei einer Komprimierungsoperation. Das heißt, es werden Zustände 00, 01, 09, 0A, 0B und 0C ausgeführt, und es wird, wie oben beschrieben, in den Wartezustand 02 eingegangen.
  • Zustand 02.
  • Die Logik wartet im Zustand 02, bis der Zerhackerpuffer 104 H D12RDY auf der Leitung 1509 erzeugt und das in die PLA 1000-1003 über die Leitung 413 angelegte Signal H D9RDY Falsch ist. H D12RDY signalisiert, daß der Zerhackerpuffer ein 12-Bit-Wort auf den D12IN- Bus 1309 gelegt hat. H D9ACK wird aktiv, so daß H D9ACK1 über die Leitung 1007 zum Kanalzerhacker 100 gesandt wird. Dies ist eine Falsch-Bestätigung, die zum Erzeugen von H D9RDY ausgegeben wird. Der Kanalzerhacker reagiert, indem er H D9RDY auf der Leitung 413 erzeugt. H PESTR und H NS02 sind aktiv, um den Zustand 04 als den nächsten Zustand zu bezeichnen.
  • Zustand 04.
  • Im Zustand 04 sind, wenn H D12RDY Wahr ist, H ARMUSX02, H ARMUXS01 und H ARMUXS00 aktiv, um das Wort auf dem D12IN-Bus 1309 durch MUX 802 zum Adreßregister 804 weiterzugeben. H D12ACK ist aktiv, um H D12ACK1 als Bestätigung, daß das Wort auf dem D12IN-Bus angenommen worden ist, zum Zerhackerpuffer zu senden. Wenn das Wort auf dem D12IN-Bus eines der Sonderzeichen FFC-FFF ist, ist das Signal L THROT auf der Leitung 809 Wahr, und PLA 1003 hat keine aktiven Ausgangssignale. Die Logik wiederholt daher den Zustand 04, bis auf dem D12IN- Bus ein gültiges Datenzeichen erscheint. L THROT wird dann Falsch, und PLA 1003 erzeugt H CEPSTR, so daß der Zähler 1004 zur Bezeichnung des Zustands 05 erhöht wird.
  • Zustand 05.
  • Im Zustand 05 sind H CRMUXS01 und H CRMUXS00 aktiv, um das Ausgangssignal des Adreßregisters 804 durch den MUX 904 hindurch zum Koderegister 902 zu steuern und H CHMUXS00 ist aktiv, um das Ausgangssignal des Adreßregisters durch den MUX 910 hindurch zum Zeichenregister 900 zu steuern. H CHCONTR ist aktiv, so daß die Ausgangssignale der MUXE 904 und 910 in das Koderegister 902 und das Zeichenregister 900 eingetaktet werden. H PECC und H CFPCC sind aktiv, um den Kodezähler 808 auf 512 zu setzen. H OLC ist aktiv, um den Längenzähler 922 zu löschen. H CEPSTR ist aktiv, so daß der Zähler 1004 auf 6 erhöht wird.
  • Zustand 06.
  • Dieser Zustand bereitet auf einen Schreibversuch in die Kettentabelle vor. H ARMUXS01 und H ARMUXS00 sind aktiv, um das Ausgangssignal des Kodezählers 808 durch den MUX 802 hindurch zum Adreßregister 804 zu steuern. H PCSBWR und H SCWR werden aktiv gemacht, damit zum Einschreiben des Inhalts des Zeichenregisters 900 und Koderegisters 902 in die Kettenkode- und Vorsatzkode-Teile der adressierten Stelle eine Schreiboperation stattfindet. H CEPSTR ist aktiv, um den Zähler 1004 auf den Zustand 7 zu erhöhen.
  • Zustand 07.
  • Der Zustand 07 ist die Ausgangszeichenschleife. Wenn die Zählung im Längenzähler 922 nicht null ist (L LCO ist Falsch) und H D9RDY Wahr ist und H D9END Falsch ist, sind H CHMUXS01 und H CHCONTR aktiv, um ein vorher aus dem Speicher 912 ausgelesenes Zeichen durch den MUX 910 hindurch in das Zeichenregister 900 weiterzugeben. H SLC1 und H D9ACK sind aktiv, um den Längenzähler 922 zu erniedrigen, das Zeichen im Zeichenregister 900 in das Ausgangsregister 916 einzutakten und H D9ACK1 über die Leitung 1007 als Anzeige, daß ein Wort auf den D9OUT-Bus 920 gelegt worden ist, zum Kanalzerhacker 100 zu senden.
  • Wenn H D12END Wahr wird, dann wird H D9TERM aktiv gemacht, so daß H D9TERM1 zum Kanalzerhacker 100 gesandt wird, um das Ende der Dekomprimierung zu signalisieren. Gleichzeitig wird H PESTR aktiv gemacht, um FF 1100 und den Zähler 1004 zu löschen, um damit den Zustand 00 als den nächsten Zustand zu bezeichnen.
  • Wenn L LCO, H D9RDV und H D12RDY alle Wahr sind und H D9END, H D12END und L THROT Falsch sind, dann sind H ARMUXS02, H ARMUXS01 und H ARMUXS00 aktiv, um das Wort auf dem D12IN-Bus durch den MUX 802 hindurch zum Adreßregister 804 zu steuern. H D12ACK wird aktiv gemacht, so daß H D12ACK1 zum Zerhackerpuffer gesandt wird, um diesen darüber zu informieren, daß er für den Empfang eines weiteren Wortes bereit ist. H DACK9 ist Wahr, um das Ausgangssignals des Zeichenregisters 900 in das Ausgangsregister 916 einzusteuern und H DACK1 zu erzeugen, das den Kanalzerhacker 100 darüber informiert, daß auf dem D9OUT-Bus 920 ein weiteres Wort vorliegt. H PESTR, H NS 03, H NS 02 und H NS 00 sind Wahr, um den Zustand 0D in FF 1100 und den Zähler 1004 einzuladen.
  • Wenn L LCO, H D9RDY und H D12END Wahr sind und H D9END Falsch ist, dann ist H D9ACK aktiv, so daß H D9ACK1 zum Kanalzerhacker 100 gesandt wird, um anzuzeigen, daß auf dem D9OUT-Bus ein Wort zur Verfügung steht. H PESTR und H NS 03 sind aktiv, so daß FF 1100 und der Zähler 1004 gesetzt sind, um den Zustand 08 darzustellen. Zusätzlich ist, wenn L THROT und H D12RDV Wahr sind und H D9END und H D12END Falsch sind, H D12ACK aktiv, so daß H D12ACK1 dem Zerhackerpuffer 104 signalisiert, ein weiteres Wort auf den D12IN-Bus zu legen. Der Zustand ändert sich erst, wenn der Zerhackerpuffer ein Wort auf den D12IN-Bus legt, das nicht eines der Sonderzeichen FFC-FFF ist, oder wenn der Zerhackerpuffer H D12END erzeugt.
  • Zustand 0D.
  • Im Zustand 0D ist das Signal L 512 auf der Leitung 801 Wahr, wenn der Wert im Adreßregister ein Kettenkode und nicht ein Zeichenkode ist. Die Ausgangssignale H ARMUXS02 und H ARMUXS00 sind aktiv, um den aus der Kettentabelle 700 ausgelesenen PCODE für die Weitergabe durch den MUX 802 zum Adreßregister 804 auszuwählen. H CRMUXS01, H CRMUXS00 und H CHCONTR sind aktiv, um den Inhalt des Adreßregisters durch den MUX 904 hindurch und in das Koderegister 902 zu steuern. H LWR ist aktiv (niedrig), um H LIFO auf der Leitung 1005 auf Falsch zu setzen, so daß das Zeichen im Zeichenregister 900 in den LIFO-Speicher 912 eingeschrieben wird. H PLCI ist aktiv, um die Zählung im Längenzähler 922 zu erhöhen. Da H CHMUXS01 und H CHMUXS00 nicht aktiv sind, H CHCONTR aber aktiv ist, durchläuft der SCODE vom MCCODE-Bus den MUX 910 und wird in das Zeichenregister 900 eingegeben. H PESTR und H NS 03-H NS 00 sind aktiv, um den Zähler 1004 und FF 1100 mit der Darstellung des Zustands 0F zu beladen.
  • Wenn L 512 Falsch ist, dann ist der Wert im Adreßregister ein Zeichen mit einer Linkserweiterung von drei Nullen. H ARMUXS01 und H ARMUXS00 werden aktiv gemacht, um das Ausgangssignal des Kodezählers 808 durch den MUX 802 hindurch zum Adreßregister 804 weiterzugeben. H CRMUXS01 und H CRMUXS00 sind aktiv, um das Ausgangssignal des Adreßregisters 804 durch den MUX 904 durchzusteuern und H CHMUXS00 ist aktiv, um das Ausgangssignal des Adreßregisters 804 durch den MUX 910 durchzusteuern. H CHCONTR ist aktiv, um die Ausgangssignale der MUXe 904 und 910 in die Register 902 und 900 einzutakten. H SCWR ist zum Einschreiben eines Kettenkodes in die Kettentabelle 700 vom Zeichenregister 900 aktiv. Zusätzlich wird, wenn L 4092 Falsch ist, H CEPCC aktiv gemacht, um den Kodezähler 808 zu erhöhen. Andererseits sind, wenn L 4092 Wahr ist, H CEPCC und H PECC aktiv, um den Wert 512 in den Kodezähler 808 einzuladen. In beiden Fällen sind H PESTR, H NS 02 und H NS 01 aktiv, um den Zustand 06 als den nächsten Zustand zu bezeichnen.
  • Zustand 0F.
  • Wenn L AR512 Wahr ist, dann sind H ARMUXS02 und H ARMUXS00 aktiv, um den PCODE vom MCCODE-Bus durch den MUX 802 hindurch zum Adreßregister zu steuern. H CHCONTR ist aktiv, um den SCODE in das Zeichenregister 900 einzutakten (H CHMUXS01 und H CHMUXS00 sind inaktiv). H CHCONTR bewirkt auch, daß der Inhalt des Koderegisters 902, der durch den MUX 904 zum Eingang des Registers zurückgeführt wird (H CRMUXS01 und H CRMUXS00 sind inaktiv), wieder in das Koderegister eingegeben wird. H PLC1 und H LWR sind aktiv, um den Längenzähler 922 zu erhöhen und den Inhalt des Zeichenregisters 900 über Treiber 918 in den LIFO-Speicher 912 einzuschreiben. Die Zustände von FF 1100 und Zähler 1004 sind unverändert, und so wird der Zustand 0F wiederholt, bis L AR512 auf Falsch geht.
  • Wenn L AR512 Falsch ist, dann sind H ARMUXS01 und H ARMUXS00 aktiv, um das Ausgangssignal des Kodezählers 808 durch den MUX 802 hindurch zum Adreßregister 804 weiterzugeben. H CRMUXS00 und H CHCONTR sind aktiv, um den Inhalt des Adreßregisters durch den MUX 910 weiterzugeben und in das Zeichenregister 900 einzugeben. H SCWR ist aktiv, so daß der Inhalt des Zeichenregisters in die Kettentabelle eingeschrieben werden kann. Wenn L 4092 Falsch ist, dann ist H CEPCC aktiv, um den Kodezähler 808 zu erhöhen, wenn aber L 4092 Wahr ist, dann sind H CEPCC und H PECC Wahr, um den Kodezähler auf einen Wert von 512 zu setzen. H PESTR, H NS02 und H NS01 sind aktiv, um den Zustand 06 als den nächsten Zustand zu bezeichnen.
  • Zustand 08.
  • Der Zustand 08 ist der Endezustand. H D9TERM wird aktiv gemacht, so daß H D9TERM1 zum Kanalzerhacker 100 gesandt wird. Die Logik bleibt im Zustand 08, bis sie von einem Rücksetzbefehl zum Initialisierungszustand 00 rückgesetzt wird.
  • Zerhackerpuffer
  • Die Figur 13 ist ein Blockschaltbild eines der Zerhackerpuffer 104 auf Registerebene. Wie in der Figur 13 dargestellt, enthält ein Zerhackerpuffer zwei mit dem D12OUT-Bus 933 verbundene Register 1300 und 1302 zur Aufnahme von 12-Bit-Worten von den C/D-Steuerungen 102. Die Ausgänge der Register sind mit zwei PLA 1304 verbunden, die die ankommenden 12-Bit-Worte in 8-Bit-Byte zerhacken. Ausgangsbyte von den PLA 1304 werden an einen Paritätsgenerator 1306 angelegt, und jedes Byte und seine Parität wird an ein Register 1308 angelegt. Der Ausgang des Registers 1308 ist mit dem BPBUFMEM-Bus 1305 verbunden, der an die Bandpuffersteuerungen 106 und den Bandpuffer 108 angeschaltet ist. Während einer Komprimierungsoperation erzeugen die Puffersteuerungen 106 das Signal H OCAWR, wenn der Puffer 108 für den Empfang eines weiteren Datenbyte bereit ist. H OCAWR durchläuft das AND 1310, um das Ausgangssignal des Registers 1308 auf den BPBUFMEM-Bus zu takten.
  • Die PLA 1304 sind auch die Quelle für einen 12-Bit-Drosselkode FFF. Wenn die Geschwindigkeit, mit der Daten dem Zerhackerpuffer zugeführt werden, für die Aufrechterhaltung der Datenübertragungsgeschwindigkeit der Bandeinheit 114 unzulänglich ist, ist es notwendig, die Komprimierung abzudrosseln. Abdrosseln bezieht sich auf den Vorgang, wodurch die PLA 1304 den Drosselkode mit ausreichender Geschwindigkeit zur Aufrechterhaltung der Datenübertragungsgeschwindigkeit der Bandeinheit 114 zum Register 1308 ausgeben.
  • Die PLA 1304 sind auch die Quelle für einen 12-Bit-Kode FFD, mit dem das Register 1308 beaufschlagt wird. Dieser Kode wird zur Anzeige, daß ein komprimierter Datenblock ein Mehrfaches von acht beträgt, benutzt. Die Kompressionsvorrichtung nimmt eine Gruppe von 9 Byte und zerhackt die Daten vor ihrer Komprimierung in acht 9-Bit-Worte. Wenn der Datenblock vom Kanal auf dem achten Byte einer 9-Byte-Gruppe endet, bleibt ein Byte übrig. Dieses letzte Byte wird mit einem Füllbyte mit nur Nullen kombiniert, um das letzte 9-Bit-Wort zu erzeugen. Die PLA 1304 erzeugen den Kode FFD zur Übertragung zum Band, nachdem das letzte Byte komprimierter Daten gesandt worden ist, um damit das Füllbyte im letzten 9-Bit-Wort anzuzeigen. Während der Dekomprimierung wird der Kode FFD von den C/D-Steuerungen erkannt, die als Reaktion darauf das Füllbyte ignorieren.
  • Der Zerhackerpuffer enthält auch drei Register 1312, 1314 und 1318 und zwei PLA 1316. Während einer Dekomprimierungsoperation werden über den Bus 1305 8-Bit-Datenbyte zuzüglich jeder Byteparität empfangen. Die Parität wird ausgeblendet, von einem (nicht gezeigten) Paritätsprüfer überprüft und verworfen. Die Datenbyte werden parallel an die Register 1312 und 1314 angelegt, und mit den Ausgangssignalen der Register werden die PLA 1316 beaufschlagt. Diese PLA formen die Daten in 12- Bit-Worte um, die in das Register 1318 eingegeben werden. Vom Register 1318 werden die Worte über den D12IN-Bus 1309 zu den C/D-Steuerungen 102 übertragen.
  • Die PLA 1316 erzeugen auch die Signale H REVFFD00 und H REVFFD01 auf den Leitungen 1301 und 1303, wie noch beschrieben wird.
  • Zerhackerpufferlogikschaltungen bei Komprimierung
  • Die Steuersignale zur Ablaufsteuerung des Zerhackerpuffers während einer Komprimierungsoperation werden von zwei PLA 1400 und 1402 erzeugt. Diese PLA erzeugen so lange kein Ausgangssignal, wie das Signal H COMP1 auf der Leitung 405 Falsch ist. PLA 1402 erzeugt die Signale NS 03-NS 00, die den nächsten Zustand der Logik definieren. Diese Signale werden an ein Register 1404 angelegt und durch CLK1 in das Register eingetaktet. Die Istzustandsignale H GS (03-00) werden über die Leitung 1407 an die PLA 1304 angelegt. Mit diesen Signalen werden auch die Eingänge der PLA 1400 und 1402 beaufschlagt.
  • PLA 1402 erzeugt das Signal H MRDY auf der Leitung 1411, wenn der Zerhackerpuffer für die Aufnahme eines Wortes von den C/D-Steuerungen 102 bereit ist. In der Figur 15 durchläuft H MRDY einen Wähler 1504 (H COMP2 ist während der Komprimierung Falsch) und wird in ein Register 1506 eingetaktet. Das resultierende Ausgangssignal des Registers durchläuft ein AND 1508 und wird zum Signal H D12RDY, das über die Leitung 1509 zu den C/D-Steuerungen 102 zurückgesandt wird.
  • Das Signal H 8RDY wird von PLA 1402 erzeugt, um den Puffersteuerungen zu signalisieren, daß der Zerhackerpuffer ein Datenbyte für die Übertragung zum Band bereithält. Das Signal wird in das Register 1404 eingetaktet, um das Signal H 8RDVA auf der Leitung 1409 zu erzeugen. In der Figur 15 durchläuft dieses Signal das 0R 1510, um H BCRDV zu erzeugen, das zu den Bandpuffersteuerungen übertragen wird.
  • PLA 1402 erzeugt ein Signal H 8TERM am Ende einer Komprimierungsoperation. Das Signal wird bei CLK1 in das Register 1404 eingegeben, und das Register erzeugt das Signal H DBTERM, das über die Leitung 1423 zu den Bandpuffersteuerungen 106 übertragen wird.
  • PLA 1400 erzeugt die Signale H AEN, H BEN und H CEN, um Daten in die Register 1300, 1302 und 1308 einzutakten. Die Signale von PLA 1400 durchlaufen ein Speicherregister 1408 zu den AND 1410, 1412 und 1414. Bei CLK1 werden die Signale in das Speicherregister 1408 eingespeichert. Gleichzeitig wird CLK1 an die AND 1410, 1412 und 1414 angelegt, um das Ausgangssignal des Speicherregisters abzutasten. Das Ausgangssignal des AND 1410 wird über die Leitung 1401 an das Register 1300 angelegt. Das Ausgangssignal des AND 1412 wird mit der Leitung 1403 an den Takteingang des Registers 1302 angeschlossen, und das Ausgangssignal des AND 1414 wird mit der Leitung 1405 an den Takteingang des Registers 1308 angeschlossen.
  • Die verschiedenen Zustände der PLA 1400 und 1402 werden durch die am Ausgang des Registers 1404 verfügbaren Istzustandsignale H CS (04-00) definiert. Die Ausgangssignale von den PLA für einen gegebenen Zustand werden weiterhin von den Eingangssignalen H OCTHROT und H OCRDY von den Puffersteuerungen 106, H D12TERM1 und H D12ACK1 von den C/D- Steuerungen 102 und H LASTCOND vom Kanalzerhacker 100 bestimmt. Während einer Komprimierungsoperation setzen die Puffersteuerungen 106 H OCRDY auf Wahr, um den Zerhackerpuffer darüber zu informieren, daß die Puffersteuerungen für die Aufnahme eines weiteren Datenbytes bereit sind, und während einer Dekomprimierungsoperation wird H OCRDY auf Wahr gesetzt, um den Zerhackerpuffer darüber zu informieren, daß ein Datenbyte vom Puffer 108 auf den BPBUFMEM-Bus gelegt worden ist.
  • H OCTHROT wird von den Puffersteuerungen 106 während einer Komprimierungsoperation erzeugt, wenn der Puffer 108 leer ist.
  • Pufferzerhackerlogikzustände bei Komprimierungen
  • Während einer Datenkomprimierung muß das Signal H COMP1 auf der Leitung 405 stets Wahr sein, um den PLA 1400 und 1402 die Erzeugung von Ausgangssignalen zu ermöglichen. In der folgenden Beschreibung ist daher zu verstehen, daß H COMP1 Wahr ist, selbst wenn es als Bedingung für einen Zustand nicht besonders erwähnt worden ist.
  • Zustand 00.
  • Bei einer Datenkomprimierungsoperation bleibt die Zerhackerpufferlogik im Zustand 00, bis die C/D-Steuerungen fälschlicherweise das erste D 12ACK1 erzeugen. Im Zustand 00 ist, wenn H D12ACK1 auf Wahr geht, H MRDY aktiv, um H D12RDY zu den C/D-Steuerungen zurückzuführen. H NS 01 ist aktiv, um 01 als den nächsten Zustand anzugeben.
  • Zustand 01.
  • Im Zustand 01 sind die von den PLA 1400 und 1402 erzeugten Signale von den aktiven Eingangssignalen von den Puffersteuerungen und den C/D-Steuerungen abhängig. Solange H D12ACK1, H OCTHROT und H D12TERM1 Falsch sind, bleibt die Logik im Zustand 01.
  • Wenn H D12ACK1 auf Wahr geht, dann ist das Ausgangssignal H AEN von PLA 1400 aktiv, um das Wort auf dem D12OUT-Bus 933 in das Register 1300 einzutakten. H NS04 und H NS00 sind aktiv, um 11 als den nächsten Zustand zu definieren.
  • Wenn H D12TERM1 und H LASTCOND Wahr sind, dann werden von den PLA 1400 und 1402 keine Ausgangssignale außer H NS04, H NS03 und H NS01 aktiv gemacht, um 1A als den nächsten Zustand zu definieren.
  • Wenn H D12TERM1 Wahr ist und H LASTCOND Falsch ist, dann sind die einzigen aktiven Ausgangssignale NS03-NS00, um den Endezustand 0F als den nächsten Zustand zu definieren.
  • Wenn H OCTHROT Wahr ist und H D12ACK1 und H D12TERM1 Falsch sind, dann definieren die aktiven Ausgangssignale H NS02 und H NS00 den Zustand 05 als den nächsten Zustand.
  • Zustand 11.
  • Die Logik bleibt solange im Zustand 11, wie H OCRDY Falsch bleibt. Bei jedem Zyklus sind H CEN, H NS04 und H NS00 aktiv, um das Ausgangssignal der PLA 1304 in das Register 1308 einzutakten und Zustand 11 als den nächsten Zustand anzugeben. H 8RDY wird von PLA 1402 aktiv gemacht, so daß H BCRDY über die Leitung 151 zu den Puffersteuerungen übertragen wird. Wenn H OCRDV auf Wahr geht, dann ist das Signal H NS01 aktiv, um 02 als den nächsten Zustand anzugeben.
  • Zustand 02.
  • Die Logik bleibt solange im Zustand 02, wie H D12ACK1, H OCTHROT und H D12TERM1 Falsch sind. Die Signale H MRDY und H NS01 sind aktiv, so daß die Logik im Zustand 02 bleibt und H D12RDY über die Leitung 1509 zu den C/D-Steuerungen schickt.
  • Wenn H D12ACK1 auf Wahr geht, dann ist H BEN aktiv, um das Wort auf dem D12OUT-Bus in das Register 1302 zu laden. H NS04 und H NS01 sind aktiv, um als den nächsten Zustand den Zustand 12 anzugeben.
  • Wenn H OCTHROT auf Wahr geht, dann ist H NS02 aktiv, so daß die Logik zum Zustand 04 fortschreitet.
  • Wenn H D12TERM1 und H LASTCOND beide auf Wahr gehen, dann ist H NS03 aktiv, so daß die Logik zum Schritt 08 fortschreitet.
  • Wenn H D12TERM1 auf Wahr geht, H LASTCOND aber Falsch bleibt, dann sind H NS04 und H NS02-H NS00 aktiv, um den Zustand 17 zum nächsten Zustand zu machen.
  • Zustand 12.
  • Die Logik bleibt im Zustand 12, bis die Puffersteuerungen 106 für den Empfang des nächsten Wortes bereit sind. Solange wie H OCRDY Falsch bleibt, ist das Signal H CEN aktiv, so daß H REGC das Ausgangssignal der PLA 1304 in das Register 1308 eintaktet. H 8RDV ist aktiv, so daß H BCRDY zu den Puffersteuerungen 106 geschickt wird. H NS 04 und H NS 01 sind aktiv, so daß der Zustand 12 wiederholt wird.
  • Wenn H OCRDY auf Wahr geht, werden H NS01 und H NS00 aktiv, so daß die Logik zum Zustand 03 fortschreitet.
  • Zustand 03.
  • Der Zustand 03 ist wie der Zustand 12. Die Logik bleibt so lange im Zustand 03, wie H OCRDY Falsch ist. Bei jedem Zyklus wird H CEN erzeugt, so daß H REGC bewirkt, daß das Register 1308 bei jedem CLK1 mit dem Ausgangssignal von den PLA 1304 beladen wird. H 8RDY ist aktiv, um zu bewirken, daß H BCRDY zu den Puffersteuerungen 106 gesandt wird. Wenn H OCRDY auf Wahr geht, dann geht das Signal H NS 01 auf Wahr, so daß die Logik zum Zustand 01 zurückkehrt.
  • Zustand 05.
  • In den Zustand 05 wird, wie schon beschrieben, vom Zustand 01 eingegangen, wenn H OCTHROT Wahr ist. Die Logik bleibt so lange in diesem Zustand, wie H D12ACK1 und H OCRDY Falsch sind. Im Zustand 05 erzeugen die PLA 1304 den Wert FF. Bei jedem Zufluß ist H CEN aktiv, so daß H REGC das Ausgangssignal der PLA 1304 in das Register 1308 eintaktet, und H NS 02 und H NS 00 sind aktiv, so daß der Zustand beim nächsten Zyklus wiederholt wird.
  • Wenn H OCRDY auf Wahr geht und H D12ACK1 Falsch ist, dann ist H CEN aktiv, um das Register 1308 von den PLA 1304 zu beladen. H 8RDY ist aktiv, so daß H BCRDY zu den Puffersteuerungen 106 geschickt wird. H NS 03, H NS 01 und H NS 00 sind aktiv, um 0B zum nächsten Zustand zu machen.
  • Wenn H D12ACK1 auf Wahr geht und H OCRDY Falsch ist, dann werden H AEN und H CEN aktiv gemacht, so daß H REGA und H REGC das Wort vom D12OUT- Bus 933 in das Register 1300 eintakten und das Register 1308 von den PLA 1304 beladen. H 8RDY ist aktiv, so daß H BCRDY zu den Puffersteuerungen 106 geschickt wird. H NS 03 und H NS 00 sind aktiv, um 09 zum nächsten Zustand zu machen.
  • Wenn sowohl H OCRDZ als auch H D12ACK1 auf Wahr gehen, dann sind H AEN und H CEN aktiv, um das Register 1300 vom D12OUT-Bus zu beladen und das Register 1308 von den PLA 1304 zu beladen. H 8RDY ist aktiv, so daß H BCRDY zu den Puffersteuerungen 106 geschickt wird. H NS 03 und H NS 01 sind aktiv, um 0A als den nächsten Zustand zu bestimmen.
  • Zustand 09.
  • Die Logik wartet im Zustand 09, bis H OCRDV auf Wahr geht. Bei jedem Zyklus ist H 8RDY aktiv, so daß H BCRDV zu den Puffersteuerungen gesandt wird. H NS 03 und H NS 00 sind aktiv, um 09 zum nächsten Zustand zu machen.
  • Wenn H OCRDY auf Wahr geht, dann ist H 8RDY aktiv, so daß H BCRDY zu den Puffersteuerungen 106 gesandt wird, H NS 03 und H NS 01 sind aktiv, um den Zustand 0A zum nächsten Zustand zu machen.
  • Zustand 0A.
  • In diesem Zustand wird, wie schon beschrieben, vom Zustand 05 oder Zustand 09 aus eingegangen, und die Logik bleibt so lange in diesem Zustand (H NS03 und H NS01 sind aktiv), wie H OCRDY Falsch ist. Bei jedem Zyklus wird H 8RDV aktiv gemacht, so daß H BCRDY zu den Puffersteuerungen 106 geschickt wird.
  • Wenn H OCRDY auf Wahr geht, dann wird H 8RDY wieder aktiv gemacht, um H BCRDY zu den Puffersteuerungen zu senden. H NS 03 und H NS 02 werden aktiv, so daß die Logik zum Zustand 0C fortschreitet.
  • Zustand 0C.
  • In den Zustand 0C wird aus dem Zustand 0A oder Zustand 04 heraus eingegangen, und die Logik bleibt so lange im Zustand 0C (H NS03 und H NS02 sind aktiv), wie H OCRDY Falsch ist. Bei jedem Zyklus bewirkt H 8RDY, daß H BCRDY zu den Puffersteuerungen gesandt wird. Wenn H OCRDV auf Wahr geht, wird H CEN aktiv, um H REGC zu erzeugen und damit das Register 1308 von den PLA 1304 zu beladen. H 8RDY ist aktiv, um H BCRDY zu den Puffersteuerungen zu senden. H NS 04 und H NS 00 sind aktiv, so daß die Logik zum Zustand 11 zurückkehren wird.
  • Zustand 0B.
  • In den Zustand 0B wird, wie oben beschrieben, aus dem Zustand 05 aus eingegangen. Solange H OCRDY Falsch bleibt, bleibt die Logik im Zustand 0B, wobei H 8RDV, H NS 03, H NS 01 und H NS 00 bei jedem Zyklus aktiv sind. Wenn H OCRDY auf Wahr geht, bewirkt H 8RDY wieder, daß H BCRDY zu den Puffersteuerungen gesandt wird, und H NS 03, H NS 02 und H NS 00 werden aktiv, so daß die Logik zum Zustand 0D fortschreitet.
  • Zustand 0D.
  • In diesen Zustand wird aus dem Zustand 04 oder aus dem Zustand 0B heraus eingegangen. Er wird aufrechterhalten, indem H NS03, H NS02 und H NS01 bei jedem Zyklus aktiv gemacht werden, solange H OCRDY Falsch ist. Die PLA 1304 geben bei jedem Zyklus den Wert FF zum Register 1308 aus. H CEN wird bei jedem Zyklus aktiv gemacht, um das Register 1308 mit dem Ausgangssignal von den PLA 1304 zu beladen, und H 8RDY wird aktiv gemacht, so daß H BCRDV zu den Puffersteuerungen gesandt wird.
  • Wenn H OCRDY auf Wahr geht, dann wird H CEN aktiv gemacht, um das Register 1308 mit dem Wert FF zu beladen und H MRDY wird aktiv gemacht, um H D12RDY als Anzeige, daß der Zerhackerpuffer für den Empfang eines weiteren Wortes auf dem D12OUT-Bus bereit ist, zu den C/D- Steuerungen zu senden. H NS 00 wird aktiv gemacht, um zum Zustand 01 zurückzukehren,
  • Zustand 04.
  • Die Logik wartet so lange im Zustand 04, wie D12ACK1 und H OCRDV Falsch sind. Im Zustand 04 geben die PLA 1304 den Wert F zu den Bitstellen 0-3 des Registers 1308 und vier Datenbit zu Stellen 4-7 aus. H CEN ist bei jedem Zyklus aktiv zum Beladen des Registers 1308, H 8RDY ist aktiv, um H BCRDY zu den Puffersteuerungen 106 zu senden, und H NS 02 ist aktiv, so daß der Zustand 04 wiederholt wird.
  • Wenn H OCRDY auf Wahr geht und H D12ACK1 Falsch ist, wird H CEN aktiv gemacht, um das Register 1308 mit dem Ausgangssignal der PLA zu beladen, und H 8RDY ist aktiv, um H BCRDY zu den Puffersteuerungen zu senden. H NS 03, H NS 02 und H NS 00 sind aktiv, so daß die Logik zum Zustand 0D fortschreitet.
  • Wenn H D12ACK1 auf Wahr geht und H OCRDY Falsch ist, dann werden H AEN und H CEN aktiv gemacht, um das Register 1300 von dem D12OUT-Bus zu beladen und das Register 1308 von den PLA 1304 zu beladen. H 8RDY ist aktiv, um H BCRDY zu den Puffersteuerungen 106 zu senden. H NS 03-H NS 01 sind aktiv, so daß die Logik zum Zustand 0E fortschreitet.
  • Wenn sowohl H OCRDY als auch H D12ACK1 auf Wahr gehen, dann werden H AEN und H CEN zum Beladen der Register 1300 und 1308 aktiv gemacht. H 8RDY bewirkt, daß H BCRDY über die Leitung 1515 zu den Puffersteuerungen gesandt wird. H NS 03 und H NS 02 sind aktiv, so daß die Logik zum Zustand 0C fortschreitet.
  • Zustand 0E.
  • Die Logik wartet so lange im Zustand OE, wie H OCRDY Falsch ist. H NS3-H NS01 sind aktiv, um diesen Zustand aufrechtzuerhalten und H 8RDY wird bei jedem Zyklus erzeugt, um H BCRDY zu den Puffersteuerungen 106 zu senden. Die PLA 1304 geben bei jedem Zyklus den Wert FF zum Register 1308 aus.
  • Wenn H OCRDY auf Wahr geht, dann wird H CEN zum Einladen des Wertes FF in das Register 1308 aktiv gemacht, und H 8RDY wird aktiv gemacht, um H BCRDY zu den Puffersteuerungen zu senden. H NS 03 und H NS 02 werden aktiv gemacht, so daß die Logik zum Zustand 0C fortschreitet.
  • Zustand 1A.
  • Die Logik wartet so lange im Zustand 1A, wie H LASTCOND Wahr ist und H OCRDY Falsch ist. Die PLA 1304 geben bei jedem Zyklus den Wert FF zum Register 1308 aus. H CEN ist zum Beladen des Registers 1308 aktiv, und H 8RDY ist aktiv, so daß H BCRDY zu den Puffersteuerungen gesandt wird. H NS 04, H NS 03 und H NS 01 sind zur Wiederholung des Zustandes aktiv.
  • Wenn H OCRDY auf Wahr geht, werden H NS 04, H NS 03, H NS 01 und H NS 00 aktiv, so daß die Logik zum Zustand 1B fortschreitet.
  • Zustand 1B.
  • Die Logik verbleibt solange im Zustand 1B, wie H LASTCOND Wahr ist und H OCRDY Falsch ist. Die PLA 1304 geben den Wert D zu Bitstellen 7-4 des Registers 1308 aus. H CEN und H 8RDY sind zum Beladen des Registers 1308 aktiv und senden H BCRDY zu den Puffersteuerungen 106, um diese darüber zu informieren, daß auf dem BPBUFMEM-Bus ein weiteres Byte zur Verfügung steht. H NS 04, H NS 03, H NS 01 und H NS 00 sind aktiv, so daß der Zustand wiederholt wird.
  • Wenn H OCRDY auf Wahr geht, wird H 8TERM aktiv, so daß H D8TERM zu den Puffersteuerungen 106 gesandt wird, um die Beendigung der Komprimierungsoperation zu signalisieren. H NS 03-H NS 00 sind aktiv, so daß die Logik zum Zustand 0F fortschreitet.
  • Zustand 0F.
  • Der Zustand 0F ist der Endezustand. Er wird fortlaufend wiederholt, solange H COMP1 Wahr ist. Während jedes Zyklus ist H 8TERM aktiv, um zu bewirken, daß H D8TERM zu den Puffersteuerungen gesandt wird und H NS 03-H NS 00 sind aktiv, so daß der Zustand wiederholt wird.
  • Zustand 17.
  • Die Logik wartet solange im Zustand 17, wie H OCRDV Falsch ist. H CEN und H 8RDY sind zum Beladen des Registers 1308 aktiv und senden H BCRDY zu den Puffersteuerungen. H NS 04 und H NS 02-H NS 00 sind aktiv, um den Zustand zu wiederholen.
  • Wenn H OCRDY wieder auf Wahr geht, wird H 8TERM aktiv gemacht, so daß H DBTERM zu den Puffersteuerungen gesandt wird. H NS 03-H NS 00 sind aktiv, um zum Endezustand 0F fortzuschreiten.
  • Zustand 08.
  • Der Zustand 08 wird so lange wiederholt, wie H OCRDY Falsch ist. Im Zustand 08 geben die PLA 1304 den Wert F zu Bitstellen 0-3 des Registers 1308 aus. H CEN und H 8RDY sind zum Beladen des Registers 1308 aktiv und signalisieren den Puffersteuerungen (über H BCRDY), daß sich das Byte auf den BPBUFMEM-Bus befindet. H NS 03 ist aktiv zur Wiederholung des Zustandes.
  • Wenn H OCRDY auf Wahr geht, werden H NS 04, H NS 03 und H NS 00 aktiv, um zum Zustand 19 fortzuschreiten.
  • Zustand 19.
  • Der Zustand 19 wird so lange wiederholt, wie H OCRDY Falsch ist. Die PLA 1304 geben bei jedem Zyklus den Wert FD zum Register 1308 aus. H CEN und H 8RDY sind zur Beladung des Registers 1308 aktiv und signalisieren den Puffersteuerungen, daß ein Datenbyte sich auf dem BPBUFMEM-Bus befindet. H NS 04, H NS 03 und H NS 00 sind zur Wiederholung des Zustandes aktiv.
  • Wenn H OCRDY auf Wahr geht, wird 8TERM aktiv, so daß H D8TERM den Puffersteuerungen 106 signalisiert, daß die Komprimierungsoperation abgeschlossen ist. H NS (03-00) sind aktiv, so daß die Logik zum Endezustand 0F fortschreitet.
  • Zerhackerpufferlogikschaltungen bei Dekomprimierung
  • Während einer Dekomprimierungsoperation bestimmen zwei PLA 1500 und 1502 den Logikzustand des Zerhackerpuffers. PLA 1502 erzeugt die Signale NS (04-00) für den nächsten Zustand, die von CLK1 in ein Register 1512 eingesteuert werden. Das Register erzeugt die Signale H DB12CS (04-00) des Istzustandes, die zur Definierung des nächsten Zustandes an die PLA 1500 und 1502 angelegt werden und auch über die Leitung 1501 an die PLA 1316 angelegt werden. Die PLA 1316 erzeugen das Signal H REVFFD 00 und H REVFFD auf den Leitungen 1301 und 1303 während des Dekomprimierungslogikzustandes 04, wenn der Wert FF im Register 1314 enthalten ist und der Wert D sich an den höheren Stellen des Registers 1312 befindet. Diese PLA erzeugen dieselben Signale auch während des Zustandes 17, wenn der Wert F sich in den niedrigen Stellen des Registers 1312 befindet und der Wert FD sich im Register 1314 befindet.
  • PLA 1502 erzeugt auch die Signale H EN6, H ENS und H EN4, die ein Speicherregister 1514 zu drei AND 1516, 1518 und 1520 durchlaufen. Die Signale werden durch CLK1 im Speicherregister 1514 gespeichert. Zur gleichen Zeit wird CLK1 an die AND 1516, 1518 und 1520 angelegt. Das Ausgangssignal von AND 1516 ist das Signal H LD4, das ein Datenbyte auf dem BPBUFMEM-Bus in das Register 1314 eintaktet, während das Ausgangssignal des AND 1518 das Signal H LDS ist, das ein Datenbyte vom selben Bus in das Register 1312 eintaktet. Das Ausgangssignal von AND 1520 ist das Signal H LD6, das das Ausgangssignal der PLA 1316 in das Register 1318 eintaktet, von wo aus es über den D12IN-Bus an die C/D-Steuerungen 102 angelegt wird.
  • PLA 1500 erzeugt das Signal H 812RDY, wenn ein Wort in das Register 1318 eingeladen wird. Das Signal durchläuft den (nunmehr durch H COMP2 adressierten) Wähler 1514 und wird durch CLK1 in das Register 1506 eingetaktet. Das Ausgangssignal des Registers durchläuft das AND 1508, um das Signal H D12RDY als Signal zu den C/D-Steuerungen 102, daß auf dem D12IN-Bus 1309 ein Wort zur Verfügung steht, zu erzeugen.
  • Das Signal H 812END wird von PLA 1500 erzeugt, um den C/D-Steuerungen 102 das Ende einer Dekomprimierungsoperation zu signalisieren. Das Signal wird in das Register 1506 eingetaktet, das auf der Leitung 1511 das Signal H D812AEND erzeugt. Die Leitung ist an den Wähler 1504 angeschlossen und bewirkt, daß ein Signal H D12END zu den C/D-Steuerungen 102 zurückgesandt wird.
  • Das Signal H 812AK wird von PLA 1500 erzeugt, um den Puffersteuerungen 106 zu signalisieren, daß der Zerhackerpuffer zur Annahme eines weiteren Datenbyte bereit ist. Das Signal wird durch CLK1 in das Register 1506 eingegeben und das Register erzeugt ein Ausgangssignal, daß das DR 1510 durchläuft, um zum Signal H BCRDY zu werden, mit dem die Puffersteuerungen 106 über die Leitung 1515 beaufschlagt werden.
  • PLA 1500 erzeugt auch während jedes Zustandes, in dem H REVFFD02 oder REVFFD03 Wahr ist, ein Signal H REVFFD024 auf der Leitung 1503. Dieses Signal wird an einen Eingang des Registers 1406 angelegt. Eine zweite Stufe dieses Registers ist an den Ausgang eines AND 1416 angeschlossen, der die Signale H REVFFD00 und H REVFFD01 von den PLA 1316 empfängt. Das Register erzeugt die Signale H REVFFD02 und H REVFFD03, die als Adressierungseingaben an die PLA 1500 und 1502 angelegt werden. Zusätzlich werden mit H REVFFD02 die Dekomprimierungs-PLA 500 und 502 im Kanalzerhacker 100 beaufschlagt.
  • Das vom Steuerregister 300 erzeugte Signal H BKWD wird in ein Register 1506 eingegeben, das dann das Signal H BCBKWD erzeugt, das an einen der Adressierungseingänge der PLA 1500 und 1502 angelegt wird. Zu anderen Adressierungseingängen der PLA gehören H OCEND und H OCRDY, die von den Puffersteuerungen 106 erzeugt werden, und die Signale H D12ACK1 und H D12TERM1, die von den C/D-Steuerungen 102 erzeugt werden.
  • Zerhackerpufferlogikzustände bei Dekomprimierung
  • Das Signal H COMP2 auf der Leitung 315 muß zur Freigabe der PLA 1500 und 1502 während einer gesamten Dekomprimierungsoperation Wahr sein. Solange H COMP2 Falsch ist, bleiben die PLA im Zustand 00. In der folgenden Beschreibung ist zu verstehen, daß H COMP2 Wahr sein muß, selbst wenn dies nicht besonders erwähnt wird.
  • Zustand 00.
  • Bei einer normalen Dekomprimierung ist H BCBKWD Falsch und PLA 1500 macht H 812AK aktiv, so daß H BCRDY als Anzeige dafür, daß der Zerhackerpuffer zum Empfang eines Wortes vom Puffer 108 bereit ist, über die Leitung 515 zu den Puffersteuerungen 106 gesandt wird. PLA 1502 macht H NS 00 aktiv, so daß die Logik zum Zustand 01 fortschreitet.
  • Bei Durchführung einer Rückwärtsdekomprimierung wird H BCBKWD an die PLA 1500 und 1502 angelegt. Wenn während einer Rückwärtsdekomprimierung H OCRDY auf Wahr geht und damit anzeigt, daß die Bandpuffersteuerungen zur Übertragung eines Wortes vom Bandpuffer 108 zum Zerhackerpuffer bereit sind, macht PLA 1500 H 812AK aktiv, während PLA 1502 H NS 00 aktiv macht. Damit wird H BCRDY zu den Puffersteuerungen 106 gesandt und die Logik schreitet zum Zustand 01 fort.
  • Zustand 01.
  • Im Zustand 01 wartet der Zerhackerpuffer auf das Anfangsbyte vom Puffer. Solange H OCRDY und H OCEND Falsch sind, erzeugt PLA 1502 H 812AK und H NS 00, so daß H BCRDY zu den Puffersteuerungen 106 gesandt wird und der Zustand 01 wiederholt wird.
  • Nachdem am Ende einer Dekomprimierungsoperation das letzte Datenbyte zum Zerhackerpuffer 104 gesandt worden ist, wird von den Puffersteuerungen 106 H OCEND erzeugt.
  • Sollte H OCEND auf Wahr gehen und damit anzeigen, daß das letzte Byte bereits gesandt worden ist, erzeugt PLA 1502 H NS 03, H NS 02 und H NS 01, so daß die Logik zum Beendigungszustand 0E springt.
  • Wenn H OCRDY auf Wahr geht, macht PLA 1502 H EN4 aktiv, so daß das erste Datenbyte auf dem BPBUFMEM-Bus 1305 mit H LD4 auf der Leitung 1507 in das Register 1314 eingetaktet wird. PLA 1500 macht H 812AK aktiv, so daß H BCRDY zu den Puffersteuerungen 106 gesandt wird, um anzuzeigen, daß der Zerhackerpuffer ein weiteres Wort auf den BPBUF- MEM-Bus legen kann. PLA 1502 macht H NS 01 und H NS 00 aktiv, so daß die Logik zum Zustand 03 fortschreitet.
  • Zustand 03.
  • Im Zustand 03 wartet die Logik auf das zweite Datenbyte vom Bandpuffer 108. Der Zustand 03 wird so lange wiederholt, wie H OCRDY und H OCEND falsch sind. H 812AK wird von PLA 1500 aktiv gemacht, so daß den Puffersteuerungen 106 H BCRDY zugesandt wird. PLA 1502 gibt H NS 01 und H NS 00 aus, um den Zustand 03 zu wiederholen.
  • Sollte H OCEND auf Wahr gehen, besteht ein Grenzbytefehler. PLA 1502 erzeugt H NS 03-H NS 00, so daß die Logik zum Zustand 0F fortschreitet.
  • Wenn H OCRDY auf Wahr geht, macht PLA 1502 H ENS aktiv, so daß das Signal H LDS auf der Leitung 1505 erzeugt wird, um das zweite Datenbyte von dem BPBUFMEM-Bus in das Register 1312 einzutakten. H NS 02 wird aktiv gemacht, so daß die Logik zum Zustand 04 fortschreitet.
  • Zustand 04.
  • Im Zustand 04 wird das erste Wort vom Zerhackerpuffer zu den C/D-Steuerungen 102 übertragen. PLA 1500 macht H 812RDY und H 812AK aktiv, während PLA 1502 H EN6, H NS 02 und H NS 00 aktiv macht. H EN6 bewirkt, daß H LD6 auf der Leitung 1503 Wahr wird, um das erste Wort von den PLA 1316 in das Register 1318 einzutakten, so daß es auf dem D12IN-Bus 1309 zur Verfügung steht. H 812AK bewirkt, daß H D12RDY auf der Leitung 1509 Wahr wird, um den C/D-Steuerungen 102 zu signalisieren, daß das Wort auf dem Bus zur Verfügung steht. H 812 RDV bewirkt, daß H BCRDY auf der Leitung 1515 auf Wahr geht, um den Puffersteuerungen 106 zu signalisieren, daß der Zerhackerpuffer zur Annahme eines weiteren Wortes bereit ist. H NS 02 und H NS 00 bewirken, daß die Logik zum Zustand 05 fortschreitet.
  • Zustand 05.
  • In diesem Zustand wartet der Zerhackerpuffer auf das dritte Datenbyte vom Puffer 108 und/oder eine Bestätigung (H D12ACK1), daß die C/D-Steuerungen 102 das erste Wort angenommen haben. Solange wie H D12ACK1 und H OCRDY Falsch sind, macht PLA 1500 H 812RDY und H 812AK aktiv, so daß den C/D-Steuerungen 102 H D12RDY zugesandt wird und den Puffersteuerungen 106 H BCRDY zugesandt wird. Von PLA 1502 wird zur Wiederholung des Zustandes 05 H NS 02 und H NS 00 erzeugt.
  • Wenn die Puffersteuerungen 106 das dritte Datenbyte auf den BPBUFMEM- Bus legen und auf der Leitung 1805 H OCRDY erzeugen, um anzuzeigen, daß dies durchgeführt worden ist, macht PLA 1502 H EN4 aktiv, so daß das dritte Datenbyte vom BPBUFMEM-Bus mit H LD4 in das Register 1507 eingetaktet wird. Von PLA 1500 wird H 812RDY erzeugt, so daß den C/D- Steuerungen wiederum H D12RDY zugesandt wird, um anzuzeigen, daß das erste Byte auf den D12IN-Bus gelegt worden ist. PLA 1502 macht H NS 03 aktiv, damit die Logik zum Zustand 08 fortschreitet.
  • Sollte H D12ACK1 auf Wahr gehen und damit anzeigen, daß das erste Wort von den C/D-Steuerungen 102 angenommen wurde, dann erzeugt PLA 1500 H 812AK, so daß den Puffersteuerungen 106 als Anzeige dafür, daß der Zerhackerpuffer immer noch auf das dritte Byte wartet, H BCRDY zugesandt wird. PLA 1502 macht H NS 02 und H NS 01 aktiv, damit die Logik zum Zustand 06 fortschreitet.
  • Wenn die C/D-Steuerungen 102 das erste Wort annehmen und gleichzeitig das dritte Datenbyte von den Puffersteuerungen 106 auf den BPBUFMEM- Bus gelegt wird, dann gehen sowohl H D12ACK1 als auch H OCRDY auf Wahr. Von PLA 1502 wird H EN4 aktiv gemacht, so daß das dritte Byte vom BPBUFMEM-Bus mit H LD4 in das Register 1314 eingetaktet wird. Auch macht PLA 1502H NS 04, H NS 02, H NS 01 und H NS 00 aktiv, sodaß die Logik zum Zustand 17 fortschreitet.
  • Zustand 17.
  • Im Zustand 17 macht PLA 1502 H EN6 aktiv, um das Register 1318 mit dem zweiten Wort zu beladen. PLA 1500 macht H 812RDY und H 812ACK aktiv und setzt damit H D12RDY und H BCRDY auf Wahr. Damit wird den C/D-Steuerungen 102 signalisiert, daß auf dem D121N-Bus das zweite Wort zur Verfügung steht, und den Puffersteuerungen 106 signalisiert, daß das dritte Datenbyte von dem Zerhackerpuffer angenommen worden ist. PLA 1502 macht H NS 03 und H NS 00 aktiv, damit die Logik zum Zustand 09 fortschreitet.
  • Zustand 09.
  • Im Zustand 09 wartet die Logik darauf, daß das zweite Wort auf dem D12IN-Bus von den C/D-Steuerungen 102 angenommen wird, oder daß die Puffersteuerungen 106 signalisieren, daß sich das erste Byte des nächsten Wortes auf dem BPBUFMEM-Bus befindet. Während des Wartens sind sowohl H OCRDY als H D12ACK1 Falsch. PLA 1500 macht infolgedessen H 812RDY und H 812AK aktiv, so daß den C/D-Steuerungen 102 H D12RDY zugesandt wird und den Puffersteuerungen 106 H BCRDY zugesandt wird. PLA 1502 erzeugt zur Wiederholung des Zustandes 09 H NS 03 und H NS 00.
  • Wenn die Puffersteuerungen das zweite Byte des nächsten Wortes vor Annahme des zweiten Wortes auf dem D12IN-Bus durch die C/D-Steuerungen auf den BPBUFMEM-Bus 1305 legen, geht H OCRDY auf Wahr. PLA 1502 macht H EN4 aktiv, so daß das Datenbyte auf dem BPBUFMEM-Bus mit H LD4 in das Register 1314 eingetaktet wird. PLA 1500 erzeugt H 812RDY und H 812AK, so daß H D12RDY den C/D-Steuerungen wiederum signalisiert, daß sich das zweite Wort auf dem D12IN-Bus befindet, und H BCRDY signalisiert den Puffersteuerungen, daß das Datenbyte vom Zerhackerpuffer angenommen worden ist. PLA 1502 macht H NS 03 und H NS 01 aktiv, damit die Logik zum Zustand 0A fortschreitet.
  • Wenn die C/D-Steuerungen das zweite Wort auf dem D12IN-Bus zur gleichen Zeit annehmen, wie das nächste Datenbyte von den Puffersteuerungen auf den BPBUFMEM-Bus gelegt wird, dann gehen sowohl H OCRDV und H D12ACK1 auf Wahr. Als Reaktion wird von PLA 1502 H EN4 aktiv gemacht> so daß das Datenbyte vom BPBUFMEM-Bus mit H LD4 in das Register 1314 eingetaktet wird. PLA 1500 macht H 812AK aktiv, so daß als Anzeige der Annahme des Byte H BCRDY zu den Puffersteuerungen 106 gesandt wird. PLA 1502 macht H NS 01 und H NS 00 aktiv, so daß die Logik zum Zustand 03 zurückkehrt.
  • Wenn das zweite Wort von den Puffersteuerungen angenommen worden ist (H D12ACK1 Wahr) und dies nicht das Ende einer Dekomprimierungsoperation ist (H OCEND ist Falsch), wird von PLA 1500 H 812AK erzeugt, so daß den Puffersteuerungen 106 H BCRDV zugesandt wird. Von PLA 1502 wird H NS 01 aktiv gemacht, so daß die Logik zum Zustand 02 fortschreitet.
  • Wenn sowohl H D12ACK1 als auch H OCEND auf Wahr gehen> wird von PLA 1500 H 812END aktiv gemacht, so daß als Signalisierung des Endes der Dekomprimierungsoperation H D812AEND den C/D-Steuerungen zugesandt wird. Von PLA 1502 wird H NS 03, H NS 02 und H NS 01 Wahr gemacht, so daß die Logik zum Zustand 0E fortschreitet.
  • Zustand 02.
  • Im Zustand 02 wartet der Zerhackerpuffer auf ein erstes Byte. Solange H OCRDY und H OCEND Falsch sind, wird von PLA 1500 H 812AK erzeugt, so daß als Anzeige, daß der Zerhackerpuffer für ein weiteres Byte bereit ist, den Puffersteuerungen 106 H BCRDY zugesandt wird. Zur Wiederholung des Zustandes 02 macht PLA 1502 H NS 01 aktiv.
  • Wenn H OCRDY auf Wahr geht, um anzuzeigen, daß die Puffersteuerungen ein Datenbyte auf den BPBUFMEM-Bus gelegt haben, macht PLA 1502 H EN4 aktiv, so daß das Datenbyte mit H LD4 in das Register 1314 eingetaktet wird. Die PLA 1500 macht H 812AK aktiv, so daß H BCRDY zu den Puffersteuerungen zurückgesandt wird, um die Annahme des Bytes zu bestätigen. PLA 1502 macht H NS 01 und H NS 00 Wahr, damit die Logik zum oben beschriebenen Zustand 03 fortschreitet. Sollte H OCEND auf Wahr gehen, um das Ende der Dekomprimierungsoperation zu signalisieren, macht PLA 1500 H 812END aktiv, so daß den C/D-Steuerungen über die Leitung 1511 das Endesignal H DB12AEND zugesandt wird. PLA 1502 macht H NS 03, H NS 02 und H NS 01 aktiv, damit die Logik zum Endezustand OE fortschreitet.
  • Zustand 06.
  • Im Zustand 06 wartet die Logik darauf, daß von den Puffersteuerungen 106 ein drittes Byte auf den BPBUFMEM-Bus gelegt wird. Solange H OCEND und H OCRDY Falsch sind, macht PLA 1500 H 812AK Wahr, so daß als Anzeige dafür, daß der Zerhackerpuffer für das dritte Byte bereit ist, den Puffersteuerungen H BCRDY zugesandt wird. Von PLA 1502 wird H NS 02 und H NS 01 zur Wiederholung des Zustandes 06 aktiv gemacht.
  • Wenn die Puffersteuerungen das dritte Byte auf den BPBUFMEM-Bus legen, erzeugen sie H OCRDY. PLA 1502 macht H EN4 aktiv, so daß das Byte mit H LD4 in das Register 1314 eingetaktet wird. Von PLA 1502 wird H NS 04, H NS 02, H NS 01 und H NS 00 Wahr gemacht, damit die Logik zum oben beschriebenen Zustand 17 fortschreitet.
  • Wenn H OCEND auf Wahr geht, dann macht die PLA 1500 H 812END aktiv, so daß als Signalisierung des Endes der Dekomprimierungsoperation H DB12AEND den C/D-Steuerungen zugesandt wird. Von PLA 1502 wird H NS 03, H NS 02 und H NS 01 aktiv gemacht, damit die Logik zum Zustand 0E fortschreitet.
  • Zustand 08.
  • In diesem Zustand wartet die Logik auf die Annahme des Wortes auf dem D121N-Bus durch die C/D-Steuerungen, und daß sie als Bestätigung der Annahme des Wortes H D12ACK1 erzeugen. Solange H D12ACK1 Falsch bleibt, macht PLA 1500 H 812RDY aktiv, so daß den C/D-Steuerungen durch H D12RDY signalisiert wird, daß sich das Wort auf dem Bus befindet. Zur Wiederholung des Zustandes 08 macht die PLA 1502 H NS 03 aktiv.
  • Wenn die C/D-Steuerungen das Wort auf dem D12IN-Bus annehmen und H D12ACK1 erzeugen, macht PLA 1502 H NS 04, H NS 02, H NS 01 und H NS 00 aktiv, damit die Logik zum Zustand 17 fortschreitet.
  • Zustand 0A.
  • Im Zustand 0A wartet der Zerhackerpuffer darauf, ein zweites Wort zu den C/D-Steuerungen zu senden oder ein zweites Byte von den Puffersteuerungen zu empfangen. Solange H D12ACK1 und H OCRDY Falsch sind, macht PLA 1500 H 812RDY und H 812AK aktiv. Damit wird H D2RDY den C/D-Steuerungen zugesandt und H BCRDY den Puffersteuerungen zugesandt. PLA 1052 macht zur Wiederholung des Zustandes 0A H NS 03 und H NS 01 aktiv.
  • Wenn von den Puffersteuerungen ein Datenbyte auf den BPBUFMEM-Bus gelegt und H OCRDY erzeugt wird, macht PLA 1502 H ENS aktiv, so daß das Byte mit H LDS in das Register 1312 eingetaktet wird. Von PLA 1500 wird H 812RDY aktiv gemacht, um damit H D12RDY Wahr zu machen, um den C/D-Steuerungen zu signalisieren, daß sich auf dem D12IN-Bus noch ein Wort befindet. PLA 1502 macht H NS 03, H NS 01 und H NS 00 aktiv, damit die Logik zum Zustand 0B fortschreitet.
  • Sollten sowohl H OCEND und H D12ACK1 auf Wahr gehen, dann macht PLA 1502 H NS 03-H NS 00 aktiv, damit die Logik zum Grenzbytefehlerzustand 0F fortschreitet.
  • Wenn das Wort auf dem D12IN-Bus von den C/D-Steuerungen angenommen wird und diese H D12ACK1 erzeugen, H OCEND jedoch Falsch ist, macht PLA 1502 H NS 01 und H NS 00 aktiv, damit die Logik zum Zustand 03 fortschreitet.
  • Wenn das Wort auf dem D12IN-Bus von den C/D-Steuerungen angenommen wird und von den Puffersteuerungen ein Byte auf den BPBUFMEM-Bus gelegt wird, dann sind sowohl H D12ACK1 als auch H OCRDY Wahr. Von PLA 1502 wird H EN5 aktiv gemacht, so daß das Byte von BPBUFMEM-Bus mit H LD5 in das Register 1312 eingetaktet wird. H NS 02 wird aktiv gemacht, damit die Logik zum Zustand 04 fortschreitet.
  • Zustand 0B.
  • Im Zustand 0B wartet der Zerhackerpuffer auf die Annahme des Bytes auf dem D12IN-Bus durch die C/D-Steuerungen 102. Solange H D12ACK1 Falsch ist, wird von PLA 1500 H 812RDY erzeugt, so daß als Anzeige, daß sich das Wort auf dem Bus befindet, H D12RDY zu den C/D- Steuerungen gesandt wird. Zur Wiederholung des Zustandes 0B wird von PLA 1502 H NS 03, H NS 01 und H NS 00 erzeugt.
  • Wenn das Byte auf dem D12IN-Bus von den C/D-Steuerungen angenommen und H D12ACK1 erzeugt wird, wird von PLA 1502 H NS 02 erzeugt, um die Logik zum Zustand 04 zurückzuführen.
  • Zustand 0E.
  • Der Zustand 0E ist der Beendigungszustand, der mit seiner Einnahme solange wiederholt wird, wie H COMP2 Wahr ist. Während dieses Zustandes macht PLA 1500 H 812END aktiv, so daß den C/D-Steuerungen das Beendigungssignal H DB12AEND zugesandt wird. PLA 1502 macht zur Wiederholung des Zustandes DE H NS 03, H NS 02 und H NS 01 aktiv.
  • Zustand 0F.
  • Der Zustand 0F ist der Grenzbytefehlerbeendigungszustand. Wenn die Logik in diesen Zustand eingeht, bleibt sie dort solange H COMP2 Wahr ist. Von der PLA 1502 wird zur Wiederholung des Zustandes H NS 03-H NS 00 aktiv gemacht.

Claims (8)

1. Datenkompressionseinrichtung, gekennzeichnet durch:
ein Kettentabellenspeichermittel (700) mit einer Mehrzahl von adressierbaren Speicherstellen, die jeweils einen Präfixkodeteil, einen Kettenkodeteil und einen Teilblockzählungsteil aufweisen;
einen Kettenkodezähler (808) zum Erzeugen eines Ausgangssignals bei Erreichen einer vorbestimmten Zählung;
Mitteln (1001, 1053) zur Inkrementierung des Kettenkodezählers (808), jedesmal dann, wenn ein Kettenkode in das Kettentabellenspeichermittel (700) eingeschrieben wird;
einen Teilblockzähler (812);
auf das Ausgangssignal vom Kettenkodezähler (808) reagierende Mittel (960, 1001, 1003, 1004) zum Inkrementieren der Zählung im Teilblockzähler (812);
auf ein ankommendes Datenzeichen in einem Strom unkomprimierter Daten reagierende Adressenhaschmittel (800b) 802, 804) zum aufeinanderfolgenden Adressieren des Kettentabellenspeichermittels (700) zum Auslesen des Inhalts des Präfixkodeteils und des Teilblockzählungsteils aus den adressierten Stellen;
ein erstes Vergleichsmittel (806) zum Vergleichen jeder aus dem Kettentabellenspeichermittel (700) ausgelesenen Teilblockzählung mit der Zählung im Teilblockzähler (812) und Erzeugen eines Vergleichssignals bei ihrer Gleichheit; und
auf das erste Vergleichsmittel (806) reagierende Mittel (1001, 1006, 710, 814> 908, 914), um nur dann die Teilblockzählung in den Teilblockzähler (812), den Kettenkode in den Kettenkodezähler (808) und einen Präfixkode in das Kettentabellenspeichermittel (700) einzuschrieben> wenn das erste Vergleichsmittel (806) nicht das Vergleichssignal erzeugt.
2. Einrichtung nach Anspruch 1, weiterhin mit auf eine vorbestimmte Zählung im Kettenkodezähler (808) reagierenden Mitteln zum Rücksetzen des Kettenkodezählers (808).
3. Einrichtung nach Anspruch 1, weiterhin mit einem Zeichenregister (900), einem Koderegister (902) und einem Längenzähler (922);
einem auf das Kettentabellenspeichermittel (700) und das Koderegister (902) reagierenden zweiten Vergleichsmittel (906) zum Erzeugen eines zweiten Vergleichssignals, wenn ein aus dem Kettentabellenspeichermittel (700) ausgelesener Präfixkode einem Kode im Koderegister (902) gleich ist, und einem dritten Mittel (910) zum Eingeben jedes ankommenden Datenzeichens in das Zeichenregister (902);
wobei die Adressenhaschmittel (800b, 802, 804) auf jedes ankommende Datenzeichen reagierende vierte Mittel (1000, 802, 804) zum Auslesen eines Kettenkodes, einer Präfixzählung und einer Teilblockzählung aus dem Kettentabellenspeichermittel (700) aufweisen;
auf erste und zweite Vergleichsmittel (806, 906) reagierende fünfte Mittel (1110, 1008, 1002) 1000) zum Inkrementieren des Längenzählers (922), Eingeben eines aus dem Kettentabellenspeichermittel (700) ausgelesenen Kettenkodes in das Koderegister (902) und Ansteuern des dritten Mittels (910) zur Eingabe eines weiteren ankommenden Datenzeichens in das Zeichenregister (900); und
auf das erste Vergleichsmittel (806) reagierende sechste Mittel (1001, 1006, 1002, 1008, 1108, 1101), die aktiv sind, wenn eine aus dem Kettentabellenspeichermittel (700) ausgelesene Teilblockzählung nicht gleich der Zählung im Teilblockzähler (812) ist, zum Speichern des Inhalts des Teilblockzählers (812), Koderegisters (902) und Kettenkodezählers (808) im Kettentabellenspeichermittel (700) als Teilblockzählung, Präfixkode beziehungsweise Kettenkode, wobei das sechste Mittel Mittel zum Rücksetzen des Längenzählers (922), Inkrementieren des Kettenkodezählers (808) und Übertragen des Inhalts des Zeichenregisters (900) in das Koderegister (902), wenn die aus dem Kettentabellenspeichermittel (700) ausgelesene Teilblockzählung nicht gleich der Zählung im Teilblockzähler (812) ist, enthält.
4. Einrichtung nach Anspruch 3, weiterhin mit einem Zerhackerpuffer (104) zum Zerhacken von komprimierten Daten in Byte;
einem mit dem Koderegister und Zerhackerpuffer verbundenen Bus (933) zum Übertragen von komprimierten Daten zum Zerhackerpuffer; und weiteren auf das erste Vergleichsmittel (806) reagierenden Mitteln (1006, 1002) zum Übertragen eines Signals zum Zerhackerpuffer, das anzeigt, daß auf dem Bus komprimierte Daten vorhanden sind, wenn eine aus dem Kettentabellenspeichermittel (700) ausgelesene Teilblockzählung nicht gleich der Zählung im Teilblockzähler (812) ist.
5. Einrichtung nach Anspruch 3, weiterhin mit einem vom Längenzähler (922) adressierten LIFO-Speicher (912);
einem auf ein ankommendes Wort komprimierter Daten reagierenden siebten Mittel (820) zum Erzeugen eines ersten Signals, wenn der Wert des ankommenden Worts größer als ein vorbestimmter Wert ist;
achten Mitteln (1316, 1318) 802) zum Eingeben jedes ankommenden Wortes komprimierter Daten in ein Adreßregister (804) der Adressenhaschmittel (800b, 802) 804) zum Adressieren des Kettentabellenspeichermittels (700) und Auslesen von Werten aus einem Präfixkodeteil und einem Kettenkodeteil, wenn die Zählung im Längenzähler (922) null beträgt; und
Dekomprimierungsfolgesteuermitteln (1000-1004, 904, 802, 910, 918, 1110, 1116, 1111) einschließlich
auf das erste Signal reagierende erste Steuermittel (1000, 1002, 904, 802, 910, 918, 1110) zum Übertragen des Inhalts des Adreßregisters (804) zum Koderegister (902), Eingeben der aus dem Präfixkodeteil und Kettenkodeteil ausgelesenen Werte in das Adreßregister (804) beziehungsweise Zeichenregister (900), Übertragen des Inhalts des Zeichenregisters (900) in den LIFO-Speicher (912) und Inkrementieren des Längenzählers (922),
wobei die Dekomprimierungsfolgesteuermittel (1000-1004, 904, 802, 910, 918> 1110, 1116, 1111) zweite Steuermittel (1003, 1004, 910) 802) enthalten, die nach ersten Steuermitteln (1000, 1002) 904, 802, 910, 918, 1110) aktiviert werden können und auf das siebte Mittel (820) reagieren, zum Übertragen des Inhalts des Adreßregisters (804) zum Zeichenregister (900), Übertragen des Inhalts des Kodezählers (808) zum Adreßregister (804) zum Adressieren des Kettentabellenspeichermittels (700) zum Einschreiben des Inhalts des Zeichenregisters (900) in den adressierten Kettenkodeteil, und Inkrementieren des Kodezählers (808),
wobei die Dekomprimierungsfolgesteuermittel (1000-1004, 904, 802) 910, 918, 1116, 1111, 1110) dritte Steuermittel (1002, 1000, 1116, 1111, 910, 802> enthalten, die nach zweiten Steuermitteln (1003, 1004, 910) 802) aktiviert werden können, zum Erniedrigen des Längenzählers (922) und Übertragen des Inhalts einer Stelle im Speicher (912) zum Zeichenregister (900).
6. Einrichtung nach Anspruch 5, weiterhin mit einem Kanalzerhackermittel (100) zum Aufnehmen von dekomprimierten Daten aus dem Zeichenregister (900).
7. Einrichtung nach Anspruch 5 oder 6, wobei die ersten Steuermittel (1000, 1002, 904) 802, 910, 918, 1110) Mittel enthalten, die bei Abwesenheit des ersten Signals aktiviert werden können, zum Übertragen des Inhalts des Adreßregisters (804) zum Zeichenregister (900) und Koderegister (902), Übertragen des Inhalts des Kettenkodezählers (808) zum Adreßregister (804) zum Einschreiben des Inhalts des Zeichenregisters (900) in das Kettentabellenspeichermittel (700) und Inkrementieren des Kettenkodezählers (808).
8. Einrichtung nach Anspruch 7, wobei zweite Steuermittel (1003, 1004> 910, 802) auf das erste Signal reagierende Mittel zum Einschreiben des Inhalts des Zeichenregisters (900) in den LIFO-Speicher (912), Inkrementieren des Längenzählers (922) und Auslesen eines Präfixkodes und Zusatzzeichens aus dem Kettentabellenspeichermittel (700) zum Adreßregister (804) beziehungsweise Zeichenregister (900) enthält.
DE68924138T 1988-06-03 1989-06-02 Daten-kompressions/dekompressionsanordnung. Expired - Fee Related DE68924138T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/202,733 US4899147A (en) 1988-06-03 1988-06-03 Data compression/decompression apparatus with throttle, start-up and backward read controls
PCT/US1989/002365 WO1989012363A2 (en) 1988-06-03 1989-06-02 Data compression/decompression apparatus

Publications (2)

Publication Number Publication Date
DE68924138D1 DE68924138D1 (de) 1995-10-12
DE68924138T2 true DE68924138T2 (de) 1996-02-15

Family

ID=22751039

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68924138T Expired - Fee Related DE68924138T2 (de) 1988-06-03 1989-06-02 Daten-kompressions/dekompressionsanordnung.

Country Status (6)

Country Link
US (1) US4899147A (de)
EP (1) EP0374238B1 (de)
JP (1) JP2851665B2 (de)
AT (1) ATE127640T1 (de)
DE (1) DE68924138T2 (de)
WO (1) WO1989012363A2 (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2624299B2 (ja) * 1988-06-09 1997-06-25 株式会社日立製作所 加速演算回路
US5146221A (en) * 1989-01-13 1992-09-08 Stac, Inc. Data compression apparatus and method
US5532694A (en) * 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
US4929946A (en) * 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
US5237701A (en) * 1989-03-31 1993-08-17 Ampex Systems Corporation Data unpacker using a pack ratio control signal for unpacked parallel fixed m-bit width into parallel variable n-bit width word
US5097261A (en) * 1989-11-22 1992-03-17 International Business Machines Corporation Data compression for recording on a record medium
US5226156A (en) * 1989-11-22 1993-07-06 International Business Machines Corporation Control and sequencing of data through multiple parallel processing devices
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
US5167034A (en) * 1990-06-18 1992-11-24 International Business Machines Corporation Data integrity for compaction devices
DE69123660T2 (de) * 1990-08-13 1997-04-17 Fujitsu Ltd., Kawasaki, Kanagawa Datenkompressionsmethode und Gerät
JPH0495878A (ja) * 1990-08-14 1992-03-27 Sony Corp ピーク値検出回路
EP0557452A4 (en) * 1990-11-13 1993-12-22 Wangtek, Inc. System and method of controlling data transfer rate in a magnetic tape drive
US5844737A (en) * 1990-11-14 1998-12-01 Canon Kabushiki Kaisha Reproducing apparatus with different reproduction data for normal and search modes which scans two areas of a split tape recording medium in opposite directions
US5131016A (en) * 1991-01-09 1992-07-14 International Business Machines Corporation Communications network data compression control system and method
CA2065578C (en) * 1991-04-22 1999-02-23 David W. Carr Packet-based data compression method
US5175543A (en) * 1991-09-25 1992-12-29 Hewlett-Packard Company Dictionary reset performance enhancement for data compression applications
CA2077271C (en) * 1991-12-13 1998-07-28 David J. Craft Method and apparatus for compressing data
US5371499A (en) * 1992-02-28 1994-12-06 Intersecting Concepts, Inc. Data compression using hashing
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US5323155A (en) * 1992-12-04 1994-06-21 International Business Machines Corporation Semi-static data compression/expansion method
US5563595A (en) * 1993-12-23 1996-10-08 International Business Machines Corporation Method and apparatus for compressing data
US5889818A (en) * 1994-06-24 1999-03-30 Norand Corporation Adaptive display refresh and data compression in a radio frequency environment
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
JP3302229B2 (ja) 1994-09-20 2002-07-15 株式会社リコー 符号化方法、符号化/復号方法及び復号方法
US5881176A (en) 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US6229927B1 (en) 1994-09-21 2001-05-08 Ricoh Company, Ltd. Reversible embedded wavelet system implementation
US6549666B1 (en) 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US6873734B1 (en) 1994-09-21 2005-03-29 Ricoh Company Ltd Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5778255A (en) * 1995-10-10 1998-07-07 International Business Machines Corporation Method and system in a data processing system for decompressing multiple compressed bytes in a single machine cycle
US5805086A (en) * 1995-10-10 1998-09-08 International Business Machines Corporation Method and system for compressing data that facilitates high-speed data decompression
US6396420B1 (en) * 1999-02-26 2002-05-28 Autodesk, Inc. Delta compression of floating point coordinate data
US6567377B1 (en) * 1999-03-18 2003-05-20 3Com Corporation High performance load balancing of outbound internet protocol traffic over multiple network interface cards
IT1308456B1 (it) * 1999-04-26 2001-12-17 Olivetti Lexikon Spa Dispositivo per comprimere/decomprimere stringhe di bit
US6373409B1 (en) * 2000-06-19 2002-04-16 International Business Machines Corporation Method and computer program product for implementing text conversion table compression
US6792423B1 (en) * 2000-11-28 2004-09-14 International Business Machines Corporation Hybrid longest prefix match and fixed match searches
US6898323B2 (en) 2001-02-15 2005-05-24 Ricoh Company, Ltd. Memory usage scheme for performing wavelet processing
US7006697B1 (en) 2001-03-30 2006-02-28 Ricoh Co., Ltd. Parallel block MQ arithmetic image compression of wavelet transform coefficients
US6895120B2 (en) * 2001-03-30 2005-05-17 Ricoh Co., Ltd. 5,3 wavelet filter having three high pair and low pair filter elements with two pairs of cascaded delays
US6859563B2 (en) 2001-03-30 2005-02-22 Ricoh Co., Ltd. Method and apparatus for decoding information using late contexts
US7062101B2 (en) * 2001-03-30 2006-06-13 Ricoh Co., Ltd. Method and apparatus for storing bitplanes of coefficients in a reduced size memory
US6950558B2 (en) * 2001-03-30 2005-09-27 Ricoh Co., Ltd. Method and apparatus for block sequential processing
US7581027B2 (en) * 2001-06-27 2009-08-25 Ricoh Co., Ltd. JPEG 2000 for efficent imaging in a client/server environment
US7280252B1 (en) 2001-12-19 2007-10-09 Ricoh Co., Ltd. Error diffusion of multiresolutional representations
US7095907B1 (en) 2002-01-10 2006-08-22 Ricoh Co., Ltd. Content and display device dependent creation of smaller representation of images
US7120305B2 (en) * 2002-04-16 2006-10-10 Ricoh, Co., Ltd. Adaptive nonlinear image enlargement using wavelet transform coefficients
US20100095376A1 (en) * 2008-03-07 2010-04-15 Rodriguez Tony F Software watermarking

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3541529A (en) * 1969-09-22 1970-11-17 Ibm Replacement system
JPS5178945A (ja) * 1974-12-30 1976-07-09 Nippon Telegraph & Telephone Batsufuamemorikakikomihoshiki
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
JPS59231683A (ja) * 1983-06-01 1984-12-26 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン データ圧縮方法
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4796003A (en) * 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
US4598411A (en) * 1984-07-17 1986-07-01 Allied Corporation On-the-fly data compression system
US4791403A (en) * 1985-12-04 1988-12-13 International Business Machines Corporation Log encoder/decorder system
US4730348A (en) * 1986-09-19 1988-03-08 Adaptive Computer Technologies Adaptive data compression system

Also Published As

Publication number Publication date
DE68924138D1 (de) 1995-10-12
WO1989012363A3 (en) 1990-04-19
JPH03500718A (ja) 1991-02-14
ATE127640T1 (de) 1995-09-15
JP2851665B2 (ja) 1999-01-27
US4899147A (en) 1990-02-06
EP0374238A1 (de) 1990-06-27
WO1989012363A2 (en) 1989-12-14
EP0374238B1 (de) 1995-09-06

Similar Documents

Publication Publication Date Title
DE68924138T2 (de) Daten-kompressions/dekompressionsanordnung.
DE69023329T2 (de) Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE69704362T2 (de) Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung
DE69318064T2 (de) Verfahren und Vorrichtung zur Verwaltung von mehreren Wörterbüchern zur Datenkomprimierung mit Inhaltsadressierung
DE68925798T2 (de) Datenverdichtung
DE68907812T2 (de) Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form.
DE69518022T2 (de) Vorrichtung und Verfahren für Lempel Ziv Datenkompression mit Verwaltung von mehreren Wörterbüchern in Assoziativspeichern
DE2205422C2 (de) Verfahren und Einrichtung zur Dekompression verdichteter Daten
DE69118250T2 (de) Zugriff für komprimierte daten
EP0230437B1 (de) Verfahren zum komprimieren und dekomprimieren mehrerer strukturverwandter datenfolgen sowie einrichtungen zur durchführung des verfahrens
DE69424229T2 (de) Datenkomprimierungsvorrichtung
DE3689285T2 (de) CRC-Rechenmaschinen.
DE69117592T2 (de) Datenspeicherung auf magnetband
DE69508796T2 (de) Lzw datenkomprimierung mit einem assoziativspeicer
EP1588493A2 (de) Blockdatenkompressionssystem, bestehend aus einer kompressionseinrichtung und einer dekompressionseinrichtung, und verfahren zur schnellen blockdatenkompression mit multi-byte-suche
DE1499225C3 (de) Schaltungsanordnung zur Reduzierung von Datenwortlängen
DE2139731A1 (de) Anordnung und Verfahren zur Code Um Setzung mit einem Assoziativ Speicher
CH656729A5 (de) Schnittstellenschaltungsanordnung zur verbindung eines prozessors mit einem nachrichtenkanal.
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE2801611A1 (de) Verfahren und anordnung zum adressieren und speichern von daten in speichern mit wahlfreiem zugriff
DE3545125A1 (de) Zeichenfolgen-komparator
DE3030255A1 (de) Verfahren zur uebermittlung von woertern und nachrichtenuebertragungssystem zu seiner durchfuehrung
DE69032828T2 (de) Sortierbeschleuniger, der einen in beide Richtungen arbeitenden Sortierer als Mischer verwendet
DE69820230T2 (de) N-weg verarbeitung von bitketten in einer datenflussarchitektur

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee