DE69333714T2 - Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen - Google Patents

Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen Download PDF

Info

Publication number
DE69333714T2
DE69333714T2 DE69333714T DE69333714T DE69333714T2 DE 69333714 T2 DE69333714 T2 DE 69333714T2 DE 69333714 T DE69333714 T DE 69333714T DE 69333714 T DE69333714 T DE 69333714T DE 69333714 T2 DE69333714 T2 DE 69333714T2
Authority
DE
Germany
Prior art keywords
codewords
category
data
codeword
length
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
DE69333714T
Other languages
English (en)
Other versions
DE69333714D1 (de
Inventor
Stephen C. Santee Pollmann
Edward A. San Diego Krause
Paul San Diego Shen
Woo H. Encinitas Paik
Paul Olivenhain Moroney
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.)
Arris Technology Inc
Original Assignee
Arris Technology Inc
General Instrument Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arris Technology Inc, General Instrument Corp filed Critical Arris Technology Inc
Publication of DE69333714D1 publication Critical patent/DE69333714D1/de
Application granted granted Critical
Publication of DE69333714T2 publication Critical patent/DE69333714T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf die Wiedergewinnung komprimierter digitaler Daten, und genauer auf einen Speicher zur Verwendung beim Decodieren von Codewörtern variabler Länge und auf eine Vorrichtung und ein Verfahren zum Decodieren von Codewörtern variabler Länge.
  • Fernsehsignale werden gemäß verschiedenen, von einzelnen Ländern angenommenen Normen herkömmlicherweise in analoger Form übertragen. Zum Beispiel haben die Vereinigten Staaten die Normen des National Television System Committee („NTSC") angenommen. Die meisten europäischen Länder haben entweder die PAL- (zeilenweise Phasenumkehr) oder die SECAM-Norm angenommen.
  • Digitale Übertragung von Fernsehsignalen kann Video- und Audiodienstleistungen liefern, die eine viel höhere Qualität als analoge Techniken aufweisen. Digitale Übertragungsmodelle sind besonders vorteilhaft für Signale, die über Satellit an angeschlossene Kabelfernsehunternehmen und/oder direkt an Haushalt-Satellitenfernsehempfänger ausgestrahlt werden. Es ist zu erwarten, dass digitale Fernsehsender- und -empfängersysteme existierende analoge Systeme ersetzen werden, ebenso wie digitale Audio-CDs analoge Grammophon-Schallplatten in der Audioindustrie weitgehend ersetzt haben.
  • Bei jedem digitalen Fernsehsystem muss eine wesentliche Menge digitaler Daten übertragen werden. Dies gilt insbesondere, wenn hochauflösendes Fernsehen („HDTV") bereitgestellt wird. Bei einem digitalen Fernsehsystem empfängt ein Teilnehmer den digitalen Datenstrom über einen Empfänger/Entwürfler, der für den Teilnehmer Video, Audio und Daten bereitstellt. Um das verfügbare Funkfrequenzspektrum am effizientesten zu nutzen, ist es vorteilhaft, die digitalen Fernsehsignale zu komprimieren, um die Datenmenge, die übertragen werden muss, zu minimieren.
  • Der Videoteil eines Fernsehsignals beinhaltet eine Sequenz von Video-„Einzelbildern", die zusammen ein bewegtes Bild bereitstellen. Bei digitalen Fernsehsystemen wird jede Zeile eines Videoeinzelbildes durch eine Sequenz digitaler Daten, die als „Pixel" bezeichnet werden, definiert. Zum Definieren jedes Videoeinzelbildes eines Fernsehsignals ist eine große Datenmenge erforderlich. Zum Beispiel sind 7,4 Megabit an Daten erforderlich, um ein Videoeinzelbild mit NTSC-Auflösung bereitzustellen. Dabei wird vorausgesetzt, dass eine Anzeige mit 640 Pixeln mal 480 Zeilen mit einem 8-Bit-Intensitätswert für jede der Grundfarben rot, grün und blau verwendet wird. Hochauflösendes Fernsehen erfordert wesentlich mehr Daten zum Bereitstellen jedes Videoeinzelbildes. Um diese Menge an Daten zu verwalten, insbesondere für HDTV-Anwendungen, müssen die Daten komprimiert werden.
  • Videokompressionstechniken ermöglichen die effiziente Übertragung digitaler Videosignale über herkömmliche Nachrichtenkanäle. Derartige Techniken verwenden Kompressionsalgorithmen, die die Korrelation zwischen benachbarten Pixeln nutzen, um eine effizientere Darstellung der wichtigen Informationen in einem Videosignal zu erlangen. Die leistungsfähigsten Kompressionssysteme nutzen nicht nur die räumliche Korrelation, sondern können auch Ähnlichkeiten zwischen benachbarten Einzelbildern benutzen, um die Daten weiter zu verdichten. Bei derartigen Systemen wird eine Differenzcodierung verwendet, um nur die Differenz zwischen einem eigentlichen Einzelbild und einer Prädiktion des eigentlichen Einzelbilds zu übertragen. Die Prädiktion basiert auf Informationen, die aus einem vorhergehenden Einzelbild derselben Videosequenz erlangt wurden. Beispiele derartiger Systeme können in den U.S. Patenten 5,068,724 mit dem Titel „Adaptive Motion Compensation for Digital Television" und 5,057,916 mit dem Titel „Method and Apparatus for Refreshing Motion Compensated Sequential Video Images" gefunden werden.
  • Bewegungsschätzung eines Videosignals wird bereitgestellt, indem der aktuelle Luminanzblock mit den Luminanzblöcken in dem vorhergehenden Einzelbild innerhalb eines festgelegten Nachführbereichs verglichen wird. Der Luminanzblock des vorhergehenden Einzelbildes mit der kleinsten absoluten Gesamtänderung im Vergleich zum aktuellen Block wird gewählt. Die Position des gewählten Blocks wird Bewegungsvektor genannt, der verwendet wird, um die prädiktierten Werte des aktuellen Blocks zu erhalten. Für zusätzliche Codiereffizienz können die Bewegungsvektoren differenzcodiert und durch einen Codierer variabler Längen zur Übertragung als Nebeninformationen für einen Decodierer verarbeitet werden. Ein Tiefpassfilter kann in der DPCM-Schleife bereitgestellt sein, um die prädiktierten Werte nach Bedarf auszugleichen. Um den codierten Bitstrom vor verschiedenen Arten statistischen Rauschens zu schützen, kann ein Vorwärtsfehlerkorrekturschema verwendet werden.
  • Es gibt zwei Hauptkategorien von Codiermodellen zur Kompression der Datenrate durch Entfernen überflüssiger Informationen. Dies sind „Quellencodierung" und „Entropiecodierung". Quellencodierung befasst sich mit Quellenmaterial und führt zu Ergebnissen, die verlustbehaftet sind. Somit verschlechtert sich die Bildqualität, wenn Quellencodierung verwendet wird. Beim Umsetzen von Quellencodierungstechniken kann entweder Intra- oder Zwischenbildcodierung verwendet werden. Intracodierung wird für das erste Bild und für spätere Bilder nach einem Szenenwechsel verwendet. Zwischenbildcodierung wird für Sequenzen von Bildern verwendet, die sich bewegende Objekte enthalten. Die Entropiecodierung erreicht Kompression, indem die statistischen Eigenschaften der Signale verwendet werden, und ist theoretisch verlustfrei.
  • Ein Codierungsalgorithmus, der sowohl die Quellencodierung als auch die Entropiecodierung verwendet, ist von der CCITT-Expertengruppe vorgeschlagen worden. Siehe z. B. „Description of Reference Model 8 (RM8)", Dok. Nr. 525, CCITT SG XV Working Party XV-4, Specialist Group on Coding for Visual Telephony, Juni 1989. In dem CCITT-Modell wird eine hybride Transformations-/Differenzpulscodemodulation (DPCM) mit Bewegungsschätzung für die Quellencodierung verwendet. Die DPCM funktioniert nicht für Intracodierung. Für die Entropiecodierung werden sowohl ein- als auch zweidimensionale Codierungen variabler Länge verwendet.
  • Die diskrete Cosinustransformation (DCT), beschrieben von N. Ahmed, T. Natarajan und K. R. Rao in „Discrete Cosine Transform", IEEE Trans. Computer, Bd. C-23, S. 90–93, Jan. 1974, wird in dem CCITT-System verwendet, um die Eingangsdaten, welche in Makroblöcke und Unterblöcke aufgeteilt sind, in Transformationskoeffizienten umzuwandeln. Die DCT-Transformation wird an dem Unterschied zwischen Blöcken von aktuellen Einzelbilddaten und entsprechenden Blöcken eines prädiktierten Einzelbildes (das von den Informationen des vorhergehenden Einzelbildes erhalten wurde) durchgeführt. Wenn ein Videoblock keine Bewegung enthält oder der prädiktierte Wert genau ist, ist die Eingabe in die DCT eine Nullmatrix. Bei sich langsam bewegenden Bildern enthält die Eingangsmatrix in die DCT viele Nullen. Die Ausgabe der DCT ist eine Matrix von Koeffizienten, die Energie in der zweidimensionalen Frequenzdomäne darstellen. Im Allgemeinen ist die meiste Energie in der oberen linken Ecke der Matrix, die der Niedrigfrequenzbereich ist, konzentriert. Wenn die Koeffizienten auf eine zickzackförmige Weise abgetastet werden, enthält die resultierende Sequenz lange Folgen von Nullen, insbesondere zum Ende der Sequenz hin. Eines der Hauptziele dieses Kompressionsalgorithmus ist es, Nullen zu erzeugen und sie für eine effiziente Codierung zusammenzubündeln.
  • Um die Effizienz zu wahren, wird vor der Quantisierung auch eine variable Schwelle auf die Koeffizientensequenz angewendet. Dies wird erreicht, indem die DCT-Schwelle erhöht wird, wenn eine Folge von Nullen erkannt wird. Ein DCT-Koeffizient wird auf null gestellt, wenn er weniger als die Schwelle beträgt oder ihr gleich ist.
  • Nach der Transformation wird ein einheitlicher Quantisierer verwendet. Die Schrittweite des Quantisierers kann, wie durch die Belegung eines Puffers angegeben, durch die Übertragungsrate eingestellt werden. Wenn die Übertragungsrate ihre Grenze erreicht, wird die Schrittweite erhöht, so dass weniger Informationen codiert zu werden brauchen. Wenn dies stattfindet, resultiert daraus ein verschlechtertes Bild. Andererseits verbessert sich die Bildqualität durch das Vermindern der Schrittweite, wenn die Übertragungsrate unterhalb ihrer Grenze liegt.
  • Um die Codierungseffizienz weiter zu erhöhen, wird für die Sequenzen quantisierter DCT-Koeffizienten ein zweidimensionales Modell für die Codierung variabler Längen verwendet. In einer gegebenen Sequenz wird der Wert eines Nicht-Null-Koeffizienten (Amplitude) als eine Dimension definiert und die Anzahl von Nullen, die dem Nicht-Null-Koeffizienten vorausgehen (Lauflänge), wird als eine andere Dimension definiert. Die Kombination von Amplitude und Lauflänge wird als ein „Ereignis" definiert.
  • Einem Ereignis, das häufiger auftritt, wird ein Code kürzerer Länge zugeteilt. Umgekehrt erhalten seltene Ereignisse Codes größerer Länge. Eine EOB-Kennzeichen (Blockende-Kennzeichen) wird bereitgestellt, um anzugeben, dass es keine weiteren Nicht-Null-Koeffizienten in der Sequenz gibt.
  • Die codierten Koeffizientenwerte werden zusammen mit verschiedenen Nebeninformationen, wie etwa Blockklassifizierung, Quantisierungsinformationen und differentiellen Bewegungsvektoren gemultiplext. Ein Teil der Nebeninformationen kann auch mit variabler Länge codiert sein. Der resultierende Bitstrom wird zur Übertragung an einen Puffer gesendet.
  • An einem Empfänger wird ein Decodierer variabler Längen benötigt, um den umgekehrten Ablauf zum Codierer durchzuführen und die Transformationskoeffizienten wiederzugewinnen. Obwohl der Aufbau des Decodierers im Allgemeinen viel einfacher ist als derjenige des Codierers, erfordern Decodierer des Stands der Technik wesentliche Mengen an Speicher, um ein Codebuch zu speichern, das zur Umwandlung der empfangenen Codewörter zurück in die Transformationskoeffizienten, aus denen sie an dem Sender erlangt wurden, erforderlich ist.
  • Es sind Codes variabler Länge vorgeschlagen worden, bei denen kein Codewort das Dateianfangs-Etikett (prefix) eines anderen Codeworts ist. Dies garantiert eine einzigartige Decodierbarkeit eines eingehenden Datenstroms. Kompression wird erreicht, wenn Ereignissen, die viel häufiger als andere auftreten, die kürzesten Codewörter zugeteilt werden. Bei dem vorgeschlagenen CCITT-Videocodierungsalgorithmus beträgt die Dimension der Ereignisamplituden 256, und die Lauflänge weist eine Dimension von 64 auf. Eine geradlinige Umsetzung eines derartigen Systems würde eine Tabelle für Codes variabler Länge mit mehr als 16000 Einträgen erfordern. Da jedoch mehr als 99% der Einträge statistisch unwahrscheinlich sind, können sie durch einen 6-Bit-Steuercode, gefolgt von 14-Bit-Feldern fester Länge, bei denen sechs Bits für Lauflänge und acht Bits für Amplitude bereitgestellt sind, dargestellt werden. Die resultierende Tabelle für Codes variabler Länge enthält nur 128 Einträge, was sich viel leichter verarbeiten lässt. Tatsächlich können die Codierung und Decodierung eines derartigen Codes variabler Länge unter Verwendung einer Verweistabelle, die in einem Festwertspeicher (ROM) gespeichert ist, erzielt werden.
  • Das Decodieren in einem derartigen Modell wird dadurch etwas komplizierter gemacht, dass die Länge des Codes variabler Länge bestimmt werden muss, bevor er decodiert werden kann. In der Vergangenheit sind mehrere Techniken zur Decodierung von Codes variabler Länge vorgeschlagen worden. Siehe z. B. U.S. Patent 3,701,111 an Cocke et al. mit dem Titel „Method and Apparatus for Decoding Variable-Length Codes Having Length-Indicating Prefixes" und M. T. Sun, K. M. Yang und K. N. Tzou „High-Speed Programmable ICs for Decoding of Variable-Length Codes", Applications of Digital Image Processing XII, Andrew Tescher, Hrsg., Proc. SPIE Bd. 1153, Aug. 1989, S. 28–39. Der letztere Artikel schlägt einen parallelen Ansatz vor, der einen Bitstellenverschieber und programmierbare Logikarrays (PLA) oder Assoziativspeicher-/Direktzugriffsspeicher-Module (CAM/RAM-Module) für die Umsetzung von Größtintegration (VLSI) eines Decodierers variabler Längen einsetzt.
  • Die auf dem Stand der Technik vorgeschlagenen Decodierer waren aufgrund der Hochgeschwindigkeitsbeschaffenheit der digitalen Echtzeit-Videodekompression nur in Softwaresimulationen oder unter Verwendung großer Mengen an diskreten Hardwardkomponenten realisierbar.
  • EP-A-0426429 offenbart eine Demodulationsvorrichtung für Codes variabler Länge, bei der ein Codewort variabler Länge in ein Codewort fester Länge transformiert wird. Für Codewörter, die länger sind als eine festgelegte Bitlänge, werden die höchstwertigen Bits eines Codes variabler Länge in eine erste Umwandlungstabelle eingegeben, um einen Umwandlungscode mit weniger Bits zu erhalten. Der Umwandlungscode und die am niedrigstwertigen Bits des Codeworts variabler Länge werden in eine zweite Umwandlungstabelle eingegeben, um das endgültige Codewort fester Länge zu erhalten.
  • Im IEEE Communications Magazine, Bd. 28, Nr. 2, Februar 1990, Seiten 30–38, „Visual Telephony as an ISDN Application" bietet Ming L. Liou eine Übersicht über Huffman-artige Techniken zur Codierung mit variabler Länge.
  • Es ist das Ziel der vorliegenden Erfindung, ein Mittel zur Decodierung variabler Länge bereitzustellen, das die Fähigkeit aufweist, Codewörter zu Echtzeit-Videoraten zu verarbeiten.
  • Dieses Ziel wird durch einen Rückkopplungsspeicher gemäß Anspruch 1 erreicht.
  • Dieses Ziel wird ferner durch eine Vorrichtung zum Decodieren gemäß Anspruch 2 erreicht. Weitere vorteilhafte Ausführungsformen dieser Vorrichtung sind Gegenstand der Ansprüche 3 bis 16.
  • Das Ziel wird ferner durch ein Verfahren gemäß Anspruch 17 und weitere vorteilhafte Ausführungsformen davon gemäß Ansprüchen 18 bis 20 erreicht.
  • Es ist ein Vorteil des erfinderischen Konzepts, einen Decodierer der Art bereitzustellen, der leicht in die Form einer integrierten Schaltung eingeschlossen werden kann. Des Weiteren ist es vorteilhaft, einen Decodierer und ein Verfahren zur Decodierung der Art bereitzustellen, der/das nur eine geringe Menge an Leistung verbraucht. Ein derartiger Decodierer und ein derartiges Verfahren sind besonders zur Verwendung durch den Verbraucher nützlich, wie beispielsweise bei einem kostengünstigen Gerät für hochauflösendes Fernsehen.
  • Die vorliegende Erfindung stellt einen Decodierer variabler Längen mit den bereits erwähnten und weiteren Vorteilen bereit.
  • Gemäß einer vorteilhaften Ausführungsform der vorliegenden Erfindung wird ein Rückkopplungsspeicher zur Verwendung beim Decodieren von Codewörtern variabler Länge bereitgestellt. Eine erste Verweistabelle ist durch erste Codewörter von nicht mehr als n Bits in der Länge oder durch bis zu den ersten n Bits von zweiten Codewörtern, die n Bits in der Länge überschreiten, adressierbar. Eine zweite Verweistabelle ist durch eine Kombination von p Bits von Rückkopplungsdaten und einem m-Bit- oder kleineren Teil eines zweiten Codeworts adressierbar, wobei p + m ≤ n ist und der Bit- oder kleinere Teil den ersten n Bits der zweiten Codewörter folgt. Die erste Verweistabelle enthält Amplituden- und Lauflängendaten für die ersten Codewörter, sowie Rückkopplungsdaten für einen anfänglichen n-Bit- oder kleineren Teil der zweiten Codewörter. Die zweite Verweistabelle enthält Amplituden- und Lauflängendaten für einen letzten m-Bit- oder kleineren Teil der zweiten Codewörter, sowie Rückkopplungsdaten für beliebige m-Bit-Teile der zweiten Codewörter, die sich zwischen dem anfänglichen Teil und dem letzten Teil davon befinden. Der Speicher kann weiterhin einen n-Bit-Adressanschluss zum Empfangen von Codewörtern und Rückkopplungsdaten beinhalten. Mittel zum selektiven Koppeln des Adressanschlusses, um die erste Verweistabelle oder die zweite Verweistabelle zu adressieren, sind bereitgestellt.
  • Gemäß einer anderen vorteilhaften Ausführungsform der vorliegenden Erfindung wird eine Vorrichtung zum Decodieren von Codewörtern variabler Länge bereitgestellt, um Transformationskoeffizienten wiederzugewinnen. Die Codewörter weisen die Eigenschaft auf, dass kein Codewort ein Dateianfangs-Etikett eines beliebigen anderen Codeworts ist. Eine erste Kategorie von Codewörtern, die von der Vorrichtung der vorliegenden Erfindung verarbeitet wird, weist eine Länge von nicht mehr als n Bits auf. Eine zweite Kategorie von Codewörtern mit einer Länge von mehr als n Bits wird ebenfalls verarbeitet.
  • Die Vorrichtung umfasst einen Speicher mit einem n-Bit-Adressanschluss und einer ersten und zweiten Vielzahl von adressierbaren Speicherstellen. Die erste Vielzahl von adressierbaren Speicherstellen enthält Amplituden-, Lauflängen- und erste Steuerdaten für unterschiedliche Codewörter. Die zweite Vielzahl von adressierbaren Speicherstellen enthält Rückkopplungs- und zweite Steuerdaten für Teile von Codewörtern der zweiten Kategorie. Mittel zum Decodieren von Codewörtern der ersten Kategorie durch das Eingeben der Codewörter in den Adressanschluss zum Adressieren des Speichers sind bereitgestellt, um Amplituden-, Lauflängen- und erste Steuerdaten dafür auszugeben. Mittel zum Decodieren von Codewörtern der zweiten Kategorie durch das Eingeben eines ersten n-Bit-Teils eines Codeworts der zweiten Kategorie in den Adressanschluss zum Adressieren des Speichers sind bereitgestellt, um Rückkopplungsdaten und zweite Steuerdaten dafür auszugeben. Ein nachfolgender Teil/nachfolgende Teile des Codeworts der zweiten Kategorie werden zyklisch zusammen mit den Rückkopplungsdaten als Antwort auf die zweiten Steuerdaten in den Adressanschluss eingegeben. Der nachfolgende Teil/die nachfolgenden Teile des Codeworts der zweiten Kategorie und die Rückkopplungsdaten stellen zusammen eine Adresse von nicht mehr als n Bits zum Adressieren des Speichers bereit. Als Antwort auf diese Adresse gibt der Speicher Rückkopplungs- und zweite Steuerdaten zur Verwendung in einem nächsten Eingabezyklus aus, wenn mindestens ein zusätzlicher Teil in dem Codewort der zweiten Kategorie verbleibt. Alternativ dazu gibt der Speicher Amplituden-, Lauflängen- und erste Steuerdaten für das Codewort der zweiten Kategorie aus, wenn keine zusätzlichen Teile darin verbleiben. Mittel, die auf die zweiten Steuerdaten ansprechen, werden für die Ausgabe eines Laufkoeffizienten für jeden Teil des Codeworts der zweiten Kategorie, das nicht in der Ausgabe von Amplituden-, Lauflängen- und ersten Steuerdaten resultiert, bereitgestellt.
  • Die Vorrichtung der Erfindung kann ferner Taktmittel beinhalten, die gekoppelt sind, um dem Speicher und dem Decodiermittel des Codeworts der ersten und zweiten Kategorie ein Taktsignal zum Einrichten von aufeinander folgenden Taktzyklen bereitzustellen. Während jedes Taktzyklus werden mindestens entweder (i) Amplituden-, Lauflängen- und erste Steuerdaten zur Produktion eines Amplitudenkoeffizienten oder (ii) Rückkopplungs- und zweite Steuerdaten zur Produktion eines Laufkoeffizienten von den Speichermitteln ausgegeben. Der Laufkoeffizient kann zum Beispiel Daten beinhalten, die Indikativ für eine Null sind, welche in der Sequenz von Nullkoeffizienten, deren Länge durch die Lauflänge festgelegt ist, enthalten ist. Die Bereitstellung der Taktmittel ermöglicht es, von den Codewörtern variabler Länge für jeden Taktzyklus einen Koeffizienten zu produzieren.
  • In einer veranschaulichten Ausführungsform beinhalten die Decodiermittel für Codewörter der zweiten Kategorie Multiplexermittel, die auf die zweiten Steuerdaten zum Eingeben von Rückkopplungsdaten für ein Codewort der zweiten Kategorie in eine vorbestimmte Vielzahl von Adressanschlusseingängen ansprechen, statt die Codewortdaten in die Eingänge einzugeben. Eine verbleibende Vielzahl von Adressanschlusseingängen empfangen einen entsprechenden Teil des Codeworts der zweiten Kategorie. Die Rückkopplungsdaten können eine Bitlänge von beispielsweise n/2 aufweisen, wobei der entsprechende Teil des Codeworts der zweiten Kategorie eine Bitlänge von nicht mehr als n/2 aufweist.
  • Die Vorrichtung kann ferner Mittel zum Erkennen von Sonderfällen von Codewörtern, für die Amplituden- und Lauflängendaten nicht im Speicher bereitgestellt sind, beinhalten. Ein Mittel, das auf die Erkennungsmittel anspricht, decodiert die Sonderfälle von Codewörtern. Zum Beispiel kann ein Sonderfall von Codewort bereitgestellt werden, um anzugeben, dass keine Lauflänge mit dem Codewort assoziiert ist. Ein anderer Sonderfall von Codewort kann angeben, dass die empfangenen Daten nicht codiert sind und direkt wiedergewonnen werden können.
  • In einer veranschaulichten Ausführungsform weist der in dem Decodierer variabler Längen bereitgestellte Speicher eine Speicherkapazität auf, die im Wesentlichen 2 × 2n entspricht. Auch können der nachfolgende Teil/die nachfolgenden Teile des Codeworts der zweiten Kategorie eine Bitlänge aufweisen, die das Geringere aus der Anzahl an nicht verarbeiteten Bits, die in dem Codewort verbleiben, oder n/2 ist, wobei die Rückkopplungsdaten eine Bitlänge von n/2 aufweisen.
  • Der Speicher kann als eine erste Verweistabelle und eine zweite Verweistabelle konfiguriert sein. Die erste Verweistabelle enthält die adressierbaren Speicherstellen in der ersten Vielzahl davon, die den Codewörtern der ersten Kategorie entsprechen, und die adressierbaren Speicherstellen in der zweiten Vielzahl davon, die den ersten n-Bit-Teilen der Codewörter der zweiten Kategorie entsprechen. Die zweite Verweistabelle enthält die adressierbaren Speicherstellen in der ersten Vielzahl davon, die den Codewörtern der zweiten Kategorie entsprechen, und die adressierbaren Speicherstellen in der zweiten Vielzahl davon, die den nachfolgenden Teilen der Codewörter der zweiten Kategorie entsprechen. Der Speicher kann einen zusätzlichen Adressanschluss zum Empfangen eines Steuerbits beinhalten, das Daten selektiv an dem n-Bit-Adressanschluss an entweder die erste Verweistabelle oder an die zweite Verweistabelle koppelt. In einer bevorzugten Ausführungsform weisen die erste und zweite Verweistabelle jeweils eine Speicherkapazität von im Wesentlichen 2n Wörtern auf.
  • Die Vorrichtung der vorliegenden Erfindung kann einen Bitstellenverschieber beinhalten, der einen Eingang zum Empfangen der Codewörter aufweist. Der Bitstellenverschieber spricht auf Verschiebelängeninformation an, die von den ersten und zweiten Steuerdaten zum Ausgeben von Codewörtern und Teilen davon an den n-Bit-Adressanschluss erlangt wird. Die Verschiebelängeninformation ist dafür Indikativ, ob das Decodieren eines Codeworts abgeschlossen worden ist. Mittel, die auf die Verschiebelängeninformation ansprechen, initiieren das Decodieren neuer Codewörter.
  • In der veranschaulichten Ausführungsform sind die Codewörter Huffman-Codewörter, die von diskreten Cosinus-Transformationskoeffizienten erlangt worden sind.
  • Ein Verfahren zum Decodieren einer Vielzahl von aufeinander folgenden Codewörtern variabler Länge, einschließlich Codewörtern, die Ereignisse mit null Lauflänge (d. h. nur Nicht-Null-Amplitude) darstellen, ist bereitgestellt. Erste Codewörter von bis zu n Bit in der Länge werden in einem einzelnen Taktzyklus decodiert. Zweite Codewörter von mehr als n Bits in der Länge werden in einer Vielzahl P von Taktzyklen decodiert. Die zweiten Codewörter stellen Ereignisse dar, die Lauflängen von mindestens P – 1 aufweisen. Ein spezielles Steuercode-Dateianfangs-Etikett ist in dritten Codewörtern, die keine Lauflänge aufweisen, eingeschlossen. Die dritten Codewörter werden als Antwort auf die Erkennung des speziellen Steuercode-Dateianfangs-Etiketts in einem Taktzyklus decodiert. In einer bevorzugten Ausführungsform werden die ersten und zweiten Codewörter unter Verwendung einer Verweistabelle decodiert, um entsprechende Amplituden- und Lauflängendaten bereitzustellen. Die dritten Codewörter werden durch das direkte Ausgeben von Amplitudendaten ohne Bezug auf die Verweistabelle decodiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltbild eines HDTV-Empfängers, der einen Decodierer variabler Längen (Huffman-Decodierer) gemäß der vorliegenden Erfindung verkörpert;
  • 2 ist ein detaillierteres Blockschaltbild des Huffman-Decodierers aus 1;
  • 3 ist ein detailliertes Blockschaltbild des Eingangs-Bitstellenverschiebers und Pufferuntersystems aus 2;
  • 4 ist eine Veranschaulichung eines ersten Sonderfalls von Codewort (Steuercode), der in Fällen verwendet wird, bei denen die Bitlänge eines Codeworts größer als 22 Bits ist;
  • 5 ist eine Veranschaulichung eines anderen Steuercodeformats, das verwendet wird, wenn die Lauflänge zwischen sukzessiven Codewörtern null ist;
  • 6 ist ein detaillierteres Blockschaltbild des Festwertspeicher-Decodierers (ROM), der in dem Decodierer aus 2 veranschaulicht ist;
  • 7 ist ein detailliertes Blockschaltbild des Führungssteuerungs-Zustandsmaschinen-Untersystems des Decodierers, der in 2 veranschaulicht ist;
  • 8 ist eine Matrix, die die Länge jedes Codeworts in Bits veranschaulicht, für Codewörter mit Lauflängen von bis zu 15 und Amplituden von bis zu 16; und
  • 9 ist ein Flussdiagramm, das die Decodierung von Codewörtern gemäß der vorliegenden Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung stellt eine Vorrichtung zum Decodieren von Codewörtern variabler Länge bereit. Obwohl die Erfindung in Verbindung mit dem Decodieren von Huffman-Codewörtern beschrieben ist, wird der Fachmann erkennen, dass die beschriebene und beanspruchte Erfindung auf Decodierer für andere Arten von Codewörtern variabler Länge breite Anwendung findet.
  • Die Technik der Quantisierung verbessert die Komprimierbarkeit einer Abbildung, indem sie die Amplitude der Transformationskoeffizienten reduziert. Um das Ergebnis vorteilhaft zu nutzen, ist ein Algorithmus erforderlich, der diesen Koeffizienten eine variable Anzahl an Bits zuteilt. Der Algorithmus für Codewörter variabler Länge kann eine Technik für statistische Codierung beinhalten, die im Gegensatz zum Quantisierungsvorgang Informationen bewahrt und die Abbildung nicht verschlechtert.
  • Huffman-Codierung ist eine optimale statistische Codierungsverfahrensweise, die sich, unter der Voraussetzung einer vorherigen Kenntnis der Wahrscheinlichkeit aller möglicher Ereignisse, an die theoretische Entropiegrenze annähern kann. Der Codierer kann derartige Wahrscheinlichkeitsverteilungen erzeugen und sie vor der Übertragung eines gegebenen Einzelbildes dem Decodierer zusenden. Diese Tabelle wird dann verwendet, um Huffman-Codewörter zu erlangen, wobei Ereignissen mit der höchsten Wahrscheinlichkeit eines Auftretens relativ kurze Codewörter zugeteilt werden. Der Decodierer behält ein identisches Codebuch bei und kann jedes Codewort mit dem eigentlichen Ereignis verbinden. In der in Verbindung mit der vorliegenden Erfindung beschriebenen Ausführungsform wird eine feste Huffman-Tabelle verwendet, um die Hardware-Umsetzung zu vereinfachen. Die Huffman-Tabelle ist auf der Grundlage einer breiten Vielfalt an verarbeiteten Videoinformationen erzeugt worden.
  • Die veranschaulichte Ausführungsform der Erfindung wendet Huffman-Codierung unter der Verwendung von 8 × 8-Blöcken von DCT-Koeffizienten, die in eine Sequenz von 64 Koeffizienten in serielle Form gebracht und Amplituden-/Lauflängen-codiert sind, an. Beim Abtasten der Sequenz von 64 Koeffizienten wird jedes Mal ein „Ereignis" als aufgetreten definiert, wenn ein Koeffizient mit einer Amplitude, die nicht gleich null ist, angetroffen wird. Dann wird dem Ereignis ein Codewort zugeteilt, das die Amplitude des Koeffizienten und die Anzahl der ihm vorausgehenden Nullen angibt. Die Anzahl der vorausgehenden Nullen wird als die „Lauflänge" bezeichnet. 8 veranschaulicht eine zweidimensionale Amplituden-/Lauflängenanordnung, bei der die Bitlänge jedes Codeworts mit einer gegebenen Amplitude 140 (bis zu 16) und Lauflänge 130 (bis zu 15) identifiziert wird. 8 veranschaulicht die Anzahl von Bits in den Codewörtern. Die Amplituden sind nur in Form von Absolutwerten bereitgestellt. Das Vorzeichenbit, das ebenfalls mit jedem Codewort eingeschlossen sein muss, ist den Codewortlängen nicht hinzugefügt worden.
  • Wenn die Koeffizientenamplitude größer als 16 ist oder wenn die Anzahl von Lauflängennullen mehr als 15 beträgt, wird ein spezielles Codewort verwendet, um den Decodierer darauf hinzuweisen, zur Auswertung der nachfolgenden Bits nicht das Codebuch zu verwenden. Stattdessen wird die Lauflänge nicht codiert gesendet. Die Koeffizientenamplitude wird ebenfalls nicht codiert gesendet, wobei die Anzahl an Bits durch den zuvor beschriebenen Quantisierungsvorgang bestimmt wird. Zusätzlich ist es mitunter effizienter, die Amplitude und die Lauflänge direkt zu codieren, selbst wenn sie durch die Verwendung der in 8 veranschaulichten zweidimensionalen Tabelle codiert werden können. Der Codierer erkennt diese Gelegenheiten und stellt auf direkte Codierung um, wenn notwendig, um die Länge des zu übertragenden Codeworts zu kürzen. Die direkt codierten Codewörter werden von dem Decodierer als Sonderfälle von Codewörtern über ein Steuercode-Dateianfangs-Etikett identifiziert. Diese Sonderfälle von Codewörtern werden ohne Bezug auf das Codebuch direkt decodiert.
  • Ein spezielles Codewort ist auch dafür vorbehalten, das Ende eines Blocks anzugeben. Es wird immer nach dem letzten Nicht-Null-Koeffizienten in einem Block von DCT-Koeffizienten eingefügt. Nachdem der DC-Koeffizient innerhalb eines Superblocks differenzcodiert wurde, wird er zusätzlich Huffman-codiert. Ein Superblock wird als eine Videoabbildungsfläche definiert, die horizontal vier Luminanzblöcke mal vertikal zwei Luminanzblöcke beträgt und mit je einem Chrominanzblock für U und V, erlangt von dieser Abbildungsfläche, assoziiert ist. Jeder Luminanz- und Chrominanzblock ist eine Abbildungsfläche, die horizontal acht Pixel mal vertikal acht Pixel beinhaltet. Siehe z. B. W. Paik, „DigiCipher-All Digital, Channel Compatible, HDTV Broadcast System", IEEE Transactions of Broadcasting, Bd. 36, Nr. 4, Dezember 1990, S. 245–254. Dieses Modell nutzt die starke Korrelation von DC-Koeffizienten innerhalb eines Makroblocks (d. h. einer Abbildungsfläche, die horizontal acht Superblöcke beinhaltet) und verbessert ferner die Kompressionseffizienz.
  • Die Effizienz des Codiervorgangs hängt stark von der Reihenfolge ab, in der die DCT-Koeffizienten abgetastet werden. Durch das Abtasten von einer hohen zu einer niedrigen Amplitude ist es möglich, die Anzahl an Läufen von Nullkoeffizienten auf typischerweise einen einzelnen langen Lauf am Ende des Blocks zu reduzieren. Die Koeffizienten werden daher im Zickzack abgetastet, beginnend mit dem DC-Koeffizienten. Wie oben angegeben wird jeder beliebige lange Lauf am Ende des Blocks effizient durch ein Blockende-Codewort dargestellt.
  • Gemäß der vorliegenden Erfindung werden die Huffman-Codewörter in vier Arten untergliedert. Die erste Art schließt Codewörter ein, die DCT-Koeffizientenamplituden von 1–16 aufweisen, mit einer Lauflänge von 0–15, und die Codewortlängen von zweiundzwanzig oder weniger aufweisen. Diese sind in der Matrix 132 von 8 veranschaulicht. Die zweite Art von Codewort kommt aus dem Satz von Lauflängen von 1–64 und DCT-Amplituden aus dem Bereich von 17–256. Diese befinden sich entweder außerhalb der Matrix von 8 oder innerhalb der Matrix, aber weisen Codewortlängen von dreiundzwanzig oder mehr auf. Die dritte Art von Huffman-Codewort fällt in die gleiche Kategorie wie die zweite Art, mit der Ausnahme von Lauflängen von null. Die vierte Art von Huffman-Codewort ist das Blockende-Codewort.
  • In der spezifischen veranschaulichten Ausführungsform ist der Huffman- Decodierer entworfen, um ein 15-Bit-Codewort in einem 68-Nanosekunden-Zyklus eines 14,6-MHz-Taktes zu verarbeiten. Huffman-Codewortlängen von der ersten Art, mit einer Lauflänge von null, sind alle zehn Bits oder weniger, wie aus der ersten Reihe 134 aus 8 ersichtlich ist. Die vorliegende Erfindung ermöglicht, dass das Verarbeiten dieser Codewörter und anderer Codewörter von nicht mehr als zehn Bits ohne Unterbrechung bereitgestellt wird. In dem Fall, dass ein Huffman-Codewort eine Länge von mehr als zehn Bits aufweist, behält die Vorrichtung der vorliegenden Erfindung einen konstanten, ununterbrochenen Fluss von Koeffizienten bei, indem sie verlangt, dass derartige Codewörter mindestens zwei oder mehr DCT-Koeffizienten darstellen. DCT-Koeffizienten, denen keine Nullwertkoeffizienten vorausgehen und die außerhalb des Bereichs der DCT-Amplituden für die erste Art von oben definierten Codewörtern liegen, weisen eine maximale Codewortlänge von 15 Bits auf. Diese sind spezielle Null-Lauflängen-Codewörter, die auch in einem 68-Nanosekunden-Taktzyklus gemäß der vorliegenden Erfindung decodiert werden können.
  • Ein vereinfachtes Blockschaltbild eines Huffman-Decodierers gemäß der vorliegenden Erfindung ist in 1 bereitgestellt. Der Huffman-Decodierer 10 empfängt Codewörter von einem Video-Prioritätssteuerungs-Verzeichnis (FIFO-Verzeichnis) 12. Die Video-FIFO gibt die Codewörter an den Huffman-Decodierer 10 auf einem Acht-Bit-Codewortbus aus. Der Huffman-Decodierer ist in der Lage, 15-Bit-Codewörter in einem 68-Nanosekundenzeitraum zu verarbeiten, indem er acht Bits an Daten auf einmal mit einer Rate von 34 Nanosekunden taktet. Dieser „ 2 ×"-Takt stellt Codewörter mit der erforderlichen Verarbeitungsrate bereit, aber erlaubt es, dass eine Acht-Bit-Busschnittstelle zum Huffman-Decodierer die Kosten des Codewort-Schnittstellen-Direktzugriffsspeichers (RAM), der verwendet wird, um die Codewörter vor der Verarbeitung zu speichern, reduziert. Der 2 ×-Takt, der auf 29,3 MHz läuft, ist zu dem 14,6-MHz-Takt synchronisiert und reduziert die Kosten des Codewort-RAMs um ungefähr 50%. Der 14,6-MHz-Takt („DATA_CLK") und der 29,3-MHz-Takt („DATA_2 × CLK") werden von einer herkömmlichen Taktschaltung 14 ausgegeben.
  • Um zu gewährleisten, dass sich kein von dem Huffman-Decodierer begangener Fehler unendlich weiter fortsetzt, wird der Decodierer von einer Synchronisationsschaltung 16 für jeden Makroblock zurückgesetzt. Ein Signal zum Zurücksetzten des Makroblocks („MB_RESET") wird von dem Synchronisationsschaltkreis während eines horizontalen Austastintervalls des verarbeiteten Videosignals bereitgestellt, wenn der Huffman-Decodierer nicht freigegeben ist. Dies erlaubt es dem Synchronisationsschaltkreis, einen Speicheranschluss für sequentiellen Zugriff auf das erste Wort des nächsten Makroblocks zurückzusetzen und Informationen über die Quantisierungsstufen und PCM-Modusdatenblöcke bereitzustellen. Die PCM-Modusdatenblöcke sind Datenblöcke, die nicht differenzcodiert sind (d. h. für die keine Bewegungskompensation ausgewählt war). Nachdem der Speicheranschluss für statischen Zugriff bereit ist, wird das MB_RESET-Signal aktiviert, welches den Huffman-Decodierer darauf hinweist, dass die Daten zum Lesen von der Video-FIFO 12 bereitstehen. Der Synchronisationsschaltkreis 16 muss die Freigabe des Huffman-Decodierers für den Zeitraum, den der Decodierer benötigt, um seine internen Verzeichnisse zu räumen und zu füllen, verzögern. Nach diesem Zeitraum kann der Synchronisationsschaltkreis den Huffman-Decodierer freigeben und gültige Daten an seinem Ausgabeanschluss für inverse DCT-Transformationsverarbeitung (IDCT) durch eine Schaltung 18 mit inverser Transformation erwarten. Während der normalen Verarbeitung eines Superblocks empfängt der Huffman-Decodierer 10 Daten über einen Kopf, der Quantisierungsinformationen und PCM-Modusinformationen für den nächsten Superblock enthält. An dem Ende eines Makroblocks sperrt der Synchronisationsschaltkreis 16 den Huffman-Decodierer und startet den Makroblock-Synchronisationsvorgang neu. Ein IDCT-Synchronismussignal von dem Huffman-Decodierer wird der Schaltung 18 mit inverser Transformation auf dem ersten Koeffizienten jedes Blocks bereitgestellt.
  • Sollte in dem Huffman-Decodierer ein Fehler erkannt werden, wird ein Huffman-Fehlererkennungssignal („HUFF_ERR") an den Synchronisationsschaltkreis 16 ausgegeben. Eine Leitungssynchronisation („LINE_SYNC") wird dem Huffman-Decodierer von dem Synchronisationsschaltkreis 16 bereitgestellt und mit den Kopfinformationen und dem 14,6-MHz-Takt synchronisiert. Dieses Signal wird verwendet, um den Huffman-Decodierer darüber zu informieren, dass das erste Bit des Kopfs zum Lesen bereitsteht.
  • Der Zweck des Huffman-Decodierers 10 liegt darin, Codewörter variabler Länge, die von einem Codierer empfangen wurden, in DCT-Koeffizienten zur Transformation zu Videodaten zu übersetzen. 2 ist ein detaillierteres Blockschaltbild des Huffman-Decodierers. Wie in Verbindung mit 1 angemerkt, empfängt der Huffman-Decodierer Huffman-Codewörter, die aus einer Video-FIFO 12 (z. B. einem VRAM) in Videodaten übersetzt werden sollen. Die Codewörter werden in einen Eingangs-Bitstellenverschieber und Puffer 20 (2) eingegeben, der unten in Verbindung mit 3 detailliert beschrieben wird. Die Funktion des Eingangs-Bitstellenverschiebers liegt darin, die Daten variabler Länge von der Video-FIFO einzuholen und sie einem Adressanschluss eines Decodierer-ROMs 22 einzuspeisen. Der ROM enthält alte notwendigen Informationen zur Codewortumwandlung. Es ist zu beachten, dass die Daten nicht immer durch den ROM eingeholt werden; mitunter werden sie direkt aus dem Datenstrom extrahiert.
  • Die Auswahl an Daten wird, je nach dem aktuellen Zustand und den aus dem ROM gelesenen Daten, von einer Führungssteuerungs-Zustandsmaschine 36 gesteuert. Für die meisten Codewörter werden Daten aus Datenmultiplexern 24 zwischengespeichert, nachdem sie von dem Wort, das von dem Eingangs-Bitstellenverschieber 20 in einem Taktzyklus bereitgestellt wurde, decodiert worden sind. Während der Zeit, in der ein Codewort decodiert wird, werden Daten, die zu dem vorhergehenden Taktzyklus zwischengespeichert wurden, durch einen Bitstellenverschieber 28 mit inverser Quantisierung geleitet, und von einem herkömmlichen Umwandlungsschaltkreis 30 wird eine Umwandlung von Vorzeichen-Absolutwert zu Zweierkomplement erwirkt. Der Bitstellenverschieber 28 mit inverser Quantisierung wird verwendet, um die Daten auf ihre gleichwertige Größe wie vor ihrer Codierung zu renormalisieren. Nach der inversen Normalisierung werden die Daten von Vorzeichen-Absolutwert zu Zweierkomplement umgewandelt. Die resultierenden Zweierkomplementdaten aus dem Schaltkreis 30 werden in einen Drei-zu-Eins-Ausgabemultiplexer 32 eingegeben, der von der Zustandsmaschine 36 gesteuert wird, um entweder Lauflängen-Nulldaten, reguläre Huffman-Daten, die von dem Schaltkreis 30 empfangen wurden, oder PCM-Daten, die aus dem Puffer 26 vor der inversen Quantisierung empfangen wurden, auszugeben. Die angemessenen Ausgabedaten werden in einem Puffer 34 gepuffert und an den Schaltkreis 18 mit inverser DCT, der in 1 veranschaulicht ist, ausgegeben.
  • 3 ist ein Blockschaltbild des Eingangs-Bitstellenverschiebers 20, der in dem Huffman-Decodierer aus 2 verwendet wird. Acht-Bit-Codewortdaten werden von der Video-FIFO 12 über eine „Vorauslese"-Schaltung 40 eingegeben, welche Codewortdaten, die von der relativ langsamen Video-FIFO abgerufen wurden, puffert, so dass sie dem Bitstellenverschieber bei Empfang eines Codeworttaktes (CW_CLK) umgehend zur Verfügung stehen. Die Funktion des Eingangs- Bitstellenverschiebers ist es, die Codewörter variabler Länge von der Video-FIFO zu empfangen und die Codewortdaten auf eine geregelte Weise für die Verarbeitung durch die Zustandsmaschine auszugeben. Anfänglich muss die Bitstellenverschieber-Pipeline gefüllt werden, bevor das Verarbeiten durch die Zustandsmaschine beginnen kann. Der Bitstellenverschieber nimmt vierzig Bits an Daten in einen 40-Bit-Eingangsauffangspeicher 42 auf und wählt unter Verwendung eines 40 × 16-Bit-Bitstellenverschiebers 44 von den Daten 16 Bits aus. Der Bitstellenverschieber 44 gibt sechzehn Bits auf einmal an den Schaltkreis 46 mit Zustandsmaschinenverarbeitung und ROM-Verweis aus. Der Bitstellenverschieber kann während eines Taktzyklus ein- bis vierzig-Bit-Positionen verschieben.
  • Der Bitstellenverschieber stellt Daten für hauptsächlich zwei Funktionen bereit. Die erste Funktion besteht darin, Daten zum Adressieren von ROM 22 (2) zu leiten, um Amplituden-, Lauflängen- und erste Steuerdaten oder Rückkopplungs- und zweite Steuerdaten für Codewörter oder Teile von Codewörtern auszugeben. Der ROM 22 bestimmt zusammen mit der Zustandsmaschine 36 (zusammen in 3 als Zustandsmaschinenverarbeitung und ROM-Verweis 46 bezeichnet) die nächste Huffman-Decodierer-Funktion und führt eine Verschiebelänge zum Bitstellenverschieber zurück.
  • Die zweite Funktion des Bitstellenverschiebers besteht darin, Daten zur direkten Verarbeitung zu leiten. Für Daten, die durch ein spezielles Steuercode-Dateianfangs-Etikett identifiziert werden, oder für PCM-Daten werden die Daten aus dem Bitstellenverschieber direkt abgezogen und verarbeitet, als ob sie von dem ROM bereitgestellt wären, obwohl sie es nicht sind. Ein derartiges Steuercode-Dateianfangs-Etikett 60, das in 4 veranschaulicht ist, wird für alle Ereignisse verwendet, für die die Matrix aus 8 mehr als eine vorbestimmte Anzahl an Bits produziert, oder für Codewörter, die sich außerhalb der Schranken der Amplituden-/Lauflängenmatrix aus 8 befinden. In der veranschaulichten Ausführungsform wird das Steuercode-Dateianfangs-Etikett 60 für alle Einträge in 8 verwendet, die mehr als 22 Bits in der Länge betragen, obwohl der Fachmann verstehen wird, dass eine spezifische Umsetzung einen Trennwert von mehr oder weniger als 22 Bits verwenden kann.
  • Das in 5 veranschaulichte Steuercode-Dateianfangs-Etikett 70 wird in Fällen verwendet, bei denen es keine Lauflänge gibt, d. h. wenn die Codewortdaten sukzessive Nicht-Null-Amplituden angeben. In derartigen Fällen enthält der ROM 22 keine Daten, die für das Codewort relevant sind, so dass das Codewort direkt verarbeitet werden muss. Die Verwendung eines speziellen Steuercode-Dateianfangs-Etiketts für Fälle, bei denen es keine Lauflänge gibt, ermöglicht es, sukzessive „Nur-Amplituden"-Codewörter mit der Rate von einem Codewort pro Zyklus zu verarbeiten, ohne das System zu verlangsamen, wenn ein Codewort mit mehr als zehn Bits präsentiert wird. Ohne ein derartiges Steuercode-Dateianfangs-Etikett könnte ein Codewort, das von dem ROM 22 nicht in einem Zyklus verarbeitet werden kann, nicht entsprechend den Systemdurchsatzanforderungen verarbeitet werden, da keine mit der Lauflänge assoziierten Nullen für die Ausgabe während zusätzlicher Verarbeitungszyklen zur Verfügung stünden.
  • Die Verschiebelänge von dem Schaltkreis 46 mit Zustandsmaschinenverarbeitung und ROM-Verweis wird über ein Eingangsterminal 58 in den Bitstellenverschieber eingegeben. Die Verschiebelänge wird in einem Vier-Bit-Zwischenspeicher 52 zwischengespeichert, bevor sie an einen Addierer 54 weitergeleitet wird. Die andere Eingabe in den Addierer 54 beinhaltet ein Sechs-Bit-Wort aus dem Zwischenspeicher 50, das von der Ausgabe des Addierers 54 rückgekoppelt wird. Ein Freigabesignal, das in das Terminal 56 eingegeben wird, gibt die Zwischenspeicher 50 und 52 frei. Das Freigabesignal kann einfach der 14,6-MHz-Datentakt sein, der die Zeitsteuerung für den Betrieb des Huffman-Decodierers bereitstellt.
  • Um 16 Bits von Daten in dem Äquivalent eines 68-Nanosekunden-Taktzyklus zu verarbeiten, wird der DATA_2 × CLK (29,3 MHz) in das Terminal 59 eingegeben, um eine Eingangsauffangspeicher-Steuerung 48 zu takten. Die Eingangsauffangspeicher-Steuerung 48 erzeugt das CW_CLK-Signal, das verwendet wird, um die Codewörter von der Video-FIFO abzurufen, und taktet außerdem die Datenausgabe von der Vorausleseschaltung 40 in den 40-Bit-Eingangsauffangspeicher 42. Um dies zu erzielen, verschiebt die Eingangsauffangspeicher-Steuerung 48 acht Bits auf einmal aus der Vorausleseschaltung unter Verwendung von fünf Auslösern, um den Zwischenspeicher 42 mit insgesamt vierzig Bits zu füllen.
  • Die Verschiebelängen, die von der Zustandsmaschine zum Eingangs-Bitstellenverschieber gesendet werden, liegen im Bereich von 1–15 Bits. Der Addierer 54 addiert immer ein extra Bit Verschiebung, da eine Codewortlänge von sechzehn Bits (die erlaubte maximale Länge) nicht in einem Vier-Bit-Wort codiert werden kann. Während der normalen Huffman-Verarbeitung folgt auf Codewörter außerdem immer ein Vorzeichenbit. Daher wird die Länge des Huffman-Codeworts im ROM 22 gespeichert, und der Bitstellenverschieber wird verwendet, um an dem Vorzeichenbit vorbei zu inkrementieren. Das Vorzeichenbit wird für die Umwandlung der zwischengespeicherten Amplitude von Vorzeichen-Absolutwert zu Zweierkomplement bewahrt. Wie in 2 veranschaulicht, wird das bewahrte Vorzeichenbit über Leitung 31 in den Konverter 30 eingegeben.
  • Gemäß der vorliegenden Erfindung ist es unabdingbar, dass das Eingangs-Bitstellenverschiebermodul ein Codewort oder einen Teil davon einmal in jedem Taktzyklus verarbeitet. Dies gewährleistet, dass der Decodierer in der Lage sein wird, während jedes aufeinander folgenden Taktzyklus mindestens entweder Amplitudendaten, Lauflängendaten oder einen Laufkoeffizienten (z. B. eine Null) auszugeben und dadurch für jeden Taktzyklus einen Koeffizienten von den Codewörtern variabler Länge bereitzustellen. Der Logikweg, der während normalen Betriebes erforderlich ist, um den Betrieb mit einem Koeffizienten pro Taktzyklus zu erreichen, unter der Annahme eines vorgeladenen ROMs, kann wie folgt ausgedrückt werden: Lat 6 + Addierer + Bitstellenverschieber + Verweis + ROM + Muxselectlogic + Sllogic < 68 nswobei sich Muxselectlogic auf den Teil der Zustandsmaschine 36 bezieht, der den Ausgabenmultiplexer 32 steuert, und sich Sllogic auf den Teil der Zustandsmaschinenlogik bezieht, der die von dem ROM 22 oder von einem Steuercode bestimmte Verschiebelänge ausgibt. „Lat 6" ist der Zwischenspeicher 50, „Addierer" ist der Addierer 54, „Bitstellenverschieber" ist der Bitstellenverschieber 44 und „Verweis + ROM" bezeichnet die benötigte Zeit, um einen Datenverweis von ROM 22 zu verarbeiten. Die 68 ns Zeiterfordernis wird durch die Periode des 14,6-MHz-Taktes aufgestellt.
  • Eine Schlüsselkomponente des von der vorliegenden Erfindung bereitgestellten Decodierers ist der Verweis-ROM 22. Das ROM-Untersystem ist detaillierter in 6 dargestellt. Die Hauptfunktion des ROMs ist die Decodierung von Huffman-Codewörtern. Der ROM enthält alle notwendigen Informationen zum Decodieren von anderen Codewörtern als denjenigen, die ein spezielles Steuercode-Dateianfangs-Etikett einschließen. Die Daten, die in die ROM-Speicherstellen gehen, werden aus der in 8 veranschaulichten Lauflängen-/ Amplitudenmatrix erlangt. Wie oben angegeben, wird diese Matrix von statistisch ausgewählten Videoabschnitten erzeugt. Die Matrix zeigt die Anzahl von Bits, die jedem Huffman-Codewort zugeteilt sind, in Beziehung zu der Lauflänge und Amplitude des Codeworts und der Häufigkeit seines Auftretens in den ausgewählten Videoabschnitten. Der ROM 22 ist entworfen, um Huffman-Codewörter zu decodieren, deren Längen in der Matrix aus 8 spezifiziert sind. Genauer gesagt werden alle Huffman-Codewörter, die eine Länge von zehn oder weniger Bits aufweisen, wie in 8 veranschaulicht, durch einen Durchgang durch den Huffman-Decodierer decodiert. Codewörter mit einer Bitlänge von mehr als 10, aber weniger als 23 Bits werden durch mehrere Durchgänge durch den Decodierer decodiert. In derartigen Fällen werden vom ROM 22 ausgegebene Daten rückgekoppelt, um den ROM in nachfolgenden Zyklen zu adressieren, bis ein ganzes Codewort decodiert worden ist.
  • Die eigentliche Erstellung der ROM-Einträge ist ein geradliniger Vorgang, der die Auswahl eines spezifischen Satzes von Codewörtern, die der ROM decodieren kann, und dann das Eingeben von Daten, die für die ausgewählten Codewörter relevant sind, in ROM-Stellen mit Adressen, die den Bits in den ausgewählten Codewörtern entsprechen, einschließt. Bei Codewörtern von nicht mehr als zehn Bits sind die dem Codewort entsprechenden ROM-Daten Amplituden-, Lauflängen- und assoziierte Steuerdaten (z. B. Verschiebelängendaten). Bei Codewörtern, die zehn Bits in der Länge überschreiten, beinhalten die ROM-Daten Rückkopplungs- und assoziierte Steuerdaten für alle außer dem letzten Durchgang zum ROM. Wenn die Rückkopplungsdaten zusammen mit einem nachfolgenden Teil des Codeworts verwendet werden, adressieren sie eine ROM-Stelle, die Daten zur Verwendung beim Zeigen auf eine andere ROM-Stelle in dem nächsten Rückkopplungszyklus speichert, oder für den Fall, dass keine weiteren Rückkopplungszyklen erforderlich sind, adressieren sie die ROM-Stelle, die die eigentlichen Amplituden- und verbleibenden Lauflängendaten für das Codewort speichert. Der Fachmann wird verstehen, dass die eigentliche Programmierung des ROMs mit den notwendigen Amplituden-, Lauflängen-, Rückkopplungs- und Steuerdaten für die ausgewählten Codewörter unter Verwendung eines relativ einfachen Computerprogramms erzielt werden kann. Bei Codewörtern von zehn oder weniger Bits stellt das Programm einfach die eigentlichen Amplituden-, Lauflängen- und Steuerdaten für das Codewort bereit. Bei Codewörtern von mehr als zehn Bits analysiert das Programm das Codewort, bricht es in aufeinander folgende Teile von zehn oder weniger Bits auf und erzeugt Rückkopplungs- und Steuerdaten für alle außer den letzten Teil des Codeworts. Bei dem letzten Teil des Codeworts stellt das Programm die eigentlichen Amplituden-, verbleibenden Lauflängen- und letzten Steuerdaten für das Codewort bereit.
  • Es ist wichtig, zu beachten, dass Codewörter, die länger als zehn Bits sind, aus Ereignissen stammen müssen, die eine Lauflänge von eins oder mehr aufweisen. Der Grund hierfür liegt darin, dass für jeden Taktzyklus an der Ausgabe des Huffmann-Decodierers ein Koeffizient erzeugt werden muss. Wenn ein Codewort mit einem Ereignis assoziiert ist, das null Lauflänge aufweist, muss es in einem Taktzyklus decodiert werden. Wenn ein Codewort mit einer Lauflänge von eins oder größer assoziiert ist, kann während des ersten Verarbeitungszyklus eine Null an die Ausgabe gesendet werden, und der Rest des Codeworts kann während des nächsten Verarbeitungszyklus weiter verarbeitet werden.
  • Es ist möglich, den Huffmann-Decodierer mit spezieller Hardware auszustatten, um 11-Bit-Codewörter in einem Taktzyklus zu verarbeiten. Um dies zu erzielen, muss ein ROM mit 11 Adressenbits verwendet werden. Ein derartiger ROM weist eine Größe von 2048 Wörtern auf. Wenn Codewörter, die länger als 11 Bits sind, von demselben ROM verarbeitet werden sollen, muss der Adresse ein anderes Bit hinzugefügt werden.
  • Dies führt zu einem ROM von 4096 Stellen. Logik kann hinzugefügt werden, um spezielle 11-Bit-Codewörter mit null Lauflängen zu verarbeiten, während die ROM-Größe auf 2048 Wörtern belassen wird. Die speziellen 11-Bit-Wörter werden in dem ROM durch die zehn höchstwertigen Bits (MSB) für jedes Paar von 11-Bit-Huffman-Codewörtern markiert. Es ist wichtig, dass jedes Paar von 11-Bit-Codewörtern das gleiche Zehn-Bit-Dateianfangs-Etikett aufweist, so dass die Zustandsmaschine und die Steuerlogik diese speziellen Codewörter effektiv decodieren können. Der ROM enthält eine Verschiebelänge von 11 für diese Wörter, und die spezielle Verarbeitung wird durch die Zustandsmaschine ausgeführt.
  • Wenn ein Codewort nicht eines der speziellen 11-Bit-Codewörter und länger als zehn Bits ist, kann es in zwei ROM-Verweisen verarbeitet werden, wenn es kürzer als 16 Bits ist und eine Lauflänge von eins oder mehr aufweist, die mit ihm assoziiert ist. Das Codewort kann ohne den Datenstrom zu unterbrechen verarbeitet werden, indem eine Amplitude von null zwischengespeichert wird, während der zweite Verweis verarbeitet wird. Wenn ein Codewort länger als 15 Bits ist, muss eine Lauflänge von mindestens zwei mit ihm assoziiert sein. Lauflängen von zwei erlauben Betrieb für Codewörter von bis zu 20 Bits. Codewörter von 16 Bits bis 20 Bits können in drei ROM-Tabellenverweisen verarbeitet werden. An jedem ersten und zweite Verweis wird eine Null zwischengespeichert. Ein dritter Verweis beendet die Suche nach Codewörter mit Längen im Bereich von 16 Bits bis 20 Bits. Dieser Vorgang ist für Codewörter, die 21 und 22 Bits lang sind, ähnlich. Diese Codewörter brauchen vier Verweise, und mit ihnen müssen mindestens drei Lauflängennullen assoziiert sein. Bei allen Mehrfachverweiswörtern enthält das ROM-Verschiebelängenfeld nur Verschiebeinformationen, einen Code, der ein ungültiges Codewort bezeichnet, oder einen vorbestimmten Wert (z. B. 15), der angibt, dass mehr Verweise notwendig sind, um das Codewort zu beenden. In Fällen, bei denen die Bitlänge größer als 22 Bits ist, wird für die veranschaulichte Ausführungsform das Steuercode-Dateianfangs-Etikett 60, das in 4 veranschaulicht ist, verwendet. Dies liegt daran, dass die maximale Länge eines Steuercodeworts (d. h. eines daran angehängten Steuercode-Dateianfangs-Etiketts) 23 Bits beträgt.
  • Der ROM 22 ist so in Abschnitte geteilt, dass die ersten 1024 Datenwörter für die ersten Verweise verwendet werden. Die nächsten 1024 Datenwörter werden für nachfolgende Verweise verwendet. Dies ist in 6 veranschaulicht, die eine erste Verweistabelle 80 und eine zweite Verweistabelle 82 zeigt. In der Ausführungsform aus 6 werden Ausgabebits 0–3 für Amplitudendaten (RAD) verwendet, Ausgabebits 4–7 werden für Lauflängendaten (RRL) verwendet und Ausgabebits 8–11 werden für Verschiebelängen- und Zustandsmaschinendaten (RSL) verwendet. Bei dem ersten Verweis für jedes Codewort werden zehn Bits des Codeworts, die aus dem Bitstellenverschieber über Datenbus 86 empfangen wurden, verwendet, um ROM 22 direkt über einen Zehn-Bit-Adressanschluss 84 zu adressieren. Ein zusätzlicher Adressanschluss 84a ist bereitgestellt, um ein zusätzliches Bit unterzubringen, wie unten besprochen werden wird. Wenn das Codewort länger als zehn Bits und kein spezielles 11-Bit-Wort ist, wird aus fünf zusätzlichen neuen Bits von dem Bitstellenverschieber, zusammen mit fünf Bits, die aus dem ROM zur Eingabe in die Terminals 90 rückgekoppelt wurden, und einem zusätzlichen sechsten Bit, das als „Fortsetzungs"-Bit bezeichnet und in das Terminal 92 eingegeben wird, eine neue Adresse konstruiert. Diese sechs Bits kommen von dem Amplitudendatenfeld (Datenbits 0–3) und dem Lauflängenfeld (Datenbits 4 und 5). Bits 0–4 werden rückgekoppelt, indem sie beim ersten Takt zwischengespeichert werden und unter Verwendung eines Multiplexers 88 während des nächsten Taktes in die Adresse des ROMs gemultiplext werden. Bit null wird in Bit fünf des ROM- Adressanschlusses gespeist, Bit eins wird in Bit sechs des Adressanschlusses gespeist usw. Das Verarbeiten des sechsten Bits wird auf die gleiche Weise gehandhabt.
  • Wie oben angemerkt, werden die Rückkopplungsbits über die Terminals 90 in den MUX 88 eingegeben. Der Betrieb des MUX 88 ist derart, dass während eines ersten Taktzyklus für Jedes Codewort die eigentlichen zehn Bits des Codeworts aus dem Bitstellenverschieber in den Adressanschluss 84 eingegeben werden. Für nachfolgende Verarbeitungszyklen von Codewörtern koppelt der Multiplexer 88 die Rückkopplungsdaten von den Terminals 90 anstelle der Codewortdaten von dem Bitstellenverschieber an die Adressanschlusseingänge 5–9. Während dieser nachfolgenden Verarbeitungszyklen werden neue Codewortdaten von dem Bitstellenverschieber nur in die Adressanschlusseingänge 0–4 eingegeben.
  • Die Daten werden so übertragen, dass alle PCM-Daten mit den MSB zuerst gesendet werden. Die Codewörter müssen so übertragen werden, dass die Huffman-Codewörter mit den MSB zuerst übertragen werden, gefolgt von dem Rest des Codeworts, und zuletzt mit einem Vorzeichenbit beendet werden. Bei von dem ROM 22 verarbeiteten Codewörtern, die länger als zehn Bit sind, in welchem Fall mehrere Durchgänge durch den ROM erforderlich werden, wird das Fortsetzungs-Bit aus der Ausgabe des ROMs (oder, in einer alternativen Ausführungsform aus der Zustandsmaschine) über das Eingangsterminal 92 in den MUX 88 eingegeben. Das Fortsetzungs-Bit treibt den Multiplexer an, die Rückkopplungsdaten anstelle der eigentlichen Codewortdaten an den Adressanschluss des ROMs zu koppeln. Das Fortsetzungs-Bit wird auch in den Adressanschluss 84a des ROMs eingegeben, um den ROM anzuweisen, für alle dem ersten Verweis für ein Codewort nachfolgenden Verweise aus der zweiten Verweistabelle anstelle der ersten Verweistabelle zu arbeiten.
  • Das Verschiebelängenfeld in dem ROM enthält immer die Länge des Huffman-Codeworts ohne sein assoziiertes Vorzeichenbit. Wenn das zu verarbeitende Codewort ein Blockende-Wort (EOB-Wort) ist, wird ein Wert von „0" für die Verschiebelänge eingefügt. Dies benachrichtigt die Zustandsmaschine, ein EOB zu verarbeiten. Da die Verschiebelänge verwendet wird, um die Zustandsmaschine über eine EOB-Bedingung zu benachrichtigen, muss die Länge des EOB-Codeworts vorzeitig bekannt sein. Die Länge des EOB-Codeworts in der veranschaulichten Ausführungsform beträgt drei Bits.
  • Wenn das zu verarbeitende Codewort eines ist, das das in 4 veranschaulichte Steuercode-Dateianfangs-Etikett 60 umfasst, wird ein vorbestimmter Wert (z. B. 12) aus dem Verschiebelängenfeld (RSL) des ROMs erkannt. Dies benachrichtigt die Zustandsmaschine, ein Steuercode-Eins-Codewort (ESC-1-Codewort) zu verarbeiten. Da die Verschiebelänge verwendet wird, um die Zustandsmaschine über eine ESC-1-Bedingung zu benachrichtigen, muss die Länge des Steuercode-Dateianfangs-Etiketts des ESC-1-Codeworts vorzeitig bekannt sein. Die Länge des Steuercode-Dateianfangs-Etiketts in der veranschaulichten Ausführungsform beträgt acht Bits.
  • Wenn das zu verarbeitende Codewort eines ist, das das in 5 veranschaulichte Steuercode-Dateianfangs-Etikett 70 umfasst, wird ein vorbestimmter Wert (z. B. 13) aus dem Verschiebelängenfeld (RSL) des ROMs erkannt. Dies benachrichtigt die Zustandsmaschine, ein Steuercode-Zwei-Codewort (ESC-2-Codewort) zu verarbeiten. In der veranschaulichten Ausführungsform beträgt die Länge des Steuercode-Dateianfangs-Etiketts für ein ESC-2-Codewort sechs Bits.
  • Wenn das zu verarbeitende Codewort eines der speziellen 11-Bit-Codewörter ist, wird ein vorbestimmter Wert (z. B. 11) aus dem Verschiebelängenfeld des ROMs erkannt. Dies benachrichtigt die Zustandsmaschine, das spezielle 11-Bit-Codewort zu verarbeiten. Da die Lauflänge für ein spezielles 11-Bit-Codewort vorzeitig als null bekannt ist, kann eine andere Amplitude in das Lauflängenfeld eingesetzt und von einem Multiplexer ausgewählt werden, in Abhängigkeit davon, was das niedrigstwertige Bit (LSB) des 11-Bit-Worts ist.
  • Das Verschiebelängenfeld für jedes beliebige Wort, das nicht während des aktuellen Verarbeitungszyklus beendet wird, wird ebenfalls auf einen vorbestimmten Wert gestellt (z. B. 15). Alle anderen Wörter, die unbeabsichtigt verarbeitet werden könnten, werden erkannt, wenn das Verschiebelängenfeld von dem ROM einem anderen vorbestimmten Wert (z. B. 14) entspricht. Dies informiert die Zustandsmaschine darüber, dass auf ein ungültiges Codewort zugegriffen worden ist.
  • Die Führungssteuerungs-Zustandsmaschine 36 steuert die von dem Huffman-Decodierer ergriffenen Maßnahmen. Ein die Zustandsmaschine detaillierter veranschaulichendes Blockschaltbild ist in 7 bereitgestellt. Die Hauptkomponenten der Zustandsmaschine sind ein Führungssteuerungsmodul 110, Pixel- und Blockzähler 106, 108, eine Kopfzustandsmaschine 102, ein Quantisierungslogikprozessor (QLOGIC-Prozessor) 104 und eine im allgemeinen mit 122 bezeichnete Steuerlogik für die Zustandsmaschinenausgabe.
  • Die Funktion des Führungssteuerungsmoduls 110 besteht darin, einen aktuellen Status des vorliegenden Zustands der Zustandsmaschine aufrecht zu erhalten und zu bestimmen, welcher Zustand als nächstes angestrebt wird. Die Steuerlogik gründet ihre Entscheidungen auf den aktuellen Zustand der Zustandsmaschine, auf aus dem ROM gelesene Daten, auf die Zähler, auf aus dem Synchronisationsschaltkreis 16 ( 1) gespeiste Daten und auf den Eingangs-Bitstellenverschieber. Alle Eingänge aus dem Synchronisationsschaltkreis werden auf der fallenden Kante des 14,6-MHz-Taktes zwischengespeichert.
  • Zustände werden durch Steuersignale, die aus dem Führungssteuerungsmodul 110 ausgegeben werden, ausgelöst. Je nach der Ausgabe des ROMs 22 oder dem Status der eingehenden Daten (d. h. ob es sich um PCM oder DPCM handelt) entscheidet die Zustandsmaschine innerhalb des Führungssteuerungsmoduls den nächsten Zustand, zu dem fortgeschritten werden soll. Der nächste Zustand der Führungssteuerungs-Zustandsmaschine gründet auf Entscheidungen, die über den aktuellen Zustand gemacht wurden, auf die aus den Zählern gelesenen Daten, auf aus dem ROM 22 gelesene Daten und auf die Daten aus dem Eingangs-Bitstellenverschieber, die aus dem Bitstellenverschieber-Ausgabeanschluss 100 empfangen wurden. Das Führungssteuerungsmodul ist dafür verantwortlich, alle Zähler auf ein Makroblock-Rücksetzen hin rückzusetzen. Es stellt auch einen Takt bereit, der den Pixelzähler 106 treibt. Das Führungssteuerungsmodul 110 verarbeitet auch die Lauflängen, die mit Huffman-Codewörtern und Steuercodewörtern assoziiert sind, stellt eine Sechs-Bit-Stelle des Lauflängenzählers bereit und steuert den größten Teil des Ausgabenlogikabschnitts des Huffman-Decodierers.
  • Das ESC-1-Codewort braucht zwei Taktzyklen zum Verarbeiten. Beim ersten Taktzyklus erkennt die Zustandsmaschine lediglich das Steuercode-Dateianfangs-Etikett des ESC-1-Codeworts wieder und wirft acht Bits vom Bitstellenverschieber ab. Ebenfalls während dieses ersten Taktzyklus wird ein Null-Lauflängen-Koeffizient in der Pipeline zur Ausgabe zwischengespeichert. Dies liegt an dem Erfordernis, dass immer ein Koeffizient in jedem Taktzyklus ohne Unterbrechung produziert werden muss. Dieses Erfordernis wird dadurch eingehalten, dass es immer einen Null-Amplitudenkoeffizienten gibt, der mit dem ESC-1-Codewort assoziiert ist. Der zweite Taktzyklus der Verarbeitung umspannt die Extraktion der Amplituden- und Lauflängenfelder des Codeworts. Der Fachmann wird begreifen, dass der Codierer verstehen muss, dass die Anzahl von Lauflängennullen, die in das Sechs-Bit-Feld des ESC-1-Codeworts eingefügt werden, eine weniger betragen muss, als es eigentlich sind, da das Verarbeiten des ESC-1-Codeworts durch den Decodierer automatisch einen Nullkoeffizienten (Laufkoeffizienten) aussendet.
  • Die in 7 veranschaulichte Kopfzustandsmaschine 102 ist eine Zustandsmaschine, die dazu dient, Kopfdaten aus den eingehenden seriellen Daten zu lesen. Der Synchronisationsschaltkreis 16 (1) ist erforderlich, um die Kopfinformationen für jeden Superblock zu übertragen, bevor das Verarbeiten auf dem Block beginnt. Somit werden die seriellen Kopfinformationen für jeden Superblock während der Verarbeitung des vorhergehenden Superblocks gesendet. Dies gewährleistet, dass die Kopfdaten vor der Zeit, zu der sie tatsächlich benötigt werden, empfangen werden, was es dem Huffman-Decodierer erlaubt, eingehende Daten bei Freigabe kontinuierlich zu verarbeiten. Der Decodierer verfolgt intern die Superblockgrenzen, so dass er weiß, wann er damit beginnen soll, das nächste Paket von Kopfinformationen zu verwenden.
  • Der Quantisierungsstufenprozessor 104 ist dafür verantwortlich, die decodierten Daten invers zu normalisieren. Er produziert eine Verschiebemenge, die an den Quantisierungsstufen-Bitstellenverschieber 28 (2) gesendet wird. Die Verschiebelänge wird als eine Funktion der in der Kopfzustandsmaschine gespeicherten Quantisierungsstufe und der Position des in der Verarbeitung befindlichen Pixels erzeugt. Die Pixelstelle wird von einem Pixelzähler 106 erzeugt. Für Amplituden von ESC-1-Codewörtern wird die Pixelstelle durch das Addieren des Lauflängenfelds des ESC-1-Codeworts zum aktuellen Wert des Pixelzählers erzeugt.
  • Der Pixelzähler hat zwei Hauptfunktionen. Als Erstes verfolgt er, welches Pixel in einem 8 × 8-Block verarbeitet wird. Diese Informationen werden von dem Quantisierungstufenprozessor 104 erfordert, um die inverse Normalisierung zu ermöglichen. Als Zweites wird der Pixelzähler verwendet, um den IDCT-Schaltkreis 18 mit dem ersten Koeffizienten des 8 × 8-Blocks zu synchronisieren.
  • Ein Blockzähler 108 wird verwendet, um die neuen Informationen zur Quantisierungsstufe (QLEVEL) und PCM-Block-Informationen, die in der Kopfzustandsmaschine zur Verwendung beim Verarbeiten des nächsten Superblocks gespeichert sind, zwischenzuspeichern. Er wird ebenfalls beim Auswählen von PCM-Daten von dem Bitstellenverschieber verwendet, in Abhängigkeit von dem aktuellen Block und dem Statuswort für PCM-Blöcke, die in der Kopfzustandsmaschine gespeichert sind.
  • Die Steuerlogik 122 für die Zustandsmaschinenausgabe steuert den Datenweg der decodierten Koeffizienten aus dem Eingangs-Bitstellenverschieber und dem ROM-Abschnitt des Huffman-Decodierers. Sie wird auch zum Steuern von Zustandsentscheidungen in dem Führungssteuerungsmodul verwendet. Die Steuerlogik für die Zustandsmaschinenausgabe umfasst eine Verweislogik 112, eine Verschiebelängenlogik 114, eine Quantisierungsstufen-Verzögerungslogik 116, eine Multiplexerauswahllogik 118 und eine Fehlerlogik 120. Diese Komponenten steuern entsprechende Komponenten in der Ausgabelogik 38 des in 2 veranschaulichten Huffman-Decodierers.
  • Die Fehlerlogik 120 erkennt verschiedene Fehler, die auftreten können. Der Huffman-Decodierer verarbeitet eine große Menge an komprimierten Informationen und expandiert sie zurück in eine nicht komprimierte Form. Fehlererkennung ist daher unbedingt notwendig, um die Integrität des Systems zu wahren. Die Fehlererkennung wird in der Steuerlogik für die Zustandsmaschinenausgabe erzeugt, indem der von dem Quantisierungsstufen-Bitstellenverschieber erzeugte Fehler mit intern in der Zustandsmaschine erzeugten Begriffen kombiniert wird. Beim Erkennen eines Fehlers gibt die Fehlerlogik 120 ein HUFF_ERR-Signal aus, das zu einem Videohalt der Daten in dem Superblock, der den Fehler enthält, führt, bis zur Abschließung des Makroblocks, in dem der Fehler auftrat. Der Synchronisationsschaltkreis 16 (1) startet den Huffman-Decodierer bei jedem Makroblock neu, indem er ein MB_RESET-Signal bei jedem Makroblock ausgibt, um zu gewährleisten, dass sich der Fehler nicht über diese Grenze hinaus fortpflanzt.
  • Die von der Zustandsmaschine zum Bitstellenverschieber gesendete Verschiebelänge wird als eine Funktion der aktuellen QLEVEL, das von dem QL-Prozessor 104 erzeugt wurde, und der ROM-Verschiebelänge berechnet. Wenn das aktuelle verarbeitete Codewort ein reguläres Huffman-Codewort von der Matrix aus 8 ist, wird die ROM-Verschiebelänge direkt zum Bitstellenverschieber gesendet. Wenn das Codewort ein Mehrfachverweis ist (d. h. größer als zehn Bits und kein Sonderfall von 11-Bit-Codewort), wird eine Verschiebelänge von vier zum Bitstellenverschieber in der veranschaulichten Ausführungsform gesendet. Der Bitstellenverschieber ist entworfen, um eins zu dem Wert von vier zu addieren, so das insgesamt fünf Bits ausgeschoben werden. Das Codewort wird als ein Mehrfachverweiscodewort identifiziert, indem eine Verschiebelänge von 15 in dem Verschiebelängenfeld des ROMs enthalten wird. Solange des Codewort zusätzliche Verweise erfordert, wird weiterhin ein Wert von 15 aus dem ROM-Verschiebelängenfeld gelesen.
  • Das Codewort wird als beendet angesehen, wenn ein Wert, der nicht 15 entspricht, aus dem ROM-Verschiebelängenfeld gelesen wird. Wenn ein Mehrfachverweiswort beendet wird, ist die zum Bitstellenverschieber gesendete Verschiebelänge die aus dem ROM-Verschiebelängenfeld gelesene Verschiebelänge plus einem Wert von fünf, um die fünf Bits, die nicht aus dem ursprünglichen ersten Zehn-Bit-Verweis für das Codewort weggeschoben wurden, zu berücksichtigen.
  • Die für den ROM 22 erzeugte Adresse ist eine Funktion der ROM-Ausgabedaten und der Ausgabe des Bitstellenverschiebers. Gemäß der vorliegenden Erfindung braucht der ROM 22 eine Speicherkapazität von nur 2*2n Wörtern, wobei n die maximale Anzahl von Bits (z. B. zehn) ist, die in einem einzelnen Durchgang durch den ROM verarbeitet werden können. Es ist zu beachten, dass n auch der Anzahl von Bits entspricht, die durch den Adressanschluss 84 des ROMs untergebracht sind. Somit ist der ROM 22 in der veranschaulichten Ausführungsform ein 2-K-ROM.
  • Wenn das Huffman-Codewort kein Mehrfachverweis ist, kommt die für den ROM 22 erzeugte Adresse direkt aus dem Bitstellenverschieber. Wenn das Huffman-Codewort ein Mehrfachverweis ist, ist die Adresse eine Kombination der Daten von dem Bitstellenverschieber und von Daten, die aus der Ausgabe des ROMs zwischengespeichert wurden. Beim ersten Verweis werden zehn Bits den ROM adressieren. Das in den Adressanschluss 84a eingegebene Fortsetzungs-Bit ist null. Wenn das decodierte Wort aus dem ROM ein unbeendetes Codewort angibt, werden fünf Bits aus dem Bitstellenverschieber ausgeschoben, und die fünf niedrigstwertigen Bits (LSB) der neuen Zehn-Bit-Adresse aus dem Bitstellenverschieber werden mit den fünf LSBs aus der Ausgabe des ROMs kombiniert. An diesem Punkt sind die fünf LSBs von dem vorhergehenden Verweis an dem Eingang des Multiplexers 88 und werden ignoriert, da der Multiplexer die aus dem ROM während des vorherigen ROM-Verweises zwischengespeicherten „Rückkopplungs"-Bits anwendet, um die Eingänge fünf bis neun des Adressanschlusses 84 zu adressieren. Zur gleichen Zeit wird das in den Adressanschluss 84a (und den Multiplexer 88) eingegebene Fortsetzungs-Bit auf eins gestellt. Dieser Vorgang wird wiederholt, bis das Codewort beendet wird. Wenn das Codewort beendet ist, wird das Verschiebelängenfeld des ROMs plus fünf zum Bitstellenverschieber gesendet. Die zusätzlichen fünf Bits machen die fünf Bits an dem Eingang des Multiplexers 88 aus, die ignoriert wurden, als der Multiplexer die Rückkopplungsbits in die Adresseingänge fünf bis neun des Anschlusses 84 eingab.
  • Amplitudendaten für Codewörter, die Steuercode-Dateianfangs-Etiketten 60 und 70 umfassen, welche in 4 und 5 veranschaulicht sind, werden direkt aus dem Bitstellenverschieber gezogen. Da die Amplitudendaten mit MSB zuerst gesendet werden, können sie automatisch denormalisiert werden, ohne durch den in 2 veranschaulichten Quantisierungsstufen-Bitstellenverschieber 28 zu gehen. Stattdessen wird ein Bitmaskierungsvorgang verwendet. Amplitudendaten werden produziert, indem die sieben LSBs in Abhängigkeit von der aktuellen Quantisierungsstufe, die von dem Quantisierungsstufenprozessor 104 erzeugt wurde, maskiert werden. PCM-Daten werden über eine Acht-Bit-Busabzweigung 31 aus dem Bitstellenverschieber in den Ausgabelogikabschnitt 38 des Huffman-Decodierers gespeist.
  • Mehrere Beispiele des Decodierens von Huffman-Codewörtern unter Verwendung des neuartigen ROMs der vorliegenden Erfindung werden nun mit Bezug auf 6 bereitgestellt. In dem ersten Beispiel wird ein Codewort von weniger als zehn Bits, dargestellt in der Matrix aus 8, decodiert. Derartige Codewörter werden mit einem einzelnen Durchgang durch den ROM verarbeitet. Es sei zum Beispiel angenommen, dass das Neun-Bit-Codewort mit einer Lauflänge null und Amplitude 12 verarbeitet werden soll. Anfänglich wird das Fortsetzungs-Bit am Terminal 92 des ROMs auf null gestellt, wodurch angegeben wird, dass die erste Verweistabelle 80 verwendet werden soll. Der Multiplexer 88 wird so gestellt, dass er Datenbits von dem Bitstellenverschieber direkt an den Adressanschluss 84 koppelt. Das Neun-Bit-Codewort von dem Bitstellenverschieber wird in die Adresseingänge null bis acht des Adressanschlusses 84 eingegeben, wobei eine Stelle in der ersten Verweistabelle 80 direkt adressiert wird. Die Verweistabelle gibt vier Bits an Amplitudendaten, vier Bits an Lauflängendaten (alles Nullen, d. h. 0000) und vier Bits an Verschiebelängendaten aus, was angibt, dass neun Bits von dem Bitstellenverschieber eingeschoben wurden. Die aus dem ROM 22 ausgegebenen Amplituden- und Lauflängendaten werden von der Ausgabelogik 38 des Huffman-Decodierers (2) verarbeitet, um die von dem Huffman-Codewort dargestellten Transformationskoeffizienten zu erhalten.
  • Das nächste Beispiel beschreibt die Decodierung eines 14-Bit-Huffman-Codeworts. Nach Erhalt des Codeworts werden die ersten zehn Bits in die Adresseingänge null bis neun des Adressanschlusses 84 eingegeben. Diese zehn Bits adressieren eine Stelle der ersten Verweistabelle 80, die eine Verschiebelänge von 15 ausgibt. Ein Verschiebelängenwert von 15 gibt der Zustandsmaschine an, dass ein Mehrfachverweis für dieses Codewort erforderlich ist. Die Zustandsmaschine erkennt den 15-Wert der Verschiebelänge während des ersten Taktzyklus und sendet als Antwort eine Verschiebelänge von fünf zum Bitstellenverschieber. Zur gleichen Zeit aktiviert die Führungssteuerungs-Zustandsmaschine 36 ein Ausgabe-MUX-Steuersignal zum Multiplexer 32 (2), wodurch sie den Multiplexer dazu veranlasst, einen Null-Laufkoeffizienten (z. B. 0000) für den Takt auszugeben. Dies ermöglicht es dem Decodierer, in jedem Zyklus des Datentaktes einen Koeffizienten zu produzieren, selbst wenn mehr als ein Zyklus benötigt wird, um ein bestimmtes Codewort zu verarbeiten.
  • Beim Empfangen der Verschiebelänge von fünf aus der Zustandsmaschine lädt der Bitstellenverschieber 20 die nächsten fünf Bits des Codeworts in die Adresseingänge null bis vier des Adressanschlusses 84. Zur gleichen Zeit werden Rückkopplungsdaten (anstelle der eigentlichen Amplituden- und Lauflängendaten), die aus der ersten Verweistabelle 80 während des ersten Zyklus der Codewort-Verarbeitung ausgegeben wurden, in die Terminals 90 rückgekoppelt und über den Multiplexer 88 in die Adresseingänge fünf bis neun des Adressanschlusses 84 eingegeben. Der Multiplexer 88 spricht auf die Aktivierung des Fortsetzungs-Bits auf Terminal 92 an, um die Rückkopplungsdaten anstelle der Daten aus dem Bitstellenverschieber zum Adressanschluss 84 zu transferieren. Das Fortsetzungs-Bit kann entweder ein Bit sein, das aus der ROM-Verweistabelle 80 ausgegeben wurde, oder ein Bit, das von der Zustandsmaschine als Antwort auf den aus dem ROM ausgegebenen Verschiebelängenwert 15 erzeugt wird.
  • An diesem Punkt adressieren vier neue Bits von dem Bitstellenverschieber (die verbleibenden vier Bits in dem 14-Bit-Codewort) und fünf Rückkopplungsbits die zweite Verweistabelle 82 des ROMs. Zugriff auf die zweite Verweistabelle 82 wird durch die Eingabe des Fortsetzungs-Bits in den Adressanschluss 84a des ROMs bereitgestellt. Die vier neuen Bits von dem Bitstellenverschieber und die fünf Rückkopplungsbits, die in den Adressanschluss 84 eingegeben wurden, zeigen auf einen Wert in der Verweistabelle 82, der die richtigen Amplituden- und Lauflängendaten für das 14-Bit-Codewort ausgibt. Zur gleichen Zeit gibt der ROM eine gültige Verschiebelänge von zwischen zwei und zehn aus, was der Zustandsmaschine angibt, dass das Codewort erfolgreich decodiert worden ist, so dass das System rückgesetzt werden kann, um die Verarbeitung des nächsten Codeworts anzufangen.
  • Codewörter von mehr als 15 Bits werden in drei Zyklen verarbeitet. Der erste Zyklus stellt Rückkopplungsdaten von der ersten Verweistabelle 80 zur Verwendung während des zweiten Zyklus bereit. Der zweite Zyklus gibt Rückkopplungsdaten von der zweiten Verweistabelle 82 zur Verwendung während des dritten Zyklus aus. Der dritte Zyklus resultiert in der Ausgabe der eigentlichen Amplituden- und Lauflängendaten für das Codewort von Verweistabelle 82. Während jedes der ersten beiden Zyklen gibt die Zustandsmaschine über den Multiplexer 32 einen Null-Laufkoeffizienten aus, so dass dem Erfordernis der Produktion eines Koeffizienten für jeden Zyklus des Datentaktes genügt wird.
  • Ein Flussdiagramm, das den Codewort-Decodierbetrieb zusammenfasst, ist in 9 bereitgestellt. Der Decodiervorgang fängt bei Kasten 150 an, und bei Kasten 152 werden die ersten N Codewort-Bits eines neuen Codeworts in den ROM-Adressanschluss eingegeben. In der veranschaulichten Ausführungsform ist N = 10, obwohl es sich versteht, dass jeder beliebige Wert für N in Abhängigkeit von der spezifischen Decodiererumsetzung gewählt werden könnte.
  • Als Antwort auf die ersten zehn Codewort-Bits gibt der Decodierer der veranschaulichten Ausführungsform Daten von der ersten Verweistabelle 80 aus, einschließlich Verschiebelängendaten. Wenn das Codewort nicht mehr als zehn Bits beträgt, liegt die von der ersten Verweistabelle ausgegebene Verschiebelänge (SHIFTLEN) im Bereich von zwei bis zehn. In diesem Fall gibt die erste Verweistabelle die eigentlichen Amplituden- und Lauflängendaten für das Codewort aus, wie bei Kasten 156 angegeben, und der Decodierer steht bereit, das nächste Codewort zu verarbeiten, wie bei Kasten 158 angegeben. Die Steuerung geht dann zum Kasten 152 zurück, um das nächste Codewort zu decodieren.
  • In dem Fall, dass die SHIFTLEN-Ausgabe von der ersten Verweistabelle nicht in dem Bereich von zwei bis zehn liegt, wird bei Kasten 160 bestimmt, ob die SHIFTLEN 15 entspricht. Eine Verschiebelänge von 15 gibt an, dass das Codewort länger als zehn Bits ist und mindestens einen zusätzlichen Durchgang durch den ROM erfordert. Dieses Vorkommnis resultiert darin, dass das Fortsetzungs-Bit bei Kasten 168 auf eins gestellt wird, was dem ROM angibt, dass die zweite Verweistabelle 82 verwendet werden muss, und den Multiplexer 88 einstellt, Rückkopplungsdaten in die Adresseingänge fünf bis neun des Adressanschlusses 84 einzugeben. Dann wird bei Kasten 170 der Bitstellenverschieber um die Menge verschoben, die zur Eingabe der nächsten fünf Bits neuer Daten in die Adresseingänge null bis vier des Adressanschlusses 84 notwendig ist. Um dies zu erzielen, wird der Bitstellenverschieber beim zweiten Durchgang durch den ROM um fünf Bits verschoben, und um fünf Bits bei jedem nachfolgenden Durchgang nach dem zweiten Durchgang. Bei Kasten 172 werden die aus dem ROM während des letzten Durchgangs dahindurch ausgegebenen Rückkopplungsdaten über den Multiplexer 88 in den ROM-Adressanschluss eingegeben. Die neuen Eingangsdaten von dem Bitstellenverschieber und die Rückkopplungsdaten von dem ROM adressieren eine neue Speicherstelle im ROM 22, und die resultierenden Ausgabedaten aus dem ROM enthalten eine neue Verschiebelänge. Zur gleichen Zeit wird ein Null-Laufkoeffizient aus dem Multiplexer 32 als Antwort auf die Zustandsmaschine ausgegeben, wie bei Kasten 180 angegeben. Diese Routine bildet dann eine Schleife zurück zum Kasten 160.
  • Kasten 160 bestimmt wiederum, ob die Verschiebelänge 15 entspricht, und wenn ja, werden nachfolgende Durchgänge durch den ROM fortgesetzt, bis die Verschiebelänge nicht mehr 15 entspricht. An diesem Punkt bestimmt der Kasten 162, ob die Verschiebelänge 11 entspricht. Wenn ja, ist das Codewort eines der speziellen 11-Bit-Codewörter, die außerhalb des ROMs verarbeitet werden können. Eine derartige Verarbeitung erfolgt bei Kasten 174.
  • Wenn die Verschiebelänge nicht 11 entspricht, wird bei Kasten 164 bestimmt, ob die Verschiebelänge 12 entspricht. Wenn ja, bedeutet dies, dass das Codewort ein ESC-1-Codewort ist, und es wird demgemäß bei Kasten 176 verarbeitet. Wenn die Verschiebelänge nicht 12 entspricht, bestimmt Kasten 166, ob die Verschiebelänge 13 entspricht. Wenn ja, bedeutet dies, dass das Codewort ein ESC-2-Codewort ist, das bei Kasten 178 verarbeitet wird.
  • In dem Fall, dass die Verschiebelänge nicht 11, 12, 13 oder 15 ist, wird bei Kasten 154 bestimmt, ob die Verschiebelänge in dem Bereich von zwei bis zehn liegt, was angibt, dass das Codewort erfolgreich decodiert worden ist. Unter der Annahme, dass dies der Fall ist, werden die decodierten Daten bei Kasten 156 ausgegeben, und das Verarbeiten des nächsten Codeworts fängt bei Kasten 158 an.
  • Es versteht sich jetzt, dass die vorliegende Erfindung einen Decodierer zum Decodieren von Codewörtern variabler Länge bereitstellt, um Transformationskoeffizienten wiederzugewinnen. Eine kleine ROM-Größe wird bereitgestellt, indem Rückkopplung zur Verarbeitung von Codewörtern von einer größeren Länge, als andernfalls von einer kleinen (z. B. 1 K) Verweistabelle untergebracht werden könnte, genutzt wird. Wenn ein Codewort weniger als die vorbestimmte Anzahl von Bits beträgt, wird es in einem Taktzyklus decodiert. Wenn das Codewort länger als die vorbestimmte Anzahl von Bits ist, wird es in mehr als einem Taktzyklus decodiert. Für jeden zusätzlichen Taktzyklus, der zum Decodieren des Codeworts erforderlich ist, wird ein Laufkoeffizient, der null entspricht, ausgegeben, so dass für jeden Taktzyklus ein Koeffizient produziert wird. Dies ermöglicht es dem Decodierer, Codewörter mit Echtzeit-Videoraten zu verarbeiten.

Claims (20)

  1. Ein Rückkopplungsspeicher (22) zur Verwendung beim Decodieren von Codewörtern variabler Länge, der Folgendes beinhaltet: eine erste Verweistabelle (80), die durch eine erste Kategorie von Codewörtern von nicht mehr als n Bits in der Länge oder von bis zu den ersten n Bits einer zweiten Kategorie von Codewörtern, die n Bits in der Länge überschreiten, adressierbar ist; eine zweite Verweistabelle (82), die durch eine Kombination von p Bits von ersten Rückkopplungsdaten und einem m-Bit- oder einem kleineren Teil der zweiten Kategorie von Codewörtern adressierbar ist, wobei der m-Bit- oder kleinere Teil den ersten n Bits der zweiten Kategorie von Codewörtern folgt, wobei die erste Verweistabelle (80) erste Rückkopplungsdaten enthält, die einem anfänglichen n-Bit-Teil der zweiten Kategorie von Codewörtern entsprechen, dadurch gekennzeichnet, dass der Speicher ferner Folgendes beinhaltet: einen Adressanschluss (84) zum Empfangen von Codewörtern, die der ersten Kategorie von Codewörtern und der zweiten Kategorie und den Rückkopplungsdaten angehören; und Mittel zum selektiven Koppeln (88) des Adressanschlusses (84), um die erste Verweistabelle (80) oder die zweite Verweistabelle (82) zu adressieren; dadurch, dass die erste Verweistabelle (80) Folgendes enthält: Amplituden- und Lauflängendaten, die der ersten Kategorie von Codewörtern entsprechen, und dadurch, dass die zweite Verweistabelle (82) Folgendes enthält: Amplituden- und Lauflängendaten, die einer Kombination aus p Bits erster Rückkopplungsdaten und einem letzten m-Bit- oder kleineren Teil der zweiten Kategorie von Codewörtern entspricht, und zweite Rückkopplungsdaten, die einer Kombination aus p Bits erster Rückkopplungsdaten und einem beliebigen m-Bit-Teil der zweiten Kategorie von Codewörtern entsprechen, der sich zwischen den anfänglichen und letzten Teilen davon befindet; und wobei in der zweiten Verweistabelle (82) p + m ≤ n ist.
  2. Eine Vorrichtung, die den Speicher aus Anspruch 1 zum Wiederherstellen von Transformationskoeffizienten aus den Codewörtern beinhaltet, wobei die Codewörter die Eigenschaft aufweisen, dass kein Codewort ein Dateianfangs-Etikett eines beliebigen anderen Codeworts ist, wobei die Vorrichtung einen n-Bit-Adressanschluss (84) beinhaltet, wobei: die erste Verweistabelle (80) ferner erste Steuerdaten für verschiedene Codewörter der ersten Kategorie enthält, und die zweite Verweistabelle (82) ferner zweite Steuerdaten für Teile von Codewörtern der zweiten Kategorie enthält; Mittel zum Decodieren von Codewörtern der ersten Kategorie durch das Eingeben der Codewörter in den Adressanschluss (84) zum Adressieren des Speichers bereitgestellt sind, um Amplituden-, Lauflängen- und die ersten Steuerdaten dafür auszugeben; und Mittel zum Decodieren von Codewörtern der zweiten Kategorie durch Folgendes bereitgestellt sind: Eingeben eines ersten n-Bit-Teils eines Codeworts der zweiten Kategorie in den Adressanschluss (84) zum Adressieren des Speichers (80, 82) zum Ausgeben von Rückkopplungsdaten und zweiten Steuerdaten davon; zyklisches Eingeben eines nachfolgenden Teils des Codeworts der zweiten Kategorie in den Adressanschluss (84) zusammen mit den Rückkopplungsdaten als Antwort auf die zweiten Steuerdaten, wobei der nachfolgende Teil und die Rückkopplungsdaten zusammen eine Adresse von nicht mehr als n Bits zum Adressieren des Speichers bereitstellen, um: (i) die Rückkopplungsdaten und zweiten Steuerdaten zur Verwendung in einem nächsten Eingabezyklus auszugeben, wenn mindestens ein zusätzlicher Teil in dem Codewort der zweiten Kategorie verbleibt, und (ii) die Amplituden-, Lauflängen- und ersten Steuerdaten für das Codewort der zweiten Kategorie auszugeben, wenn keine zusätzlichen Teile darin verbleiben; und Mittel, die auf die zweiten Steuerdaten ansprechen, für die Ausgabe eines Laufkoeffizienten für jeden Teil des Codeworts der zweiten Kategorie, das nicht in der Ausgabe von Amplituden-, Lauflängen- und ersten Steuerdaten resultiert, bereitgestellt sind.
  3. Vorrichtung gemäß Anspruch 2, die ferner Folgendes beinhaltet: Taktmittel (14), die gekoppelt sind, um dem Speicher (22) und dem Decodiermittel des Codeworts der ersten und zweiten Kategorie ein Taktsignal bereitzustellen, zum Aufstellen von aufeinander folgenden Taktzyklen, während denen mindestens entweder: (i) die Amplituden-, Lauflängen- und die ersten Steuerdaten zur Verwendung bei der Bewirkung eines Amplitudenkoeffizienten, oder (ii) die Rückkopplungsdaten und zweiten Steuerdaten zur Verwendung bei der Bewirkung eines Laufkoeffizienten von dem Speicher (22) ausgegeben werden; wobei ein Koeffizient von den Codewörtern variabler Länge für Jeden Taktzyklus bewirkt wird.
  4. Vorrichtung gemäß Anspruch 2 oder 3, wobei das Decodiermittel des Codeworts der zweiten Kategorie Folgendes beinhaltet: Multiplexermittel (88), die auf die zweiten Steuerdaten zum Eingeben von Rückkopplungsdaten für ein Codewort der zweiten Kategorie in eine vorbestimmte Vielzahl von Adressanschlusseingängen ansprechen, statt die Codewortdaten in die Eingänge einzugeben, wobei eine Vielzahl von Adressanschlusseingängen, die einen entsprechenden Teil des Codeworts der zweiten Kategorie empfangen, verbleibt.
  5. Vorrichtung gemäß Anspruch 4, wobei die Rückkopplungsdaten eine Bitlänge von n/2 aufweisen und der entsprechende Teil des Codeworts der zweiten Kategorie eine Bitlänge von nicht mehr als n/2 aufweist.
  6. Vorrichtung gemäß einem der Ansprüche 2 bis 5, die weiterhin Folgendes beinhaltet: Mittel zum Erkennen von Sonderfällen von Codewörtern, für die Amplituden- und Lauflängendaten nicht im Speicher bereitgestellt sind; und Mittel, die auf die Erkennungsmittel zum Decodieren der Sonderfälle von Codewörtern ansprechen.
  7. Vorrichtung gemäß einem der Ansprüche 2 bis 6, wobei der Speicher (22) eine Speicherkapazität aufweist, die im Wesentlichen 2 × 2n entspricht.
  8. Vorrichtung gemäß einem der Ansprüche 2 bis 7, wobei: der nachfolgende Teil des Codeworts der zweiten Kategorie eine Bitlänge aufweist, die das Geringere aus der Anzahl an nicht verarbeiteten Bits, die in dem Codewort verbleiben, oder n/2 ist; und die Rückkopplungsdaten eine Bitlänge von n/2 aufweisen.
  9. Vorrichtung gemäß einem der Ansprüche 2 bis 8, wobei der Speicher (22) einen zusätzlichen Adressanschluss zum Empfangen eines Steuerbits beinhaltet, der Daten selektiv an den n-Bit- Adressanschluss koppelt, um entweder die erste Verweistabelle oder die zweite Verweistabelle zu adressieren.
  10. Vorrichtung gemäß einem der Ansprüche 2 bis 9, wobei die erste und zweite Verweistabelle jeweils eine Speicherkapazität von im Wesentlichen 2n Wörtern aufweisen.
  11. Vorrichtung gemäß einem der Ansprüche 2 bis 10, die ferner einen Bitstellenverschieber (20) beinhaltet, der Folgendes aufweist: einen Eingang zum Empfangen der Codewörter, und Mittel, die auf von den ersten Steuerdaten und den zweiten Steuerdaten erlangte Verschiebelängeninformation zum Ausgeben von Codewörtern und Teilen davon an den n-Bit-Adressanschluss ansprechen.
  12. Vorrichtung gemäß Anspruch 11, wobei die Verschiebelängeninformation Indikativ dafür ist, ob das Decodieren eines Codeworts abgeschlossen worden ist, wobei die Vorrichtung ferner Folgendes beinhaltet: Mittel, die auf die Verschiebelängeninformation ansprechen, um das Decodieren eines neuen Codeworts zu initiieren.
  13. Vorrichtung gemäß einem der Ansprüche 2 bis 12, wobei die Codewörter Huffman-Codewörter sind, die von diskreten Cosinus-Transformationskoeffizienten erlangt worden sind.
  14. Vorrichtung gemäß einem der Ansprüche 2 bis 13, die ferner Folgendes beinhaltet: Mittel zum selektiven Koppeln des Adressanschlusses (84), um die erste Verweistabelle oder die zweite Verweistabelle zu adressieren.
  15. Vorrichtung gemäß einem der Ansprüche 2 bis 14, wobei die Codewörter decodiert werden, um Transformationskoeffizienten, die Ausgabecodes beinhalten, die stellvertretend für vollständig decodierte Codewörter sind, wiederherzustellen; und wobei Amplituden-, Lauflängen- und erste Steuerdaten von der ersten Vielzahl von adressierbaren Speicherstellen verwendet werden, um die Ausgabecodes zu bilden.
  16. Vorrichtung gemäß einem der Ansprüche 2 bis 15, wobei die Codewörter variabler Länge Codewörter umfassen, die Ereignisse von null Lauflänge darstellen, wobei: die Codewörter der ersten Kategorie in einem einzelnen Taktzyklus decodiert werden; die Codewörter der zweiten Kategorie in einer Vielzahl P von Taktzyklen decodiert werden, wobei die Codewörter der zweiten Kategorie Ereignisse mit Lauflängen von mindestens P – 1 darstellen; wobei die Vorrichtung ferner Folgendes beinhaltet: Mittel zum Identifizieren von Codewörtern der dritten Kategorie, die Ereignisse von null Lauflänge mit einem speziellen Steuercode darstellen; und Mittel zum Decodieren der Codewörter der dritten Kategorie in einem Taktzyklus als Antwort auf das Erkennen des speziellen Steuercodes.
  17. Ein Verfahren zum Decodieren von Codewörtern variabler Länge, das Adressierschritte für Folgendes beinhaltet: eine erste Verweistabelle (80) eines Speichers, der durch eine erste Kategorie von Codewörtern von nicht mehr als n Bits in der Länge oder von bis zu den ersten n Bits einer zweiten Kategorie von Codewörtern, die n Bits in der Länge überschreiten, adressierbar ist; eine zweite Verweistabelle (82) des Speichers, der durch eine Kombination von p Bits von ersten Rückkopplungsdaten und einem m-Bit- oder einem kleineren Teil der Codewörter der zweiten Kategorie adressierbar ist, wobei der m-Bit- oder kleinere Teil den ersten n Bits der Codewörter der zweiten Kategorie folgt, wobei die erste Verweistabelle (80) erste Rückkopplungsdaten enthält, die einem anfänglichen n-Bit-Teil der zweiten Kategorie von Codewörtern entsprechen, gekennzeichnet durch die folgenden weiteren Schritte: Eingeben von Codewörtern, die der ersten Kategorie von Codewörtern und der zweiten Kategorie und den Rückkopplungsdaten angehören, in einen Adressanschluss (84); und selektives Koppeln des Adressanschlusses (84), um die erste Verweistabelle (80) oder die zweite Verweistabelle (82) zu adressieren; Versehen der ersten Verweistabelle mit Amplituden- und Lauflängendaten, die der ersten Kategorie von Codewörtern entsprechen, und Versehen der zweiten Verweistabelle mit Amplituden- und Lauflängendaten, die einer Kombination aus p Bits erster Rückkopplungsdaten und einem letzten m-Bit- oder kleineren Teil der zweiten Kategorie von Codewörtern entsprechen; Bereitstellen von zweiten Rückkopplungsdaten, die einer Kombination aus p Bits erster Rückkopplungsdaten und beliebigen m-Bit-Teilen der zweiten Kategorie von Codewörtern entsprechen, die sich zwischen den anfänglichen und endgültigen Teilen davon befinden; und Adressieren der zweiten Verweistabelle (82), wobei p + m ≤ n.
  18. Verfahren gemäß Anspruch 17, wobei das Verfahren verwendet wird, um Transformationskoeffizienten aus den Codewörtern wiederzugewinnen, und wobei die Codewörter die Eigenschaft aufweisen, dass kein Codewort ein Dateianfangs-Etikett eines beliebigen anderen Codeworts ist, das die folgenden weiteren Schritte beinhaltet: Decodieren von Codewörtern der ersten Kategorie durch das Eingeben der Codewörter in einen Adressanschluss (84) zum Adressieren des Speichers, um die Amplituden- und Lauflängendaten zusätzlich zu ersten Steuerdaten dafür auszugeben; oder Decodieren von Codewörtern der zweiten Kategorie durch: Eingeben eines ersten n-Bit-Teils eines Codeworts der zweiten Kategorie in den Adressanschluss (84) des Speichers (80, 82) zum Ausgeben der Rückkopplungsdaten zusätzlich zu zweiten Steuerdaten dafür; zyklisches Eingeben eines nachfolgenden Teils des Codeworts der zweiten Kategorie in den Adressanschluss (84) zusammen mit den Rückkopplungsdaten als Antwort auf die zweiten Steuerdaten, wobei der nachfolgende Teil und die Rückkopplungsdaten zusammen eine Adresse von nicht mehr als n Bits zum Adressieren des Speichers bereitstellen, um: (i) die Rückkopplungsdaten und zweiten Steuerdaten zur Verwendung in einem nächsten Eingabezyklus auszugeben, wenn mindestens ein zusätzlicher Teil in dem Codewort der zweiten Kategorie verbleibt, und (ii) die Amplituden-, Lauflängen- und ersten Steuerdaten für das Codewort der zweiten Kategorie auszugeben, wenn keine zusätzlichen Teile darin verbleiben; und Ausgeben eines Laufkoeffizienten für jeden Teil des Codeworts der zweiten Kategorie, das nicht in der Ausgabe von Amplituden-, Lauflängen- und ersten Steuerdaten resultiert.
  19. Verfahren gemäß einem der Ansprüche 17 oder 18, wobei die Codewörter variabler Länge Codewörter umfassen, die Ereignisse von null Lauflänge darstellen, das die folgenden weiteren Schritte beinhaltet: Decodieren der Codewörter der ersten Kategorie in einem einzelnen Taktzyklus; Decodieren der Codewörter der zweiten Kategorie in einer Vielzahl P von Taktzyklen, wobei die Codewörter der zweiten Kategorie Ereignisse mit Lauflängen von mindestens P – 1 darstellen; Identifizieren von Codewörtern der dritten Kategorie, die Ereignisse von null Lauflänge mit einem speziellen Steuercode (60, 70) darstellen, und Decodieren der Codewörter der dritten Kategorie (60) in einem Taktzyklus als Antwort auf das Erkennen des speziellen Steuercodes (60, 70).
  20. Verfahren gemäß Anspruch 19, wobei: die Codewörter der ersten und zweiten Kategorie unter Verwendung der Verweistabellen decodiert werden, um entsprechende Amplituden- und Lauflängendaten bereitzustellen; und die Codewörter der dritten Kategorie durch das direkte Ausgeben von Amplitudendaten ohne Bezug auf die Verweistabellen decodiert werden.
DE69333714T 1992-03-26 1993-03-16 Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen Expired - Fee Related DE69333714T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US858101 1992-03-26
US07/858,101 US5233348A (en) 1992-03-26 1992-03-26 Variable length code word decoder for use in digital communication systems

Publications (2)

Publication Number Publication Date
DE69333714D1 DE69333714D1 (de) 2005-01-05
DE69333714T2 true DE69333714T2 (de) 2005-12-01

Family

ID=25327482

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69333714T Expired - Fee Related DE69333714T2 (de) 1992-03-26 1993-03-16 Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen

Country Status (7)

Country Link
US (1) US5233348A (de)
EP (1) EP0562419B1 (de)
JP (1) JP2511788B2 (de)
KR (1) KR100188427B1 (de)
AU (1) AU654929B2 (de)
CA (1) CA2091815C (de)
DE (1) DE69333714T2 (de)

Families Citing this family (58)

* 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
DE69233530T2 (de) * 1991-04-10 2006-05-11 Mitsubishi Denki K.K. Kodierer und Dekodierer
US6167539A (en) * 1991-11-14 2000-12-26 Canon Kabushiki Kaisha Transmitting apparatus with code formation based on detected transmission channel data
EP0546795B1 (de) * 1991-12-09 1997-03-05 Matsushita Electric Industrial Co., Ltd. Digitale Modulator- oder Demodulatorschaltung
US5339077A (en) * 1992-08-18 1994-08-16 Idaho Research Foundation, Inc. Comma code generator
US5657423A (en) * 1993-02-22 1997-08-12 Texas Instruments Incorporated Hardware filter circuit and address circuitry for MPEG encoded data
US5493689A (en) * 1993-03-01 1996-02-20 International Business Machines Corporation System for configuring an event driven interface including control blocks defining good loop locations in a memory which represent detection of a characteristic pattern
US5446916A (en) * 1993-03-26 1995-08-29 Gi Corporation Variable length codeword packer
US5829007A (en) * 1993-06-24 1998-10-27 Discovision Associates Technique for implementing a swing buffer in a memory array
KR950010425B1 (ko) * 1993-09-11 1995-09-16 국방과학연구소 코드분류에 의한 병렬처리 가변장 부호 복호기
US5488366A (en) * 1993-10-12 1996-01-30 Industrial Technology Research Institute Segmented variable length decoding apparatus for sequentially decoding single code-word within a fixed number of decoding cycles
JP2902284B2 (ja) * 1993-11-12 1999-06-07 ケイディディ株式会社 動画像の符号化装置
KR0155784B1 (ko) * 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
DE69524269T2 (de) * 1994-01-28 2002-07-18 Matsushita Electric Ind Co Ltd Vorrichtung und Verfahren zur Dekodierung von Kodes variabler Länge
KR0152032B1 (ko) * 1994-05-06 1998-10-15 김광호 영상신호를 위한 가변장복호기
JP2604546B2 (ja) * 1994-05-19 1997-04-30 日本電気アイシーマイコンシステム株式会社 可変長符号の復号化処理装置
US5502493A (en) * 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
FR2722041B1 (fr) * 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
KR0134299B1 (ko) * 1994-07-11 1998-04-29 김광호 가변장디코딩장치의 동기 복원방법 및 장치
US5719961A (en) * 1994-07-22 1998-02-17 Apple Computer, Inc. Adaptive technique for encoder and decoder signal transformation
US5566089A (en) * 1994-10-26 1996-10-15 General Instrument Corporation Of Delaware Syntax parser for a video decompression processor
NL1001171C2 (nl) * 1995-09-11 1997-03-13 United Microelectronics Corp Een codetabelreductie-inrichting voor variabele lengtedecoder.
US5767799A (en) * 1995-12-05 1998-06-16 Mitsubishi Semiconductor America, Inc. Low power high speed MPEG video variable length decoder
US5657016A (en) * 1995-12-28 1997-08-12 Philips Electronics North America Corporation Variable length decoder with one of N length indicator
KR100192269B1 (ko) * 1996-03-25 1999-06-15 구자홍 가변길이 코드 디코더
US6215821B1 (en) * 1996-08-07 2001-04-10 Lucent Technologies, Inc. Communication system using an intersource coding technique
US6011498A (en) * 1996-12-20 2000-01-04 Philips Electronics North America Corporation Dual-speed variable length decoding architecture for MPEG-2 video data
AUPO648397A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6246396B1 (en) 1997-04-30 2001-06-12 Canon Kabushiki Kaisha Cached color conversion method and apparatus
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
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
US6289138B1 (en) 1997-04-30 2001-09-11 Canon Kabushiki Kaisha General image processor
US6674536B2 (en) 1997-04-30 2004-01-06 Canon Kabushiki Kaisha Multi-instruction stream processor
CN1252907A (zh) * 1997-12-30 2000-05-10 皇家菲利浦电子有限公司 可变与行程编码数据的接收
WO1999044368A1 (en) 1998-02-27 1999-09-02 Kanebo Limited Image data processing device and processing method
US6298087B1 (en) 1998-08-31 2001-10-02 Sony Corporation System and method for decoding a variable length code digital signal
US6215424B1 (en) * 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
KR100565571B1 (ko) * 1999-02-10 2006-03-29 엘지전자 주식회사 디지털 티브이의 캡션 정보 처리 장치
KR20010058369A (ko) * 1999-12-27 2001-07-05 구자홍 코드길이에 따른 허프만 코드 복호장치 및 방법
US7110466B1 (en) * 2000-06-05 2006-09-19 Lucent Technologies Inc. Variable rate message coding
US6731686B1 (en) * 2000-05-31 2004-05-04 Sun Microsystems, Inc. Apparatus and method for pipelining variable length decode and inverse quantization operations in a hybrid motion-compensated and transform coded video decoder
CN1301014C (zh) * 2001-11-22 2007-02-14 松下电器产业株式会社 可变长度编码方法以及可变长度解码方法
US6933865B1 (en) * 2004-01-29 2005-08-23 Seagate Technology Llc Method and apparatus for coded symbol stuffing in recording systems
US7415161B2 (en) * 2004-03-25 2008-08-19 Faraday Technology Corp. Method and related processing circuits for reducing memory accessing while performing de/compressing of multimedia files
US8620644B2 (en) * 2005-10-26 2013-12-31 Qualcomm Incorporated Encoder-assisted frame loss concealment techniques for audio coding
FR2895602B1 (fr) * 2005-12-22 2008-03-07 Assistance Tech Et Etude De Ma Dispositif et procede d'encodage de type cabac
US20070202843A1 (en) * 2006-02-15 2007-08-30 Samsung Elctronics Co., Ltd. Method and system for data partitioning and encoding for transmission of uncompressed video over wireless communication channels
US8665967B2 (en) * 2006-02-15 2014-03-04 Samsung Electronics Co., Ltd. Method and system for bit reorganization and packetization of uncompressed video for transmission over wireless communication channels
US20070230461A1 (en) * 2006-03-29 2007-10-04 Samsung Electronics Co., Ltd. Method and system for video data packetization for transmission over wireless channels
US7840726B2 (en) * 2006-04-12 2010-11-23 Dell Products L.P. System and method for identifying and transferring serial data to a programmable logic device
US8175041B2 (en) * 2006-12-14 2012-05-08 Samsung Electronics Co., Ltd. System and method for wireless communication of audiovisual data having data size adaptation
US8176524B2 (en) * 2008-04-22 2012-05-08 Samsung Electronics Co., Ltd. System and method for wireless communication of video data having partial data compression
US8724913B2 (en) 2012-07-19 2014-05-13 Omnivision Technologies, Inc. Decoder and method for decoding run-length-encoded data
GB2507603B (en) * 2013-03-01 2014-10-01 Gurulogic Microsystems Oy Data encoder, data decoder and method
US20160044339A1 (en) * 2014-08-07 2016-02-11 Qualcomm Incorporated System and method for reordering of prefixes and suffixes in variable length coding to increase throughput
US10997112B2 (en) * 2019-10-02 2021-05-04 International Business Machines Corporation Link interface
US11734105B2 (en) 2020-07-06 2023-08-22 International Business Machines Corporation Efficient error reporting in a link interface

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701111A (en) * 1971-02-08 1972-10-24 Ibm Method of and apparatus for decoding variable-length codes having length-indicating prefixes
US3883847A (en) * 1974-03-28 1975-05-13 Bell Telephone Labor Inc Uniform decoding of minimum-redundancy codes
US4725815A (en) * 1984-01-16 1988-02-16 International Business Machines Corporation Method for encoding and decoding a digital image
JPH03145223A (ja) * 1989-10-30 1991-06-20 Toshiba Corp 可変長符号復調装置
EP0442548B1 (de) * 1990-01-30 1995-08-02 Laboratoires D'electronique Philips S.A.S. Vorrichtungen zur variablen Längen-Kodierung und Dekodierung von digitalen Daten
JPH0437316A (ja) * 1990-06-01 1992-02-07 Matsushita Electric Works Ltd 可変長符号復号化装置
JPH04107013A (ja) * 1990-08-28 1992-04-08 Ricoh Co Ltd 可変長符号の符号化回路

Also Published As

Publication number Publication date
EP0562419A3 (en) 1994-06-22
JPH06104768A (ja) 1994-04-15
JP2511788B2 (ja) 1996-07-03
CA2091815C (en) 2000-05-23
DE69333714D1 (de) 2005-01-05
CA2091815A1 (en) 1993-09-27
AU3403393A (en) 1993-09-30
KR100188427B1 (ko) 1999-06-01
US5233348A (en) 1993-08-03
EP0562419B1 (de) 2004-12-01
EP0562419A2 (de) 1993-09-29
KR930020997A (ko) 1993-10-20
AU654929B2 (en) 1994-11-24

Similar Documents

Publication Publication Date Title
DE69333714T2 (de) Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen
DE69434369T2 (de) Adaptives variables Längendekodierungsverfahren für Videodaten
DE19702048C2 (de) Skalierbarer Videocodierer gemäß MPEG2-Standard
DE69626483T2 (de) Speicherverwaltung in einem Videodekodierer
EP1487113B1 (de) Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
DE69631792T2 (de) Apparat und verfahren für die zweidimensionale datenkompression
DE69636150T2 (de) System zur Kodierung von bewegten Bildern, und System zur variablen Längenkodierung
DE69838729T2 (de) Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder
JP2630809B2 (ja) ビデオ画像伝送システム
EP0687111B1 (de) Verfahren zur Codierung/Decodierung eines Datenstroms
US4541012A (en) Video bandwidth reduction system employing interframe block differencing and transform domain coding
DE60125301T2 (de) Videosignaltranskodierung
DE3940682C2 (de) Codiervorrichtung und System, bestehend aus einer Codiervorrichtung und einer Decodiervorrichtung für digitale Bilddaten
US5574449A (en) Signal processing with hybrid variable-length and entropy encodidng
DE3908890A1 (de) Bildinformationssignal-uebertragungseinrichtung
DE69735835T2 (de) Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt
DE69816971T2 (de) Videokodierer mit skalierungsabhängiger vlc (variable length code) kodierung
DE10204617B4 (de) Verfahren und Vorrichtungen zur Kompression und Dekompression eines Videodatenstroms
DE69616746T2 (de) Speicherbedarfverringerung in einem SQTV-Prozessor durch ADPCM-Kompression
DE4330040C2 (de) Aufnahme- und/oder Wiedergabevorrichtung zum Aufnehmen und/oder Wiedergeben von Bilddaten, die gemäß unterschiedlicher Komprimierverfahren komprimiert sind
US4875095A (en) Noise-shaping predictive coding system
EP0836785B1 (de) Verfahren zur dekodierung und kodierung eines komprimierten videodatenstroms mit reduziertem speicherbedarf
KR20020026189A (ko) 고정된 비율 압축을 이용하는 효율적인 비디오 데이터엑세스
EP0336510B1 (de) Prädiktiver Standbildcodierer
DE69723358T2 (de) Adressendekodierer für Videomatrix

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee