DE2208664A1 - Method for decoding a prefix-free compression code of variable length - Google Patents

Method for decoding a prefix-free compression code of variable length

Info

Publication number
DE2208664A1
DE2208664A1 DE19722208664 DE2208664A DE2208664A1 DE 2208664 A1 DE2208664 A1 DE 2208664A1 DE 19722208664 DE19722208664 DE 19722208664 DE 2208664 A DE2208664 A DE 2208664A DE 2208664 A1 DE2208664 A1 DE 2208664A1
Authority
DE
Germany
Prior art keywords
decoding
address
character
decoding table
decoded
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.)
Pending
Application number
DE19722208664
Other languages
German (de)
Inventor
Louis Szu-Heng Mohegan Lake; Mommens Jacques Henri Briarcliff Manor; Raviv Josef Ossining; N.Y. Loh (V.St.A.)
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2208664A1 publication Critical patent/DE2208664A1/en
Pending 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4025Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code constant length to or from Morse code conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

Böblingen, den 15. Februar 1972 ne-skBoeblingen, February 15, 1972 ne-sk

Anmelderin: International Business MachinesApplicant: International Business Machines

Corporation, Armonk, N.Y. 10 504Corporation, Armonk, N.Y. 10 504

Amt!.Aktenzeichen: Neuanmeldung Aktenz.d.Anmelderin: Docket YO 970 070Office!. File number: New registration File number of the applicant: Docket YO 970 070

Verfahren zur Decodierung eines Vorsatzfreien Verdichtungscödes veränderlicher LangeMethod for decoding a prefix-free compression code of variable length

Die Erfindung bezieht sich auf das Gebiet der Datenverdichtung und insbesondere auf ein Verfahren zur Decodierung von Daten, die unter Verwendung eines vorsatzfreien Codes veränderlicher Länge codiert wurden.The invention relates to the field of data compression and in particular to a method for decoding data using an unprecedented code variable length were coded.

In modernen elektronischen Datenverarbeitungsanlagen werden die Daten oder Zeichen gewöhnlich durch Codeworte oder eine Reihe von binären Bits dargestellt. Bei Codes fester Länge wird jedes Zeichen durch die gleiche Anzahl von Bits dargestellt, die unterschiedliche erkennbare Muster bilden= Wenn beispielsweise Bytes aus acht binären Bits zur Darstellung der Zeichen in einer Rechenanlage verwendet werden, können bis zu 256 verschiedene Worte gebildet werden. Seit langem hat man erkannt, daß, wenn in einem Datensatz bestimmte Zeichen häufiger, vorkommen als andere, Codes veränderlicher Länge benutzt werden können,, wobei den häufiger auftretenden Zeichen die kürzeren Codeworte zugeordnet werdenIn modern electronic data processing systems, the data or characters are usually represented by code words or a Series of binary bits represented. For codes of fixed length each character is represented by the same number of bits forming different recognizable patterns = For example, if bytes are made up of eight binary bits to represent of the characters are used in a computer system, up to 256 different words can be formed. Since It has long been recognized that if certain characters occur more frequently than others in a data record, codes variable length can be used, whereby the more frequently occurring characters are assigned the shorter code words

"0 070 209836/11 U"0 070 209836/11 U

und den weniger häufigen Zeichen die längeren Codeworte. Der Morse-Code und der Huffman-Code sind Beispiele für Codes veränderlicher Länge. Wenn ein Code veränderlicher Länge benutzt wird, der streng auf der Wahrscheinlichkeit des Auftretens eines Zeichens zu einem gegebenen Zeitpunkt in einem Datensatz aufgebaut ist, so handelt es sich um ein Codierverfahren, das allgemein als unabhängiges Codierverfahren bezeichnet wird. Ein abhängiger Code ist einer, in dem die Wahrscheinlichkeit des Auftretens eines Zeichens abhängig ist von der Identität eines voraufgehenden Zeichens,and the less frequent characters the longer code words. The Morse Code and the Huffman Code are examples of Variable length codes. If a variable length code is used, it is strictly based on probability of the occurrence of a character at a given point in time in a data record, it is a coding method commonly referred to as an independent coding method. A dependent code is one in which the probability of a character appearing depends on the identity of a preceding character,

Das Codieren von Daten für ein Datenverdichtungssystem erfolgt verhältnismäßig direkt, da die Codiertabelle lediglich so anzuordnen ist, daß die Codewörter veränderlicher Länge sich an solchen Adressen befinden, die direkt dem zu codierenden Zeichen zugeordnet sind. In diesem Falle haben alle die ursprünglichen Codewörter eine feste Länge und für jedes Codewort ist eine Adresse vorhanden, zu der ein direkter Zugriff erfolgen kann und es ist nur notwendig, die Codeworte veränderlicher Länge für jedes Zeichen in dem entsprechenden Speicherplatz zu speichern. Dies gilt sowohl für ein unabhängiges als auch ein abhängiges Codiersystem. Für das Decodieren von Daten, die unter Verwendung von Codewörtern veränderlicher Länge codiert wurden, ist jedoch der Speieherzugriff komplizierter.The coding of data for a data compression system is relatively straightforward, since the coding table is only is to be arranged in such a way that the code words of variable length are located at those addresses which correspond directly to the Characters are assigned. In this case, all of the original code words have a fixed length and for each Codeword is an address that can be accessed directly and it is only necessary to enter the codewords variable length for each character in the corresponding memory location. This is true of both for an independent as well as a dependent coding system. For decoding data using code words variable length coded, however, memory access is more complicated.

Es sei angenommen, daß das längste Codewort eines Codes veränderlicher Länge aus 9 Bits besteht. Dann beträgt der notwendige Speicherplatz zur Speicherung einer Tabelle zur De-It is assumed that the longest code word of a code is variable Length consists of 9 bits. Then the space required to store a table for de-

9 codierung eines solchen Codes in einem Schritt 2 oder 512 Speicherzellen. In einem praktischen Beispiel wäre wahrscheinlich eine wesentlich größere maximale Länge eines Satzes von z.B. 256 Zeichen erforderlich. Es sei bemerkt, daß bei abhängiger Codierung die oben genannten Speicheranforderungen mit der Anzahl der verwendeten Codesätze9 encoding of such a code in one step 2 or 512 memory cells. In a practical example it would be likely a significantly larger maximum length of a record of e.g. 256 characters is required. It should be noted that with dependent coding the memory requirements mentioned above with the number of code sets used

209836/1 1 1 4209836/1 1 1 4

YO 9 70 070YO 9 70 070

zu multiplizieren sind. Die Bedeutung dieser Tatsache besteht darin, daß,wenn man wie vorher als maximale Länge eines Codewortes 9 Bits annimmt, sehr viel Speicherplatz verschwendet wird. Wenn z.B. ein aus drei Bits bestehendes Codewort veränderlicher Länge in einem Schritt durch eine Tabellensuchoperatxon decodiert wird, müssen diese drei Bits und die unmittelbar darauffolgenden sechs Bits analysiert und als Adresse für den Speicher verwendet werden. Daher würden diese drei Bits bei einem gegebenen zu decodierenden Zeichen stets die gleichen sein, jedoch die sechs anderen können variieren. Daher müssten für jedes aus drei Bits bestehendes zu decodierendes Codewort 2 Speicherzellen vorhanden sein, in denen die gleichen drei Anfangsbits stets das richtige Codewort fester Länge oder Zeichen als Ausgangsinformation erzeugen. Bei abhängiger Codierung wird diese Verschwendung von Speicherplatz äußerst groß. Es wird daher ein wirksameres Verfahren zur Analyse eines Eingangsstromes von Daten, die aus Codewörtern veränderlicher Länge bestehen, und ein Verfahren zur Organisation der DecodiertabeIlen benötigt, um den verfügbaren Speicherplatz wirksamer auszunutzen.are to be multiplied. The importance of this fact is that if one as before as maximum length of a code word assumes 9 bits, a lot of memory space is wasted. For example, if a three-bit Code word of variable length is decoded in one step by a table search operation, these three bits and the immediately following six bits are analyzed and used as the address for the memory. Therefore these three bits would always be the same for a given character to be decoded, but the six others can vary. Therefore, 2 memory cells would have to be used for each code word to be decoded consisting of three bits exist in which the same three initial bits are always the correct fixed-length codeword or characters as Generate output information. With dependent coding, this waste of space becomes extremely large. It therefore becomes a more effective method of analyzing an input stream of data composed of variable code words Length exist, and a method of organizing the decoding tables needed to make up the available space to use more effectively.

Der Erfindung liegt daher die Aufgabe zugrunde, ein solches wirksameres Verfahren anzugeben.The invention is therefore based on the object of specifying such a more effective method.

Das Verfahren zur Decodierung vorsatzfreier Codewörter veränderlicher Länge in Codewörter fester Länge, das unter Benutzung einer elektronischen Datenverarbeitungsanlage durchgeführt wird, deren Eingangsregister die codierten Daten als kontinuierliche Folge binärer Bits ohne Anzeige für Beginn oder Ende der einzelnen Zeichen zugeführt werden und deren Speicher eine Decodiertabelle enthält, ist dadurch gekennzeichnet, daß entsprechend dem verwendeten vorsatzfreien Code veränderlicher Länge eine Anzahl von aufeinanderfolgenden Bitspeicherstellen des Eingangsregisters aus-The method of decoding unprecedented variable codewords Length in codewords of fixed length, which is carried out using an electronic data processing system whose input register contains the encoded data as a continuous sequence of binary bits without any indication for Beginning or end of the individual characters are supplied and their memory contains a decoding table, is thereby characterized in that, according to the variable length code used, a number of consecutive Bit storage locations of the input register

Docket YO 970 070Docket YO 970 070

209836/11U209836 / 11U

gewählt wird, daß deren Inhalt geprüft wird und daß jede der aufeinanderfolgenden, geprüften Bitgruppen des Eingangsdatensatzes dazu verwendet wird, um nacheinander verschiedene Abschnitte der Decodiertabelle zu adressieren.it is selected that their content is checked and that each of the successive, checked bit groups of the input data set is used to successively address different sections of the decoding table.

Nach einem weiteren Merkmal der Erfindung werden die aufeinanderfolgenden Bitgruppen als Adreßerhöhungsangaben benutzt, um aufeinanderfolgende Adressen der Decodiertabelle zu adressieren, und wird die Adreßerhöhungsangabe mit einer aus der Decodiertabelle erhaltenen weiteren Adreßerhöhungsangabe kombiniert, wenn der unmittelbar vorhergehende Zugriff zur Decodiertabelle für die unmittelbar voraufgehende Bitgruppe des Eingangsdatensatzes zu keiner erfolgreichen Decodierung führte.According to a further feature of the invention, the successive Bit groups used as address increment specifications in order to address successive addresses in the decoding table, and the increase in address information is combined with a further increase in address information obtained from the decoding table, if the immediately preceding access to the decoding table for the immediately preceding bit group of the input data record did not lead to a successful decoding.

209836/111*209836/111 *

Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:An embodiment of the invention is shown in the drawings and will be described in more detail below. Show it:

Fig.1 in einem allgemeinen Ablaufdiagramm die wesentlichen Merkmale des vorliegenden Decodierverfahrens, 1 shows the essentials in a general flow chart Features of the present decoding method,

Fig.2 ein etwas genaueres Ablaufdiagramm als Fig.l,FIG. 2 is a somewhat more precise flow chart than FIG.

Fig.3 die Darstellung der wesentlichen Merkmale des Verfahrens für den Speicherzugriff,3 shows the main features of the method for memory access,

Fig. 4 eine ZuOrdnungstabe-lle für den im Beispiel verwendeten Codesatz,4 shows an allocation table for the in the example code set used,

Fig.5 eine Referenztabelle mit den ursprünglichenFig.5 is a reference table with the original

Zeichenlagen in den verschiedenen Gruppen· vor der endgültigen Zusammenfassung zu einem Codesatz, Character positions in the various groups the final summary of a code set,

