DE2614916A1 - Konverter zur codeumwandlung - Google Patents

Konverter zur codeumwandlung

Info

Publication number
DE2614916A1
DE2614916A1 DE19762614916 DE2614916A DE2614916A1 DE 2614916 A1 DE2614916 A1 DE 2614916A1 DE 19762614916 DE19762614916 DE 19762614916 DE 2614916 A DE2614916 A DE 2614916A DE 2614916 A1 DE2614916 A1 DE 2614916A1
Authority
DE
Germany
Prior art keywords
code word
length
code
bits
values
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.)
Granted
Application number
DE19762614916
Other languages
English (en)
Other versions
DE2614916C2 (de
Inventor
David Curtis Van Voorhis
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 DE2614916A1 publication Critical patent/DE2614916A1/de
Application granted granted Critical
Publication of DE2614916C2 publication Critical patent/DE2614916C2/de
Expired 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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

Aktanzeichen der Anraelderin: 6h 975 007
Konverter zur Codeumwandlung
Die ürfinaung betrifft einen Konverter zur Umwandlung von Codeworten variierender Länge und kleiner Redunuanz in Zeichen fest gegebener Länge entsprechend dem Oberbegriff des Patentanspruchs 1.
Eine Codierung rait variierender Länge läßt sich zur Datenkompression von Zeichen gegebener Länge verwenden, v/ie z. B. von 8-Bit-EBCDIC-Zeichen, die üblicherweise für alphanumerische Zeichen, Zahlen und Symbole verwendbar sind. Die Längen der variierenden Codeworte von Codes variierender Länge werden so ausgewählt, daß kürzere Codeworte zur Darstellung häufiger vorkommender Zeichen und längere Codeworte zur Darstellung weniger häufig vorkommender Zeichen verwendet werden. Dabei ergibt sich eine durchschnittliche Länge der Codeworte variierender Länge, die kleiner ist als die der Zeichen fester Länge.
Die Verwendung von Codes mit variierender Länge zur Datenkompression eines Codes mit Zeichen fester Länge erfordert eine Vorkehrung zur Zuordnung der Zeichen fester Länge zu ihnen entsprechenden Codeworten. Die Umwandlung von Zeichen fester Länge in Codeworte wird normalerweise als Codierung bezeichnet, wohingegen der umgekehrte Vorgang gewöhnlich als Decodierung bezeichnet wird. Die Decodierung ist normalerweise schwieriger als die Codierung, wobei jede Folge im zu decodierenden Code eine Folge binärer Vierte ergibt. Die Folge der Codeworte muß in die einzel-
609850/0900
26H916
nen Codeworte unterteilt werden, bevor diese identifiziert und umgewandelt werden können.
Der Hauptnachteil der Decodierung bei Codes variierender Länge entsprechend dem Stande der Technik ist der, daß sie einem Kompromiß zwischen drei Codierzielen angepaßt sein muß. Das erste zu erreichende Ziel ist die Fähigkeit zur Decodierung von Codes variierender Länge, deren Durchschnittscodewortlänge so klein wie möglich ist. Solch ein Code erlaubt die größtmögliche Datenkompression. Das zweite Codierungsziel ist es, Codeworte schnell und wirtschaftlich decodieren zu können. Das dritte Ziel soll die Decodierung einer Vielzahl verschiedener Codes variierender Länge ermöglichen, wobei jeder Code für die Datenkompression verschiedenartiger Quelldaten geeignet ist.
Für beliebige Ausgangsdaten kann der gut bekannte Algorithmus von Huffman zur Bildung eines Codes minimaler Redundanz verwendet v/erden; dabei handelt es sich um einen Code variierender Länge mit kleinstmöglicher Codewortlänge, der als Datenbasis verwendbar ist. Drei Arten der Decodierung sind nach dem Stande der Technik für Huffman-Codes verwendbar, nämlich solche mit Tabellenauslesung, solche mit Stamrnbaumarbeitsweise und solche, die mit Codierung arbeiten. Es hat sich jedoch herausgestellt, daß alle diese drei Arten aufwendig und langsam sind und nicht dazu geeignet sind, mehr als einen einzigen Code zu decodieren.
Ein Decodierer mit Tabellenauslesung umfaßt eine Tabelle, die sämtliche Codeworte als getrennte Einheiten aufweist. Beim Empfang der aufeinanderfolgenden Codewortbits eines Codewortes muß jedes Codewort in der Tabelle daraufhin geprüft werden, ob es mit irgend einem der bis dahin empfangenen Codewortbits übereinstimmt. Wenn ein Codewort Übereinstimmt, ist dieses bereits erkannt und identifiziert. Der für ein solches Tabellenleseverfahren erforderliche Tabellenspeicher erfordert einen sehr umfangreichen Assoziativspeicher.
SA 975 007
609850/0 9 00
26U91B
ilin rait einem Stammbaum arbeitender Decoaierer gründet sich auf die Tatsache^ daß Kuffman-Codes auf stamrubaumartigen Strukturen beruhen. Der Decodierer umfaßt dem Stammbaum entsprechende Schaltkreisanordnungen, und der Empfang der aufeinanderfolgenden Bits eines Codewortes läßt die Steuerkreise durch eine solche Stamnibauraartige Struktur hindurchfegen, t/enn ein Endzweig eines solchen Stammbaums erreicht ist, ist das gesamte Codewort aufgenommen und damit identifizierbar. Diese Stammbauruarbeitsweise eines Decodierers ist entweder sehr aufwendig, wenn melirfaclxe Schaltkreise für das Erreichen der einzelnen Enazweige des Baumes verwendet werden, oder langsam, wenn vorgesehene Schaltkreise wiederholt zu verwenden sind, um zu verschiedenen Enazweigen des Baumes zu gelangen.
L.in auf einem Codierer aufgebauter Decodierer umfaßt eine nachbildung des Codierers, einen Zeichengenerator und Vergleicherkreise. Der Seichengenerator gibt aufeinanderfolgend Zeichen fest gegebener Länge an den Codierer ab, und der Codierer erzeugt dann die Codeworte für die einzelnen aufeinanderfolgenden Zeichen. Jedes so erzeugte Codewort wird mit den Bits des zu decodierenden ;Codewortes verglichen. Sobald eine Übereinstimmung erkannt wird, ;ist das zu decodierende Codewort bekannt und entspricht dem zu-'letzt dem Codierer zugeführten Zeichen. Ein solcher sich auf einem Codierer aufbauender Decodierer ist recht langsam, da eine Vielzahl von Codeworten zu erzeugen und durchzutesten ist.
Wie bereits genannt wurde, sind Decodierer nach dem Stande der Technik für Huffman-Codes aufwendig, langsam arbeitend und des weiteren nicht im Stande, mehr als einen einzigen Code zu decodieren. Aus diesem Grunde ist bereits eine Vielzahl von besonderen Codes variierender Länge entwickelt worden, die eine schnelle und Aufwand sparende Decodierung gestatten. In diesem Zusammenhang ist hinzuweisen auf die deutschen Patenanmeldungen P 22 05 422.4 und P 21 39 731.9. Die speziellen Codes dieser AnmeldungfSind jedoch nicht minimal redundand. Das
SA 975 007
6098 50/0900
-4- 26U916
bedeutet, daß ihre durchschnittliche Codewortlänge größer ist als die durchschnittliche Codewortlänge der Huffman-Codes.
Die Aufgabe der vorliegenden Erfindung ist die Schaffung eines schnellen und v/i rts cha ft liehen Decodierers für die Codeworte einer Vielzahl von Codes variierender Länge bei minimaler Redundanz, wobei der angegebene Decodierer den Grundbaustein eines Konverters der eingangs genannten Art bildet.
Die Lösung dieser Aufgabe ist in den Patentansprüchen 1 oder 6 gekennzeichnet. Vorteilhafte Ausgestaltungen sind in den Unteransprüchen beschrieben.
Der für einen solchen Konverter-Decodierer verwendete Tabellenspeicher enthält eine F-Tabelle, deren einzelne Werte Zeichen fest gegebener Länge einer möglichen Datenmenge sind, und eine S-Tabelle, deren Werte die entsprechenden zu decodierenden Codes variierender Länge bei minimaler Redundanz darstellen. Die Zeichen vorgegebener Länge sind mit zunehmender Vorkommenshäufigkeit angeordnet, so daß f(0) das am häufigsten auftretende Zeichen, f(1) das am zweithäufigsten auftretende Zeichen usw. ist. Die Elemente der S-Tabelle sind nach der Länge der zu decodierenden Codeworte variierender Länge angeordnet. Der k-te Tabellenwert s(k) ist das Codewort, das genau k Bits lang ist.
Die vorgesehene Vergleicher-Kombinationsanordnung empfängt als Eingangssignale die aufeinanderfolgenden Bits yl, y2, ... eines Codewortes Cv(i), das zu decodieren ist. Während die aufeinanderfolgenden Codewortbits einlaufen, arbeitet der vorgesehene Summierer mit S-Tabellenelementen zur Berechnung aufeinanderfolgender Werte t(k) einer abgewogenen Summe und aufeinanderfolgender Werte b(k) einer unabgewogenen Summe. Diese Werte werden nach den folgenden Beziehungen ermittelt:
SA975007 609850/0900
-s- 26U916
t(k) = Ij=1 2k~js(j);
b(k) = Ik =1 s(j).
Die Vergleicher-Kombinationsanordnung verknüpft die empfangenen Codewortbits und bildet aufeinanderfolgende Begriffe y(k) = y,yo...yv zum Vergleich mit t(k).
Wenn sich ergibt, daß y(k) j> t(k) ist, dann ist y(k) bekannt als die ersten k Bits eines Codeworts Cv(i), dessen Länge k Bits überschreitet. Dann wird ein weiteres Coaewortbit eingegeben und die abgewogene Summe und die unabgewogene Summe werden errechnet. Schließlich ergibt sich dabei gegebenenfalls/daß y(k) < t(k) ist; dann ist y(k) bekannt als das k-Bit-Codewort C„(i), das zu decodieren ist. Die Vergleicher-Kombinationsanordnung kombiniert dieses Codewort mit der abgewogenen Summe t(k) und mit der unabgewogenen Summe b(k), um daraus den Codewortindex i nach der folgenden Beziehung zu errechnen:
i = y(k) - t(k) + b(k)
Schließlich wird der Index i dazu verwendet, ein entsprechendes Zeichen fest gegebener Länge zu ermitteln, wobei es sich um das Tabellenelement f(i) handelt.
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird im folgenden näher beschrieben.
Es zeigen:
Fig. 1 das Blockschaltbild eines Decodierers entsprechend
der vorliegenden Erfindung,
Fig. 2 ein detailliertes Blockschaltbild der Steuerkreise 9 gemäß Fig. 1,
SA 975 007
609850/0900
-β- 26H916
Fig. 3 ein detailliertes Blockschaltbild der S-Tabelle
3 gemäß Pig. I,
Fig. 4 ein detailliertes Blockschaltbild des Summierers
5 gemäß Fig. 1,
Fig. 5 ein detailliertes Blockschaltbild der Vergleicher-
Kombinations anordnung 7 gemäß Fig. 1 und
Fig. 6 ein detailliertes Blockschaltbild der F-Tabelle
1 gemäß Fig. 1.
In Fig. 1 ist der Aufbau eines Decodierkonverters für Codeworte variierender Länge mit minimaler Redundanz in Zeichen gegebener Länge dargestellt. Der Decodierer enthält eine F-Tabelle 1, eine S-Tabelle 3, einen Summierer 5, eine Vergleicher-Kombinationsanordnung 7 und Steuerkreise 9. Die aufeinanderfolgenden Bits eines Codeworts C-Ji), das zu decodieren ist, werden seriell über eine Leitung 11 von der Datenquelle 13 eingegeben. Der Decodierer 10 führt ein Verfahren in zwei Stufen durch, wobei die das Codewort C (i) bildenden Bits zuerst abgegrenzt und in einen Begriff i fest; gegebener Länge umgewandelt werden und darauf der Begriff i zur Adressierung des Zeichens f(i) gegebener Länge in der F-Tabelle verwendet wird. Dieses Zeichen gegebener Länge wird über ein Leitungsbündel 15 dem Datenempfänger 17 zugeleitet. Die erfolgreiche Decodierung eines Codeworts variierender Länge wird durch ein Signal über eine Leitung 19 angezeigt; dieses Signal wird sowohl der Datenquelle 13 als auch dem Datenempfänger 17 zugeführt.
Wie noch erläutert wird, kann der Decodierer 10 gemäß Fig. 1 der ' Decodierung eines Codes minimaler Redundanz für jeden Satz von Zeichen gegebener Länge angepaßt werden. Aus Gründen der praktischen Vernunft wird jedoch die Menge der einzelnen Schaltungskomponenten und Datenwege für die Verwendung mit einer gegebenen Zeichenlänge von maximal L„ Bits und einer maximalen Codewortlänge von Lv Bits ausgeführt. Lp und L„ sind wählbare Parameter für den SA 975 007
609850/0900
-7- 26U916
Entwurf. Dabei sinä Ιγ = 4 und L = 7 gewäiilt.
Da die über Leitung 11 eingegebene variierende Zahl von Codewortbits in über die Leitungen 15 abzugebende Zeichen fester Länge zu ,konvertieren ±st ι muß eine variierbare Datenfolgegeschwinäigkeit ■sowohl für die Datenquelle 13 als auch für den Dateneiupfanger 17 berücksichtigt werden. Der Decodierer 10 kann entsprechend den
!beiderseitigen Verhältnissen angepaßt werden. Da jedoch Systeme
für Zeichen fester Länge häufig eine feste üatenfolgegeschwindig- ;keit aufweisen, wird int beschriebenen Äusführungsbeispiel auf der Leitung 11 eine variierende und auf den Leitungen 15 eine feste
Datenfolgegeschwindigkeit angenommen.
;Eine Decodierung beginnt mit einem Start-Signal über eine Leitung
21 in Verbindung mit einem Taktimpuls über eine Leitung 25. Das
Start-Signal und der Taktimpuls v/erden seitens des Empfängers 17 !über die Leitungen 21 und 25 abgegeben und veranlassen die Daten- !quelle 13, aufeinanderfolgende Coäeworte seriell über die Leitung 11 zum Decodierer 10 einzugeben. Die aufeinanderfolgenden Taktim-.pulse über die Leitung 25 veranlassen den Decodierer 10 zur Deco-Sdierung der über die Leitung 11 zugeführten Codeworte und zur Ab-I gäbe entsprechender Zeichen gegebener Länge über die Leitungen 15.
Die internen Taktgaben der Datenquelle 13 und des Decodierers 10 :werden so eingestellt, daß für L + 1 = 8 Taktimpulse über die
Leitung 25 genau ein Codewort seriell über die Leitung 11 zum Deco ,dierer 10 eingegeben wird und daß das entsprechende Zeichen ge-
j gebener Länge über die Leitungen 15 abgegeben wird. L^ = 7 ist die j Länge des längstmöglichen Codeworts. Dabei ist auf den Leitungen j j 15 eine festgegebene Datenfolgegeschwindigkeit vorgesehen.
Die Decodieroperation wird jeweils mit einem Löschungs-Signal über i
die Leitung 23 und einem gleichzeitigen Taktimpuls über die Leitung 25 beendet. Dieses Löschungs-Signal und der Taktimpuls werden vom Datenempfänger 17 an den Decodierer 10 und die Datenquelle 13 abgegeben.
SA975O°7 609850/0900
26U916
Vor der Beschreibung der Punktionseinzelheiten des Decodierers 10 gemäß Fig. 1 soll ein Codebeispiel mit Zeichen gegebener Länge und gegenübergestellten zu decodierenden Codegruppen variierender Länge und minimaler Redundanz verglichen werden.
Tabelle 1 zeigt die Folge von BCD-Seichen eines als Beispiel gewählten Codes und dazu gegenübergestellt die Huffman-Codegruppen. Die beiden linken Spalten der Tabelle 1 zeigen die 16 BCD-Zeichen mit je 4 Bits und dazu die relative häufigkeit ihres Auftretens in der mittlersten Spalte. Die beiden rechten Spalten der Tabelle zeigen die entsprechenden Huffman-Codeworte und deren Länge. Als Beispiel: das 8. BCD-Zeichen ist Cp(8) = 1000 und dessen relative Auftretenshäufigkeit P(Cp1(O)) = 1/32. Das Huffman-Codewort dafür ist CH(8) = 10101 bei einer Länge Lfi(8) = 5 Bits.
Die Huffman-Codeworte ergeben sich entsprechend dem von Huffman in der Arbeit "A Method for the Construction of Minimum-Reaundancy Codes" (Proceedings of the IRE, Band 51, September 1952, Seiten 1098-1101) angegebenen Verfahren. Es ist dazu zu bemerken, daß bei BCD-Zeichen gegebener Länge mit 4 Bits die Durchschnittslänge der Huffman-Codeworte sich wie folgt ergibt:
IJl0 P(CF(i)) LH(i) = 3,45 Bits.
Die erforderliche Speicherkapazität für eine solche Codeanordnung läßt sich um den Faktor 3,45/4 = 0,86 durch Verwendung der Huffman-Codeworte anstelle der BCD-Zeichen reduzieren.
SA 975 007
609850/0900
O Tabelle Ii - 9 - 261 4916
1 cFu> Huffman-Code für 4-Bit-BCD-Zeichen
i 2 0000 P(Cp(i)) C11U, L11(I)
3 0001 1/4 00 2
4 0010 1/16 0100 4
5 0011 1/16 0101 4
6 0100 1/8 011 3
7 0101 1/16 1000 4
8 0110 1/64 101000 6
9 Olli 1/16 1001 4
10 1000 1/64 101001 6
11 1001 1/32 10101 5
12 1010 1/16 1011 4
13 1011 1/16 1100 4
14 1100 1/32 11010 5
15 1101 1/128 1101100 7
1110 1/128 1101101 7
1111 1/64 110111 6
1/8 111 3
Die Tabelle 2 zeigt ein anderes Beispiel eines Codes variierender Länge, der an Stelle eines Huffman-Codes verwendet werden kann. Dieser Code ist in drei Schritten wie folgt gebildet. Zuerst sollen die BCD-Zeichen in der Reihenfolge zunehmender Häufigkeit angeordnet werden, so daß f(i) das mit i-ter Häufigkeit vorkommende Zeichen ist. Zweitens soll LyU) die Länge des Huffman-Codeworts für das BCD-Zeichen f(i) sein. Drittens soll das Codewort C^(i) der Binärbegriff mit Lv(i) Bits des folgenden Wertes sein:
,i-1 Lviii-LyW I
Als Beispiel soll der Fall i = 9 betrachtet werden. Gemäß Tabelle 2 ist das BCD-Zeichen 9-ter Vorkommenshäufigkeit f(9) = 1000;
SA 975 007
609850/0900
26U916
dieses Zeichen erscheint mit einer relativen Häufigkeit P(f(9)) = 1/32. Bei einem Vergleich mit Tabelle 1 zeigt sich, daß der Huffman-Code dafür ein Codewort C„(8) = 10101 mit 5 Bits
ri
verwendet. Somit gilt LT.(8) = 5. Schließlich wird zur Bestimmung
Xl
des Codeworts Cv(9) die folgende Summe berechnet:
-L (j) V
Somit ergibt sich C (9)
des Dezimalbegriffs 28.
= 23+2.22+6.21 = 8+8+12 = 28 11100. Dieses ist die Binärdarstellung
Tabelle 2: Anderer Code für die BCD-Zeichen
Lv(i)
0 0000 1/4 2 00
1 0011 1/8 3 010
2 1111 1/8 3 011
3 0001 1/16 4 1000
4 0010 1/16 4 1001
5 0100 1/16 4 1010
6 0110 1/16 4 1011
7 1001 1/16 4 1100
8 1010 1/16 4 1101
9 1000 1/32 5 11100
10 1011 1/32 5 11101
11 0101 1/64 6 111100
12 Olli 1/64 6 111101
13 1110 1/64 6 111110
14 1100 1/128 7 1111110
15 1101 1/128 7 1111111
Der Code variierender Länge gemäß Tabelle 2 stellt eine minimale Redundanz des Codes sicher. D. h., daß die durchschnittliche Codewortlänge gleich der durchschnittlichen Codewortlänge des
SA 975 007
609850/0900
26H916
Huffman-Codes ist, nämlich IJ^0 P(f(i)) Ly(i) = 3,45.
Somit kann der Code variierender Länge gemäß Tabelle 2 an Stelle des Huffman-Codes nach Tabelle 1 zur Beschränkung der erforderlichen Speicherkapazität um den Faktor 0,86 verwendet v/erden. Des weiteren gestatten die Eigenschaften des Codes variierender Länge gemäß Tabelle 2 eine einfachere Decodierung als der Huffman-Code.
1. Alle Codeworte gleicher Länge sind lückenlose Binärwerte. D. h., wenn Iyii) = Ly(j), dann ist Cy (i) = Cy(j) - j + i.
2. Der Binärwert der k Bits langen Anfänge der Codeworte, die länger als k Bits sind, überschreitet die Binärwerte sämtlicher Codeworte aus k Bits. D. h., wenn Lv(i) > Lv(j), dann bilden die ersten Ijtt(J) Bits des Codeworts Cv(i) einen Binärwert, der größer ist als C-Jj).
Diese beiden Merkmale des Codes variierender Länge gemäß Tabelle 2 gestatten seine Charakterisierung durch 2L„ = 14 Binärwerte b(l), b(2), ..., b(Ly) und t(l), t(2), ..., t(Ly) , wobei Ιγ = 7 die Länge des längsten Codeworts ist. Die 2LV Vierte sind wie folgt definiert: :
b(k) = Zahl der Codeworte mit k oder weniger Bits; t(k) = Anfang binärer Vierte, der gleich ist dem höchst- : wertigsten k Bits langen Codewort plus 1; er ist ebenfalls der kleinste k Bits lange Binärwert der Anfänge jedes Codeworts, das mehr als k Bits lang ist, mit k<Lv und t(Ly) = 2 V.
Mit diesen Definitionen folgern die beiden Merkmale des Codes ·
variierender Länge gemäß Tabelle 2: ■
1. Wenn L-.(i) = k, dann genügt das k Bits lange Codewort Cy(I) der Gleichung C^i) = t(k) - (b(k) - i). ;
2. Wenn Lrr(i) > k, dann bilden die ersten k Bits des Codeworts Cv(i) einen Binärwert, der mindestens so groß ist wie t(k).
SA 975 007
609850/0900
26U916
Ein Decodierer kann die Werte b(0), b(l), ..., b(L) und t(l), t(2) , ..., ti-^y) wi-e folgt zur Abgrenzung und Identifizierung von Codeworten aus der Tabelle 2 verwenden. Sobald die aufeinanderfolgenden Bits y , y , ... eines Codeworts Cv(i) empfangen sind, werden sie zur Bildung aufeinanderfolgender Werte y(l), y(2), verwendet, wobei y(k) = Y1Y2 ··· vDie aufeinanderfolgenden Werte y(k) werden mit den aufeinanderfolgenden Werten t(K) verglichen. Wenn y(k) ^. t(k) , dann ist der aufgenommene Wert y(k) , der die ersten k Codewortbits enthält, ein k Bits langer Anfang eines Codeworts, das langer ist als k Bits. In diesem Falle müssen zusätzliche Codewortbits berücksichtigt werden. Sobald jedoch y(k) < t(k), dann ist y(k) ein k Bits langes Codewort C (i). Die Kennzeichnung i dieses Codeworts kann bestimmt werden durch Einsetzung von y(k) für Cv(i) in die Gleichung Cv(i) = t(k) - b(t) + i, wobei sich i = y(k) - t(k) + b(K) ergibt.
Als Beispiel dieses Decodierprozesses sollen die Funktionen für das Codewort C (9) = 11100 gemäß Tabelle 2 betrachtet werden. Tabelle 3 zeigt die Binärwerte b(l), b(2)f ..., b(L ) und t(l), t(2), ..., t(L) mit L^ = 7, das den Code variierender Länge gernäß Tabelle 2 kennzeichnet. Wenn das erste Bit y = 1 des Codeworts Cv(9) = 11100 empfangen wird, wird der Wert y(l) — Y-, = 1 mit dem Wert t(l) = 0 verglichen. Da y(l) >_ t(l) , ist y(l) als das erste Bit eines Codeworts, das langer ist als ein Bit, bekannt. So wird ein weiteres Codewortbit y„ eingegeben und der Wert y(2) = y1y2 = H mit t(2) = Öl verglichen. Da y(2) _> t(2), ist y(2) als erste zwei Bits eines Codeworts, das langer als zwei Bits ist, bekannt. Ein drittes Codewortbit ist einzugeben. Da y(3) = ΥίΥο^3 = ^11 t(3) = 100, muß ein viertes Codewortbit eingegeben v/erden, und da y(4) = Y1Y2Y$¥4 = 1110 1. ti4) = HlO ist, muß ein fünftes Codewortbit eingegeben v/erden. Da y(5) = y1y2y_y4y5 = 11100 < 11110, ist y(5) nunmehr bekannt als 5 Bits langes Codewort Cv(i). Der Kennwert i dieses Codeworts bestimmt sich nach der Gleichung:
i = y(5) - t(5) + b(5) = 11100 - 11110 + 1011 = 1001. SA 975 007
609850/0900
26U916
i hat somit den Binärwert 1001 und den Dezimalwert 9, womit y(5) = 11100 korrekt als Codewort CL-(9) identifiziert worden ist.
Tabelle 3: Binärwerte, die den gewählten Code variierender Länge kennzeichnen
b(k)
t(k)
s(k)
1 00000 00000000
2 00001 00000001
3 00011 00000100
4 01001 00001110
5 01011 00011110
6 OHIO 00111111
7 10000 10000000
000 001 010 HO 010 011 010
Ein Decodierer, der die Vierte b(l), b(2), ..., b(L_J und t(l), t(2), ..., t(Lv) gemäß Tabelle 3 speichert, kann die vorstehend beschriebene Prozedur dazu verwenden, Codeworte variierender Länge gernäß Tabelle 2 abzugrenzen und zu identifizieren. Andererseits kann der Decodierer die Werte s(l), s(2), ..., S(Ly) speichern, die bedeuten:
s(k) = Anzahl der k Bits langen Codeworte. Dabei ergibt sich eine Liste komprimierter Adressierungshinweise.
Diese Werte können zur Berechnung der erforderlichen Vierte b(l), b(2), ..., b(Lv) und t(l), t(2),
Gleichungen verwendet werden:
.., t(Lv) nach den nachstehenden
b(k) =
t(k) =
k"j
s(j)
Da es wohl wirtschaftlicher ist, die Lv Werte s(l), s(2), ..., s(L ) zu speichern als die 2Iy Werte b(l), b(2), ..., b(Lv) und , t(l), t(2), ..., tdy), wird dieser Weg für das Ausführungsbeispiel
SA 975 007
609850/0900
-14- 26U916
der Erfindung geraäß Fign. 1 bis 6 beschritten.
An Hand der Fig. 1 soll nun in Einzelheiten die Funktion des Decodierers 10 erläutert werden. Solange der Decodierer gerade keine Decodierung ausführt, geben die Steuerkreise 9 ein Modus = 0-Signal über die Leitung 31 und die Vergleicher-Kornbinationsanordnung 7 ein Erledigt = O-Signal über die Leitung 19 ab. Das Modus = O-Signal gelangt über die Leitung 31 zur F-Tabelle 1, zur S-Tabelle 3, zum Summierer 5 und zur Vergleicher-Kombinationsanordnung 7. Das Erledigt = O-Signal gelangt über die Leitung 19 zu den Steuerkreisen 9, zur Datenquelle 13 und zum Datenempfänger 17.
Eine Decodierung wird mittels eines Start-Signals über die Leitung 21 in Verbindung mit einem Taktimpuls über die Leitung 25 eingeleitet. Das Start-Signal und der Taktimpuls kommen vom Datenempfänger 17 zum Decodierer 10 und zur Datenquelle 13. Daraufhin werden aufeinanderfolgende Taktimpulse durch den Datenempfänger 17 über die Leitung 25 gegeben und veranlassen die Datenquelle 13 zur seriellen Abgabe aufeinanderfolgender Codeworte über die Leitung 11 zum Decodierer 10. Die aufeinanderfolgenden Taktimpulse über die Leitung 25 veranlassen des weiteren den Decodierer 10 zur Decodierung der über die Leitung 11 zugeführten Codeworte und zur Abgabe entsprechender Zeichen fest gegebener Länge über die Leitungen 15. Die internen Seitgeberkreise der Datenquelle 13 und des Decodierers 10 sorgen dafür, daß jeweils nur genau ein Codewort über die Leitung 11 durchgegeben und anschließend bei einer Folge von I^ + 1 = 8 Taktimpulsen decodiert wird.
Auf das einleitende Start-Signal über die Leitung 21 in Verbindung mit einem Taktimpuls über die Leitung 25 hin gibt die Datenquelle ; 13 die aufeinanderfolgenden Bits aufeinanderfolgender Codeworte über die Leitung 11 zum Decodierer 10 ab. Diese Codewortbits werden im Takte der Taktimpulse über die Leitung 25 unter Anstehen des vom Decodierer 10 über die Leitung 19 abgegebenen Erledigt = 0* Signals übermittelt. Jedes der aufeinanderfolgenden Codeworte
SA 975 007
609850/0900
26U916
wird während einer Gruppe von L + 1 = 8 Taktimpulsen durchgegeben. Wenn ein vollständiges Codewort zugeführt ist, gibt der Decodierer 10 ein Erledigt = 1-Signal über die Leitung 19, um die übertragung des nächstfolgenden Codeworts zu verzögern, bis die nächste Gruppe von L^ + 1 = 8 Taktimpulsen beginnt.
Während des Decodierens verarbeitet der Decodierer 10 jedes einzelne mit den Taktimpulsen über die Leitung 25 zugeführte Codewort. Die Steuerkreise 9 geben ein Modus = 1-Signal während der ersten L^. = 7 Taktimpulse und ein Modus = O-Signal während des letzten Taktimpulses jeder einzelnen Gruppe von Lv + 1 = 8 Taktimpulsen ab. Diese Modus = 1- und Modus = O-Signale gelangen über ,die Leitung 31 zur F-Tabelle 1, zur S-Tabelle 3, zum Summierer 5 und zur Vergleicher-Kombinationsanordnung 7.
Während des Beginns jeder Folge von Lv + 1 = 8 Taktimpulsen gibt während der Decodierung die S-Tabelle 3 den gespeicherten Wert s(l) über die Leitungen 33 zum Summierer 5 ab. Danach veranlassen k >^ 1 aufeinanderfolgende Taktimpulse über die Leitung 25 bei einem Modus = 1-Signal über die Leitung 31 die S-Tabelle 3 dazu, den Wert s(k+l) über die Leitungen 33 abzugeben. Diese k >^ 1 Taktimpulse veranlassen des weiteren den Summierer 5, die Werte t(k) und b(k) zu berechnen, die über die Leitungen 35 und 37 zur Vergleicher-Kombinationsanordnung 7 gelangen. Die Werte t(k) und b(k) werden nach den folgenden Gleichungen berechnet:
t(l) = b(l) = S(I);
t(k) = 2t(k-l) + s(k), mit k > 1; ;
b(k) = b(k-l) + s(k), mit k > 1.
Zu Beginn jeder Gruppe von L + 1 = 8 Taktimpulsen gibt während i der Decodierung die Vergleicher-Kombinationsanordnung 7 das Signal Erledigt = 0 über die Leitung 19 zur Datenquelle 13. Daraufhin veranlassen k >^ 1 aufeinanderfolgende Taktimpulse über die Leitung 25 die Datenquelle 13 zur Abgabe der aufeinanderfolgenden Bits γ., Y2, ..., Yk eines zu decodierenden Codeworts Cv(i). Diese Codewortbits gelangen über die Leitung 11 zur Vergleicher-Kombina-
SA 975 007
609850/0900
26H916
tionsanordnung 7. Diese verknüpft die Codewortbits und bildet einen Wert y(k) = YiYo *"* yk* Dieser Wert wird mit dem über die Leitungen 35 zugeführten Wert t(k) verglichen. Wenn y(k) >^ t(k), ist y(k) als erste k Bits eines Codeworts bekannt, dessen Länge größer ist als k Bits, wenn andererseits y<k) < t(k) , dann ist y(k) = Cv(i) das zu decodierende Codewort. Der Index (i) dieses Codeworts wird berechnet nach der Gleichung:
i = y(k) - t(k) + b(k)
Der Wert i wird über die Leitungen 39 zur F-Tabelle 1 v/eitergegeben. Ein Erledigt = 1-Signal läuft nun über die Leitung 19 während der restlichen Taktimpulse der Gruppe von 8 Taktimpulsen, die zur Verarbeitung des gerade decodierten Codeworts gegeben werden. Dieses Erledigt = 1-Signal erreicht die Datenquelle 13 und verzögert die Abgabe des nächstfolgenden Codeworts bis zum Beginn der nächsten Taktimpulsgruppe von 8 Impulsen.
Da die Codeworte maximal L-. = 7 Bits lang sind, gestatten die ersten 7 Taktimpulse jeder Gruppe von 8 Taktimpulsen die Abgabe jedes beliebigen möglichen Codeworts Cv(i) und dessen Kombination mit den Werten t(k) und b(k), womit der entsprechende Indexwert i über die Leitungen 39 zur F-Tabelle 1 gegeben wird. Der letzte Taktimpuls jeder Gruppe von 8 Impulsen fällt zusammen mit einem Modus = O-Signal von den Steuerkreisen 9 über die Leitung 31 zur F-Tabelle 1. Dieser letzte Taktimpuls über die Leitung 25 zusammen mit einem Modus = O-Signal über die Leitung 31 bereitet die F-Tabelle 1 für die Suche des Zeichens f(i) fester Länge vor, das dem Codewort Cv(i) entspricht. Das Zeichen fest gegebener Länge wird zur Zeit des ersten Taktimpulses der nächsten 8ter-Taktfolge, die das nächste Codewort verarbeiten soll, gefunden, über Leitungen 15 wird dabei das Zeichen fester Länge zum Datenempfänger 17 abgegeben.
Fig. 2 zeigt die Einzelheiten der Steuerkreise 9 von Fig. 1. Ein 3-Bit-Zähler 201, ein Flip-Flop 203 und zwei ünd-Glieder 205 und 207 sowie ein Inverter 209 sind vorgesehen. Die Eingangssignale für die Steuerkreise sind die Taktimpulse über die Leitung 25, das
SA 975 007
609850/0900
26H916
Start-Signal über die Leitung 21 und Löschungssignale über die Leitung 23. Der einzige Ausgang ist der für das Modussignal über die Leitung 31.
Wenn der Decodierer 10 gerade nicht decodiert, befindet sich das Flip-Flop 203 in gelöschter Ruhestellung. Das Fehlen eines Ausgangssignals über die Leitung 204 vom Flip-Flop 203 blockiert das Und-Glied 207, so daß ein Modus = O-Signal über die Leitung 31 abgegeben wird.
Ein Start-Signal über die Leitung 21 in Verbindung mit einem Taktimpuls über die Leitung 25 schaltet das Flip-Flop 203 ein. Damit bereitet das Ausgangssignal vom Flip-Flop das Und-Glied 207 vor. Ein Start-Signal über 21 in Verbindung mit einem Taktimpuls über
,auch
25 löscht/den Zähler 201. Danach lassen bei Entfallen des Start-Signals die nachfolgenden Taktimpulse über 25 den Zähler 2Ol modulo acht zählen. D. h., daß die Ausgangsleitungen 202 vom Zähler 201 die folgenden Werte führen: 000, 001, 010, Oll, lOO, 101, HO, 111, OOO, 001, ..., usw. Entsprechende Ausgangssignale werden dem Und-Glied 205 zugeführt. Dieses in Verbindung mit dem Inverter 209 gibt ein Signal über die Leitung 210 immer dann ab, wenn die AusgangsSignaIe des Zählers 2Ol nicht gerade den Wert 111 wieder— ! geben. Somit gibt das Und-Glieä 207, das durch die Stellung des j Flip-Flops über die Leitung 204 vorbereitet wurde, ein Modus = 1-Signal über die Leitung 31 Iraner dann ab, wenn die Stellung des · Zählers 2Ol nicht 111 ist. D. h.: Bei jeder Gruppe von L + 1 = Taktimpulsen gibt das Und-Glied 207 sieben Modus = 1-Signale und danach ein einzige^s Modus = O-Signal ab.
Fig. 3 zeigt die Einzelheiten der S-Tabeile 3 von Fig. 1. Die entsprechenden Schaltkreise umfassen ein einziges Und-Glied 311 und fünf in sich geschlossene Schieberegister 301, 303, 3O5, 3O7 und 309 mit je 7 Bitstellen. Die Eingangssignale dazu sind die Taktimpulse über die Leitung 25 und die Modus-Signale über die Leitung 31. über Leitungen 33 wird jeweils der Wert s(k+l) abgegeben.
SA 975 OO7
609850/0900
26H916
Wie bereits erläutert wurde, speichert äie S-Tabelle L = 7 Binärwerte s(l), s(2)# ..., s(Lv), wobei der k-te Wert s(k) die Anzahl der k Bits langen Codeworte des zu decodierenden Codes variierender Länge und minimaler Redundanz angibt. Jeder Binärwert s(k) hat fünf zugehörige Bits in den fünf Schie&registern 301 bis 309 stehen. Wenn der Decodierer 10 nicht decodiert, steht der Binärwert s(l) in den Stellen am weitesten rechts in den einzelnen Schieberegistern und bietet sich über die Leitungen 33 an. Dabei stehen die restlichen Binärwerte s(2), s(3), ..., s(L ) in den links davon angeordneten Schieberegisterstellen. Die Tabelle 4 zeigt die Anordnung der Binärwerte s(l), ..., s(7) gemäß der Tabelle 3 in den Schieberegistern 301 bis 305.
s(7) SC6) s(5) Tabelle 4 s(2) S(I)
0 1 0 s(4) s(3) 1 0
301: 1 1 1 0 0 0 0
303: 0 0 0 1 1 0 0
305: 0 O 0 1 0 0 0
307: 0 O O O 0 0 0
309: 0 0
Während einer Decodierung wird jedes Codewort mit einer Gruppe von 8 Taktimpulsen verarbeitet. Wie bereits beschrieben wurde, schikken die Steuerkreise 9 über die Leitung 31 das Modus = 1-Signal zur Zeit der ersten 7 Taktimpulse und das Modus = O-Signal beim letzten Taktimpuls jeder Gruppe. Zu Beginn jeder Gruppe von 8 Taktimpulsen geben die 5 Schieberegister 301 bis 309 über die Leitungen 33 den Wert s(l) ab. Danach lassen k >^ 1 Taktimpulse ; bei einem Modus = 1-Signal die Schieberegister die Werte s(k+l) über die Leitungen 33 abgeben. Dabei läßt jeder Taktimpuls über , die Leitung 25 bei einem Modus = 1-Signal über die Leitung 31 das ünd-Glied 311 je einen Taktimpuls über die Leitung 312 laufen. Diese Taktimpulse über die Leitung 312 lassen die in den Schiebe- '"■ registern stehenden Werte jeweils um eine Stelle nach rechts weiterrücken, so daß die Bits des Binärwerts s(k+l) über die Lei-SA 975 007
609850/0900
- 19 - 26H916
tungen 33 nach k Taktimpulsen abgegeben werden.
Jedes rechts aus den Schieberegistern austretende Bit gelangt zurück nach links in das gleiche Schieberegister hinein. L^ = 7 Verschiebungen bei ebensoviel Taktimpulsen mit dem Modus = 1-Signal lassen die Schieberegister wieder in ihre ursprüngliche in Fig. 4 dargestellte Stellung mit s(l) über die Leitungen 33 gelangen. Das Modus = O-Signal über die Leitung 31, das den letzten Taktimpuls jeder Gruppe begleitet, dient zur Blockierung des Und-Glieds 311, so daß sich keine achte Verschiebung abspielt. Zu Beginn der nächsten Gruppe von 8 Taktimpulsen wird somit wiederum der Wert s(l) über die Leitungen 33 zur Verfügung gestellt,
JIn Fig. 4 sind die Einzelheiten des Summierers 5 gemäß Fig. 1 dargestellt. Der Summierer enthält einen 8-Bit-Addierer 4Ol, einen 5-Bit-Addierer 403, ein 8-Bit-Register 405 und ein 5-Bit-Register 407. Die Eingaben für den Summierer umfassen die Taktimpulse über die Leitung 25, die Modussignale über die Leitung 31 und den jejweiligen Viert s(k+l) über die Leitungen 33. An den Ausgängen wer-'den über die Leitungen 35 und 37 die Werte t(k) und b(k) abgegeben .
Solange der Decodierer 10 nicht arbeitet, wird der Binärwert s(l) über die Leitungen 33 seitens der S-Tabelle abgegeben. Die Register 405 und 407 geben anfangs binäre Nullen über die Leitungen 35, 36 und 37 ab. Die Addierer 401 und 403 stellen den Eingängen der Register 405 und 407 den Wert s(l) zur Verfügung.
Wenn eine Decodierung beginnt, läßt der erste Taktimpuls über die Leitung 25 in Verbindung mit einem Modus = 1-Signal über die Leitung 31 den Wert s(l) in die Register 405 und 407 gelangen. Diese Register geben dann die Werte t(l) = s(l) und b(l) = s(l) über die Leitungen 35 bzw. 37 ab. Wie in Fig. 4 dargestellt, geben die Leitungen 37 den Wert b(l) = s(l) in den einen Eingang des Addierers 403 ein. Die Leitungen 36 versetzen den Wert t(l) = s(l) eine Stelle nach links und geben somit den Wert 2t(1) in den
609850/0900
einen Eingang des Addierers 401 ein. Des weiteren läßt der erste Taktimpuls mit dem Modus = 1-Signal wie beschrieben die S-Tabelle 3 den Wert s(2) über die Leitungen 33 abgeben. Dieser Wert wird den anderen Eingängen der beiden Addierer 401 und 403 zugeführt. Der Addierer 401 gibt somit den Wert t(2) = 2t(1) + s(2) zu den Eingaben des Registers 405 ab, und der Addierer 403 gibt den Viert b(2) = b(l) + s(2) zum Eingang des Registers 407. Ein zweiter Taktimpuls über die Leitung 25 bei einem Modus = 1-Signal über die Leitung 31 läßt die Werte t(2) und b(2) in die Register 405 und 407 gelangen. Diese Werte werden dann über die Leitungen 35 und 37 abgegeben.
In ähnlicher Weise lassen die ersten k > 1 Taktimpulse der einzelnen Gruppen von 8 Taktimpulsen, die zur Decodierung je eines Codeworts benutzt werden, die Register 405 und 407 die Werte t(k) und b(k) ansammeln. Die Leitungen 36 geben den Wert 2t(k) zum einen Eingang des Addierers 401 und die Leitungen 37 den Wert b(k) zum einen Eingang des Addierers 403; die S-Tabelle gibt die Werte s(k+l) über die Leitungen 33 den anderen Eingängen der beiden Addierer ein. Die Addierer 401 und 403 geben die entsprechenden Vierte t(k+l) = 2t(k) + s(k+l) und b(k+l) = b(k) + s(k+l) zu den Eingängen der Register 405 und 407. Der (k+l)-te Taktimpuls bei einem Modus = 1-Signal gibt die Werte t(k+l) und b(k+l) in die Register 405 und 407 ein. Diese Werte werden dann über die Leitungen 35 und 37 bereitgestellt.
Wie bereits erörtert wurde, wird jeweils der letzte Taktimpuls jeder Gruppe von 8 Taktimpulsen durch ein Modus = O-Signal begleitet. Dieser Taktimpuls über die Leitung 25 gleichzeitig mit dem Modus = O-Signal über die Leitung 31 löscht die Register 405 und 407 auf Null. Somit sind die beiden Register für die Eingabe der nächsten Werte t(l) = s(l) und b(l) = s(l) mit dem ersten Taktimpuls der nächsten Gruppe von 8 Taktimpulsen bereit.
Fig. 5 zeigt die Einzelheiten der Vergleicher-Kombinationsanordnung 7 gemäß Fig. 1. Es ist darin enthalten ein Schieberegister
SA 975 007
609850/0900
-21- 2614316
501, zwei Addierer 503 und 505, ein Register 507, ein Flip-Flop 503, Inverter 511, 512 und 513, drei Una-Glieder 515, 517 uno. 521 sowie ein Oder-Glied 519. Die Lingangssignale sinü die 'raktiiupulse über die Leitung 25, die liodussignale über die Leitung 31, die vvfcrte t(k) und b(k) über die Leitungen 35 bzw. 37 una die aufeinanderfolgenden Bits je eines Codeworts C (i) Quer üie Leitung 11. Abgegeben werden das erledigt-Signal üoer aie Leitung 19 und die Indexwerte i über die Leitungen 3D.
wenn uer Decodierer 10 nicnt läuft, befindet sich das Flip-Flop 509 in eingeschaltetem Zustand und aas Schieberegister 501 gibt eine binare Hull den einen Eingang des Addierers 503 ein. Wie Deschrieben, gibt der Summierer eine binäre wull über die Leitungen 35 zu den Invertern 512 ein. Diese Inverter geben somit den i/ert 11111111 zum zweiten Eingang des Addierers 503. Während dem Übertrags eingang des Addierers 503 über die Leitung 502 aauernci eine binäre Sins zugeführt wird, wird eine Addition dieser Eins Lu.t dem Binärwert 11111111 durcngeführt und ein überlaufsignal üßer die Leitung 504 erzeugt. Dieses Ausgangssignal über die Leitung 504 wird mittels des Inverters 513 invertiert, so daß kein Signal über die Leitung 514 zum Oder-Glied 519 ansteht. Da das Flip-Flop 509 eingeschaltet ist, v/ird kein Ausgangssignal von ihm über die Leitung 510 zum Oder-Glied 519 gegeben. Somit gibt das Oder-Glied 519, solange der Decodierer 10 nicht läuft, ein Erledigt = O-Signal über die Leitung 19 ab.
Während einer Decodierung lassen aufeinanderfolgende Taktiiapulse über die Leitung 25 bei einem Erledigt = O-Signal über die Leitung 19 die aufeinanderfolgenden Bits y., y„, ... eines Codeworts Cv(i) in das Schieberegister 501 einlaufen. Wach k ^. 1 Taktimpulsen enthält das Schieberegister 501 den vollständigen Wert y(k) und gibt diesen tfert dem einen Eingang des Addierers 503 ein. wie beschrieben, lassen diese k >_ 1 'faktimpulse den Summierer den Binärwert t(k) über die Leitungen 35 zu den Invertern 512 abgeben. Der Addierer 503 und die Inverter 512 bewirken die
SA 975 007 609850/0900
26U916
Subtraktion t(k) von y(k) entsprechend der für binäre Arithmetik bekannten Gleicnung y(k) - t(k) = y(k) + t(k) + 1. IJenn die sich ergebende Differenz nicht negativ ist, d. h., wenn y(k) >^ t(k) , dann wird ein Überlaufausgangssignal durch den Addierer 503 über die Leitung 504 abgegeben. Dieses Aus gangs signal wird im Inverter 513 umgekehrt; somit blockiert das über die Leitung 514 nun fehlende Signal das ünd-Glied 515. Da das Flip-Flop 509 eingeschaltet ist, ist bei fehlenden Signalen über die Leitungen 514 und 510 ebenfalls das Oder-Glied 519 blockiert. Solange y(k) >_ t(k) ist, gibt das Oder-Glied 519 ein Erledigt = O-Signal über die Leitung 19 ab.
Wenn andererseits y(k) < t(k) ist, wird kein überlaufsignal aus den Addierer 503 abgegeben. Dann gibt der Inverter 513 ein Signal über die Leitung 514 zum Und-Glied 515 und zum Oder-Glied 519 ab. Das Oder-Glied 519 gibt damit ein Erledigt = 1-Signal über die Leitung 19 ab, um damit anzuzeigen, das ein komplettes Codewort empfangen ist. Da das Flip-Flop 509 des weiteren eingeschaltet ist, ergibt dessen Ausgangssignal über die Leitung 508 und das Signal über die Leitung 514 die Einschaltbedingung für das Unü-Glied 515, womit über die Leitung 516 ein Signal abgegeben wird. Dieses Signal dient zur Vorbereitung der Und-Glieder 517 und 521. Wenn nun beim nächsten Taktimpuls ein Modus = 1-Signal erscheint, wird dieses Taktsignal bei eingeschaltetem ünd-Glied 521 für die Löschung des Flip-Flops 509 sorgen. Auf jeden Fall wird der nächste Taktimpuls über das ünd-Glied 517 und die Leitung 518 zum Register 507 weitergegeben, das nunmehr mit den vom Addierer 505 abgegebenen Ausgangswerten geladen wird. Die in den Addierer 505 eingegebenen Werte sind die Werte y(k) - t(k) über die Leitungen 506 vom Addierer 503 und der Wert b(k) über die Leitungen 37 vom Summierer 5. Somit lädt der Taktimpuls über die Leitung 518 den Wert i = y(k) - t(k) + b(k) in das Register 507 ein. Der registrierte Indexwert i wird dann über die Leitungen 39 zur F-Tabelle 1 abgegeben.
SA 975 007 609850/0900
26U916
Wenn die Bedingung y(k) < t(k) wie beschrieben die Aufnahme eines vollständigen Codeworts vor dem letzten Taktimpuls einer Gruppe von Lv + 1 = 8 Taktimpulsen erkennen laßt, sorgt das gleichzeitig auftretende Modus = 1-Signal für die Rückstellung des Flip-Flops 509. Dessen Ausgangssignal über die Leitung 510 zum Oder-Glied 519 bewirkt ein Erledigt = 1-Signal über die Leitung 19. Das Fehlen eines Ausgangssignals über die Leitung 508 dient zur Sperrung der Una-Glieder 515 und 517. Der Coaewortindexwert i im Register 507 bleibt dabei wänrend der restlichen Taktimpulse der Gruppe von 3 Taktimpulsen unverändert erhalten.
Der letzte Taktimpuls der Gruppe von 8 Taktimpulsen wird von einem Modus = 0-Signal über die Leitung 31 begleitet. Der Taktimpuls; mit dem Modus = O-Signal dient zur Löschung des Schieberegisters 501. Das Modus = O-Signal dient des weiteren zur Sperrung des Ünd-Glieds 521 und wird überdies durch den Inverter 511 umgekehrt, um damit das Flip-Flop 509 wieder einschalten zu lassen. Ein Taktimpuls, der zusammen mit dem Modus = O-Signal auftritt, schaltet das Flip-Flop 509 schließlich ein, womit die Vergleicher-Kombinations anordnung für die Decodierung des nächsten zu übermittelnden Codeworts vorbereitet ist.
Fig. 6 zeigt die Einzelheiten der F-Tabelle 1 gemäß Fig. 1. Es sind vorgesehen ein 4 χ 16-Auslesespeicher 601, ein Flip-Flop 603, ein ünd-Glied 605 und ein Inverter 607. Eingangssignale sind das Modussignal über die Leitung 31, die Taktimpulse ; über die Leitung 25 und Codewortxndexwerte i über die Leitungen 39. Das einzig vorgesehene Ausgangssignal ist das Zeichen f(i) vor- j
gegebener Länge, das über die Leitungen 15 parallel abnehmbar ist.;
Vvie erläutert wurde, wird jedes Codewort mit einer Gruppe von ! L^ = 7 Taktimpulsen bei einem Modus = 1-Signal decodiert, worauf ein weiterer Taktimpuls mit dem Modus = O-Signal folgt. Das Modus = 1-Signal über die Leitung 31 besorgt die Rückstellung des nlip-Flops 603 mit einem Taktimpuls zum Eingang C des Flip-Flops.
SA 975 007 609 8 50/0900
26H916
Das fehlende Ausgangssignal auf der Leitung 604 blockiert soi.iit das Und-Glied 605. Das Modus = 0-üignal oeiu letzten Taktimpuls jeder Gruppe von 8 Taktiiupulsen wira mittels des Inverters G07 umgekehrt zwecks Ermöglichung der Einschaltung des Flip-Flops 603. Der letzte Taktiiapuls jeder Gruppe von 8 Taktimpuls en besorgt diese Flip-Flop-Einschaltung. Das dabei erscheinende Ausgangssignal über aie Leitung 604 bereitet die Einschaltung des üna-Glieds 605 vor.
Ära ilnäe jeder Gruppe von 8 Taktimpulsen zur Decodierung eines Codeworts C (i) wird der Codewortindexv/ert i über die Leitungen 39 von aer Vergleicher-Kombinationsanordnung 7 abgegeben, wie bereits beschrieben wurde. Das Ausgangssignal auf der Leitung 604 vom Flip-Flop 603 ist eine Einschaltbedingung für das ünd-Glied 605. Dabei dient der erste Taktimpuls der für die Verarbeitung des nächsten Codeworts vorgesehenen Achter-Taktfolge und das gleichzeitig auftretende Modus = 1-Signal mittels des Und-Glieds 605 zur Abgabe eines Lesesignals über die Leitung 606 zum Speicher 601. Somit gibt der Speicher das Zeichen f(i) fest vorgegebener Länge über die Leitungen 15 ab.
Die Umwandlung von Codeworten variierender Länge und minimaler Redundanz in entsprechende Zeichen fest vorgegebener Länge wird somit ermöglicht. Eine wählbare Auslegung der in den Tabellen gespeicherten Werte ermöglicht die Anpassung an die Umwandlung verschiedener Codes variierender Länge minimaler Redundanz in Uorte fester Länge verschiedener Codesätze.
Zusammenfassung; Es handelt sich um einen Konverter zur Umwandlung von Codeworten variierender Länge mit kleiner Redundanz in entsprechende Zeichen mit vorgegebener fester Länge. Die Umwandlung umfaßt zwei Schritte, in denen ein Codewort zuerst in einen ßegriff fester Länge umgewandelt wird; daraufhin wird dieser Zwischenstufenbegriff dazu verwendet, aus einer Tabelle mit Seichen vorgegebener Länge das richtige liort der Endstufe her-
SA 975 007 6098 50/0900

