[go: up one dir, main page]

DE3750017T2 - Prozessor für orthogonale Transformation. - Google Patents

Prozessor für orthogonale Transformation.

Info

Publication number
DE3750017T2
DE3750017T2 DE3750017T DE3750017T DE3750017T2 DE 3750017 T2 DE3750017 T2 DE 3750017T2 DE 3750017 T DE3750017 T DE 3750017T DE 3750017 T DE3750017 T DE 3750017T DE 3750017 T2 DE3750017 T2 DE 3750017T2
Authority
DE
Germany
Prior art keywords
signals
rotator
processor
output
responsive
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
DE3750017T
Other languages
English (en)
Other versions
DE3750017D1 (de
Inventor
Adrianus Ligtenberg
Jay Henry O'neill
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.)
AT&T Corp
Original Assignee
American Telephone and Telegraph Co Inc
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 American Telephone and Telegraph Co Inc filed Critical American Telephone and Telegraph Co Inc
Application granted granted Critical
Publication of DE3750017D1 publication Critical patent/DE3750017D1/de
Publication of DE3750017T2 publication Critical patent/DE3750017T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Description

  • Die vorliegende Erfindung betrifft einen Prozessor für orthogonale Transformationen.
  • In der Vergangenheit wurden Spezialrechner in beträchtlichem Umfange für rechenintensive Algorithmen verwendet, wenn effektive Lösungen von Echtzeit- Informationsverarbeitungsproblemen benötigt wurden. Nachdem Mehrzweckcomputer billiger wurden und sich ihre Geschwindigkeit erhöhte, nahm der Bedarf nach speziell entwickelten Computern ab, aber es sind natürlich immer größere Probleme in Angriff zu nehmen. Kundenintegrierte Prozessoren, verwendet als periphere Coprozessoren, können dieselben Erfordernisse erfüllen. Wenn sie geeignet entworfen und verwendet werden, steigern sie drastisch die Leistungsfähigkeit von Mehrzweckcomputersystemen für einen großen Bereich von rechenintensiven Programmen.
  • Beispiele für kundenspezifische Echtzeit- Informationsverarbeitungschips beinhalten verschiedene Ausführungsformen zur Durchführung der direkten und inversen diskreten Kosinus-Transformation (DCT) mit Anwendungen bei der Bildcodierung. Solch ein Chip wird beispielsweise von M. Vetterli und A. Ligtenberg in "A Discrete Fourier-Cosine Transform Chip", IEEE Journal on Selected Areas in Communications, Band SAC-4, Nr. 1, Januar 1986, Seiten 49-61 beschrieben.
  • Die DCT, die eine orthogonale Transformation darstellt, ist nützlich zur Bildcodierung, da Bilder ein beträchtliches Ausmaß an Redundanz aufweisen und es daher sinnvoll ist, Bilder in Blocks zu verarbeiten. Eine zweidimensionale DCT- Transformation solcher Blocks liefert normalerweise hauptsächlich niederfrequente Komponenten, so daß das Nichtbeachten der hochfrequenten Komponenten (geringer Größe) die Qualität des codierten Bildes nur wenig beeinträchtigt. Obwohl die Verwendung der DCT zur Bildcodierung potentielle übertragungs- und Speichervorteile aufweist, ist der Rechenaufwand sehr groß. Das Arbeiten bei Videoabtastraten erfordert eine Verarbeitungsgeschwindigkeit von etwa 6,4 Millionen Abtastwerte pro Sekunde (unter der Annahme von 15.734 Abtastzeilen pro Sekunde und etwa 400 Abtastwerte pro Zeile, wie sie für die NTSC-Norm benötigt werden). Eine Achtpunkt-DCT erfordert zumindest 13 Multiplikationen und 29 Additionen. Eine zweidimensionale Transformation kann durch Anwendung einer eindimensionalen Transformation auf die Zeilen, der sich eine eindimensionale Transformation der Spalten anschließt, durchgeführt werden. Folglicherweise wird zur Echtzeit-Bildverarbeitung ein integrierter DCT-Schaltkreis benötigt zur Durchführung von 1,6 Millionen Achtpunkt- Transformationen pro Sekunde, was etwa 20 Millionen Multiplikationen und 47 Millionen Additionen beinhaltet.
  • Eine andere Anwendungsmöglichkeit für kundenspezifische Prozessoren für orthogonale Echtzeit-Signaltransformationen liegt bei Systemen zur Lösung von Problemen entsprechend der Methode der kleinsten Quadrate. Solche Probleme sind bei der Signalverarbeitung und der linearen Programmierung vorherrschend. Beispielsweise besteht der bei weitem rechenintensivste Aspekt eines linearen Programmierungsproblems unter Verwendung von Karmarkars Algorithmus in der Lösung eines Problems entsprechend der Methode der kleinsten Quadrate bei jeder Iteration. Dieses Problem kann mit einem Coprozessor gelöst werden, der aus einem Feld von Prozessoren für orthogonale Transformationen besteht (jeder bestehend aus vier Multiplizierern, einem Addierer und einem Subtrahierer) und die Verwendung solch eines Coprozessors würde die Bearbeitungszeit für Karmarkars Softwarerealisation um eine Größenordnung verringern.
  • Um die hohe Effizienz zu erreichen, die - wie in Zusammenhang mit der DCT-Bildcodierung dargestellt - bei manchen Anwendungen erforderlich ist, sind zwei Fragen zu beantworten. Zum einen die nach den grundlegenden Bausteinen, die mit diesen Operationen verknüpft sind und zum anderen die nach den effizienten VLSI-Strukturen für diese Bausteine. Die Antworten auf diese zwei Fragen sind stark miteinander verknüpft, da sich ohne gute Aufteilung des Algorithmus keine effiziente VLSI-Implementierung erreichen läßt und da sich keine optimale Aufteilung des Algorithmus erreichen läßt, ohne zu wissen, wie eine effiziente VLSI-Struktur implementiert werden kann.
  • Diese Schwierigkeiten sind in dem am 9. April 1986 erteilten amerikanischen Patent 4,510,578 von Miyaguchi et al dargestellt, in dem eine Schaltung beschrieben ist, bei der ein Eingangssignal einer orthogonalen Transformation unterworfen wird. Die Schaltung umfaßt eine erste Stufe von drei Speichern, die parallel betrieben werden und acht Multiplizierer für konstante Koeffizienten speist. Die Ausgangssignale der Multiplizierer werden an drei Addierer angelegt, von denen zwei Volladdierer sind. Die drei Ausgänge der ersten Stufe werden an drei Sekundärstufen aus komplexen Multiplizierern angelegt, wobei jede der drei Stufen komplexer Multiplizierer zwei Speicher, vier Multiplizierer und zwei Addierer umfaßt. Bei dem Schaltkreis von Miyaguchi et al werden keine Anstrengungen unternommen, eine Architektur zu verwenden, die besonders schnell ist. Die Betonung scheint vielmehr darauf zu liegen, herkömmliche Module (Addierer, Multiplizierer) in einer Zusammenstellung zu verwenden, die die gewünschte Transformation in einer möglichst direkten Art und Weise durchführt.
  • Die Überlegungen, die bei der Verwirklichung eines möglichst guten integrierten Schaltkreises zu berücksichtigen sind, betreffen im Gegensatz hierzu nicht nur die Anzahl der benötigten Multiplizierer und Addierer sondern auch die Größe dieser Elemente und die durch sie hervorgerufenen Verzögerungen. Bei einigen Ausführungsformen wird beispielsweise die Verzögerung dadurch sehr stark erhöht, daß zuerst addiert und dann multipliziert wird und nicht zuerst multipliziert und dann addiert wird.
  • Die GB-A-2141847 beschreibt eine Anordnung zur Matrizen- Muliplikation von Bilddaten (mit den drei Dimensionen x, y und z), bei der eine Rotationstransformation und eine Translationstransformation von Koordinatendaten L ausgeführt werden. In der Beschreibung wird eine Rotationstransformationsmatrix R und eine Translationstransformationsmatrix T beschrieben. Die Berechnung wird so durchgeführt, daß zuerst die Matrix P mit der Matrix R multipliziert wird, um eine Transformationsmatrix W zu erhalten und dann alle Zeilensegmente mit der Transformationsmatrix W zu multiplizieren. Die Multiplikationen werden für alle Datenkomponenten zur gleichen Zeit durchgeführt (innerhalb der Periode, die für die verschiedenen seriellen Multiplikationen aufgewendet wird).
  • Entsprechend einem Aspekt der vorliegenden Erfindung wird ein Prozessor für orthogonale Transformationen gemäß Anspruch 1 zur Verfügung gestellt.
  • Entsprechend einem anderen Aspekt der vorliegenden Erfindung wird ein Prozessor für orthogonale Transformationen gemäß Anspruch 11 zur Verfügung gestellt.
  • Eine Ausführungsform der Erfindung stellt eine Prozessorschaltung für orthogonale Transformationen zur Verfügung, die besonders gut zur Verwirklichung in integrierten Schaltkreisen geeignet ist.
  • Eine andere Ausführungsform der Erfindung stellt einen Prozessor für orthogonale Transformationen zur Verfügung, dessen Architektur die maximale Ausnutzung der Geschwindigkeitsmöglichkeiten von integrierten Schaltkreisen ermöglicht.
  • Bei einer Ausführungsform, die eine Rotatorschaltung, einen Kommunikationsschaltung und eine interne oder externe Suchtabelle umfaßt, führt die Rotatorschaltung die für einen Rotator erforderlichen komplexen Multiplikationen durch, wobei die benötigten Koeffizienten von der Suchtabelle zur Verfügung gestellt werden, während die Kommunikationsschaltung mit der Aufgabe beschäftigt ist, die Eingangssignale aufzunehmen, den Rotator mit den für jede Iteration benötigten Signalen zu versorgen und die sich ergebenden Ausgangssignale zu liefern. Der Rotator wird durch eine Matrix von räumlich benachbarten, miteinander verbundenen Multiplizierern und Addierermodulen verwirklicht, wobei jedes Modul einen Bereich jeder der in dem Rotator benötigten Multiplizierer (oder Addierer, je nachdem) umfaßt. Die Suchtabelle ist ein zählerloser Festwertspeicher und die Kommunikationsschaltung besteht aus einer miteinander verbundene Gruppe von Dualeingang-/Dualausgangregistern.
  • Die Figuren zeigen:
  • Fig. 1 ein verallgemeinertes Blockschaltbild einer Ausführungsform des erfindungsgemäßen Prozessors für orthogonale Transformationen,
  • Fig. 2 eine Ausführungsform eines Rotators 300,
  • Fig. 3 ein Blockschaltbild eines typischen Elementes 320 des in Fig. 2 dargestellten Rotators,
  • Fig. 4 den Signalfluß und die für die Implementierung einer diskreten Kosinustransformation mit dem in Fig. 1 dargestellten System benötigte Reihenfolge von Rotationen,
  • Fig. 5 die allgemeine Struktur des Speichers der in Fig. 1 dargestellten Kommunikationsschaltung 100,
  • Fig. 6 eine andere Möglichkeit des Signalflusses und der für die Durchführung der diskreten Kosinustransformation mit dem in Fig. 1 dargestellten System benötigten Reihenfolge von Rotationen,
  • Fig. 7 ein umfassenderes Blockschaltbild der in Fig. 1 dargestellten Kommunikationsschaltung,
  • Fig. 8 die Art und Weise, mit der Information zwischen den in
  • Fig. 5 dargestellten Speicherelementen übertragen wird,
  • Fig. 9 eine Realisierungsmöglichkeit für die Normierungsblocks gemäß Fig. 7,
  • Fig. 10 die Struktur einer schnellen zählerlosen Suchtabelle,
  • Fig. 11 eine vergrößerte Struktur für die Suchtabelle gemäß Fig. 1, enthaltend zwei Speicherelemente 56,
  • Fig. 12 ein Blockschaltbild zur Implementierung einer zweidimensionalen orthogonalen Transformation,
  • Fig. 13 eine Ausführungsform des in Fig. 12 dargestellten Transponierungsspeichers 502 und
  • Fig. 14 eine Struktur der Speicherzellen 503 des in Fig. 13 dargestellten Transponierungsspeichers.
  • Fig. 1 zeigt das allgemeine Blockschaltbild eines erfindungsgemäßen Prozessors für orthogonale Transformationen. Darin werden Eingangssignale über Leitung 10 an die Kommunikationsschaltung 100 angelegt und Ausgangssignale werden über Leitung 20 durch die Kommunikationsschaltung 100 übergeben. Der Schaltkreis 100 spricht auf ein "Bereit"- Steuersignal von Leitung 40 und auf von der Suchtabelle 200 gelieferte Steuersignale an. Die Kommunikationsschaltung 100 wirkt mit dem Rotator 300 über die Leitung 30 zusammen, die Signale von und zu dem Rotator befördern. Die Suchtabelle 200 spricht auf das gleiche "Bereit"-Steuersignal an und wahlweise auf ein "inverses" Steuersignal. Zusätzlich zu der Lieferung von Steuersignalen an die Kommunikationsschaltung 100 liefert die Suchtabelle 200 auch Koeffizientensignale an den Rotator 300. Die Funktion und die Betriebsweise jedes der in Fig. 1 dargestellten Elemente wird im folgenden ausführlicher beschrieben.
  • Der kleinste gemeinsame Nenner von Rechengrundelementen für die orthogonale Transformation ist eine komplexe Multiplikation (oder Rotation). Die Gleichungen, die den Rotator beschreiben sind:
  • wobei xi und yi die Ein- bzw. Ausgabewerte und c&sub1; und c&sub2; die Koeffizienten, wie z. B. cosR und sinR sind. Die direkte Realisierung von Gleichung (1) erfordert vier Multiplikationen und zwei Additionen. Durch Manipulation von Gleichung (1) erhält man die Beziehung:
  • mit A=c&sub1;-c&sub2;, B=c&sub2; und C=c&sub1;+c&sub2;.
  • Diese Version erfordert drei Multiplikationen und drei Additionen und erscheint auf den ersten Blick eine kompaktere Realisierung zu ermöglichen. Bei einem sorgfältigen Vergleich der VLSI-Eignung der beiden Schemata unter Verwendung paralleler Multiplizierer zeigt sich jedoch, daß Gleichung (1) alles in allem gesehen zu einer bevorzugten Realisierung führt. Erstens ist der totale Zeitaufwand für die Realisierung von Gleichung (2) größer als für die Realisierung von Gleichung (1) wegen der Addition (x&sub1;+x&sub2;), die vor der Multiplikation Vorrang hat. Zweitens werden nur zwei Koeffizienten für die Realisierung von Gleichung (1) benötigt im Vergleich zu drei Koeffizienten für die Realisierung von Gleichung (2) und drittens verbraucht die Realisierung von Gleichung (1) weniger Siliciumfläche, da sie einer regelmäßigeren Kommunikationsstruktur zwischen den verschiedenen Elementen, die den Rotator bilden, zugänglich ist.
  • Die Realisierung der Rotatorbeziehungen von Gleichung (1) in der Rotatorschaltung 300 erfolgt gemäß einem Multiplikationsalgorithmus, der dem von Baugh-Wooley vorgeschlagenen ähnlich ist und, wie unten ausgeführt, die Umordnung und Vereinigung unterschiedlicher Glieder in dem Multiplikationsprozeß beinhaltet.
  • Es ist bekannt, daß eine negative Zahl mit n-1 Magnitude-Bits, dargestellt in 2-Komplementform, als die Differenz
  • dargestellt werden kann. Mit solch einer Darstellung läßt sich ein Multiplikationsprodukt als
  • ausdrücken, woraus sich durch Ausmultiplizieren folgende Beziehung ergibt:
  • Das folgende Feld zeigt die partiellen Produktglieder, die für die Terme, aus denen Gleichung (5) besteht (für N=3) benötigt werden. Die ersten drei Zeilen entsprechen dem ersten Term, die vierte Zeile entspricht dem zweiten Term, die fünfte und sechste Zeile entsprechen dem dritten Term, dargestellt in 2- Komplementform und die siebte und achte Zeile entsprechen dem letzten Term von Gleichung 5.
  • Durch Umschreiben ergibt sich das im folgenden dargestellte Feld partieller Produktterme.
  • Aus dem obigen ergibt sich, daß das gewünschte Produkt durch Summation von nur zwei Bit Produkttermen erhalten werden kann, wobei die benötigten Grundelemente UND-Glieder und NAND- Glieder in Kombination mit Volladdierern und Halbaddierern sind, bei denen der Carry-in bei einigen auf "1" und bei den meisten auf "0" gesetzt ist. Ausführlicher dargestellt ergibt sich bei einer Untersuchung des oben angeführten zweiten Multiplikationsfeldes, daß die erste Zeile lediglich drei UND- Glieder (x&sub0;c&sub0;, x&sub0;c&sub1;, x&sub0;c&sub2;) und ein NAND-Glied ( ) erfordert. Die zweite Zeile erfordert drei UND-Glieder und Halbaddierer mit einem"0"-Carry-in (x&sub1;c&sub0;, x&sub1;c&sub1;, x&sub1;c&sub2;) und ein NAND-Glied und einen Halbaddierer mit einem "1"-Carry-in ( ). Die nächste Zeile erfordert drei UND-Glieder und Volladdierer (x&sub2;C&sub0;, x&sub2;c&sub1;, x&sub2;c&sub2;) und ein NAND-Glied und einen Volladdierer ( ). Die letzte Zeile erfordert drei NAND- Glieder und Volladdierer ( ) und ein UND-Glied und einen Volladdierer (x&sub3;c&sub3;). Dieses Schema an Gliedern und Addierern läßt sich in gewohnter Art und Weise sehr einfach auf Fälle erweitern, bei denen der Multiplikator und der Multiplikand mehr als vier Bits aufweisen.
  • Fig. 2 illustriert eine Rotatorstruktur, die einen Multiplikationsbereich 310 und einen Additions- und einen Subtraktionsbereich 330 aufweist. Ein wichtiger Aspekt des in Fig. 2 dargestellten Rotators besteht darin, daß alle Elemente in einer verschachtelten Art und Weise konstruiert sind, was bedeutet, daß korrespondierende Funktionen jedes der im Bereich 310 realisierten vier Multiplizierers als eine Einheit und in großer physischer Nähe zueinander geschaffen sind. Diese Verschachtelung liefert eine Reihe von Vorteilen. Ein Vorteil besteht darin, daß alle Signalleitungen (einschließlich der Eingangsleitungen) kurz sind, wodurch die Geschwindigkeitsmöglichkeiten verbessert werden. Ein zweiter Vorteil besteht darin, daß alle korrespondierenden Leitungen im wesentlichen dieselbe Länge aufweisen, wodurch Asymmetrien (skew) minimiert und - daraus folgend - die Geschwindigkeitsmöglichkeiten verbessert werden. Ein dritter Vorteil besteht darin, daß die Struktur vollständig regelmäßig ist, was eine effiziente Verwendung der Siliciumfläche ermöglicht.
  • In Fig. 2 umfaßt der Multiplikationsbereich 310 eine Vielzahl von Vierergruppen-Multipliziererblocks (Quad Multiplier (QM) Blocks) 320. Jeder Block 320 hat zwei Signaleingänge und zwei Koeffizienteneingänge wie auch Summen- und Übertragseingänge zum Weiterleiten von Informationen von anderen Blocks 320. Die Blocks 320 sind so entworfen, daß sie eine zweidimensionale rechteckige Matrix bilden, wobei die Elemente 320 in jeder "Zeile" und jeder "Spalte" mit zwei Elementen in einer "Zeile" höherer Nummer verbunden sind: Mit einem Element in derselben "Spalte" und mit einem Element in einer "Spalte" höherer Nummer. Das heißt, daß ein Element 320 aus einer "Zeile" i und einer "Spalte" j (QM)i,j mit (QM)i+1,j und (QM)i+1,j+1 verbunden ist.
  • In Übereinstimmung mit dem oben Gesagten ist die Struktur des Bereiches 310 im wesentlichen rechteckig und entspricht - wie im folgenden dargestellt - einer geshifteten Version des Multiplikationsfeldes.
  • Wie von der obigen Zerlegung des Multiplikationsprozesses zu sehen ist, sind die Blocks 320 nicht in jeder Hinsicht identisch. Sie sind in dem Sinne identisch, daß sie alle zu dem Produkt beitragen durch Bearbeiten von drei Eingangsbits (zwei Bits in gewisser gegengekoppelter Position) und durch Erzeugen von Summen- und Übertragsausgangsbits. Sie unterscheiden sich dadurch, daß einige UND-Glieder erfordern, während andere NAND-Glieder erfordern. Zudem erfordern einige Volladdierer, während andere Halbaddierer erfordern, wie oben beschrieben. Obwohl bei einigen Anwendungen keines der NAND- Glieder getaktet oder registriert ist (d. h. keine Pipelineverarbeitung), werden bei anderen Anwendungen außerdem einige oder alle der Blocks registriert, um vorzusorgen, welcher Umfang an Pipelineverarbeitung auch immer wünschenswert erscheint.
  • Fig. 3 zeigt ein QM-Element, das einen Volladdierer und ein Register umfaßt. Dies ist die allgemeine Ausführungsform, da ein QM-Element, das einen Halbaddierer und kein Register umfaßt, im wesentlichen eine abgemagerte Version des in Fig. 3 dargestellten QM-Elementes darstellt. In Fig. 3 ist das Element 400 ein QM-Element 320 in einer speziellen Spalte am Zeilenende innerhalb des Bereiches 310. Das Element 390 ist ein QM-Element in einer Zeile oberhalb des Elementes 400 und in derselben Spalte, das Element 380 ist ein QM-Element in einer Zeile oberhalb des Elementes 400 und in einer Spalte, die von geringerer arithmetischer Bedeutung (um ein Bit) ist, als diejenige von Element 400 und Element 410 ist ein QM- Element in einer Zeile unterhalb des Elementes 400.
  • Innerhalb des Elementes 400 sind Volladdierer 401-404, die auf die Multiplikatorenbits ci und cj sowie auf Multiplikandenbits (z. B. den dritten Bit) der Multiplikandenwörter xm und xn ansprechen, zum Aufsummieren von Bits von dem QM-Element 380 und zum Übertragen von Bits von dem QM-Element 390. Insbesondere spricht der Addierer 401 auf eine Summen- und Übertragseingabe von den Elementen 380 und 390 an und auf eine ausgewählte logische Kombination von ci und xm. Der Addierer 402 spricht auf eine Summen- und eine Übertragseingabe von den Elementen 380 und 390 an und auf dieselbe logische Kombination von cj und xm. Der Addierer 403 spricht auf eine Summen- und eine Übertragseingabe von den Elementen 380 und 390 an und auf dieselbe logische Kombination von ci und xm und schließlich spricht der Addierer 404 auf eine Summen- und eine Übertragseingabe von den Elementen 380 und 390 an und auf dieselbe logische Kombination von cj und xn. Jeder der Addierer (401-404) erzeugt ein Signalpaar, umfassend ein Summenausgangssignal und ein Übertragsausgangssignal. Jedes dieser Signalpaare wird in der in Fig. 3 dargestellten Ausführungsform an ein Register angelegt, welches ebenfalls auf ein Taktsignal C anspricht. Die getakteten Ausgangssignale dieser Register (409-413) bilden die Ausgangssignale des QM- Elementes 400. Die Übertragssignale werden an das QM-Element 410 angelegt, während die Summensignale an das signifikanteste nächste QM-Element in der Zeile des Elementes 410 angelegt werden. Die oben erwähnte logischen Kombinationen von ci und cj mit xm und xn, die durch die Elemente 405 bis 408 ausgeführt werden, sind entweder UND-Glieder oder NAND- Glieder, abhängig von der speziellen Zeile und Spalte, die das Element 390 belegt.
  • Der Bereich 330 in Fig. 2 umfaßt das Addierer- und Subtrahierernetz, das zur Komplettierung der Rotatorfunktion benötigt wird. Jedes QM-Element in der untersten (letzten) Zeile und in der am wenigsten signifikanten (äußersten rechten) Spalte des Feldes 320 liefert vier Summenbits und diese Bits müssen geeignet addiert und subtrahiert werden. Jedes Addition-/Subtraktionselement 340 innerhalb des Bereiches 330 umfaßt daher einen Zweibit-Addierer und einen Zweibit-Subtrahierer. In Übereinstimmung mit herkömmlichen Entwurfstechniken wird der Subtrahierer implementiert durch einfaches Invertieren des zu subtrahierenden Eingabewertes und durch Addition einer "1" in der Carry-in-Position des ersten Addierers in dem Feld. Mit anderen Worten ausgedrückt, kann der Bereich 330 einfach zwei Schnellübertrags-Addierer (Ripple-Through-Adders) umfassen.
  • Die Kommunikationsschaltung in Fig. 1 sorgt für den Transfer von Daten von und zu dem Rotator. Dieser Transfer ist spezifisch für den implementierten Algorithmus, aber die unten beschriebene Hardwarerealisation ist grundlegend. Es kann gezeigt werden, daß eine orthogonale Transformation (Matrix Q) in Übereinstimmung mit:
  • als eine Folge von ebenen Rotationen (Matrix Tij) implementiert werden kann.
  • Dieses Prinzip wird in dem vorliegenden Transformationsprozessor verwendet, wie im folgenden in Verbindung mit der Darstellung einer diskreten Kosinus- Transformation (DCT) illustriert wird.
  • Eine Achtpunkt-DCT-Transformation kann durch die Matrix
  • ausgedrückt werden. Durch Umordnen von Spalten und Betrachten von ausgewählten transformierten Ausgangssignalen als Signalpaare kann die obige Matrix zerlegt und in vier Gruppierungen strukturiert werden, wobei jede Gruppierung vier Terme der durch Gleichung (1) spezifizierten Form umfaßt.
  • Eine Hardwarerealisation einer solchen Formulierung kann mit einer Rotatorschaltung der oben beschriebenen Form erreicht werden und mit einer Kommunikationsschaltung, die ausreichend Speicherplatz zum Speichern der Eingangssignale (xi) und der entstehenden Zwischenresultate aufweist. Eine effizientere Realisation ergibt sich jedoch unter Verwendung eines "schnellen DCT"-Algorithmus.
  • Fig. 4 zeigt den Signalfluß für einen "schnellen DCT"- Algorithmus, wobei jeder der Kreise in Fig. 4 (z. B. Kreis 17) eine Am-Ort-Rotation repräsentiert. Der Ausdruck "Am-Ort- Rotation" bedeutet, daß die Rotationsoperation durch eine Kommunikationsschaltung ausgeführt wird, die beim Eingeben zweier Eingangssignale von speziellen Speicherpositionen in den Rotator die Ergebnisse (von dem Rotator) in dieselben Speicherpositionen zurückleitet. Erforderlich ist es dann noch, die Reihenfolge der Signale zu und von der Kommunikationsschaltung 100 geeignet zu steuern zum Erzielen der Endresultate, die in Fig. 4 spezifiziert und in der folgenden Tabelle I zusammengefaßt sind. Tabelle 1
  • Zusätzlich zu der Aufgabe, der Rotatorschaltung Eingangssignale und Zwischenergebnisse zuzuleiten, muß die Kommunikationsschaltung 100, die zwei Operationsmodi darstellt, auch ankommende neue Daten annehmen. Unter Berücksichtigung dieser zweier Funktionen zeigt Fig. 5 ein Funktionsdiagramm einer Kommunikationsschaltung 100.
  • In Übereinstimmung mit Fig. 5 umfaßt die Schaltkreis 100 einen adressierbaren Speicher 121 und einen nicht adressierbaren Speicher 122. Der Speicher 122 ist hauptsächlich ein serieller Speicher. Das heißt, daß die Eingangsdaten über Leitung 123 in den Speicher 122 geshiftet werden und daß die transformierten Ausgangssignale über Leitung 124 aus dem Speicher 122 geshiftet werden. Dieser Zustand ist unter der Überschrift "normal" auf der linken Seite von Fig. 5 dargestellt. Während die Eingangsdaten in den Speicher 122 geshiftet werden, wirkt der Speicher 121 mit dem Rotator 300 zusammen und führt die Am-Ort-Substitution von Rotator-Eingangssignalen durch Rotatorergebnisse aus. Dies läßt sich einfach erreichen, da der Speicher 121 adressierbar ist und so angeordnet, daß Daten von jeder Speicheradresse an allen Adressen außer an den zwei ausgewählten Adressen zu sich selbst zurückgeführt werden. An den zwei ausgewählten Adressen tritt die zuvor erwähnte Substitution auf, wie durch die Signale X&sub0;, X&sub1;, Y&sub0;, Y&sub1; in Fig. 5 dargestellt. Wenn die in dem Rotator 300 durchgeführte Transformation beendet ist, müssen die in dem Speicher 122 gesammelten Daten als Vorbereitung für die nächste Transformation in dem Speicher 121 untergebracht werden. Gleichzeitig müssen die in dem Speicher 121 gespeicherten Transformationsresultate entfernt werden. Dies wird dadurch erreicht, daß der Inhalt des Speichers 121 mit dem Inhalt des Speichers 122 ausgetauscht wird, wie auf der rechten Seite von Fig. 5 unter der Überschrift "swap" (Austausch) dargestellt ist.
  • Tabelle 2 zeigt die Adressierungsreihenfolge für den Speicher 122 und die für den Rotator 300 verwendeten Koeffizienten. Die Adressen und Koeffizienten von Tabelle 2 entsprechen den Bezeichnungen in Fig. 4. Tabelle 2 Adresse Koeffizienten
  • Die Reihenfolge von Tabelle 2 ist nicht die einzige mögliche Reihenfolge. Fig. 4 offenbart, daß jede Reihenfolge, die sicherstellt, daß gewisse Rotationen keinen Vorrang haben vor gewissen anderen Rotationen, akzeptabel ist. Es sei auch darauf hingewiesen, daß der schnelle DCT-Algorithmus von Fig. 4 nicht der einzig mögliche "schnelle DCT"-Algorithmus ist. Zur Illustration zeigt Fig. 6 einen Algorithmus, der in gewissem Sinne regulärer ist als der in Fig. 4 dargestellte Algorithmus. Die Kreise und Zahlen in Fig. 6 haben dieselbe Bedeutung wie in Fig. 4.
  • Fig. 7 illustriert eine Ausführungsform einer Kommunikationsschaltung 100 zur Implementierung des Funktionsdiagramms von Fig. 5. Die Eingangssignale Y&sub0; und Y&sub1; sind an die Normierungseinheiten 110 und 120 angelegt und die Ausgaben der Normierungseinheiten 110 und 120 dienen zur Adressierung der Multiplexer 111 und 112. Die Multiplexer 111 und 112 sprechen auf die Adreßsignale addr&sub0; und addr&sub1; an. Diese Adreßsignale werden der Kommunikationsschaltung 100 durch die Suchtabelle 200 (Look-up Table) zugeführt und folgen der Reihenfolge, wie sie beispielsweise in Tabelle 2 festgelegt ist. Die Multiplexer 111 und 112 sind herkömmliche Selektoren (one-to-many selectors) in dem Sinne, daß sie Eingangssignale Y&sub0; und Y&sub1; dazu veranlassen, an einem der vielen Ausgänge der Multiplexer 111 bzw. 112 aufzutreten. Die Multiplexer 111 und 112 unterscheiden sich von herkömmlichen Multiplexern dadurch, daß jeder Ausgangsleitung eine Steuerleitung zugeordnet ist, die die Ausgangsleitung, auf der Signale anliegen, identifiziert. Diese Leitung ermöglicht die Rückführung von Signalen von all den Registern, die keine Signale Y empfangen, wie im Zusammenhang mit Fig. 5 diskutiert. Die Ausgänge der Multiplexer 111 und 112 sind mit einem Vielfacheingabe-Vielfachausgabe-Speicherblock 130 verbunden, welcher die Speicher 121 und 122 enthält und eine Vielzahl von Speicherblocks 131 umfaßt. Jeder Speicherblock 131 besitzt zwei Eingänge und zwei Ausgänge, einen "Bereit"- Steuersignaleingang, ein Freigabe-Steuersignal und zwei Register. Die Ausgänge des Multiplexers 111 sind je mit einem Eingang eines anderen Speicherblocks 131 verbunden. Die Ausgänge des Multiplexers 112 sind jeweils parallel zu den Ausgängen des Multiplexers 111 geschaltet. Der andere Eingang jedes Speicherblockes ist mit dem einen Ausgang des vorgeschalteten Speicherblockes 131 verbunden und bildet hierbei die Eingangs- und Ausgangsverbindung mit der seriellen Speicheranordnung 122. Die anderen Ausgänge des Speicherblockes 131 sind an die Adreß-Multiplexer 113 und 114 angelegt, die durch die addr&sub0; und addr&sub1; Steuersignale gesteuert werden. Die Ausgangssignale der Multiplexer 113 und 114 (many-to-one) sind die Signale X&sub0; und X&sub1;, die an dem Rotator 300 anliegen. Die Signale X&sub0; und X&sub1; sind entweder das Eingangssignal x oder Zwischenresultatglieder, wie durch das Signalflußdiagramm in Fig. 4 beschrieben. Wie oben ausgeführt, sind die Signale Y&sub0; und Y&sub1; die Rechenergebnisse des Rotators, die bei Beendigung gleich y&sub0; und y&sub1; sind.
  • Fig. 8 zeigt eine Realisierungsmöglichkeit für die Speicherblöcke 131. Sie umfaßt Register 133 und 134, einen zweipoligen Umschalter 132 und einen einpoligen Umschalter 135. Die Eingangssignale von den Multiplexern 111 und 112 liegen an dem Eingangsanschluß des Schalters 135 an und die Freigabesignale von den Multiplexern 111 und 112 liegen an dem Steueranschluß des Schalters 135 an. Die andere Eingabe an den Schalter 135 erfolgt von der Ausgabe des Registers 133 und ermöglicht hierdurch die Signalrückkopplungsmöglichkeit. Das Ausgangssignal des Schalters 135 liegt an einen Eingang des Schalters 132 an, während der serielle Ausgang des Blocks 131 an dem anderen Eingang des Schalters 132 anliegt ist. Der Schalter 132 wird durch das "Bereit"-Steuersignal gesteuert. Normalerweise ist das "Bereit"-Steuersignal gegeben, so daß der serielle Eingang durch den Schalter 132 an das Register 134 anliegt und der andere Eingang (von Schalter 135) an das Register 133 anliegt. Die Ausgabe des Registers 133 liegt an den Multiplexern 113 und 114 an (zusätzlich dazu, daß sie auch an Schalter 135 anliegt), während das Ausgangssignal des Registers 134 an der seriellen Eingabe des nächsten Blockes 135 anliegt.
  • Die Normierungseinheiten 110 und 120 in Fig. 7 werden benötigt, da die Multiplikationsergebnisse des Rotators 300 eine Bitanzahl aufweist, die gleich der Summe der Bits in dem Multiplikator und dem Multiplikanden (+1) ist. Diese Anzahl muß auf die Anzahl von Bits in dem Multiplikanden reduziert werden, wenn die Ergebnisse nicht mit jeder Iteration wachsen sollen. Dies kann durch einfachen Abbruch erfolgen, es wird jedoch vorgeschlagen, eine Normierungseinheit zu verwenden, die gelegentlich auftretende große Werte abschneidet. Dieses Abschneiden gestattet es, weniger Bits abzubrechen und ermöglicht damit einen geringeren Grad an Abbruchfehlern. Fig. 9 zeigt eine einfache Realisierungsmöglichkeit für die Normierungseinheiten 110 und 120. Das Register 115 übernimmt die Resultate des Rotators 300 und ausgewählte Ausgangsbits des Registers 115 hoher Signifikanz liegen an dem Detektor 116 an. Wenn der Detektor 116 alle Nuller oder Einer (das Vorzeichenbit) empfängt, wird eine ausgewählte Gruppe der nächsten signifikantesten Bits des Registers 115 durch die Gatteranordnung 117 zu den Multiplexern der Fig. 7 geleitet. Ansonsten blockiert der Detektor 117 diese Ausgangsbits und ersetzt sie durch das Vorzeichenbit.
  • Die Struktur der orthogonalen Transformation ist ein iteratives Verfahren, das eine Sequenz von Koeffizienten und "addr"-Adressensteuersignalen in rascher Reihenfolge erfordert. Ein herkömmlicher Festwertspeicher und ein Zähler stellen eine Lösung für diese Funktion dar, aber es ist schwierig, die Geschwindigkeit der Adressendecodierung in einem Standard ROM zu erhöhen und Zähler sind komplizierter als nötig. Ein seriell adressierter Festwertspeicher erfüllt die Anforderungen des Transformationsverfahrens und besitzt die Vorteile eines Schieberegisterintensive-Designs.
  • Bezug nehmend auf Fig. 10 ist der Festwertspeicher in Block 56 konkretisiert, der eine Ansammlung von Signalleitungen 51, 52 und 53 und aktivierbare Verbindungspunkte 54 enthält. Die Signalleitungen sind in Übereinstimmung mit der Reihenfolge 51, 52, 53, 52, 51, 52, . . . , verschachtelt und die Verbindungspunkte 54 verbinden (wenn aktiviert) ausgewählte benachbarte Leitungen. Die Leitungen 51 sind alle mit einer ersten Spannungsquelle Vi verbunden, entsprechend einem logischen Niveau "1" und die Leitungen 54 sind alle mit einer zweiten Spannungsquelle V&sub0; verbunden, entsprechend einem logischen Niveau "0". Die Leitungen 52 bilden den Ausgang des Speichers. Die Verbindungspunkte 54 sind herkömmliche Halbleiterschalter, die über Aktivierungssignale gesteuert werden. Die Verbindungspunkte sind in Gruppen angeordnet, wobei jede Gruppe aus einem Verbindungspunkt, der jeder Leitung 52 zugeordnet ist, besteht und wobei alle Verbindungspunkte durch ein einfaches Steuersignal gesteuert werden. Die Steuersignale für die unterschiedlichen Gruppen werden von dem Register 55 erhalten, in das mit jedem "Bereit"-Signal, das an die Suchtabelle 200 angelegt ist, ein Puls zwischengeschaltet wird. Wenn der "Bereit"-Puls durch das Register 55 geshiftet wird, wird auf sukzessive Wörter des Speichers zugegriffen.
  • Die Suchtabelle 200 in Fig. 1 zeigt auch ein an die Tabelle angelegtes "inverses" Steuersignal. Dieses Signal sorgt für die Durchführung der inversen Transformation. Die inverse Transformation läßt sich, wie in Fig. 11 dargestellt, durch eine zweite, in das Element 200 integrierte Suchtabelle realisieren. Alles was benötigt wird ist die Verwendung zweier Blocks 56, die durch ein Register 55 gesteuert werden und eines Multiplexers 57, der (gesteuert durch das "inverse" Steuersignal) einen der Speicher der beiden Blocks 56 auswählt. Diese zweite Suchtabelle gestattet die Bestimmung einer anderen Sequenz von Adreßkoeffizienten.
  • Ein Kandidat für den internationalen Videocodierer- Transformationsstandard niederer Bitrate ist eine zweidimensionale DCT von 8 · 8 Pixelblocks. Diese läßt sich in eine eindimensionale Achtpunkt-Transformation von jeder Reihe von 8 Pixeln, gefolgt von einer eindimensionalen Achtpunkt- Transformation von jeder Spalte zerlegen. Wie in Fig. 12 dargestellt, läßt sich solch eine Transformation durch einen Prozessor für orthogonale Transformationen 501, der mit einem Transponierungsspeicher 502 und einem anderen Prozessor für orthogonale Transformationen 501 hintereinandergeschaltet ist implementieren. Sie kann auch in einem einzigen Prozessor für orthogonale Transformationen 501 implementiert werden, wobei der Speicher 64 Muster enthält und die Suchtabelle geeignet angeordnet ist.
  • Fig. 13 stellt eine Realisierungsmöglichkeit für den Transponierungsspeicher 502 dar. Sie zeigt ein zweidimensionales Feld aus Speicherregistern 503, das so gruppiert werden kann, um in einer horizontalen oder vertikalen Zeilenabtastungssequenz zu shiften. Ausführlicher dargestellt hat jedes Speicherregister 503 einen horizontalen Ein- und Ausgang, einen vertikalen Ein- und Ausgang und einen Richtungssteuereingang. Die Register 503 des Feldes sind somit einander verbunden, daß die horizontalen Ausgänge innerhalb einer Zeile mit horizontalen Eingängen innerhalb derselben Zeile verbunden sind und die vertikalen Ausgänge in einer Zeile mit den vertikalen Eingängen innerhalb derselben Zeile verbunden sind. Dies gilt für alle Elemente, die nicht in der ersten und letzten Spalte oder Zeile sind. Der vertikale Ausgang in der letzten Zeile jeder Spalte ist mit dem vertikalen Eingang der ersten Zeile in der nächsten Spalte verbunden und der letzte horizontale Ausgang in jeder Spalte ist auf ähnliche Art mit dem ersten horizontalen Eingang in der nächsten Zeile verbunden. Die zwei Eingänge des Registers in der letzten Zeile und der letzten Spalte sind miteinander verbunden und bilden den Ausgang des Transponierungsspeichers 502.
  • Wie in Fig. 14 dargestellt, beinhaltet jedes Speicherregister 503 ein Register 504 und einen Selektor 505. Der Selektor 505 spricht auf das Richtungssteuersignal an, das entweder den horizontalen oder den vertikalen Eingang auswählt. Der vertikale Eingang wird an das Register 504 angelegt und der Ausgang des Registers 504 wird an beide horizontale und vertikale Ausgänge angelegt.
  • Während des Betriebes werden Daten hineingeschoben, bis die Matrix voll ist. Dann wird die Richtung des Shiftens (Richtungsteuerung) umgekehrt und die Daten werden hinausgeschoben, während die Daten des nächsten Blockes hineingeschoben werden. Das Richtungssteuersignal ist demgemäß eine einfache Rechteckwelle. Diese Struktur besitzt den Vorteil, daß sie bei extrem hoher Geschwindigkeit arbeiten kann.
  • Die dargestellte Offenbarung und die hier beschriebenen einzelnen Ausführungsbeispiele dienen im wesentlichen nur zur Veranschaulichung der vorliegenden Erfindung. Für den Fachmann ergeben sich viele Änderungen in der Konstruktion sowie stark unterschiedliche Ausführungsformen und Anwendungen.
  • Der Prozessor kann beispielsweise mehr als ein Verarbeitungselement enthalten, z. B. einen Rotator und eine separate Addierer/Subtrahierereinheit, die Rotationen von 45 durchführt, wodurch die Verarbeitungsgeschwindigkeit der Einheit durch Ausnutzen der Parallelitäten in dem Algorithmus erhöht wird. Während Fig. 1 eine als I/O-Interface dienender Kommunikationsschaltung 100 und eine mit einem Prozessorelement (Rotator 300) kommunizierende Speichereinheit darstellt, heißt das, daß man durch einfache Verallgemeinerung der vorliegenden Erfindung auch eine Vielzahl von Prozessorelementen verwenden kann, die mit dem I/O-Interface und den Speichereinrichtungen (von denen angenommen wird, daß sie in den Rotator 300 oder sonstwie integriert sind) verbunden sind.