Fig.6A eine GruppenmitgliedschafttabelIe, die dieFigure 6A is a group membership table showing the

Gruppe angibt, zu welcher jeder Zustand gehört,Group indicates to which each state belongs,

Fig.6B eine, von der Mitgliedschafttabelle der Fig.6A her adressierbare Decodiertabelle,Figure 6B is one of the membership table of Figure 6A addressable decoding table,

Fig.6C eine weitere Decodiertabelle, die auf die primäre Decodiertabelle DT für den jeweiligen Codesatz hinweist und außerdem die Fensteradressierung der Eingabedatenfolge steuert,6C shows a further decoding table which refers to the primary decoding table DT for the respective Code set and also controls the window addressing of the input data sequence,

Fig.7 eine aufgrund der ZuordnungstabeHe aufgebaute Decodiertabelle und7 shows a built up on the basis of the assignment table Decoding table and

YO 970 070YO 970 070

209836/1 1 1 4209836/1 1 1 4

Fig.8 in einem Diagramm die Verwendung des vorliegenden Fensterkonzeptes in einem Beispiel zur Decodierung eines kontinuierlichen Stromes vorsatzfreier Codes mit veränderlicher Länge.Fig. 8 in a diagram the use of the present Window concept in an example for decoding a continuous stream unprecedented codes with variable length.

Für das Verfahren zur Decodierung von Daten, die in vorsatzfreie Codewörter veränderlicher Länge codiert wurden, ist charakteristisch, daß die codierten Daten als eine kontinuierliche Folge binärer Bits empfangen werden, die keine Anzeige für das Ende eines Zeichens oder den Anfang eines anderen aufweisen. Ein erstes Fenster in dem Eingangsregister wird geprüft und die Bits, die in diesem Fenster erscheinen, werden dazu benutzt, um direkt eine Adresse für eine Decodiertabelle zu erhalten. Wenn die im ersten Fenster erscheinenden Daten direkt decodierbar sind, liefert die Decodiertabelle ein Ausgangssignal, das direkt einem Ausgangszeichen zugeordnet ist, das dann dem Ausgang des Systems zugeführt wird. Wenn die erste Reihe von Bits nicht direkt decodierbar ist, wird ein zusätzliches Fenster im Eingangsregister geprüft und eine weitere Adresse für die Decodiertabelle wird davon abgeleitet, indem ein an der ersten Adresse gespeichertes Indexwort benutzt wird. Wenn aufgrund der Bits des zusätzlichen Fensters eine Decodierung möglich ist, wird die Zeichendarstellung wieder dazu benutzt, um ein Ausgangssignal abzuleiten oder es werden weitere Fenster des Eingangsregisters geprüft. Sobald als eine erfolgreiche Decodierung möglich ist, wird eine Anzeige der Anzahl der Bits des Eingangsregisters, die für die Decodierung verwendet wurde, der Steuerschaltung für das Eingangsregister zugeführt, worauf die decodierten Bits aus diesem Register herausgeschoben werden.For the method of decoding data that has been encoded in unprecedented code words of variable length, It is characteristic that the encoded data is received as a continuous sequence of binary bits which have no indication of the end of one character or the beginning of another. A first window in the input register is checked and the bits that are in this window are used to get an address for a decoding table directly. If the in the first window appearing data are directly decodable, the decoding table supplies an output signal which is directly an output character is assigned, which is then fed to the output of the system. If the first set of bits is not direct is decodable, an additional window is checked in the input register and another address for the decoding table is derived from this by using an index word stored at the first address. If due the bits of the additional window can be decoded, the character representation is used again to to derive an output signal or further windows of the input register are checked. As soon as a successful one When decoding is possible, there will be an indication of the number of bits of the input register used for decoding was fed to the control circuit for the input register, whereupon the decoded bits from this register be pushed out.

YO97007° 209836/11 U YO97007 ° 209836/11 U

Wenn eine abhängige Codierung benutzt wurde, ist es notwendig, eine Referenz-Tabelle zu benutzen, In diesem Fall muß das System mit einer Anzeige für eine Gruppe und einem Codesatz versehen werden, bevor irgendein Zeichen codiert werden kann. Die Anfangsbedingungen werden durch den Bediener vorgegeben und nachfolgend wird während der Decodieroperation die Information bezüglich der Gruppe und des Codesatzes von dem vorher decodierten Byte geliefert. Der Bediener startet lediglich die Decodieroperation, da zu Beginn kein vorhergehendes Zeichen vorhanden ist.If dependent coding has been used, it is necessary to use a reference table, in this case the system must be provided with an indication of a group and a code set before any character is encoded can be. The initial conditions are set by the operator and subsequently is made during the decoding operation the group and code set information is provided by the previously decoded byte. The operator only starts the decoding operation because at the beginning there is no preceding character.

Der verwendete Ausdruck Fenster besagt, daß nur ein Zugriff auf bestimmte gewünschte Teile eines Registers erfolgt. Die übliche Art, dies zu erreichen, ist alle Bits außer den gewünschten zu maskieren.The expression window used means that only certain desired parts of a register are accessed. the common way of doing this is to use all but the desired bits to mask.

Wenn eine erfolgreiche Decodierung möglich ist, wird unter Benutzung der Decodiertabelle ein Ausgangssignal erzeugt. Dieses Ausgangssignal wird kombiniert mit einem Hinweis der Gruppenanzeige, die richtige Adresse in der Referenztabelle wird erhalten, das Zeichen wird aus ihr ausgelesen und in das Ausgangsregister übertragen.If successful decoding is possible, an output signal is generated using the decoding table. This output signal is combined with an indication of the group display, the correct address in the reference table is received, the character is read from it and transferred to the output register.

Die Grundgedanken des vorliegenden Decodierverfahrens können bei unabhängiger oder abhängiger Codierung angewandt werden. Bei unabhängiger Codierung sind bedeutend kleinere Decodiertabellen erforderlich und es sind keine Referenz-tabellen oder Gruppenmitgliedschaft-Tabellen erforderlich.The basic ideas of the present decoding method can be applied to independent or dependent coding. With independent coding, significantly smaller decoding tables are required and there are no reference tables or Group membership tables required.

Die Decodiertabellen müssen so aufgestellt und im Speicher gespeichert werden, daß, wenn ein Codewort veränderlicher Länge den Speicheradressierschaltungen zugeleitet wird, diese eine Adresse ansteuern, die ein Hineingehen in die Decodier-Tabelle an dem Punkt ermöglicht, wo sich die identifizierende Information für das Zeichen, das zu decodieren ist, befindet.The decoding tables must be drawn up and stored in memory in this way that when a variable length code word is supplied to the memory addressing circuits, this one Address the address that allows entry into the decoding table at the point where the identifying information for the character to be decoded is.

YO97OO7° 209836/11U YO97OO7 ° 209836 / 11U

Sowohl bei unabhängiger als auch bei abhängiger Codierung müssen die in der Decodier-Tabelle gespeicherten Größen eine Anzeige der Länge des Codewortes veränderlicher Länge, das gerade decodiert wird, einschließen, so daß nur das Codewort aufgegeben wird und bei unabhängiger Codierung die Bitkonfiguration des Zeichens fester Länge für das Auslesen verfügbar ist. Im Falle abhängiger Codierung gibt, wie aus der nachfolgenden Beschreibung hervorgeht, das in der primären Decodiertabelle gespeicherte Zeichen oder Element nur einen Hinweis auf das Zeichen fester Länge anstatt dieses selbst. Dieses Hinweissignal wird der geeigneten Referenz-Tabelle zugeführt, die zusammen mit der Gruppeninformation benutzt wird, um das Zeichen fester Länge auszulesen.Both in the case of independent and dependent coding, the values stored in the decoding table must include an indication of the length of the variable length codeword being decoded, so that only the codeword and with independent coding the bit configuration of the character of fixed length for reading out is available. In the case of dependent coding, as can be seen from the following description, there is the one in the primary Decoding table stored character or element only indicates the fixed length character instead of this itself. This notification signal is fed to the appropriate reference table, which together with the group information is used to read the fixed-length character.

Die eine wesentliche Bedingung des vorliegenden Decodierverfahrens besteht darin, daß das Codewort veränderlicher Länge vorsatzfrei sein muß. D.h. irgendein gegebenes Codewort darf nicht das gleiche Bitmuster aufweisen wie man es in der gleichen Zahl von Bits am Anfang eines längeren Codewortes antrifft. Dies gilt unabhängig von der Länge des gerade betrachteten Codewortes veränderlicher Länge. Der Huffman-Code ist ein Code veränderlicher Länge, der diese Eigenschaften besitzt. Für eine vollständige Beschreibung der im Zusammenhang mit der Erfindung erwähnten Codierverfahren sei verwiesen auf die Bücher "Information Theory and Coding" von Norman Abramson, McGraw-Hill und "Information Theory and Reliable Communication" von Robert G. Gallager, John Wiley and Sons,Inc.The one essential condition of the present decoding method consists in the fact that the variable length code word must have no prefix. I.e. any given code word is allowed do not have the same bit pattern as one would have in the same number of bits at the beginning of a longer code word encountered. This applies regardless of the length of the code word of variable length under consideration. The Huffman Code is a variable length code that has these properties. For a full description of the related Coding method mentioned with the invention is referred to the books "Information Theory and Coding" by Norman Abramson, McGraw-Hill and "Information Theory and Reliable Communication" by Robert G. Gallager, John Wiley and Sons, Inc.

Das Decodierverfahren der vorliegenden Erfindung umfaßt die folgenden allgemeinen Schritte. Unter der Annahme, daß der Anfangsabschnitt eines Eingangsstromes von binären zu decodierenden Daten sich in dem Eingangsregister befindet, besteht der erste Schritt darin, die ersten m-Bits durch ein erstes Fenster zu betrachten. Diese m-binären Bits können entweder direkt oder zusammen mit einem Index benutzt werden, um eineThe decoding method of the present invention comprises the following general steps. Assuming that the The initial portion of an input stream of binary data to be decoded is located in the input register the first step is to look at the first m-bits through a first window. These m-binary bits can be either can be used directly or in conjunction with an index to create a

YO 9 70 070 · 209 83B / 1 1 1YO 9 70 070 209 83B / 1 1 1