Claims (6)

PATEHT A U S P R Ü C ΐΐ U
1. Konverter zur umwandlung von Codeworten variierender Länge und kleiner Redundanz in Zeichen fest gegebener Länge, gekennzeichnet durch
einen Tabellenspeicher (1 + 3), der eine erste Tabelle (1) Mit den Zeichen f (i) vorgegebener Länge und eine zweite Tabelle (3) mit Werten s(l), s(2), ... enthält, die die einzelnen Elemente des umzuwandelnden Codes variiernder Länge eindeutig identifizieren,
eine Vergleicher—Kombinationsanordnung (7) , der die aufeinanderfolgenden Bits y,, γη, ... jeweils eines umzuwandelnden Codeworts Cv(i) zuführbar sind,
einen mit Ausgängen des Tabellenspeichers für die s-Werte verbundenen Summierer (5), mittels dessen bei den einzelnen zugeführten Codewortbits y., y2, ... aufeinanderfolgende erste. Sumraenwerte t(l), t(2), ... und zweite Sumrusnwerte b(l), b(2), ... errechenbar sind nach den Gleichungen
b(k) =
Verbindungen (35) der Ausgänge des Summierers mit Eingängen der Vergleicher-Kombinationsanordnung, mittels derer in der Vergleicher-Kombinationsanordnung unter Zuführung der einzelnen ersten Sumraenwerte die zu jeweils einem umzuwandelnden Codewort gehörenden Bits abgrenzbar sind, indem ein Wert t(k) gesucht una gefunden wird, der den zugehörigen, k Bits umf assenden Wert y(k) = Υιν2ν3···νν ^es umzuwandelnden Codeworts gerade überschreitet, und Verbindungen (35, 37) der Ausgänge des Summierers mit Eingängen der Vergleicher-Kombinationsanordnung, mittels
SA 975 007 609850/0900
26H916
derer unter Kombination aer einzelnen ersten Sumraenwerte und der einzelnen zweiten Sumuenwerte mit den abgegrenzten Bits des umzuwandelnden Coaeworts ein Indexwert i = y(k) - t(k) + b(k) zur Adressierung des zugehörigen Zeichens f(i) gegebener Länge in der ersten Tabelle des Tabellenspeichers und zur Abgabe über den Tabellenspeicherausgang errechenbar ist.
2. Konverter nach Anspruch 1, dadurch gekennzeichnet, daß die Länge L^(i) des dem mit i-ter Häufigkeit auftretenden Zeichen gegebener Länge entsprechenden Codeworts Cv(i) gleich der Lange des Iluffman-Codeworts desselben Zeichens ist,
wobei das Codewort Cv(i) ein aus Lv(i) Bits bestehender Wert
3. Konverter nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß der k-te Tabellenwert s(k) die Anzahl der jeweiligen Codeworte mit k Bits innerhalb des Codes variierender Länge angibt.
4. Konverter nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß die ersten Summenwerte t(l), t(2), ... und die zweiten Summenwerte b(l), b(2), ... nach den folgenden Gleichungen ermittelt werden:
t(l) = b(l) = S(I)
t(k) = 2t(k-l) + s(k), mit k > 1 b(k) = b(k-l) + s(k) , mit k > 1
007 609 B 50/0900
-2S-
5. Konverter nach eineu der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß der i-te Tabellenwert f (i) das mit i-ter Häufigkeit auftretende Zeichen vorgegebener Länge ist.
6. Konverter zur Umwandlung von Codeworten variierender Längs und kleiner Redundanz in Zeichen fest gegebener Länge, gekennzeichnet durch
einen Tabellenspeicher (1+3) für zwei Tabellen, nämlich eine erste Tabelle (1), die Seichen f(i) vorgegebener Länge enthält, und eine zweite Tabelle (3), die die zu verarbeitenden Codeworte (C (i)) variierender Länge eindeutig identifiziert,
einen Suiumierer (5) , mittels dessen bei Sufünrung der aufeinanderfolgend zugeführten Bits (y , y„, ..., y- ) je eines zu verarbeitenden Codewortes aus den Speicnerwerten (s(k+l)) der zweiten Tabelle (3) aufeinanderfolgend die Werte (t und b) einer abgewogenen ersten Summe und einer unabgewogenen zweiten Summe errechenbar sind, und eine Vergleicher-Kombinationsanordnung (7), deren ersten; Eingang ebenfalls die aufeinanderfolgenden Bits des zu verarbeitenden Codewortes, deren zweitem Eingang die leerte (t) der abgewogenen ersten Summe bei der Abgrenzung des Codewortbits und deren drittem Eingang des v/eiteren die i'ierte (b) der unabgewogenen zweiten Summe zuführbar sina, wobei am Ausgang der Vergleicher-Kombinationsanordnung für jedes zu verarbeitende Codewort ein Indexwert (i) zur Adressierung in der ersten Tabelle (1) und zum Aufruf des dem jeweils zu verarbeitenden Codewort entsprechenden Zeichens (f(i)) vorgegebener Länge aus dem Tabellenspeicher abnehmbar ist.
SA 975 007 609 8 50/0 9 00
DE2614916A 1975-05-19 1976-04-07 Konverter zur Codeumwandlung Expired DE2614916C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/578,959 US4044347A (en) 1975-05-19 1975-05-19 Variable-length to fixed-length conversion of minimum-redundancy codes

