DE4441293C2 - Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge - Google Patents
Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester WortlängeInfo
- Publication number
- DE4441293C2 DE4441293C2 DE4441293A DE4441293A DE4441293C2 DE 4441293 C2 DE4441293 C2 DE 4441293C2 DE 4441293 A DE4441293 A DE 4441293A DE 4441293 A DE4441293 A DE 4441293A DE 4441293 C2 DE4441293 C2 DE 4441293C2
- Authority
- DE
- Germany
- Prior art keywords
- length
- code words
- shift
- circuit arrangement
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung betrifft ein Verfahren und eine Schaltungsanordnung zum Lesen
von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge.
Codewörter variabler Länge treten vor allem bei der Anwendung von
Kompressionsverfahren auf. Diese werden im zunehmenden Maße bei der
Datenübertragung eingesetzt, um die zu übertragenden Nutzdaten zu reduzieren
und die zur Verfügung stehende Bandbreite der Kanäle effektiv und kostengünstig
zu nutzen. Kompressionsverfahren werden insbesondere bei der Übertragung von
multimedialen Informationen, basierend vor allem auf die Standards H.261, JPEG
und MPEG, angewandt.
Zur Datenkompression sind verschiedene Verfahren bekannt. Bei den
Codierungsverfahren wird sehr häufig die Huffman-Codierung eingesetzt. Sie
beruht auf der Verwendung von Codewörtern variabler Länge. Das Verfahren
ordnet Symbolen mit hoher Auftrittswahrscheinlichkeit kurze Codewörter zu und
entsprechend den weniger wahrscheinlichen Symbolen lange Codewörter. Dies
führt zu einer Reduzierung der mittleren Codewortlänge.
Die Problematik dieses oder ähnlicher Verfahren liegt bei der Decodierung der
Codewörter. Die Grenzen der Codewörter innerhalb des Datenstroms sind
variabel und die Codewortlänge ist erst nach der Decodierung bekannt. Es ist
daher erforderlich, daß die entsprechenden Bits variabel vom Datenstrom
separiert werden, bis die Grenze des nächsten Codewortes erreicht ist.
Bisherige Verfahren benutzen in der Regel einen Eingangsdatenpuffer mit
nachgeschaltetem Barrel-Shifter für die erforderlichen Shift-Operationen.
In der Patentschrift US 05253053 ("Variable Length Decoding using Lookup
Tables", Okt 1993) ist ein entsprechendes Verfahren zur Variablen-Längen-
Decodierung, VLD, beschrieben. Die Umwandlung des variablen in ein festes
Datenformat erfolgt mittels zwei Datenpuffern, einem Barrelshifter und zweier
Decodiertabellen. Durch die Verwendung eines Barrelshifters wird der Signalfluß
verzögert, so daß nachteilig ein zusätzlicher Datenpuffer am Ausgang des Shifters
erforderlich ist. Das Zeitverhalten des beschriebenen Verfahrens ist ungünstig
und der Schaltungsaufwand relativ hoch.
In der US-PS 5245338 ist ein variabler Längendecoder beschrieben, bei dem
Codewörter variabler Länge aus einem Datenspeicher mit fester Wortlänge
ausgelesen werden. Die Codewörter werden durch zwei Shiftoperationen
separiert, wobei zwei Shiftoperationen mit zwei Barrelshiftern getrennt
voneinander durchgeführt werden. Hierbei werden die Shiftoperationen bei beiden
Barrelshiftern um eine variable Bitlänge in Abhängigkeit von den Codewortlängen
der bereits decodierten Codewörter durchgeführt. Nachteilig sind daher zwei
aufwendige Barrelshifter erforderlich.
Der Erfindung liegt die Aufgabe zugrunde, von einem Codierverfahren bestimmte
Codewörter variabler Länge aus einem Datenspeicher mit fester Wortlänge zu
lesen, wobei das Verfahren unabhängig von der Länge der Codewörter ist und
auch Sequenzen von Codewörtern fester Länge auftreten können. Die
Leseoperation soll flexibel der Länge angepaßt sein, so daß der
Implementierungsaufwand, der Rechenbedarf und die benötigte Rechenzeit
gering sind.
Allgemein lassen sich drei Faktoren bestimmen, die einen Einfluß auf das
Verfahren haben. Der erste Faktor ist die Wortbreite (WB) des Datenspeichers.
Der zweite Faktor ist die Zahl der Takte, die zur Verfügung stehen, bis das
nächste Codewort decodiert werden muß. Der dritte Faktor ist die Breite des
Bitfensters (BF) für die Decodierung. Bei paralleler Decodierung entspricht sie in
der Regel der maximalen Länge eines Codeworts.
Um die Aufgabe unter Berücksichtigung der drei Faktoren mit minimalem
Schaltungsaufwand bei gleichzeitig günstigem Timing-Verhalten durchzuführen
werden die Shift-Operationen erfindungsgemäß in zwei Stufen getrennt. Nach der
Erfindung wird in der ersten Stufe ein Shift mit fester Bitbreite (BR) durchgeführt.
Dabei sollte wenn möglich BR ein gemeinsamer Teiler von WB und BF sein. Es
gilt dann: BF = N × BR. Erfindungsgemäß wird dann in der zweiten Stufe ein
variabler Shift durchgeführt. Die maximalen Größe des Shifts beträgt BR - 1.
Mit diesen zwei Operationen fassen sich alle Codewörter der Länge 1..BF
separieren.
Die Vorgehensweise ist im nachfolgenden Beispiel veranschaulicht:
zu erfolgender Shift: 14 bit
Bitbreite: 4 bit
1. Stufe: 3 × Shift4
2. Stufe: Shift2
zu erfolgender Shift: 14 bit
Bitbreite: 4 bit
1. Stufe: 3 × Shift4
2. Stufe: Shift2
Die zwei Stufen der Shift-Operation werden erfindungsgemäß, wie in Fig. 1
gezeigt, räumlich und zeitlich getrennt ausgeführt. Die erste Stufe (101) liegt vor
dem Datenpuffer (102). Der Datenpuffer ist entsprechend der Bitbreite BR in
Unterpuffer (103) aufgeteilt. Die zweite Stufe (104) liegt am Ausgang des
Datenpuffers.
Beim Start eines Decodiervorgangs liegt am Ausgang zum Decodermodul ein
Datenwort der Länge BF an. Nach der Decodierung steht fest, welche Länge das
Codewort hatte. Im ersten Schritt des Verfahrens wird nun geprüft, ob im
Datenpuffer nach dem Shift-Vorgang noch eine ausreichende Anzahl von
Datenbits zur Verfügung stehen würden, um ein Datenwort der Größe BF zu
decodieren. Ist dies nicht der Fall, muß ein neues Datenwort aus dem
Datenspeicher gelesen werden. Gleichzeitig wird in der ersten Shift-Stufe ein Shift
um N mal BR Bits durchgeführt. Die Zahl N hängt dabei von der Länge des
decodierten Codewortes und vom vorherigen Zustand der zweiten Shift-Stufe ab.
Muß auch ein Datenwort neu gelesen werden, so werden die Bits gleich über
den Shift-Vorgang an die richtige Position im Puffer gebracht. Der Shift-Vorgang
kann parallel oder auch seriell ausgeführt werden. Dies ist abhängig von der Zahl
der Takte, die zur Verfügung stehen (Faktor 2). Ein serieller Shift benötigt weniger
Hardwareaufwand.
Nachdem die Teilpuffer neu geladen sind, wird über die zweite Shift-Stufe der
noch fehlende variable Shift von 0 bis BR - 1 eingestellt. Daher liegen am Eingang
zur Stufe 2 immer mindestens BF + BR Bits an, um diesen Shift-Vorgang zu
ermöglichen (105). Danach liegen die aktuellen Bits aus dem Datenspeicher für
einen neuen Decodiervorgang am Ausgang an.
Durch die Erfindung wird der Hardwareaufwand verringert, da die Architektur
flexibel ist und die Bitbreite optimal an die Wortbreite und das Bitfenster angepaßt
werden kann. Außerdem kann die Hardware durch Ausnutzung von
Prozeßpausen während des Decodierungsvorgangs reduziert werden. Durch die
erfindungsgemäße Aufteilung des Shift-Vorgangs und Verlagerung vor und hinter
eine Registerstufe wird die Verzögerungszeit der Shift-Operationen minimiert.
Die Erfindung ist anhand der nachfolgenden Figuren erläutert. Es zeigen:
Fig. 1: schematische Darstellung der Erfindung
Fig. 2: Ausführungsbeispiel für Erfindung: BR = 8,2 Takt nach Decodierung
Fig. 3: Ausführungsbeispiel für Erfindung: BR = 4,4 Takt nach Decodierung
Fig. 4: Ausführungsbeispiel für Erfindung: BR = 8,1 Takt nach Decodierung
In Fig. 2 bis Fig. 4 sind Ausführungsbeispiele der Erfindung angegeben. Dabei
wurde für WB und BF jeweils der Wert 16 gewählt.
In Fig. 2 ist eine Ausführungsform für BR = 8 und 2 Takte Zeit nach der
Decodierung (Faktor 2) gezeigt. Entsprechend BR = 8 sind 2 Teilpuffer
vorhanden, wobei N = 2 gilt. Die erste Shift-Stufe ist mit Multiplexern realisiert. Die
zweite Shift-Stufe (207) ist als programmierbarer Shifter dargestellt und besteht
aus 16 8-zu-1-Multiplexern.
Im folgenden wird zur Erläuterung der Fall angenommen, daß ein Codewort der
Länge 14 bit decodiert wurde. Die zweite Shift-Stufe (207) stand dabei auf Shift4.
Im Teilpuffer 206 stand das untere Byte vom Datenwort dw. Im Teilpuffer 205
steht das obere Byte vom Datenwort dw und der Multiplexer 202 selektierte das
untere Byte vom Datenwort dw + 1.
Ein Shift von 4 in 207 bedeutet, das beim letzten Decodiervorgang die unteren
4 bit im Teilpuffer 206 schon decodiert waren und nicht mehr für die Decodierung
zur Verfügung standen. Beim Decodiervorgang wurden dann weitere 14 bit des
Puffers decodiert. Daraus folgt, das insgesamt 18 bit der zur Verfügung
stehenden 24 Bit bereits decodiert sind. Deshalb muß für die nächste
Decodierung ein Datenwort nachgeladen werden.
Im ersten Takt wird das durch Multiplexer 202 selektiert untere Byte von dw + 1
über den Multiplexer 204 in den Teilpuffer 206 geladen. Im zweiten Takt wird von
202 das obere Byte von dw + 1 selektiert und über 203 in den Teilpuffer 205
geladen. Gleichzeitig wird ein Request für ein neues Datenwort gesendet. Mit dem
nächsten Takt, in dem der neue Decodierungsvorgang beginnt, steht das neue
Datenwort dw + 2 dann im Puffer 201 zur Verfügung. Gleichzeitig selektiert im
Decodierungstakt der Multiplexer 202 das untere Byte von dw + 2. Der
programmierbare Shifter 207 wird auf Shift2 eingestellt. Dieser Wert ergibt sich
aus folgender Rechnung:
decodiert: 4 + 14 Bit = 18 Bit < 16 Bit
→ neues Datenwort
1. Shift-Stufe: 2 × Shift8
2. Shift-Stufe: Shift2
decodiert: 4 + 14 Bit = 18 Bit < 16 Bit
→ neues Datenwort
1. Shift-Stufe: 2 × Shift8
2. Shift-Stufe: Shift2
Nachdem das Codewort decodiert ist beginnt der Vorgang von neuem.
In Fig. 3 ist das Beispiel für 4 Takte Zeit nach der Decodierung (Faktor 2)
angegeben. Hier werden die Teilpuffer 307 bis 310 über die Multiplexer 302 bis
306 Takt für Takt nachgeladen. Der weitere Ablauf entspricht dem
Ausführungsbeispiel aus Fig. 2.
In Fig. 4 ist die Schaltung für nur einen Takt Zeit nach der Decodierung
dargestellt. Dieser Fall muß immer speziell behandelt werden, da ein Nachladen
der Teilpuffer mit jedem Takt nicht möglich ist. Deshalb kann ein Teil der Shift-
Operationen von Stufe 1 erst hinter den Puffern ausgeführt werden.
Es gibt Fälle, wo das untere Byte vom neuen Datenwort dw + 2 in den Teilpuffer
406 geladen werden muß. Da aber zunächst das durch 402 selektierte obere Byte
von dw + 1 über 404 in den Puffer 407 geladen werden muß, ist bei nur einem Takt
ein Nachladen von 406 nicht möglich. Dieser Fall wird daher über den hinter 406
geschalteten Multiplexer 405 abgefangen.
Claims (5)
1. Verfahren zum Lesen von Codewörtern variabler Länge aus einem
Datenspeicher mit fester Wortlänge, wobei die Codewörter durch zwei
Shiftoperationen separiert werden, die zwei Shiftoperationen getrennt
voneinander durchgeführt werden und die Codewörter nach der ersten
Shiftoperation zwischengespeichert werden, dadurch gekennzeichnet, daß
die erste Shiftoperation um eine feste Bitlänge und die zweite Shiftoperation
um eine variable Bitlänge durchgeführt wird.
2. Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus
einem Datenspeicher mit fester Wortlänge mit zwei Rechenwerken zur
Durchführung von Shiftoperationen, dadurch gekennzeichnet, daß das erste
Rechenwerk für das Shiften um eine feste Bitlänge und das zweite
Rechenwerk für das Shiften um eine variable Bitlänge ausgeprägt ist.
3. Schaltungsanordnung nach Anspruch 2, dadurch gekennzeichnet, daß
Zwischenspeicher mit fester Bitbreite zwischen dem ersten und dem zweiten
Rechenwerk angeordnet sind.
4. Schaltungsanordnung nach Anspruch 2 oder 3, dadurch gekennzeichnet,
daß das erste Rechenwerk aus Multiplexern aufgebaut ist.
5. Schaltungsanordnung nach Anspruch 4, dadurch gekennzeichnet, daß die
Eingangsdaten in einen ersten Multiplexer geführt werden, dessen Ausgang
mit einem programmierbaren Shifter und mit je einem Eingang mindestens
eines Multiplexers, dessen Ausgang an je einen Zwischenspeicher, die mit
dem programmierbaren Shifter und je einem Eingang des vorgeschalteten
und des nachfolgenden Multiplexers verbunden sind, geschaltet ist,
verbunden ist.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4441293A DE4441293C2 (de) | 1994-11-21 | 1994-11-21 | Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge |
EP95118021A EP0714166A3 (de) | 1994-11-21 | 1995-11-16 | Verfahren und Schaltung zum Lesen von Kodewörtern variabler Länge aus einem Speicher für Kodewörter fester Wortlänge |
US08/561,289 US5768428A (en) | 1994-11-21 | 1995-11-21 | Method and circuit for reading code words having variable lengths out of a memory used for code words having fixed lengths of words |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4441293A DE4441293C2 (de) | 1994-11-21 | 1994-11-21 | Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4441293A1 DE4441293A1 (de) | 1996-05-30 |
DE4441293C2 true DE4441293C2 (de) | 1999-01-21 |
Family
ID=6533704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4441293A Expired - Fee Related DE4441293C2 (de) | 1994-11-21 | 1994-11-21 | Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge |
Country Status (3)
Country | Link |
---|---|
US (1) | US5768428A (de) |
EP (1) | EP0714166A3 (de) |
DE (1) | DE4441293C2 (de) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336180B1 (en) | 1997-04-30 | 2002-01-01 | Canon Kabushiki Kaisha | Method, apparatus and system for managing virtual memory with virtual-physical mapping |
AUPO648397A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US6707463B1 (en) | 1997-04-30 | 2004-03-16 | Canon Kabushiki Kaisha | Data normalization technique |
AUPO647997A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
US6272257B1 (en) | 1997-04-30 | 2001-08-07 | Canon Kabushiki Kaisha | Decoder of variable length codes |
US6674536B2 (en) | 1997-04-30 | 2004-01-06 | Canon Kabushiki Kaisha | Multi-instruction stream processor |
US6414687B1 (en) | 1997-04-30 | 2002-07-02 | Canon Kabushiki Kaisha | Register setting-micro programming system |
US7439887B2 (en) | 2007-02-13 | 2008-10-21 | Seiko Epson Corporation | Method and apparatus for GIF decompression using fixed-size codeword table |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5245338A (en) * | 1992-06-04 | 1993-09-14 | Bell Communications Research, Inc. | High-speed variable-length decoder |
US5253053A (en) * | 1990-12-31 | 1993-10-12 | Apple Computer, Inc. | Variable length decoding using lookup tables |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2766302B2 (ja) * | 1989-04-06 | 1998-06-18 | 株式会社東芝 | 可変長符号並列解読方法および装置 |
US5173695A (en) * | 1990-06-29 | 1992-12-22 | Bell Communications Research, Inc. | High-speed flexible variable-length-code decoder |
US5295203A (en) * | 1992-03-26 | 1994-03-15 | General Instrument Corporation | Method and apparatus for vector coding of video transform coefficients |
JP3008685B2 (ja) * | 1992-08-03 | 2000-02-14 | 日本電気株式会社 | 可変長符号の復号化回路 |
US5566254A (en) * | 1992-11-06 | 1996-10-15 | Canon Kabushiki Kaisha | Apparatus for processing multiple images in alternating fashion |
US5343195A (en) * | 1992-12-18 | 1994-08-30 | Thomson Consumer Electronics, Inc. | Variable length codeword decoding apparatus |
US5815646A (en) * | 1993-04-13 | 1998-09-29 | C-Cube Microsystems | Decompression processor for video applications |
US5479527A (en) * | 1993-12-08 | 1995-12-26 | Industrial Technology Research Inst. | Variable length coding system |
-
1994
- 1994-11-21 DE DE4441293A patent/DE4441293C2/de not_active Expired - Fee Related
-
1995
- 1995-11-16 EP EP95118021A patent/EP0714166A3/de not_active Withdrawn
- 1995-11-21 US US08/561,289 patent/US5768428A/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253053A (en) * | 1990-12-31 | 1993-10-12 | Apple Computer, Inc. | Variable length decoding using lookup tables |
US5245338A (en) * | 1992-06-04 | 1993-09-14 | Bell Communications Research, Inc. | High-speed variable-length decoder |
Also Published As
Publication number | Publication date |
---|---|
EP0714166A3 (de) | 1997-04-16 |
DE4441293A1 (de) | 1996-05-30 |
US5768428A (en) | 1998-06-16 |
EP0714166A2 (de) | 1996-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69323020T2 (de) | Dekodierer für veränderliche Längenkodes | |
DE4314741C2 (de) | Dekodierer für Einheiten von Huffman-kodierten Daten | |
DE69618418T2 (de) | Dekodierer variabler Länge unter Verwendung eines FIFO-Speichers | |
DE2821348A1 (de) | Digitales dialogsystem | |
DE4441293C2 (de) | Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge | |
DE3714589A1 (de) | Videosignal-codierer mit dpcm und adaptiver praediktion | |
EP0198103A1 (de) | Schaltungsanordnung zur Versteilerung von Farbsignalsprüngen | |
DE69826971T2 (de) | Übertragungssystem mit kodierer variabler länge | |
DE69128835T2 (de) | Logische Maschine zur Verarbeitung von Kontrollinformation eines Telekommunikation-Übertragungsrahmens | |
DE19907728C2 (de) | Vorrichtung und Verfahren zum Erzeugen eines Datenstroms und Vorrichtung und Verfahren zum Lesen eines Datenstroms | |
EP0769853B1 (de) | Logischer Block für einen Viterbi-Decoder | |
DE69737304T2 (de) | Dekoder für Kodes variabler Länge | |
DE69428627T2 (de) | Dekodierer für Wörter variabler Länge mit hohem Durchfluss und Vorrichtung mit einem solchen Dekodierer | |
EP0068579B1 (de) | Anordnung zur Demodulation eines frequenzmodulierten Eingangssignals | |
DE3417262C2 (de) | ||
DE2008560C3 (de) | Nachrichtenübertragungssystem unter Verwendung von Puls-Code-Modulation und empfangsseitiger Pulskompression | |
EP0695451A1 (de) | Verfahren zum scrollen von mehreren rasterzeilen in einem fenster eines im grafikmodus betriebenen bildschirms eines personalcomputers | |
DE68910419T2 (de) | Statistische Kodierungsvorrichtung zur Erzeugung von Kodewörtern mit einer variablen Anzahl von Binärelementen. | |
DE4123007C2 (de) | Verfahren und Anordnung zur Anpassung von Datenraten | |
DE19900991C2 (de) | Differenzierer in einem Kammfilter | |
DE69219494T2 (de) | Dekodierungsvorrichtung für Kodes variabler Länge | |
DE3908086C1 (en) | Method for compressing and decompressing digital data and device for carrying out the method | |
DE2627830C2 (de) | System zur Verzögerung eines Signals | |
DE19960923B4 (de) | Einrichtung zur Datenumsetzung für einen Reed-Solomon Dekodierer | |
EP0193553A1 (de) | Datenkompressions- und datenexpandiereinrichtung zum übertragen bzw. speichern von daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: SICAN GMBH, 30419 HANNOVER, DE |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: SCI-WORX GMBH, 30419 HANNOVER, DE |
|
8339 | Ceased/non-payment of the annual fee |