erste Eingangsstelle für die .decodierte Welle zu erhalten. Sodann wird die Decodiertabelle an der angegebenen Adresse adressiert und der Inhalt der adressierten Speicherzelle geprüft. An diesem Punkt wird eine Feststellung gemacht. Entweder ist es möglich, die ersten m-Bits direkt zu decodieren (was aus dem Inhalt der Tabelle feststellbar ist) oder eine Adresserhöhung oder ein Hinweissignal wird der Decodiertabelle entnommen, um eine zweite Eingangsstelle für die Decodiertabelle zu bekommen. Um jedoch die vollständige Adresse für die zweite Eingangsstelle zu erhalten, muß das nächste Fenster im Eingangsregister geprüft werden und das binäre Muster, das in diesem Fenster erscheint, wird zusammen mit dem eben erhaltenen Hinweissignal benutzt, um an einer anderen Stelle in die Tabelle zu gehen. Wenn festgestellt wird, daß ein erfolgreiches Decodieren möglich ist, werden zwei Informationen der Decodiertabelle entnommen. Die erste ist eine Anzeige der Anzahl von Bits, die das Zeichen bilden, das gerade im Eingangsregister sich befindet, und die es erlaubt, den Inhalt des Eingangsregisters so" zu verschieben, daß das nächste Zeichen decodiert werden kann. Die zweite Information ist ein Binärzeichen, das der Decodiertabelle entnommen wird und das decodierte Zeichen angibt. Bei einem unabhängigen Decodierverfahren kann die Zeichendarstellung das decodierte Zeichen fester Länge sein oder es kann dazu benutzt werden, das tatsähliche Zeichen einer weiteren Tabelle zu entnehmen. Bei einem abhängigen Decodierverfahren muß das der Decodiertabelle entnommene Zeichen dazu verwendet werden, um das richtige Zeichen aus einer Referenz-Tabelle zu gewinnen. Die richtige Adresse in der Referenz-Tabelle kann in üblicher Weise dadurch erzeugt werden, daß das in der Decodier-Tabelle gespeicherte Binärmuster zusammen mit einer Information über die Gruppe und den Codesatz benutzt wird, die aufgrund der Decodierung des unmittelbar vorhergehenden Zeichens gewonnen wird.first entry point for the decoded wave. Then the decoding table is addressed at the specified address and the content of the addressed memory cell checked. At this point a determination is made. It is either possible to decode the first m-bits directly (which can be determined from the content of the table) or an increase in the address or a notification signal is the Decoding table taken to a second entry point for getting the decoding table. However, to get the full To get the address for the second entry point, the next window in the entry register must be checked and the binary pattern that appears in this window is used together with the hint signal just received to to go to another place in the table. If found If it becomes that successful decoding is possible, two pieces of information are taken from the decoding table. The first is an indication of the number of bits that the Form characters that are currently in the input register and that allow the content of the input register to be "closed" shift so that the next character can be decoded. The second piece of information is a binary character which is taken from the decoding table and which indicates the character being decoded. at an independent decoding method, the character representation can be the decoded fixed length character or it can be used to take the actual character from another table. With a dependent decoding method the character taken from the decoding table must be used to find the correct character from a reference table to win. The correct address in the reference table can be generated in the usual way by that the binary pattern stored in the decoding table together with information about the group and the code set obtained from the decoding of the immediately preceding character.

YO 970 070YO 970 070

209836/11U209836 / 11U

Das Verfahren zur Decodierung arbeitet in der Weise, daß jeder Abschnitt eines Eingangscodewortes durch aufeinander folgende Fenster betrachtet wird und unter Benutzung einer Decodiertabelle der Abschnitt entweder ein Ausgangscodewort erzeugt oder auf eine nachfolgende Stelle in der Decodier-Tabelle hinweist, deren Indexangabe mit dem nachfolgenden durch das nächste Fenster betrachteten Codeabschnitt kombiniert wird, um einen weiteren Eingang in die Tabelle zu liefern. Dieser weitere Eingang in die Tabelle liefert wieder entweder ein ausgelesenes Zeichen oder ein Hinweisoder Indexsignal, das auf eine andere Stelle in der Tabelle hinweist, deren Inhalt wieder zu dem Eingangsdatenfeld addiert wird, das sich im nächsten Fensterabschnitt befindet. Dieses Verfahren wird solange fortgesetzt, bis ein erfolgreiches Decodieren stattfindet. Es ist angenommen, daß richtige oder fehlerfreie Eingangsdaten angeliefert werden, so daß ein erfolgreiches Decodieren stattfindet.The method for decoding works in such a way that each section of an input code word passes through one another The following window is considered and, using a decoding table, the section is either an output code word or points to a subsequent position in the decoding table, the index of which corresponds to the following code section viewed through the next window is combined to form a further entry in the table deliver. This further entry in the table again delivers either a read-out character or a note or Index signal that points to another position in the table, the content of which is added back to the input data field located in the next section of the window. This process continues until a successful Decoding takes place. It is assumed that correct or error-free input data are supplied, so that a successful decoding takes place.

Das Verfahren nach der Erfindung erfordert, daß wenn ein erster Abschnitt der Eingangsdaten nicht zur Decodierung führt, Zugriff auf eine genau angegebene Stelle in der Decodiertabelle erfolgt und die dort gespeicherten Daten wiederum auf eine nachfolgende Stelle in der Decodiertabelle hinweisen, die genau durch den nächsten Teil der Eingangsdaten bezeichnet ist, die durch das nächste Fenster betrachtet werden.The method according to the invention requires that if a first section of the input data is not for decoding leads, access to a precisely specified place in the decoding table takes place and the data stored there again point to a subsequent position in the decoding table, which is exactly through the next part of the input data which are viewed through the next window.

Es sei bemerkt, daß die Fensterlängen entsprechend dem verwendeten besonderen Codesatz ändern und längere Fenster, die etwas mehr Speicherplatz erfordern können trotzdem in bestinniten Fällen vorzuziehen sein, wenn die Zeit, die bei Benutzung vieler aufeinanderfolgender Fenster erforderlich ist, eine geringe Verschwendung von Speicherplatz ausgleicht. Die Anzahl und Größe der Fenster kann so bestimmt werden,It should be noted that the window lengths according to the one used Change special code sets and longer windows that require a little more memory can still be used Should be preferable in cases where the time required when using many consecutive windows is, offsets a small waste of space. The number and size of the windows can be determined

970 070 209 8 3 ß/ 1 1 U970 070 209 8 3 ß / 1 1 U

daß eine Abwägung von Speicherplatz gegenüber Decodiergeschwindigkeit erfolgt.that a trade-off of storage space versus decoding speed he follows.

Das Diagramm in Fig.l zeigt in sehr allgemeiner Form die Grundoperationen des vorliegenden Verfahrens. Der mit "Ingangbringen des Systems" bezeichnete Schritt 1 besagt, daß die zu decodierenden Daten in die richtigen SpeichersteIlen für die angeforderte Zuführung zu den Systemeingangsregistern gesetzt und das erforderliche Decodierprogramm im System richtig bezeichnet ist.The diagram in Fig.l shows in a very general form the Basic operations of the present method. The one with "getting started of the system "Step 1 means that the data to be decoded is in the correct memory locations for the requested feed to the system input registers and the required decoding program in the system is correctly designated.

Der mit "Finden der Gruppe und des Codesatzes" bezeichnete Schritt 2 gilt nur für ein abhängiges Decodierschema und beim Ingangbringen des Systems sollten eine erste Gruppenzahl und eine erste Codesatzzahl geliefert werden.The one labeled "Finding the group and code set" Step 2 only applies to a dependent decoding scheme and when starting the system should be an initial group number and a first code set number are provided.

Die Bezeichnung "Sind die Daten des 1.Fensters decodierbar?" des Schrittes 3 besagt, daß ein erstes Fenster oder eine kleine Anzahl von Bits des laufenden Inhaltes des Eingangsdatenregisters beginnend mit den ersten Bits des Eingabedatensatzes untersucht wird und entschieden wird, ob eine direkte Decodierung aus der Decodiertabelle möglich ist oder nicht. Ist sie möglich, wird das Zeichen oder eine geeignete Kennzeichnung einfach ausgelesen und ein Bitlängenanzeiger in der Decodiertabelle abgefragt und der Inhalt des Eingaberegisters um eine entsprechende Bitzahl verschoben. Bei einem abhängigen Decodierschema kann jetzt zum Schritt 6 übergegangen und die Ausgabe des Decodierers dann in eine Referenz-Tabelle eingegeben werden, um das echte Zeichen für den Ausgabedatensatz zu erhalten.The designation "Can the data of the 1st window be decodable?" of step 3 means that a first window or a small number of bits of the current contents of the input data register starting with the first bits of the input data record is examined and a decision is made whether a direct decoding from the decoding table is possible or not. If it is possible, the sign or a suitable one will be used Identification is simply read out and a bit length indicator is queried in the decoding table and the content of the input register shifted by a corresponding number of bits. In the case of a dependent decoding scheme, you can now move on to step 6 and the output of the decoder is then entered into a reference table to provide the real character for the output record to obtain.

Wenn angenommen wird, daß die Daten des ersten Fensters nicht decodierbar sind, führt das System danach die Schritte 4 und 5 aus, in denen weitere Fenster betrachtet und die Eingabecodebits darin analysiert werden, um festzustellen, ob eineIf it is assumed that the data of the first window cannot be decoded, the system then carries out steps 4 and 5, in which other windows are viewed and the input code bits in them are analyzed to determine whether a

YO 970 070YO 970 070

20983 5/11U20983 5 / 11U

Decodierung möglich ist, basierend auf der in diesenBits gespeicherten Information. Dieser wiederholte Zugriff auf zusätzliche Fenster erfolgt so lange, bis eine erfolgreiche Decodierung möglich ist. Die Decodiertabelle muß natürlich entsprechend aufgebaut und die Fenster richtig gewählt werden, so daß eine erfolgreiche Decodierung immer möglich ist. Die "Ja"-Ausgangssignale in den Schritten 4 und 5 führen natürlich auch zum Schritt 6, der natürlich nur bei der abhängigen Codiertechnik benötigt wird. Sonst kann das tatsächliche Zeichen aus der Decodiertabelle ausgelesen und dem Ausgabedatensatz zugeführt werden.Decoding is possible based on the information stored in these bits. This repeated access to additional windows are made until successful decoding is possible. The decoding table must of course constructed accordingly and the windows correctly selected, so that successful decoding is always possible. The "yes" outputs in steps 4 and 5 lead of course also to step 6, which is of course only required for the dependent coding technology. Otherwise the actual character may read out from the decoding table and fed to the output data set.

Aus dieser sehr allgemeinen Beschreibung des vorliegenden Systems nach dem Ablaufdiagramm der Fig.1 geht hervor, daß gegebene Segmente des Eingangsdatenstromes analysiert oder mit aufeinanderfolgenden Fenstern ausgewertet werden können. Es wurde festgestellt, daß dieses Fensterkonzept eine große Menge Speicherplatz einspart, indem die unnötige Speicherung von Decodierinformation vermieden wird, während gleichzeitig die Decodierzeit in vernünftigen Grenzen gehalten wird. Die Reduzierung der Speicheranforderungen gestattet die Anwendung des vorliegenden Verfahrens auf Systemen mit begrenztem Speicherplatz, die sonst die-geforderten Decodiertabellen nicht speichern können.From this very general description of the present system according to the flow chart of FIG. 1 it can be seen that given segments of the input data stream can be analyzed or evaluated with successive windows. It has been found that this window concept saves a large amount of storage space by eliminating unnecessary storage of decoding information is avoided while simultaneously the decoding time is kept within reasonable limits. The reduction in memory requirements allows the application of the present method on systems with limited storage space, which otherwise do not have the required decoding tables can save.

Die tatsächlichen Anforderungen an die Maschinenausrüstung des Systems, welches das vorliegende Decodierschema nutzt, sind auch bei der abhängigen Decodierung relativ klein. Natürlich muß ein hinreichend großer Kernspeicher vorhanden sein. Es müssen jedoch nur minimale Verknüpfungsfunktionen durchgeführt werden, wie z.B. Erkennung auf· Vorliegen einer O oder einer 1 im ersten Feld des in der Decodiertabelle gespeicherten Speicherwortes. Durch Untersuchung dieses Feldes erkennt das System, ob ein auf das Wort in der Decodiertabelle verweisendes gegebenes Fenster ein decodierbares Ausgangssignal liefert.The actual machine equipment requirements of the system using the present decoding scheme are relatively small even with dependent decoding. Of course, a sufficiently large core memory must be available. It however, only minimal linkage functions need to be performed such as detection of the presence of an O or a 1 in the first field of the memory word stored in the decoding table. By examining this field, the system recognizes whether there is a reference to the word in the decoding table given window provides a decodable output signal.

YO 970 070 „ Λ , YO 970 070 " Λ ,

209836/11U209836 / 11U

Für die verschiedenen SpeieherZugriffsschritte sind auch nur minimale Adreß-Addiereinrichtungen oder Indexeinrichtungen erforderlich. Somit sind die geforderten Systemfunktionen in erster Linie Speicherzugriffe unter Verwendung verschiedener durch das Programm gelieferter Hinweise und Indizes. Dieses Verfahren wird anschließend genauer beschrieben.For the various Speieher access steps are also only minimal address adders or indexers required. Thus, the required system functions primarily memory accesses using various Notes and indices supplied by the program. This procedure is described in more detail below.