Publications (2)

Publication Number Publication Date
DE2614916A1 true DE2614916A1 (de) 1976-12-09
DE2614916C2 DE2614916C2 (de) 1985-02-14

Family

ID=24315027

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2614916A Expired DE2614916C2 (de) 1975-05-19 1976-04-07 Konverter zur Codeumwandlung

Country Status (4)

Country Link
US (1) US4044347A (de)
JP (1) JPS5916300B2 (de)
DE (1) DE2614916C2 (de)
GB (1) GB1534069A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3118676A1 (de) * 1981-05-12 1982-12-02 Heinz Karl Eckhart Dr Jur Verfahren zur kompression redundanter folgen serieller datenelemente

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4250548A (en) * 1979-01-02 1981-02-10 Honeywell Information Systems Inc. Computer apparatus
US4463342A (en) * 1979-06-14 1984-07-31 International Business Machines Corporation Method and means for carry-over control in the high order to low order pairwise combining of digits of a decodable set of relatively shifted finite number strings
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
US4451819A (en) * 1981-06-22 1984-05-29 Memorex Corporation Method and apparatus for decoding binary data
US4475174A (en) * 1981-09-08 1984-10-02 Nippon Telegraph & Telephone Public Corporation Decoding apparatus for codes represented by code tree
CA1211219A (en) * 1982-06-30 1986-09-09 Hideo Kuroda Digital data code conversion circuit for variable- word-length data code
US5027376A (en) * 1985-10-30 1991-06-25 Microcom Systems, Inc. Data telecommunications system and method for transmitting compressed data
FR2600223B1 (fr) * 1986-01-13 1988-08-19 Thomson Cgr Procede de formattage et de deformattage de donnees resultant du codage d'informations numeriques a l'aide d'un code a longueur variable, et dispositif de mise en oeuvre
US4949302A (en) * 1986-11-17 1990-08-14 International Business Machines Corporation Message file formation for computer programs
US4774587A (en) * 1987-06-02 1988-09-27 Eastman Kodak Company Still video transceiver processor
US4772956A (en) * 1987-06-02 1988-09-20 Eastman Kodak Company Dual block still video compander processor
US4764805A (en) * 1987-06-02 1988-08-16 Eastman Kodak Company Image transmission system with line averaging preview mode using two-pass block-edge interpolation
US5237701A (en) * 1989-03-31 1993-08-17 Ampex Systems Corporation Data unpacker using a pack ratio control signal for unpacked parallel fixed m-bit width into parallel variable n-bit width word
US4963867A (en) * 1989-03-31 1990-10-16 Ampex Corporation Apparatus for packing parallel data words having a variable width into parallel data words having a fixed width
US5173695A (en) * 1990-06-29 1992-12-22 Bell Communications Research, Inc. High-speed flexible variable-length-code decoder
US5055841A (en) * 1991-02-01 1991-10-08 Bell Communications Research, Inc. High-speed feedforward variable word length decoder
US5227789A (en) * 1991-09-30 1993-07-13 Eastman Kodak Company Modified huffman encode/decode system with simplified decoding for imaging systems
US5361370A (en) * 1991-10-24 1994-11-01 Intel Corporation Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port
US5509088A (en) * 1993-12-06 1996-04-16 Xerox Corporation Method for converting CCITT compressed data using a balanced tree
US5550542A (en) * 1994-05-04 1996-08-27 Matsushita Electric Corporation Of America Variable length code look-up table having separate code length determination
JP3332619B2 (ja) * 1994-11-29 2002-10-07 キヤノン株式会社 復号装置およびその方法
US5737735A (en) * 1996-05-14 1998-04-07 Resolve 2000, Inc. Method and apparatus for recording and reading date data having coexisting formats
US6055532A (en) * 1996-05-14 2000-04-25 Soeder; Thomas B. Method and apparatus for recording and reading date data having coexisting formats
US5644762A (en) * 1996-05-14 1997-07-01 Resolve 2000, Inc. Method and apparatus for recording and reading date data having coexisting formats
JP3484310B2 (ja) * 1997-01-17 2004-01-06 松下電器産業株式会社 可変長符号器
US6003028A (en) * 1998-01-13 1999-12-14 Dyxlar North America, Inc. Implementing extended numeric range within a two-digit software representation
KR100856398B1 (ko) * 2000-05-17 2008-09-04 삼성전자주식회사 복수 매핑 테이블을 이용한 가변장 부호화 및 복호화방법과 그 장치
US7403561B2 (en) * 2003-04-04 2008-07-22 Avid Technology, Inc. Fixed bit rate, intraframe compression and decompression of video
US7433519B2 (en) 2003-04-04 2008-10-07 Avid Technology, Inc. Bitstream format for compressed image data

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3474442A (en) * 1966-10-03 1969-10-21 Xerox Corp Format generator circuit
US3675212A (en) * 1970-08-10 1972-07-04 Ibm Data compaction using variable-length coding
US3675211A (en) * 1970-09-08 1972-07-04 Ibm Data compaction using modified variable-length coding
US3701111A (en) * 1971-02-08 1972-10-24 Ibm Method of and apparatus for decoding variable-length codes having length-indicating prefixes
US3835467A (en) * 1972-11-10 1974-09-10 Ibm Minimal redundancy decoding method and means

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
US-Z.: IBM Technical Disclosure Bulletin, Vol. 17, 1975, Nr. 11, April, S.3328,3329 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3118676A1 (de) * 1981-05-12 1982-12-02 Heinz Karl Eckhart Dr Jur Verfahren zur kompression redundanter folgen serieller datenelemente

Also Published As

Publication number Publication date
JPS5916300B2 (ja) 1984-04-14
GB1534069A (en) 1978-11-29
DE2614916C2 (de) 1985-02-14
US4044347A (en) 1977-08-23
JPS51141551A (en) 1976-12-06

Similar Documents

Publication Publication Date Title
DE2614916A1 (de) Konverter zur codeumwandlung
DE3686697T2 (de) Fehlertoleranter kodierer zur umwandlung eines thermometerkodes in einen binaeren kode.
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE2227148C3 (de) Schaltungsanordnung zur Umsetzung digitaler Daten
DE2540472C3 (de) Verfahren und Schaltungsanordnungen zur Codierung binärer Daten unter Anwendung eines abgewandelten Null-Modulationscodes
DE2231458A1 (de) Digitaler frequenzzusammensetzer
DE4314741A1 (de) Dekodierer-Architektur nach Huffman für eine höhere Betriebsgeschwindigkeit und reduzierten Speicherbedarf
DE2205422A1 (de) Verfahren zur Verarbeitung verdichteter Daten
DE2264090B2 (de) Datenverdichtung
DE68926676T2 (de) Verfahren und gerät zur statistischen kodierung von digitalen daten
DE69329092T2 (de) Huffman-Kode-Decodierungsschaltung
DE3750390T2 (de) Simultane Fehlererkennung bei der Kodierung durch arithmetische Datenkodierung.
DE3485824T2 (de) Verfahren zur datenkompression.
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE68918590T2 (de) Gerät zur dekodierung von mit variabler länge kodierten daten.
DE69418860T2 (de) Verfahren und Vorrichtung zur Block Verschachtelung und Entschachtelung
DE2340250C2 (de) Verfahren und Vorrichtung zur redundanzreduzierenden Codierung eines aus Blöcken zu je N Bits bestehenden Nachrichtenstromes
DE2634426A1 (de) Bandkompressionseinrichtung
DE1803222B2 (de) Verfahren zum zusammenfassen pulscodierter nachrichten
DE3303269C2 (de)
DE10010238C2 (de) Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer
DE2826454C3 (de) Faksimilesignal-Codiersystem
DE69113072T2 (de) Verfahren und Vorrichtung zur Datenkompression.
DE3112212A1 (de) Analog-digital- und digital-analogwandler und verfahren zur umwandlung eines analogen signales in ein nicht-binaeres digitales wort und eines nicht-binaeren digitalen worts in ein analoges signal
DE2300505A1 (de) Vorrichtung zur schwellwertdecodierung

Legal Events

Date Code Title Description
OD Request for examination
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee