Nothing Special   »   [go: up one dir, main page]

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änge

Info

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
Application number
DE4441293A
Other languages
English (en)
Other versions
DE4441293A1 (de
Inventor
Thomas Dr Komarek
Christian Kroenke
Manfred Oberwestberg
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.)
Sci Worx GmbH
Original Assignee
SICAN GmbH
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 SICAN GmbH filed Critical SICAN GmbH
Priority to DE4441293A priority Critical patent/DE4441293C2/de
Priority to EP95118021A priority patent/EP0714166A3/de
Priority to US08/561,289 priority patent/US5768428A/en
Publication of DE4441293A1 publication Critical patent/DE4441293A1/de
Application granted granted Critical
Publication of DE4441293C2 publication Critical patent/DE4441293C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods 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.
Erfindung
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
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.
Zeichnungen
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
Ausführungsbeispiele
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
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.
DE4441293A 1994-11-21 1994-11-21 Verfahren und Schaltungsanordnung zum Lesen von Codewörtern variabler Länge aus einem Datenspeicher mit fester Wortlänge Expired - Fee Related DE4441293C2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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