DE2614916A1 - Konverter zur codeumwandlung - Google Patents
Konverter zur codeumwandlungInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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/425—Conversion 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4025—Conversion 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
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.
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.
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 ··· vv· Die 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:
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®istern
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)
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
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
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)
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)
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)
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 |
-
1975
- 1975-05-19 US US05/578,959 patent/US4044347A/en not_active Expired - Lifetime
-
1976
- 1976-04-01 GB GB13275/76A patent/GB1534069A/en not_active Expired
- 1976-04-07 DE DE2614916A patent/DE2614916C2/de not_active Expired
- 1976-05-07 JP JP51051388A patent/JPS5916300B2/ja not_active Expired
Non-Patent Citations (1)
Title |
---|
US-Z.: IBM Technical Disclosure Bulletin, Vol. 17, 1975, Nr. 11, April, S.3328,3329 * |
Cited By (1)
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 |