Claims (11)

1. Prozessor für orthogonale Transformationen mit einem Rotator (300), Koeffizientenspeichereinrichtungen (200) und Schnittstelleneinrichtungen zum Übermitteln von Eingangssignalen an den Prozessor und zum Empfangen von Ausgangssignalen des Prozessors, dadurch gekennzeichnet, daß die Interface-Einrichtungen eine Kommunikationsschaltung (100) beinhalten, die auf einen anliegenden Prozessoreingangssignalvektor anspricht, die zu transformierende Komponenten des Eingangssignalvektors paarweise - bezeichnet mit x&sub0; und x&sub1; - an den Rotator anlegt, die die Übergabe der Rotatorausgangssignale steuert, wobei die x&sub0; und x&sub1; Komponentensignale zu einem Satz von Signalen gehören, die den Prozessoreingangssignalvektor und erste und zweite Rotatorausgangssignale beinhaltet, die die Reihenfolge von Koeffizienten steuert, die an den Rotator angelegt werden und die einen transformierten Vektor an einem Ausgang des Transformationsprozessors liefert,
daß der Rotator auf die Paare von x&sub0;- und x&sub1;- Komponentensignalen und auf erste und zweite Koeffizientensignale c&sub0; und c&sub1;, die jedem der Paare zugeordnet sind, anspricht, ein erstes Rotatorausgangssignal entsprechend c&sub0;x&sub0; + c&sub1;x&sub1; und ein zweites Rotatorausgangssignale entsprechend -c&sub1;x&sub0; + c&sub0;x&sub1; bildet, und
daß die Koeffizientenspeichereinrichtungen, die auf ein Initiierungssteuersignal ansprechen, der Kommunikationsschaltung Steuersignale und dem Rotator erste und zweite Koeffizientensignale liefern.
2. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Koeffizientenspeichereinrichtungen auch auf ein "inverses" Steuersignal ansprechen, um in dem Prozessor eine vorgewählte orthogonale Transformation zu bewirken, wenn sich das "inverse" Steuersignal auf einem ersten logischen Niveau befindet, und um in dem Prozessor die inverse Transformation der vorgewählten orthogonalen Transformation zu bewirken, wenn sich das "inverse" Steuersignal auf einem zweiten logischen Niveau befindet.
3. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß der Rotator vier Multiplizierer beinhaltet, von denen jeder eine Vielzahl von Modulen beinhaltet, wobei sich korrespondierende Module der vier Multiplizierer in enger physischer Nähe zueinander befinden.
4. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß der Rotator vier Multiplikationen durchführt und ein Feld von miteinander verbundenen Modulen beinhaltet, wobei jedes Modul vier Bereiche beinhaltet und jeder Bereich eines Moduls einen ähnlichen Teil der in dem Rotator durchgeführten Multiplikationen durchführt.
5. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß der Rotator vier Multiplikationen durchführt und eine Matrix von räumlich benachbarten und miteinander verbundenen Multiplizierer-Addierer-Modulen aufweist, wobei jedes Modul vier Bereiche aufweist und jeder Bereich eines Moduls einen ähnlichen Teil der von dem Rotator durchgeführten Multiplikationen durchführt.
6. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß der Rotator vier Multiplikationen durchführt und eine Matrix von räumlich benachbarten, miteinander verbundenen Multiplizierer- und Addierer-Modulen beinhaltet, wobei jedes Modul aufweist:
ein auf x&sub0; und c&sub0; ansprechendes erstes logisches Multiplikationselement (405),
einen ersten Addierer (401), der auf die anliegenden Summen und Übertragssignale und auf das erste logische Multiplikationselement anspricht, zur Erzeugung eines Ausgangssummensignals und eines Ausgangsübertragssignals, ein auf x&sub0; und c&sub1; ansprechendes zweites logisches Multiplikationselement (406),
einen auf die anliegenden Summen- und Übertragssignale und auf das zweite logische Multiplikationselement ansprechenden Addierer (402) zur Erzeugung eines Ausgangssummensignals und eines Ausgangsübertragssignals, ein auf x&sub1; und c&sub0; ansprechendes drittes logisches Multiplikationselement (407),
einen auf die anliegenden Summen und Übertragssignale und das dritte logische Multiplikationselement ansprechenden Addierer (403) zur Erzeugung eines Ausgangssummensignals und eines Ausgangsübertragssignals,
ein auf x&sub1; und c&sub1; ansprechendes viertes logisches Multiplikationselement (408) und
einen auf die anliegenden Summen und Übertragssignale und das vierte logische Multiplikationselement ansprechenden vierten Addierer (404) zur Erzeugung eines Ausgangssummensignals und eines Ausgangsübertragssignals.
7. Ein Prozessor nach Anspruch 6, dadurch gekennzeichnet, daß er Registriereinrichtungen (409-413) aufweist, die auf die Ausgangssummen- und Ausgangstragssignale des ersten, zweiten, dritten und vierten Addierers und auf ein anliegendes Taktsignal ansprechen, zur Erzeugung getakteter Summen und Übertragsausgangssignale der Module.
8. Ein Prozessor nach Anspruch 6, dadurch gekennzeichnet, daß die logischen Multiplikationselemente UND-Glieder sind.
9. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Einrichtungen zur Erzeugung von Steuersignalen ein auf das Initiierungssteuersignal ansprechendes Schieberegister (55) aufweist zur Erzeugung von verzögerten Nachbildungen des Initiierungssteuersignals sowie eine Vielzahl von Gruppen (56) von Verbindungspunkten, wobei jede Gruppe von einer anderen der verzögerten Nachbildungen des Initiierungssteuersignals gesteuert wird.
10. Ein Prozessor nach Anspruch 1, dadurch gekennzeichnet, daß der Kommunikationsschaltung erste und zweite Speicherabschnitte aufweist, wobei der erste Speicherabschnitt (120) die anliegenden Prozessoreingangssignale speichert und die gespeicherten Prozessoreingangssignale gesteuert von dem Initiierungssteuersignal an das zweite Speicherabschnitt weiterleitet, und daß das auf die Steuersignale von den Einrichtungen zur Erzeugung der Steuersignale ansprechende zweite Speicherabschnitt (121, 122), die von dem ersten Speichersegment gelieferten Signale speichert, Signale an den Rotator anlegt, die Ausgangssignale des Rotators speichert und gesteuert durch das Initiierungssteuersignal die transformierten Ausgangssignale an das erste Speichersegment anlegt.
11. Ein Prozessor für zweidimensionale m x n orthogonale Transformationen mit einem auf anliegende Eingangssignale ansprechenden ersten Prozessor (501) für orthogonale Transformationen zur Erzeugung von m-Transformationen, einem auf Eingangszwischensignale ansprechenden zweiten Prozessor für orthogonale Transformationen (501) zur Erzeugung von n-Transformationen und einem auf die m- Transformationen des ersten Prozessors für orthogonale Transformationen ansprechenden Transponierungsspeicher (502) zum Speichern von n der m-Transformationen des ersten Prozessors für orthogonale Transformationen und zum Aus lesen der n gespeicherten in-Transformationen in transponierter Reihenfolge zur Erzeugung der Zwischeneingangssignale, wobei jeder der Transformationsprozessoren einen Rotator (300), Koeffizientenspeichereinrichtungen (200) und Interface- Einrichtungen aufweist zum Liefern von Eingangssignalen an den Prozessor und zum Aufnehmen von Ausgangssignalen des Prozessors, dadurch gekennzeichnet, daß die Interface-Einrichtungen einer Kommunikationsschaltung (100) beinhalten, die auf einen anliegenden Prozessoreingangssignalvektor anspricht, die zu transformierende Komponenten des Eingangssignalvektors paarweise - bezeichnet mit x&sub0; und x&sub1; - an den Rotator anlegt, die die Übergabe der Rotatorausgangssignale steuert, wobei die x&sub0; und x&sub1; Komponentensignale zu einem Satz von Signalen gehören, die den Prozessoreingangssignalvektor und erste und zweite Rotatorausgangssignale beinhaltet, die die Reihenfolge von Koeffizienten steuert, die an den Rotator vergelegt werden und die einen transformierten Vektor an einem Ausgang des Transformationsprozessors liefert,
daß der Rotator auf die Paare von - x&sub0; und x&sub1; - Komponentensignalen und auf erste und zweite Koeffizientensignale c&sub0; und c&sub1;, die jedem der Paare zugeordnet sind, anspricht, ein erstes Rotatorausgangssignal entsprechend c&sub0;x&sub0; + c&sub1;x&sub1; und ein zweites Rotatorausgangssignale entsprechend -c&sub1;x&sub0; + c&sub0;x&sub1; bildet, und
daß die Koeffizientenspeichereinrichtungen, die auf ein Initiierungssteuersignal ansprechen, der Kommunikationsschaltung Steuersignale und dem Rotator erste und zweite Koeffizientensignale liefern.
DE3750017T 1986-11-10 1987-11-04 Prozessor für orthogonale Transformation. Expired - Fee Related DE3750017T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/928,894 US4760543A (en) 1986-11-10 1986-11-10 Orthogonal transform processor

Publications (2)

Publication Number Publication Date
DE3750017D1 DE3750017D1 (de) 1994-07-14
DE3750017T2 true DE3750017T2 (de) 1994-09-29

Family

ID=25456957

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750017T Expired - Fee Related DE3750017T2 (de) 1986-11-10 1987-11-04 Prozessor für orthogonale Transformation.

Country Status (8)

Country Link
US (1) US4760543A (de)
EP (1) EP0267729B1 (de)
JP (1) JPS63136167A (de)
KR (1) KR920001618B1 (de)
CN (1) CN87107679A (de)
CA (1) CA1277036C (de)
DE (1) DE3750017T2 (de)
ES (1) ES2005021A6 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5424961A (en) * 1988-03-04 1995-06-13 Brust; Hans-Detlef Process and system for measuring the temporal course of a periodic signal having high time resolution according to a "Boxcar-like" process
FR2639738B1 (fr) * 1988-11-25 1992-05-07 France Etat Dispositif et procede a registres a decalage et a operateurs de permutation pour la transposition matricielle ligne-colonne
US5359549A (en) * 1989-12-01 1994-10-25 Ricoh Company, Ltd. Orthogonal transformation processor for compressing information
US5268853A (en) * 1989-12-01 1993-12-07 Ricoh Company, Ltd. Orthogonal transformation processor for compressing information
JP2646778B2 (ja) * 1990-01-17 1997-08-27 日本電気株式会社 ディジタル信号処理装置
FR2657739B1 (fr) * 1990-01-26 1992-05-07 Sgc Thomson Microelectronics Sa Serialiseur/deserialiseur.
US5126962A (en) * 1990-07-11 1992-06-30 Massachusetts Institute Of Technology Discrete cosine transform processing system
DE69131808T2 (de) 1990-07-31 2000-03-16 Fujitsu Ltd. Verfahren und Gerät zur Bilddatenverarbeitung
US5875266A (en) * 1990-07-31 1999-02-23 Fujitsu Limited Image data processing a method and apparatus
JP2646844B2 (ja) * 1990-11-16 1997-08-27 日本電気株式会社 離散コサイン変換装置
US5343501A (en) * 1991-02-19 1994-08-30 Matsushita Electric Industrial Co., Ltd. Orthogonal transform apparatus for video signal processing
JP2964172B2 (ja) * 1991-03-08 1999-10-18 富士通株式会社 Dctマトリクス演算回路
US5394349A (en) * 1992-07-10 1995-02-28 Xing Technology Corporation Fast inverse discrete transform using subwords for decompression of information
US5339265A (en) * 1992-08-31 1994-08-16 University Of Maryland At College Park Optimal unified architectures for the real-time computation of time-recursive discrete sinusoidal transforms
KR950000386B1 (ko) * 1992-12-30 1995-01-16 재단법인 한국전자통신연구소 이산여현 변환회로
US5345408A (en) * 1993-04-19 1994-09-06 Gi Corporation Inverse discrete cosine transform processor
US5428567A (en) * 1994-05-09 1995-06-27 International Business Machines Corporation Memory structure to minimize rounding/trunction errors for n-dimensional image transformation
US6310963B1 (en) 1994-09-30 2001-10-30 Sensormatic Electronics Corp Method and apparatus for detecting an EAS (electronic article surveillance) marker using wavelet transform signal processing
US5623423A (en) * 1994-12-12 1997-04-22 Univ. Of Texas Apparatus and method for video decoding
US5805482A (en) * 1995-10-20 1998-09-08 Matsushita Electric Corporation Of America Inverse discrete cosine transform processor having optimum input structure
US5867601A (en) * 1995-10-20 1999-02-02 Matsushita Electric Corporation Of America Inverse discrete cosine transform processor using parallel processing
US5801979A (en) * 1995-10-20 1998-09-01 Matsushita Electric Corporation Of America Carry logic that produces a carry value from NLSBs for a ROM accumulator in an inverse discrete cosine transform processor
US6101523A (en) * 1998-05-19 2000-08-08 United Microelectronics Corp. Method and apparatus for controlling calculation error
US6499045B1 (en) * 1999-10-21 2002-12-24 Xilinx, Inc. Implementation of a two-dimensional wavelet transform
US7292730B1 (en) * 1999-12-09 2007-11-06 Intel Corporation Two-dimensional inverse discrete cosine transforming
US6684235B1 (en) 2000-11-28 2004-01-27 Xilinx, Inc. One-dimensional wavelet system and method
US7054897B2 (en) * 2001-10-03 2006-05-30 Dsp Group, Ltd. Transposable register file
US10884707B1 (en) 2019-06-27 2021-01-05 Amazon Technologies, Inc. Transpose operations using processing element array

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2262350B1 (de) * 1974-02-25 1976-12-03 France Etat
US4385363A (en) * 1978-12-15 1983-05-24 Compression Labs, Inc. Discrete cosine transformer
US4293920A (en) * 1979-09-04 1981-10-06 Merola Pasquale A Two-dimensional transform processor
JPS57146345A (en) * 1981-03-04 1982-09-09 Toshiba Corp 3n-th degree orthogonal transformation and inverse transformation system
US4528641A (en) * 1982-11-16 1985-07-09 The United States Of America As Represented By The Secretary Of The Air Force Variable radix processor
GB2141847B (en) * 1983-05-06 1986-10-15 Seiko Instr & Electronics Matrix multiplication apparatus for graphic display
US4558351A (en) * 1983-11-21 1985-12-10 Rca Corporation Hue correction circuit for a digital TV receiver
US4612626A (en) * 1983-12-27 1986-09-16 Motorola Inc. Method of performing real input fast fourier transforms simultaneously on two data streams
FR2561011B1 (fr) * 1984-03-09 1986-09-12 Cit Alcatel Processeur de calcul d'une transformee discrete inverse du cosinus
US4791590A (en) * 1985-11-19 1988-12-13 Cornell Research Foundation, Inc. High performance signal processor

Also Published As

Publication number Publication date
CN87107679A (zh) 1988-08-31
EP0267729A2 (de) 1988-05-18
EP0267729B1 (de) 1994-06-08
JPS63136167A (ja) 1988-06-08
ES2005021A6 (es) 1989-02-16
KR880006617A (ko) 1988-07-23
EP0267729A3 (de) 1991-03-13
US4760543A (en) 1988-07-26
DE3750017D1 (de) 1994-07-14
CA1277036C (en) 1990-11-27
KR920001618B1 (ko) 1992-02-20

Similar Documents

Publication Publication Date Title
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE69230897T2 (de) Diskreter/invers-diskreter Cosinus-Transformationsprozessor und Datenverarbeitungsverfahren
DE69522380T2 (de) Parallel-Verarbeitungsarchitektur für Bildverarbeitung
DE3750791T2 (de) Sehr schnelle Transformationsvorrichtung.
DE3875979T2 (de) Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten.
DE69328070T2 (de) Maske zum Auswählen von Kompenenten in einem Verbundoperand
DE3586201T2 (de) Digitaler datenprozessor fuer matrix-vektor-multiplikation.
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE2625973C3 (de) Verfahren und Anordnung zur redundanzvermindernden Transformation von Bildern
DE3879373T2 (de) Residuen-arithmetische Rechenschaltung.
DE3854035T2 (de) Nichtperiodisches Abbildungsverfahren zum verbesserten Zweierpotenzzugriff für ineinandergreifende Einrichtungen.
DE69520974T2 (de) Eine integrierte Halbleiterschaltung
DE2718849A1 (de) Rechenspeicher mit mehrdimensionalem, parallelem zugriff
DE3689926T2 (de) Einrichtung zur sequenziellen Bildtransformation.
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
DE3879637T2 (de) Pufferspeichergeraet und -verfahren, insbesondere fuer die matrixtransposition von datenfolgen.
DE3132225C2 (de) Einrichtung für die Adressierung gespeicherter Ergebniswerte bei einer schnellen Hadamard-Transformation
DE4038240A1 (de) Prozessor zum durchfuehren einer orthogonaltransformation
DE68927611T2 (de) Digitales neuronales Netwerk
DE3486126T2 (de) Expansions- und/oder ziehungsverfahren und -geraet fuer bilddaten.
DE1549584A1 (de) Datenverarbeiter zum Erhalt komplexer Fourierreihe-Koeffizienten
DE69025182T2 (de) Digitaler prozessor für zweierkomplementberechnungen
DE3689356T2 (de) Verfahren und Schaltung zum Generieren von binären Signalen und modifizierter Bitfolge.
DE4215094A1 (de) Bildverarbeitungsverfahren und -vorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: BLUMBACH, KRAMER & PARTNER, 65193 WIESBADEN

8339 Ceased/non-payment of the annual fee