Die beschriebene Decodiertechnik kann sowohl bei unabhängiger als auch bei abhängiger Codierung benutzt werden. Die Speicheranforderungen ändern sich dabei stark in Abhängigkeit vonder Anzahl der. verwendeten Gruppen und Codesätze. Allgemein ist die Verdichtung umgekehrt proportional zu den Speicheranforderungen. The decoding technique described can be used with independent as well as with dependent coding. The storage requirements vary greatly depending on the number of. groups and code sets used. Generally the compression is inversely proportional to the storage requirements.

Das Ab lauf diagramm der Fig. 2. zeigt das. erfindungsgemäße Verfahren etwas genauer, für das die Verwendung eines abhängigen Cadierschemas angenommen wird. Oben in Fig.2 wird angenommen, daß eine Anfangsgruppe, und ein erster Codesatz dem System zugeführt werden.The flow diagram of FIG. 2 shows the method according to the invention something more specific, for which the use of a dependent Cadier schemes is adopted. Above in Fig. 2 it is assumed that an initial group and a first code set add to the system are fed.

Der Schritt 1 ist bezeichnet als "Finden der Gruppe". Die Gruppe erhält man entweder aus den Anfangsbedingungen oder sie wird durch das gerade vorher decodierte Zeichen bzw. Byte vorgeschrieben. Im vorliegenden Ausführungsbeispiel wird dazu die Gruppenmitgliedschaftstabelle der Fig.6A verwendet. In diesem Beispiel wurde nur ein Codesatz benutzt/ so daß der Hinweis auf die spezifische Decodiertabelle an der Adresse DQ derselbe für alle Gruppen ist. In der Referenz-Tabelle wird jedoch für verschiedene Gruppen jeweils eine andere Adresse angegeben. Schritt 2 ist bezeichnet mit "Finden des Codesatzes" und diese Operation wurde gerade beschrieben. In diesem Beispiel werden Gruppe und Codesatz in einer einzigen Operation bestimmt.Step 1 is called "Finding the Group". The group is obtained either from the initial conditions or it is prescribed by the character or byte that has just been decoded. In the present exemplary embodiment, the group membership table in FIG. 6A is used for this purpose. In this example only one code set was used / so that the reference to the specific decoding table at address D Q is the same for all groups. In the reference table, however, a different address is given for different groups. Step 2 is labeled "Finding the Code Set" and this operation has just been described. In this example, the group and code set are determined in a single operation.

YO 970 070YO 970 070

2Q9836/1 1 U2Q9836 / 1 1 U

Wenn nur ein Codesatz vorhanden ist, gibt es auch nur eine Decodiertabelle und einen Satz von Fensterlängen. Wenn mehrere Codesätze vorhanden sind/ muß der richtige Codesatz ermittelt werden, da jeder Codesatz seine eigene Decodiertabelle und seinen eigenen Satz Fensterlängen hat. Zwei Gruppen können zum selben Codesatz führen. Wenn also die Gruppe bestimmt ist, werden dadurch zwei Informationen geliefert:If there is only one code set, there is only one Decoding table and a set of window lengths. If several Code sets are available / the correct code set must be determined, since each code set has its own decoding table and has its own set of window lengths. Two groups can lead to the same code set. So if the group decides is, it provides two pieces of information:

a) die Adresse einer Referenz-Tabellea) the address of a reference table

b) die Adresse eines "Kennsatzes", wobei man unter "Kennsatz" die Angabe des Codesatzes versteht.b) the address of a "label", where "label" is understood to mean the specification of the code set.

Bei nur einem Codesatz wie im vorliegenden Beispiel weist jede Gruppe auf dieselbe Kennsatztabelle hin.If there is only one set of codes, as in this example, each group points to the same label table.

Von den Blocks 1 und 2 erhält das System einen Hinweis auf die erste Stelle einer Referenz-Tabelle (aus der Gruppenbezeichnung) und auf die zutreffende Kennsatztabelle, aus welcher die tatsächliche Adresse D_ der entsprechenden Decodiertabelle für den spezifischen Decodiersatz abgeleitet ist, sowie eine Steuerinformation, aus welcher die Länge der für den Codesatz zu verwendenden Fenster abgeleitet werden kann.The system receives a message from blocks 1 and 2 the first position of a reference table (from the group name) and the relevant label table which is the actual address D_ of the corresponding decoding table for the specific decoding set is derived, as well as control information from which the length the window to be used for the code set can be derived.

Der Schritt 3 ist bezeichnet mit "Erhalten der Adresse aus de^i 1. Fenster des Eingangs regis ters" und bedeutet, daß der Inhalt des Fiiigaberegisters durch das erste Fenster betrachtet (die Anzahl der Bits wird durch die Größe des Fensters bestimmt) zusammen mit der Hinweisadresse D_ auf die Decodiertabelle (gefunden in der Kennsatztabelle) dazu benutzt wird, eine Eingangsadresse für die Decodiertabelle zu erzeugen. Schritt 4 besagt, daß die Adresse in der Decodiertabelle, die in den Schritten 3 (oder 7) erhalten wurde, tatsächlich adressiert wird. Bei Adressierung des dort gespeichertenStep 3 is labeled "Obtaining the address from de ^ i 1st window of the input register "and means that the Contents of the input register viewed through the first window (the number of bits is determined by the size of the window) together with the reference address D_ to the decoding table (found in the label table) is used to generate an input address for the decode table. Step 4 says that the address in the decoding table obtained in steps 3 (or 7) is actually is addressed. When addressing the stored there

YO 970 070YO 970 070

209836/1114209836/1114

Wortes wird festgestellt, ob eine direkte Decodierung möglich ist» oder mit anderen Worten, ob ein echtes Zeichen (unabhängige Codierung) oder ein Referenzanzeiger (abhängige Decodierung) dort gespeichert ist. Ist das der Fall, wird die Operation mit Schritt 8 fortgesetzt. Es wird jedoch zuerst angenommen, daß eine Decodierung nicht erfolgt. Das System verzweigt dann zum Schritt 7, welcher besagt, daß eine Adresse gefunden wurde, die auf eine andere Stelle in der Decodiertabelle (oder die erste Stelle einer Untertabelle) verweist. Auf diese Adresse erfolgt ein Zugriff, sie wird gespeichert und der Schritt 6 "Aufgaben des Fensters, nächstes Fenster benutzen" wird angefangen. Dadurch werden die Bits des Eingaberegisters, betrachtet durch das nächste Fenster, adressiert. Diese Bits werden zusammen mit der im Schritt 6 aus der Decodiertabelle erhaltenen Adresse benutzt, um eine neue Adresse in der Decodiertabelle zu erzeugen. Das System kehrt zum Schritt 4 zurück und stellt im Schritt 5 wieder fest, ob die auf der laufenden Adresse in der Decodiertabelle gespeicherte Information eine erfolgreiche Decodierung ermöglicht. Dieser Prozeß umfaßt die Schritte 4, 5, 6 und 7 und wird wiederholt, bis eine erfolgreiche Decodierung stattfindet. Zu diesem Zeitpunkt wird der Schritt angefangen, in dem die genaue Länge des Codewortes und eine Adresse in der Referenz-Tabelle bekannt sind. Diese Information wird der Decodiertabelle entnommen und die Längenanzeige des Codewortes den Steuerschaltungen des Eingaberegisters zugeleitet, welche die genaue Anzahl der decodierten Bits aus dem Eingaberegister entnehmen und so dort nur nichtdecodierte Bits hinterlassen. Die aus der Decodiertabelle erhaltene Adresse wird dann mit der Adresse der richtigen Referenz-Tabelle kombiniert, die man in den Schritten 1 und 2 erhielt. Diese Adresse liefert den Zugriff zu der bestimmten Stelle in der Referenz-Tabelle, wo das binäre Bitmuster fester Länge des Zeichens steht. Das Zeichen mit fester Länge wird dem Ausgabedatensatz im Schritt 9 zugeleitet. Dann wird imWord it is determined whether direct decoding is possible »or in other words whether a real character (independent Coding) or a reference indicator (dependent decoding) is stored there. If that is the case, will the operation continues with step 8. However, it is first assumed that decoding does not occur. The system then branches to step 7 which states that an address has been found which points to a different location in the decoding table (or the first digit of a subtable). This address is accessed it is saved and step 6 "Tasks of the window, use next window" is started. This will be the bits of the input register, viewed through the next window, are addressed. These bits are used together with the im Step 6 uses the address obtained from the decoding table to generate a new address in the decoding table. That The system returns to step 4 and again determines in step 5 whether the current address in the decoding table stored information enables successful decoding. This process includes steps 4, 5, 6 and 7 and is repeated until successful decoding takes place. At this point the step will be started, in which the exact length of the code word and an address in the reference table are known. This information is taken from the decoding table and the length display of the code word is sent to the control circuits of the input register, which take the exact number of decoded bits from the input register and so only non-decoded ones there Leaving bits behind. The address obtained from the decoding table is then matched with the address of the correct reference table combined that were obtained in steps 1 and 2. This address provides access to the specific Place in the reference table where the binary bit pattern of fixed length of the character is located. The fixed length character becomes forwarded to the output data record in step 9. Then im

YO 970 070 209 836/1114YO 970 070 209 836/1114

Schritt 10 die Entscheidung getroffen, ob ein weiteres Zeichen zu decodieren ist. Wenn die Antwort nein lautet, ist die Decodierung damit beendet. Lautet die Antwort ja, folgt Schritt 11, welcher angibt, daß die "Byte-Identitätsinformation" auf den Eingang des Blockes 1 rückgekoppelt und so ein Decodierzyklus nach dem vorliegenden Verfahren abgeschlossen wird.Step 10 made the decision as to whether another character is to be decoded. If the answer is no, it is this ends the decoding. If the answer is yes, step 11 follows which indicates that the "byte identity information" fed back to the input of block 1, thus completing a decoding cycle according to the present method will.

Das Diagramm in Fig.3 zeigt die von der vorliegenden Erfindung geforderten Speicherzugriffsoperationen. Daraus ist zu ersehen, wie die verschiedenen Segmente der Decodiertabellen nach dem Prinzip der vorliegenden Erfindung adressiert werden. Alle in Fig.3 gezeigten Tabellen und Datensätze stehen an verschiedenen Stellen im Hauptspeicher und die entsprechenden Hinweissignale können dem Programm zur Verfügung gestellt werden. Daher wird in der nachfolgenden Beschreibung angenommen, daß die Speicher-Grundhinweise geliefert wurden und die notierten Adressen größtenteils im wesentlichen relative Adressen sind.The diagram in Figure 3 shows that of the present invention required memory access operations. This shows how the various segments of the decoding tables can be addressed according to the principle of the present invention. All tables and data records shown in Fig. 3 are pending various locations in the main memory and the corresponding information signals can be made available to the program will. Therefore, in the following description it is assumed that the basic memory instructions have been provided and the addresses noted are for the most part essentially relative addresses.

Beginnt man die Betrachtung oben in Fig.3, so stellt man fest, daß ein Eingang zur Tabelle D1 entweder von der Anfangsbedingung oder von dem Ausgabedatensatz möglich ist, in welcher das Zeichen B1 das vorher decodierte Byte bezeichnet. Diese Bytekonfiguration liefert eine Adresse für die Tabelle D1, die ein Teil der obenerwähnten Mitgliedschaftstabelle ist, welche wiederum eine Gruppenbezeichnung liefert. Diese Bezeichnung g liefert eine relative Adresse für die zweite Hälfte der Mitgliedschaftstabelle D-. An dieser Adresse (D_ + g) gespeicherte Wörter enthalten zwei Informationsteile. Der erste Teil ist die Adresse des Kennsatzes des richtigen Codesatzes. Der Kennsatz besteht aus der Adresse der ersten Stelle DQ der Decodiertabelle zusammen mit den Längenangaben L , L_, ... der aufeinanderfolgenden zu verwendenden Fenster. Die andere Hälfte der Tabelle D~ enthält die Adresse D3 und weist aufIf one begins the consideration above in FIG. 3, one finds that an entry to table D 1 is possible either from the initial condition or from the output data record in which the character B 1 designates the previously decoded byte. This byte configuration provides an address for table D 1 , which is part of the above-mentioned membership table, which in turn provides a group designation. This designation g provides a relative address for the second half of the membership table D-. Words stored at this address (D_ + g) contain two pieces of information. The first part is the address of the label of the correct code set. The label consists of the address of the first digit D Q of the decoding table together with the length specifications L, L_, ... of the successive windows to be used. The other half of the table D ~ contains the address D 3 and has

YO97OO7° . '209836/111* YO97OO7 °. '209836/111 *

die Basisadresse in der Referenz-Tabelle für die Gruppe hin, zu welcher B1 gehört. Der Inhalt von L. gibt die Länge des ersten Fensters im Eingangsregister an, welches zu betrachten ist. Dieser Inhalt des ersten Fensters "a" liefert einen Eingangspunkt für die Decadiertabelle, der zur Adresse DQ zu addieren ist/ die man aus der Kennsatz-Tabelle erhält. Wenn angenommen wird, daß das erste Fenster keine Decodierung liefert, dann gibt das an der Stelle DQ + a gespeicherte Wort eine Adresse D '. Zu dieser Adresse wird der Adressenzuwachs a1 addiert, den man aus dem Fenster L2 im Eingabedatensatz erhält. Es wird angenommen, daß dies zu einem Speicherwort führt, welches an der Stelle D0 1 + (a1) gespeichert ist und zu einer erfolgreichen Decodierung führt. Der Inhalt eines erfolgreich decodierten Wortes wird unten in der Figur gezeigt. the base address in the reference table for the group to which B 1 belongs. The content of L. specifies the length of the first window in the input register which is to be viewed. This content of the first window "a" provides an entry point for the decoding table which is to be added to the address D Q / which is obtained from the label table. If it is assumed that the first window does not provide any decoding, then the word stored at location D Q + a gives an address D '. The address increment a 1 obtained from window L 2 in the input data record is added to this address. It is assumed that this leads to a memory word which is stored at location D 0 1 + (a 1 ) and leads to successful decoding. The content of a successfully decoded word is shown in the figure below.

Der Inhalt eines' Speicherwortes, welches das Ergebnis einer erfolgreichen Decodierung ist, umfaßt vier Felder. Der .Inhalt dieser Felder ist in der Decodiertabelle des in Fig.7 gezeigten Beispiels bezeichnet mit j, i, sh und-B. Das j-Feld gibt an, ob das Speicherwort ein echtea Zeichen (unabhängig) enthält oder einen Zeichenanzeiger oder eine Adresse (im Falle der abhängigen Codierung). Eine "1" in dieser Bitstelle besagt, daß ein Zeichen, vorhanden ist und 11O", daß ein weiterer Fensterzugriff notwendig ist.The content of a memory word, which is the result of a successful decoding, comprises four fields. The content of these fields is denoted by j, i, sh and -B in the decoding table of the example shown in FIG. The j field indicates whether the memory word contains a real character (independent) or a character indicator or an address (in the case of dependent coding). A "1" in this bit position means that a character is present and 11 O "means that a further window access is necessary.

Das i-Feld hat für die vorliegende Erfindung wenig Bedeutung. In ihm wird angegeben, ob ein Wort, welches decodierbar ist, eine Zeichenangabe, eine Folgeangabe oder eine Kopierangabe enthält. Eine "0" bezeichnet ein Zeichen, eine "1" eine Reihenfolge und eine "2" eine Kopie. Für die vorliegende Erfindung ist die 0 das einzig wichtige Zeichen.The i-field is of little importance to the present invention. It specifies whether a word that can be decoded, a character specification, a subsequent specification or a copy specification contains. A "0" denotes a character, a "1" a sequence and a "2" is a copy. For the present invention the 0 is the only important character.

Das sh Feld gibt die Anzahl von Bits des Ei.ngabedatensatzes an, die für die erfolgreiche Decodieroperation benötigt wur-The sh field gives the number of bits of the input data record required for the successful decoding operation.

10970070 209836/111* 10970070 209836/111 *

den. Wenn also ein Codewort aus sechs Bits soeben erfolgreich decodiert wurde, enthält das sh Feld eine 6. Das bedeutet, daß sechs Bits aus dem Eingaberegister entfernt wurden. Das ist auch der Fall, wenn sieben Bits durch eine Folge von mehreren FensterZugriffen betrachtet wurden. Somit ist jedes überflüssige oder zusätzliche Bit des vorhergehenden Eingabedatenäatzes, welches vorher zwar untersucht wurde, jedoch nicht wirklich ein Teil des vorhergehenden Codewortes war, jetzt das erste Bit des nächsten Teiles des zu untersuchenden Eingabedatensatzes. Anders ausgedrückt liefert das Feld sh die Information, die notwendig ist, um den Anfang des nächsten Codewortes im Eingabestrom genau festzulegen.the. So if a six-bit code word just succeeded has been decoded, the sh field contains a 6. This means that six bits have been removed from the input register became. This is also the case when seven bits have been viewed through a sequence of multiple window accesses. Consequently is every superfluous or additional bit of the previous input data record that was previously examined, but was not actually part of the previous code word, now the first bit of the next part of the one to be examined Input data set. In other words, the sh field provides the information necessary to start the the next code word in the input stream.

Im Zusammenhang mit der Beschreibung der Fig.3 ist noch festzustellen, daß der Zeichenanzeiger B aus der Decodiertabelle DQ entfernt wird und zum zweiten Hinweis auf die Referenztabelle D3 wird. Die spezifische Adresse D3 + (B) in der Referenz-Tabelle wird bestimmt aus der aus dem Register D, erhaltenen Adresse und dem aus dem Register D0 erhaltenen Zeichenanzeiger B. An der Stelle D3 + B in der Referenz-Tabelle wird die echte binäre Zeichendarstellung (Code fester Länge) gespeichert, die in den Ausgabedatensatz zu setzen ist. Beim nächsten Zyklus wird dieses neue Zeichen abgefragt, um Gruppe und Codesatzbezeichnung des nächstfolgenden Eingabezeichens veränderlicher Länge festzustellen.In connection with the description of FIG. 3, it should also be noted that the character indicator B is removed from the decoding table D Q and becomes the second reference to the reference table D 3 . The specific address D 3 + (B) in the reference table is determined from the address obtained from register D 1 and the character indicator B obtained from register D 0. At position D 3 + B in the reference table, the real binary character representation (fixed-length code) to be set in the output data record. In the next cycle, this new character is queried in order to determine the group and code set name of the next input character of variable length.

Die Fign, 2 und 3 zeigen ein Verfahren, welches bei einem abhängigen Codiersenema erforderlich ist. Bei unabhängiger Codierung vereinfacht sich die obige Reihenfolge stark. Vorzugsweise in der Decodiertabelle wird im Feld B das echte binäre Zeichenmuster und nicht ein Codesatzanzeiger gespeichert, der auf das Zeichen in der Referenz-Tabelle hinweist. Außerdem brauchen weder Referenz-noch,Mitgliedschaftstabellen aufgestellt zu werden. Daher sind weder die in Fig.3 (DwD3 FIGS. 2 and 3 show a method which is required in a dependent coding system. With independent coding, the above sequence is greatly simplified. The real binary character pattern and not a code set indicator which points to the character in the reference table is preferably stored in field B in the decoding table. In addition, there is no need to set up reference or membership tables. Therefore, neither those in Fig. 3 (DwD 3

970 070 209836/1114970 070 209836/1114

und D,) gezeigten Tabellen erforderlich, noch braucht die Ausgabe von dem Ausgabe-Datensatz zum System rückgekoppelt zu werden.and D,) required tables shown, nor needs the Output to be fed back to the system from the output data record.

Für das unabhängige Schema erfordert die Decodierung also nur die folgenden Schritte. Eine einzige Kennsatztabelle wird adressiert, um die Anfangsadresse der Decodiertabelle und die Fensterlängenanzeiger zu erhalten. Wenn man diese Anfangsadresse DQ der Decodiertabelle und die Fensterlängeninformation hat, dann ist die Decodxeroperatxon mit der aufeinanderfolgenden Untersuchung des Eingabedatensatzes und den Zugriffen zur Decodiertabelle dieselbe wie bei der oben beschriebenen abhängigen Codierung. Die einzige Ausnahme besteht nach obiger Feststellung darin, daß das Feld B der Decodiertabelle wahrscheinlich so angelegt ist, daß es das echte binäre Zeichen (mit fester Länge) enthält.So for the independent scheme, the decoding only requires the following steps. A single label table is addressed to obtain the starting address of the decoding table and the window length indicators. If one has this start address D Q of the decoding table and the window length information, then the decoder operation with the successive examination of the input data set and the accesses to the decoding table is the same as in the case of the dependent coding described above. The only exception to the above is that field B of the decode table is likely to be designed to contain the true binary character (of fixed length).

Anschließend wird ein spezifisches Beispiel beschrieben, für welches eine typische Zuordnungstabelle in Fig.4 gezeigt und ein Codesatz mit 16 Mitgliedern angenommen wird. Diese Zuordnungstabelle soll nur typisch sein und wird durch die bekannte Huffman-Codiertechnik gewonnen. Die linke Spalte enthält die Codesatzanzeiger. Diese geben die relative Lage eines bestimmten Zeichens im Codesatz an. Die mittlere Spalte mit der Beschriftung "Codewort veränderlicher Länge" gibt das spezielle binäre Bitmuster an, welches einen vorbestimmten Codesatz-oder Zeichenanzeiger erzeugt. Dieser Anzeiger kann dann zusammen mit einer Referenz-Tabelle dazu benutzt werden, das tatsächliche Zeichen mit fester Länge zu liefern, welches durch das verarbeitete Zeichen mit veränderlicher Länge angegeben wird. Die letzte Spalte "Codelänge11 gibt die Anzahl von Bits im Codewort an. Die Decodiertabelle der Fig.7 erzeugt eine Decodierung für alle in Fig.4 angegebenen Zeichen. Während beide Tabellen nur als Beispiel dienen, müssen natürlich dieA specific example is then described, for which a typical assignment table is shown in FIG. 4 and a code set with 16 members is assumed. This allocation table is only intended to be typical and is obtained using the well-known Huffman coding technique. The left column contains the code set indicators. These indicate the relative position of a certain character in the code set. The middle column labeled "Code word of variable length" indicates the special binary bit pattern which generates a predetermined code set or character indicator. This indicator, along with a reference table, can then be used to provide the actual fixed-length character indicated by the variable-length character being processed. The last column "Code length 11" specifies the number of bits in the code word. The decoding table of FIG. 7 generates a decoding for all characters indicated in FIG. 4. While both tables only serve as an example, the

YO 970 070YO 970 070

209836/1114209836/1114

Zuordnungstabelie und die Decodiertabelle für einen gegebenen Codesatz einander entsprechen. So muß also die Decodiertabelle mit Hilfe der Zuordnungstabelle erzeugt werden.Allocation table and the decoding table for a given Code sets correspond to each other. So the decoding table must be generated with the aid of the assignment table.

Fig.5 zeigt eine Referenz-Tabelle für ein abhängiges Codierschema. Die Mitglieder der verschiedenen Gruppen, d.h., MPl, MP2 und MP3 sind weder dieselben noch müssen es unbedingt dieselben Zeichen sein. Im Codesatz MP3 gibt es z.B. kein T. Dieser Umstand ist darauf zurückzuführen, daß bei der Analyse des als Beispeil verwendeten Datensatzes das T nur nach dem Buchstaben A und F und nie nach den Buchstaben H, K oder E auftrat. Wie bereits gesagt, dient das jedoch nur als Beispiel mit einer hypothetischen Datenbasis und einem hypothetischen Codesatz und bei jedem gegebenen Decodiersystem ändern sich Referenz-Tabellen, Codesatzbezeichnungen usw. beträchtlich entsprechend dem jeweiligen Inhalt. Fig.6A zeigt die Mitgliedsschaftstabelle D-, welche die Gruppen angibt, zu denen jedes der Zeichen gehört. Die Situation "Beginn eines Datensatzes" ist nicht gezeigt, es wird jedoch angenommen, daß diese im vorliegenden Beispiel zur Gruppe 1 gehört.5 shows a reference table for a dependent coding scheme. The members of the various groups, i.e., MPl, MP2 and MP3 are not the same, nor do they necessarily have to be the same characters. For example, there is no T. This fact is due to the fact that in the analysis of the data set used as an example, the T is only after the Letters A and F and never after the letters H, K or E occurred. As I said, this is just an example with a hypothetical database and code set and in any given decoding system will change Reference tables, code set names, etc. considerably according to the respective content. Figure 6A shows the membership table D- indicating the groups to which each of the characters belongs. The situation "beginning of a data record" is not shown, but it is assumed that this belongs to group 1 in the present example.

Fig.6B zeigt die Decodiertabelle D2 und die Tatsache, daß für jede der drei Gruppen dieselbe Kennsatzadresse "ADR VON L" jedesmal benutzt wird, obwohl eine andere Referenztabellenadresse geliefert wird. Wenn mehr als ein Codesatz vorhanden ist, ist natürlich für bestimmte Gruppen in dieser Tabelle, die direkt aus dem Inhalt der Mitgliedschaftstabelle D. adressierbar sind, eine andere Kennsatzadresse und eine Referenz-Tabellenadresse vorhanden.Fig. 6B shows the decoding table D 2 and the fact that the same label address "ADR FROM L" is used for each of the three groups each time, although a different reference table address is supplied. If there is more than one code set, there is of course a different label address and a reference table address for certain groups in this table which can be addressed directly from the contents of the membership table D.

Fig.6C zeigt die Kennsatζ-Tabelle L, die die Adresse der Decodiertabelle DQ angibt, welche auf den Anfang der Deeodiertabelle hinweist und außerdem die Zahlen 3,2,2 und 2 enthält, welche die Größe der nachfolgenden Fenster angeben,6C shows the Kennsatζ table L, which indicates the address of the decoding table D Q , which points to the beginning of the decoding table and also contains the numbers 3, 2, 2 and 2, which indicate the size of the subsequent windows,

YO 970 070 209836/11 UYO 970 070 209836/11 U

die bei aufeinanderfolgenden Wiederholungen der Decodierroutine im Beispiel verwendet werden. Sowohl die Größe als auch die Anzahl der Fenster ändern sich natürlich in Abhängigkeit von dem verwendeten Code mit veränderlicher Länge.those for successive repetitions of the decoding routine can be used in the example. Both the size and the number of windows naturally change as a function of the variable length code used.

Fig.7 zeigt die eigentliche Decodiertabelle DQ mit einer Anfangsadresse ADR DQ, die man aus der Kennsatztabelle erhält. Die linke Spalte gibt die relativen Adressen der verschiedenen 28 Eintragungen in der Decodiertabelle an. Diese Adressen werden benutzt, sobald eine Eintragung in die Decodiertabelle vorgenommen wird. Wenn z.B. eine Null im Feld j auftritt und eine Adresserhöhung oder ein Index im selben Wort im Feld Bauftritt, dann heißt das, daß ein weiteres Fenster untersucht werden muß. Das Ergebnis der zweiten Operation ist die Erzeugung einer neuen Adresse in der Decodiertabelle, die mit Q bezeichnet wird, wobei Q = DQ + ^Inhalt des ersten Fensters (a)j + B + Tlnhalt des zweiten Fensters (a')Jist. Der Inhalt der Spalten i, j, sh und B des Speicherwortes wurde oben in Zusammenhang mit Fig.3 beschrieben und als Decodiereinheit dargestellt. Da in diesem Beispiel nur einzelne Zeichen codiert werden, wird keine weitere Angabe benötigt und der Inhalt des Feldes ist ist immer O. Der Inhalt der Speicherwörter in der Decodiertabelle ist im Dezimalformat gezeigt, der tatsächliche Inhalt liegt aber natürlich im binären Format, vor.7 shows the actual decoding table D Q with a start address ADR D Q , which is obtained from the label table. The left column gives the relative addresses of the various 28 entries in the decoding table. These addresses are used as soon as an entry is made in the decoding table. For example, if a zero occurs in field j and an address increment or an index occurs in the same word in field B, this means that another window must be examined. The result of the second operation is the creation of a new address in the decoding table which is denoted by Q, where Q = D Q + ^ contents of the first window (a) j + B + contents of the second window (a ') J. The content of the columns i, j, sh and B of the memory word was described above in connection with FIG. 3 and represented as a decoding unit. Since only individual characters are encoded in this example, no further information is required and the content of the field is is always O. The content of the storage words in the decoding table is shown in decimal format, but the actual content is of course in binary format.

Die Eintragungen in der rechten Spalte sind mit "Adressen vom Eingangsregister" bezeichnet und geben den Inhalt des Eingangsregisters an, betrachtet durch die verschiedenen Fenster, die das Decodierverfahren an der jeweiligen Stelle in der Decodiertabelle fortfahren lassen. Sieht man z.B. auf die relative Adresse Nr. 20, so veranlaßt das in dem Eingabe-Datensatz erscheinende Muster 000 OQO 000 die Adressierung der Adresse 20 der Decodiertabelle und die Abgabe des Codesatzzeichen-An-The entries in the right column are labeled "Addresses from the input register" and indicate the content of the input register, viewed through the various windows that the decoding method at the respective position in the decoding table let go. For example, if you look at the relative address no.20, this will appear in the input data record Sample 000 OQO 000 the addressing of address 20 of the decoding table and the delivery of the code set characters

970 070 209 836/1 1 U970 070 209 836/1 1 U

zeigers 15 an die Referenz-Tabelle. Die rechten und linken Spalten der Fig.7 dienen also lediglich der Erklärung und die'angegebenen Zahlen oder binären Muster existieren in der Decodiertabelle nicht tatsächlich.pointer 15 to the reference table. The right and left Columns in FIG. 7 are therefore only used for explanation and the numbers or binary patterns given exist in the Decoding table not actually.

Nach dieser Beschreibung der allgemeinen Arbeitsweise des Systems der Fig.l und der spezifischen Anwendung der Prinzipien der vorliegenden Erfindung auf abhängig codierte Daten wird jetzt die Arbeitsweise des Systems bei der Decodierung eines spezifischen Beispieles, nämlich der in Fig.8 gezeigten Bitfolge erklärt.Having thus described the general operation of the system of FIG. 1 and the specific application of the principles The present invention based on dependently encoded data now describes the operation of the system in decoding a specific example, namely the bit sequence shown in Figure 8.

Es wird zuerst angenommen/ daß der anfängliche Systemstart, der Anfang eines Datensatzes, das System in die Gruppe 1 und die Tabelle D1 führt. Die Tabelle D2 liefert die Adresse der Kennsatztabelle und eine Basisadresse für die Referenz-Tabelle bei MPl. Die Kennsatztabelle gibt die Adresse DQ der in Fig.7 gezeigten Decodiertabelle. Das Wort L1 in der Kennsatz-Tabelle bezeichnet die ersten drei Bits der Eingabeaufzeichnung als abzusuchende Bits. Im Beispiel sind die ersten drei Bits 100, die binäre Darstellung einer 4, und führen uns zur relativen Adresse 4 in der Decodiertabelle (d.h. DQ + 4). Eine binäre 1 im Feld j besagt, daß dieser 3 Bit große Eingabecode decodiert werden kann. Das Feld sh gibt an, daß die Bitlänge des veränderlichen Codewortes 1 Bit beträgt. Eine im Feld B erscheinende dezimale 1 besagt, daß das echte Zeichen mit fester Länge in der Referenz-Tabelle als erstes Objekt in besagter Tabelle steht (auf der Adresse D_ + B). Aus Fig.5 ist zu ersehen, daß daraus ein A decodiert wird, da MPl vorher angezeigt wurde. Dieses erste Bit im Eingabedatensatz wird jetzt nicht mehr beachtet. An diesem Punkt wird festgestellt, daß das Zeichen A in der Gruppe 1 und im Codesatz 1 (dem einzigen Codesatz) aus der Mitgliedschaftstabelle D (Fig.6A) liegt. Somit finden wir wieder die richtige Basisadresse für die Tabelle D2. DieseIt is first assumed that the initial system start-up, the beginning of a record, leads the system into group 1 and table D 1 . Table D 2 supplies the address of the label table and a base address for the reference table in MP1. The label table gives the address D Q of the decoding table shown in FIG. The word L 1 in the Label Table identifies the first three bits of the input record as bits to be searched. In the example, the first three bits are 100, the binary representation of a 4, and lead us to the relative address 4 in the decoding table (i.e. D Q + 4). A binary 1 in field j means that this 3-bit input code can be decoded. The field sh indicates that the bit length of the variable code word is 1 bit. A decimal 1 appearing in field B means that the real character with a fixed length in the reference table is the first object in said table (at address D_ + B). It can be seen from FIG. 5 that an A is decoded therefrom, since MP1 was displayed beforehand. This first bit in the input data record is no longer taken into account. At this point it is determined that character A is in Group 1 and Code Set 1 (the only code set) from Membership Table D (Figure 6A). Thus we find the correct base address for table D 2 again . These

YO 970 070 209836/1 1 UYO 970 070 209836/1 1 U

liefert wiederum eine Adresse für die Referenz-Tabelle und für die Kennsatz-Tabelle, wodurch die nächsten drei Bits des Eingabedatensatzes abgefragt werden (nachdem das eine nicht mehr beachtete Bit zu einem A decodiert wurde). Dieses Mal erscheint als Bitmuster im ersten Fenster OOO und wird zu D_ + O oder zur relativen Adresse O in der Decodiertabelle decodiert. Eine Null im Feld j besagt, daß die Decodierung noch nicht abgeschlossen ist. Daher wird die im Feld B gespeicherte Zahl, nämlich eine 12, als eine Adresserhöhung für die nächste Fensteroperation festgehalten. Das zweite Fenster (Größe 2 Bits) enthält 00. An der Stelle (DQ +0) +12+0 findet sich wieder eine Null im Feld j und besagt, daß die Decodierung noch nicht abgeschlossen ist. Die vorherige Adresse 12 muß aufgrund der im Feld B gespeicherten 4 um weitere 4 erhöht werden. Jetzt wird das dritte Fenster (2 Bits) adressiert, welches binär 10 oder dezimal 2 enthält. Daher wird die Zahl 2 zu (12 + 4) addiert und führt uns zur relativen Adresse 18 in der Decodiertabelle, wo das Speicherwort zuerst einmal angibt durch eine 1 im Feld j, daß dieses Wort eine erfolgreiche Decodierung bringt; dann, daß das nächste Wort mit veränderlichem Längencode, welches uns zu diesem Punkt in der Decodiertabelle führte, 7 Bits enthielt (Feld sh = 7) und schließlich, daß der Code mit veränderlicher Länge das zehnte Objekt in der Gruppe 1 (gerechnet von dem vorhergehenden A ab) bezeichnet, welches zu einem K in der Referenz-Tabelle decodiert wird. An diesem Punkt wird der Inhalt des Eingaberegisters erhöht und die 7 decodierten Bits entfernt.in turn provides an address for the reference table and for the label table, whereby the next three bits of the input data record are queried (after the one bit that was no longer considered has been decoded to an A). This time, OOO appears as a bit pattern in the first window and is decoded to D_ + O or to the relative address O in the decoding table. A zero in field j indicates that decoding has not yet been completed. Therefore, the number stored in field B, namely a 12, is recorded as an address increment for the next window operation. The second window (size 2 bits) contains 00. At the position (D Q +0) + 12 + 0 there is again a zero in field j and indicates that the decoding has not yet been completed. The previous address 12 must be increased by another 4 based on the 4 stored in field B. Now the third window (2 bits) is addressed, which contains 10 binary or 2 decimal. Therefore the number 2 is added to (12 + 4) and leads us to the relative address 18 in the decoding table, where the memory word first indicates by a 1 in field j that this word brings a successful decoding; then that the next word with variable length code, which led us to this point in the decoding table, contained 7 bits (field sh = 7) and finally that the code with variable length was the tenth object in group 1 (counted from the previous A ab) denotes which is decoded to a K in the reference table. At this point the contents of the input register are incremented and the 7 decoded bits are removed.

Um die Operation noch einmal zu durchlaufen, wird in D festgestellt, daß das gerade decodierte K in der Gruppe 3 liegt und wieder im Codesatz 1 (dem einzig vorhandenen), der das System wieder an den Anfang der Decodiertabelle zur Basisadresse D0 bringt und nach den nächsten 3 Bits des Eingangsstromes suchen läßt. Wieder tritt das Bitmuster 000 auf und führt uns zur relativen Adresse 0 in der Decodiertabelle,In order to run through the operation again, it is determined in D that the K that has just been decoded lies in group 3 and again in code set 1 (the only one available), which brings the system back to the beginning of the decoding table at base address D 0 and after search for the next 3 bits of the input stream. The bit pattern 000 appears again and leads us to the relative address 0 in the decoding table,

10970 07° 209836/1114 10970 07 ° 209836/1114

die wiederum aufgrund der Speicherung der 12 im vierten Feld eine Erhöhung oder einen Index von 12 liefert. Das zweite Fenster hat ein Bitmuster 11, welches eine binäre 3 ist, und wiederum eine Adresse von DQ + 12 + 3 = 15 in der Decodiertabelle liefert, die basierend auf dem Inhalt des Speicherwortes 1, O, 5, 7 anzeigt, daß ein Wort erfolgreich decodiert wurde, daß ein decodiertes Codewort mit veränderlicher Länge 5Bits enthält; weiter, daß es zu einem Codesatz-Anzeiger von führt, der seinerseits wieder auf das 7.Objekt bei MP3 in der Referenz-Tabelle verweist (da das vorhergehende K zur Gruppe 3 gehört). Dieses 7.Objekt in der Gruppe 3 liefert decodiert das Zeichen 7. Auf diese Weise läuft das System weiter, bis die ganze Eingabeaufzeichnung decodiert wurde.which in turn provides an increment or an index of 12 due to the storage of 12 in the fourth field. The second window has a bit pattern 11, which is a binary 3, and in turn supplies an address of D Q + 12 + 3 = 15 in the decoding table which, based on the content of the memory word 1, 0, 5, 7, indicates that a Word has been successfully decoded that a decoded codeword of variable length contains 5 bits; further that it leads to a code set indicator of, which in turn refers to the 7th object in MP3 in the reference table (since the preceding K belongs to group 3). This 7th object in group 3 returns the decoded character 7. The system continues in this way until the entire input record has been decoded.

Ein Beispiel des Effektes der Speicherduplizierung ist in Fig.7 an den relativen Adressen 4-7 zu sehen, wo der Codesatzanzeiger 1 im Feld B des Speicherwortes an allen 4 Stellen gespeichert ist. Somit muß jedesmal dieselbe Anzeige erzeugt werden, wenn eine 1 im ersten Bit des ersten 3 Bit großen Fensters erscheint, ungeachtet der Bits, die nach dieser 1 kommen. Auch hier werden effektiv 3 SpeichersteIlen vergeudet. Wenn also maximal 8 Bits in dem Code mit veränderlicher Länge für die Situation verwendet werden, wo das tatsächliche decodierte Zeichen ein 1-Bit war, dann werden 2 - 1 Speicherstellen dupliziert. Für ein 2 Bitzeichen werden 2-1 Stellen dupliziert usw.An example of the effect of memory duplication can be seen in Fig. 7 at relative addresses 4-7, where the code set indicator 1 is stored in field B of the memory word in all 4 places. Thus, the same display must be generated each time if a 1 appears in the first bit of the first 3-bit window, regardless of the bits that follow this 1 come. Here, too, 3 storage locations are effectively wasted. So if a maximum of 8 bits are used in the variable length code for the situation where the actual decoded Character was a 1-bit, then 2 - 1 memory locations are duplicated. 2-1 digits are required for a 2-bit character duplicated etc.

Für einen gegebenen Code ist also eine bestimmte Fensterlängenkonfiguration optimal. Für einen einzelnen Code sind die besten Fensterlängen relativ leicht zu bestimmen. Wenn mehr als ein Codesatz vorhanden ist, sind die Codes aller Wahrscheinlichkeit nach unterschiedlich, und deswegen ist jede Eintragung in der Kennsatz-Tabelle mit ihrem eigenen Satz von Fensterlängen ausgerüstet. So können die Fensterlängen für den jeweiligen Code optimiert werden.So for a given code there is a certain window length configuration optimal. For a single code, the best window lengths are relatively easy to determine. If more than If a code set is present, the codes are in all likelihood different, and therefore each entry is in the label table with their own set of window lengths. So the window lengths for the respective code can be optimized.

10970070 209836/1 IH 10970070 209836/1 IH

Bei der Beschreibung des. Verfahrens der Decodierung eines Eingabedatensatzes, der aus einem Strom von abhängig codierten vorsatzfreien Codewörtern veränderlicher Länge besteht, dienten die angegebenen Codebeispiele und Anordnungen der Codetabellen einschließlich der anzutreffenden maximalen Codelänge lediglich als Beispiele. Der wesentliche Fortschritt des aufgezeigten Verfahrens liegt in der Untersuchung des Eingabecodes mit mehreren aufeinanderfolgenden Fenstern, veränderlicher Länge.When describing the. Method of decoding a Input data set, which consists of a stream of dependent coded unprecedented code words of variable length, were used the code examples and code table arrangements provided including the maximum code length that may be encountered, only as examples. The main progress of the indicated The procedure lies in the examination of the input code with several consecutive windows, more changeable Length.

209836/1 1 U209836/1 1 U

Claims (10)

PATENTANSPRÜCHEPATENT CLAIMS Verfahren zur Decodierung vorsatzfreier Codewörter veränderlicher Länge in Codewörter fester Länge unter Benutzung einer elektronischen Datenverarbeitungsanlage, deren Eingangsregister die codierten Daten als kontinuierliche Folge binärer Bits ohne Anzeige für Beginn oder Ende der einzelnen Zeichen zugeführt werden und deren Speicher eine Decodiertabelle enthält, dadurch gekennzeichnet, daß entsprechend dem verwendeten vorsatzfreien Code veränderlicher Länge eine Anzahl von aufeinanderfolgenden Bitspeicherstellen des Eingangsregisters ausgewählt wird, daß deren Inhalt geprüft wird und daß jede der aufeinanderfolgenden geprüften Bitgruppen des Eingangsdatensatzes dazu verwendet wird, um nacheinander verschiedene Abschnitte der Decodiertabelle zu adressieren.Method for decoding unprecedented code words of variable length into code words of fixed length using an electronic data processing system whose input register contains the encoded data as continuous Sequence of binary bits without display for beginning or end of the individual characters are supplied and their memory contains a decoding table, characterized in that variable according to the unprecedented code used Length a number of successive bit storage locations of the input register is selected, that their content is checked and that each of the successive checked bit groups of the input data set is used to successively address different sections of the decoding table. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die aufeinanderfolgenden Bitgruppen als Adreßerhöhungsangaben benutzt werden, um aufeinanderfolgende Adressen der Decodiertabelle zu adressieren und daß die Adreßerhöhungsangabe mit einer aus der Decodiertabelle erhaltenen weiteren Adreßerhöhungsangabe kombiniert wird, wenn der unmittelbar vorhergehende Zugriff zur Decodiertabelle für die unmittelbar voraufgehende Bitgruppe des Eingangsdatensatzes zu keiner erfolgreichen Decodierung führte.2. The method according to claim 1, characterized in that the successive bit groups as address increment information are used to address successive addresses in the decoding table and that the address increment indication is combined with a further address increment information obtained from the decoding table, if the immediately previous access to the decoding table for the immediately preceding bit group of the input data set did not result in successful decoding. 3. Verfahren nach den Ansprüchen 1 und 2, bei dem unter allen möglichen Bitgruppenmustern des Eingangsdatensatzes mindestens eines zu einer erfolgreichen Decodierung führt, dadurch gekennzeichnet, daß die Decodiertabelle so im Speicher angeordnet wird, daß ein erster Abschnitt durch die erste Bitgruppe des zu decodierenden Zeichens direkt adressierbar ist, daß an bestimmten Stellen der Decodiertabelle3. The method according to claims 1 and 2, wherein among all possible bit group patterns of the input data set at least one leads to successful decoding, characterized in that the decoding table is so in memory it is arranged that a first section is directly addressable by the first bit group of the character to be decoded is that at certain points in the decoding table YO 970 070 209836/ 1 1 UYO 970 070 209836/1 1 U eine Angabe darüber, daß beim Zugriff auf diese Stellen keine Decodierung möglich ist, und eine Adreßerhöhungsangabe gespeichert ist, die auf einen anderen Abschnitt der Decodiertabelle verweist und mit der nächsten der aufeinanderfolgenden Bitgruppen des Eingangsregisters kombiniert wird, um die Adresse eines weiteren Abschnitts der Decodiertabelle zu liefern, daß an bestimmten anderen Stellen der Decodiertabelle eine Angabe darüber, daß ein Zugriff auf diese Stellen zu einer erfolgreichen Decodierung führt, gespeichert ist und eine weitere Angabe, die die Länge des codierten und erfolgreich decodierten Zeichens angibt, sowie eine Angabe, aus der die Identität des codierten Zeichens veränderlicher Länge festgestellt werden kann, und daß so viele aufeinanderfolgend adressierbare Abschnitte der Decodiertabelle vorhanden sind als Bitgruppen des Eingangsdatensatzes zur Decodierung herangezogen werden können, wobei jede Bitgruppe des Eingangsdatensatzes eine Adresse für die Decodiertabelle liefert.an indication that no decoding is possible when these locations are accessed, and an indication of the increase in the address is stored, which refers to another section of the decoding table and with the next of the consecutive Bit groups of the input register are combined to form the address of a further section of the decoding table to deliver that at certain other places in the decoding table an indication of the fact that an access on these positions leads to a successful decoding, is stored and further information, which the length of the indicates the encoded and successfully decoded character, as well as an indication of the identity of the encoded character variable length can be determined, and that as many successively addressable sections the decoding table are available as bit groups of the input data set can be used for decoding, each bit group of the input data record providing an address for the decoding table. 4. Verfahren nach den Ansprüchen 1 bis 3, dadurch gekennzeichnet, daß bei abhängiger Codierung, bei der die Zuordnung der Codewörter abhängt von der Wahrscheinlichkeit für das Auftreten eines Zeichens nach einem bestimmten voraufgehenden Zeichen eine sog. Mitgliedschaftstabelle gespeichert ist, die unter Berücksichtigung des unmittelbar voraufgehenden Zeichens direkt adressierbar ist, wobei der Fall, daß kein Zeichen voraufgeht, eingeschlossen ist,4. The method according to claims 1 to 3, characterized in that that with dependent coding, in which the assignment of the code words depends on the probability for the If a character occurs after a certain preceding character, a so-called membership table is stored which is directly addressable taking into account the immediately preceding character, where the case where no sign precedes is included, daß in der Mitgliedschaftstabelle eine Adresse gespeichert ist, die abhängig von dem voraufgehenden Zeichen auf eine bestimmte Decodiertabelle verweistthat an address is stored in the membership table, which depending on the preceding character on a specific decoding table refers und daß die Mitgliedschaftstabelle Angaben enthält zur Bestimmung der Anzahl aufeinanderfolgender Bitgruppen des Eingabedatensatzes, die nacheinander zur Decodierung herangezogen werden.and that the membership table contains information for determining the number of successive bit groups of the Input data set that are used one after the other for decoding. ο 970 070 209836/11 Hο 970 070 209836/11 H 5. Verfahren nach den Ansprüchen 1 bis 4, dadurch gekennzeichnet, daß die bei einer erfolgreichen Decodierung erhaltene Angabe über die Länge des codierten Zeichens dazu benutzt wird, um eine entsprechende Anzahl von Bits aus dem Eingangsregister herauszuschieben.5. Process according to claims 1 to 4, characterized in that that the information about the length of the coded character received in the event of a successful decoding is used to shift a corresponding number of bits out of the input register. 6. Verfahren nach den Ansprüchen 1 bis 5, dadurch gekennzeichnet, daß zur Bestimmung, ob eine erfolgreiche Decodierung möglich ist, ein bestimmtes Feld eines Speicherwortes, das an einer adressierten Stelle der Decodiertabelle gespeichert ist, auf ein vorgegebenes Bitmuster abgefragt wird.6. The method according to claims 1 to 5, characterized in that to determine whether a successful decoding it is possible to use a specific field of a memory word at an addressed position in the decoding table is stored, is queried for a predetermined bit pattern. 7. Verfahren nach den Ansprüchen 1 bis 6, dadurch gekennzeichnet, daß die der Decodiertabelle entnommene Angabe zum Feststellen der Identität eines Zeichens das dem codierten Zeichen veränderlicher Länge entsprechende decodierte Zeichen fester Länge ist.7. The method according to claims 1 to 6, characterized in that that the information taken from the decoding table for determining the identity of a character corresponds to the coded characters of variable length is corresponding decoded characters of fixed length. 8. Verfahren nach den Ansprüchen 1 bis 6, dadurch gekennzeichnet, daß die der Decodiertabelle entnommene Angabe zum Feststellen der Identität eines Zeichens eine Adresse enthält, die dazu dient, das decodierte Zeichen einer weiteren Decodiertabelle zu entnehmen.8. The method according to claims 1 to 6, characterized in that the information taken from the decoding table to determine the identity of a character contains an address which is used to identify the decoded character of a further decoding table. 9. Verfahren nach den Ansprüchen 1 bis 8, dadurch gekennzeichnet, daß zur Decodierung abhängig codierter Daten der vorher decodierte Abschnitt des Eingangsdatensatzes eine Indexadresse liefert, die mit der Angabe zur Feststellung der Identität eines Zeichens kombiniert wird, um die Adresse des decodierten Zeichens im Speicher zu liefern.9. The method according to claims 1 to 8, characterized in that for decoding dependently coded data the previously decoded section of the input data record supplies an index address with the information on determination the identity of a character is combined to give the address of the decoded character in memory deliver. YO 970 070YO 970 070 209836/1 1 14209836/1 1 14 220S66A220S66A 10. Verfahren nach den Ansprüchen 1 bis 9, dadurch gekennzeichnet, daß zur Decodierung abhängig codierter Daten das unmittelbar einem codierten Zeichen voraufgehende Zeichen bestimmt wird, wobei auch der Fall berücksichtigt wird, daß kein unmittelbar voraufgehendes Zeichen vorhanden ist,10. The method according to claims 1 to 9, characterized in that that for decoding dependently coded data, the character immediately preceding a coded character Character is determined, taking into account the case that there is no immediately preceding character is, daß das Ergebnis dieser Bestimmung zur Adressierung einer ersten Decodiertabelle herangezogen wird, daß deren Inhalt zur Bestimmung der Gruppenmitgliedschaft des zu decodierenden Zeichens verwendet wird, daß das Ergebnis zum Adressieren einer zweiten Decodiertabelle benutzt wird, der eine Basisadresse zum Adressieren einer Referenz-Tabelle entnommen wird und eine Adresse für eine dritte Decodiertabelle, die die Basisadresse der Haupt-Decodiertabelle liefert und eine Reihe von Angaben, . die die Länge der aufeinanderfolgenden Bitgruppen im Eingangsregister angeben, die für das Decodieren eines Zeichens heranzuziehen sind,that the result of this determination is used to address a first decoding table, that its content is used to determine the group membership of the character to be decoded, that the result is used to address a second decoding table, which is a base address for addressing is taken from a reference table and an address for a third decoding table, which is the base address of the Main decoding table supplies and a series of information,. which is the length of the successive bit groups in the input register specify which are to be used for decoding a character, daß die der ersten Bitgruppe des Eingangsregisters mit der dritten Decodiertabelle erhaltenen Basisadresse zum Adressieren der Haupt-Decodiertabelle kombiniert wird, daß festgestellt wird, ob dabei eine Anzeige für eine erfolgreiche Decodierung erhalten wird, daß bei negativem Ergebnis einer auf eine andere Adresse der Haupt-Decodiertabelle verweisende weitere Adresse entnommen wird, die mit der nächsten Bitgruppe im Eingangsregister zur Bildung einer Adresse für einen weiteren Abschnitt der Haupt-Decodiertabelle kombiniert wird, daß geprüft wird, ob deren Inhalt die Möglichkeit einer erfolgreichen Decodierung anzeigt, daß die Zugriffe auf das Eingangsregister und die Decodiertabelle wiederholt werden, bis eine solche Anzeige erfolgt, daß die Längenangaben für das zu decodierende Zeichen entnommen und das Zeichen aus dem Eingang.sregister herausgeschoben werden undthat the base address received from the first bit group of the input register with the third decoding table for addressing the main decoding table is combined to determine whether there is an indication for a successful decoding is obtained that with a negative result one to another address the main decoding table referring further address is taken with the next group of bits in the input register to form an address for a further section the main decoding table is combined that a check is carried out to determine whether its content has the possibility of a successful decoding indicates that the accesses to the input register and the decoding table are repeated until the display shows that the length information for the character to be decoded has been taken and the character is pushed out of the input register will and YO 970 070YO 970 070 209836/1 114209836/1 114 daß die dem Feststellen der Identität eines Zeichens dienende Angabe mit der vorher der zweiten Decodiertabelle entnommenen Basisadresse für einen Zugriff zu der Referenz-Tabelle kombiniert wird, durch den das dem codierten Zeichen veränderlicher Länge entsprechende decodierte Zeichen bestimmt wird.that the information used to determine the identity of a character with that of the second decoding table beforehand taken base address is combined for access to the reference table, through which the encoded Variable-length characters corresponding to decoded characters is determined. ΪΟ97ΟΟ7° 209836/nU ΪΟ97ΟΟ7 ° 209836 / nU . M. M. Le e rs eLe e rs e itit
DE19722208664 1971-02-26 1972-02-24 Method for decoding a prefix-free compression code of variable length Pending DE2208664A1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11927571A 1971-02-26 1971-02-26

Publications (1)

Publication Number Publication Date
DE2208664A1 true DE2208664A1 (en) 1972-08-31

Family

ID=22383502

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19722208664 Pending DE2208664A1 (en) 1971-02-26 1972-02-24 Method for decoding a prefix-free compression code of variable length

Country Status (3)

Country Link
DE (1) DE2208664A1 (en)
GB (1) GB1332631A (en)
IT (1) IT946993B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2490899A1 (en) * 1980-09-22 1982-03-26 Nippon Telegraph & Telephone DECODING APPARATUS FOR CODES REPRESENTED BY A CODE TREE

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1228925A (en) * 1983-02-25 1987-11-03 Yoshikazu Yokomizo Data decoding apparatus
WO2013086380A1 (en) 2011-12-08 2013-06-13 Oracle International Corporation Techniques for more efficient usage of memory - to - cpu bandwidth
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
US9292564B2 (en) 2013-09-21 2016-03-22 Oracle International Corporation Mirroring, in memory, data from disk to improve query performance
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US10303682B2 (en) 2013-09-21 2019-05-28 Oracle International Corporation Automatic verification and triage of query results
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9697221B2 (en) 2014-03-19 2017-07-04 Oracle International Corporation OZIP compression and decompression
US10275184B2 (en) 2014-07-22 2019-04-30 Oracle International Corporation Framework for volatile memory query execution in a multi node cluster
US10067974B2 (en) 2015-05-29 2018-09-04 Oracle International Corporation Loading and reloading an in-memory copy of a database object without blocking concurrent updates to the database object
US10216781B2 (en) 2015-05-29 2019-02-26 Oracle International Corporation Maintaining cross-node coherence of an in-memory database object in a multi-node database cluster
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
US10984043B2 (en) 2015-10-02 2021-04-20 Oracle International Corporation Method for faceted visualization of a SPARQL query result set
US10678788B2 (en) 2015-10-22 2020-06-09 Oracle International Corporation Columnar caching in tiered storage
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10102046B2 (en) 2016-03-24 2018-10-16 Oracle International Corporation In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources
US10572469B2 (en) 2016-05-31 2020-02-25 Oracle International Corporation Versioning and non-disruptive servicing of in-memory units in a database
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
US11514055B2 (en) 2019-09-13 2022-11-29 Oracle International Corporation Querying on hybrid formats and storages

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2490899A1 (en) * 1980-09-22 1982-03-26 Nippon Telegraph & Telephone DECODING APPARATUS FOR CODES REPRESENTED BY A CODE TREE
NL8104352A (en) * 1980-09-22 1982-04-16 Nippon Telegraph & Telephone DECODER FOR CODES PROPOSED BY A CODE TREE.

Also Published As

Publication number Publication date
GB1332631A (en) 1973-10-03
IT946993B (en) 1973-05-21

Similar Documents

Publication Publication Date Title
DE2208664A1 (en) Method for decoding a prefix-free compression code of variable length
EP0230437B1 (en) Process for compressing and expanding structurally associated multiple-data sequences, and arrangements for implementing the process
DE69532775T2 (en) Data compression and decompression method and associated data compression and decompression device
DE3852341T2 (en) Character processing system with spell check function.
DE602004010922T2 (en) STORAGE AND STROMEFFICIENT MECHANISM FOR FAST TABLE HUNTING
DE2139731A1 (en) Arrangement and procedure for code implementation with an associative memory
DE2264090C3 (en) Data compression
DE2210044A1 (en) Method for converting code words
DE2712575C2 (en) Associative storage system in highly integrated semiconductor technology
DE2551239C3 (en) Data processing system
DE3030255A1 (en) METHOD FOR TRANSMITTING WORDS AND MESSAGE TRANSMISSION SYSTEM FOR ITS IMPLEMENTATION
DE2758829C2 (en) Data processing system with several processors
DE3330845C2 (en)
DE10196847B4 (en) A method for generating Huffman code length information
DE60302203T2 (en) Arrangement for compressing a data table
DE2939411A1 (en) DATA PROCESSING SYSTEM WITH VIRTUAL STORAGE ADDRESSING
DE1449544A1 (en) Data processing machine with overlapping retrievable storage unit
DE2900586C2 (en) Arrangement for decoding code words of variable length
DE3137704C2 (en) Device for decoding a tree-shaped code of variable length
DE2244163A1 (en) PROCESS FOR COMPACTION OR EXTENSION OF DATA INFORMATION CHARACTERS IN A DATA PROCESSING SYSTEM
DE69133377T2 (en) Method and device for compressing and decompressing data
DE69309465T2 (en) Word / number and number / word illustration
DE3930889A1 (en) METHOD FOR DETECTING N DIFFERENT WORD CHAINS IN A VOICE SIGNAL
DE3633227A1 (en) Arrangement for conversion of a virtual address into a physical address for a working memory organised in pages in a data processing system
DE3407831C2 (en)

Legal Events

Date Code Title Description
OHJ Non-payment of the annual fee