DE3789116T2 - Prozessor zur zweidimensionalen diskreten cosinustransformation. - Google Patents
Prozessor zur zweidimensionalen diskreten cosinustransformation.Info
- Publication number
- DE3789116T2 DE3789116T2 DE3789116T DE3789116T DE3789116T2 DE 3789116 T2 DE3789116 T2 DE 3789116T2 DE 3789116 T DE3789116 T DE 3789116T DE 3789116 T DE3789116 T DE 3789116T DE 3789116 T2 DE3789116 T2 DE 3789116T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- register
- dct
- column
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000009466 transformation Effects 0.000 title claims description 16
- 239000011159 matrix material Substances 0.000 claims description 71
- 230000015654 memory Effects 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 22
- 239000013598 vector Substances 0.000 claims description 22
- 230000017105 transposition Effects 0.000 claims description 17
- 238000000354 decomposition reaction Methods 0.000 claims description 7
- 238000007792 addition Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 238000010420 art technique Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/008—Vector quantisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/007—Transform coding, e.g. discrete cosine transform
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Discrete Mathematics (AREA)
- Multimedia (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung bezieht sich auf einen Prozessor, um Raumbereichssignale, z. B. Videosignale, in Frequenzbereichssignale mittels eines mathematischen Verfahrens, das als eine diskrete Cosinustransformation (DCT) bekannt ist, umzuwandeln.
- Die DCT wird als die effektivste Technik unter den verschiedenen Transformations-Codiermethoden zur Abbildungskomprimierung oder Videobandbreitenkomprimierung betrachtet. Eine DCT ähnelt einer diskreten Fouriertransformation (DFT), umfaßt jedoch nur einen Cosinusterm. Um auf diese Weise eine Bandbreitenkomprimierung zu erreichen, kann ein quadratischer Block digital kodierter Bildelemente oder Pixel mittels eines zweidimensionalen (N·N) DCT-Prozessors, dem der N·N-Block von Pixeldaten zugeführt wird, in den Frequenzbereich transformiert werden, wobei die Eingangsdatenmatrix mit einer N·N-diskreten Cosinusmatrix multipliziert wird, um eine Zwischenmatrix zu erhalten. Danach wird die transponierte Zwischenmatrix mit derselben diskreten Cosinusmatrix multipliziert, um die gewünschte zweidimensionale transformierte Matrix zu erhalten. Die Elemente der transformierten Matrix können dann quantisiert werden, und nur der aktivste Term darin muß übertragen werden. Bei dem Empfänger wird eine inverse Transformation durchgeführt, um das ursprüngliche Videosignal im Raumbereich wiederherzustellen. Bei einer N·N-DCT ergibt ein größeres N eine bessere Komprimierungsrate, erfordert jedoch mehr Berechnungen.
- Matrix-Multiplikation umfaßt das Bilden eines inneren Produkts zweier N·1- Vektoren, um ein einzelnes Produktmatrixelement zu erhalten. Deshalb muß jedes Element einer Zeile der Eingangsmatrix mit je einem entsprechenden Element einer Spalte der Cosinusmatrix multipliziert und die Produkte addiert werden, um ein einzelnes Produktmatrixelement zu erhalten. Deshalb müssen für die Transformation eines 16·16-Blocks von Pixeln 16 Produkte addiert werden, um ein einzelnes Element oder einen Koeffizienten der Zwischenmatrix und der transformierten Matrix zu erhalten, wobei jedes von ihnen 256 Elemente besitzt. Viele schnelle Algorithmen wurden hergeleitet, um die Zahl der nötigen Berechnungen zu reduzieren. Zum Beispiel ist die DCT-Matrix in mehrere kleine Matrizen zerlegt worden, was zu Schmetterlingsstrukturen führt. Diese Schmetterlingsstrukturen reduzieren die Berechnung bedeutend, benötigen jedoch immer noch viele Multiplizierer hoher Geschwindigkeit, die einen großen Siliziumbereich für eine IC-Implementierung benötigen, und führen zu unschönen Zwischenverbindungen, schlechter Leitwegführung auf Chips und zu einer unregelmäßigen Form. Eine Matrix-Zerlegungstechnik, die nicht DCT- sondern Hadamard- und Haar-Transformationen benutzt, ist in einem Artikel mit dem Titel "Real-Time Orthogonal Transformation of Colour-Television Pictures" im Philips Technical Review, Ausgabe 38, NF. 415,1978179, S. 119-130 beschrieben. In dem beschriebenen System werden Addition und Subtraktion, die in den Transformationen benötigt werden, parallel durch schnelle Algorithmen, die darin in den Fig. 10 und 11 dargestellt sind, ausgeführt.
- All diese Faktoren machen VLSI-Implementierung (Implementierung mit sehr hohem Integrationsgrad) von Schmetterlingsstrukturen sehr ineffizient. Ein Beispiel für VLSI-Implementierung der DCT, die eine solche Struktur verwendet, ist in einem Artikel mit dem Titel "A Discrete Fourier-Cosine Transform Chip" in IEEE Journal on Selected Areas in Communication, Januar 1986, S. 49-61 beschrieben. Der sich ergebende Chip, der darin in Fig. 17 gezeigt ist, umfaßt viele Multiplizierer, nutzt den Siliciumbereich nicht effektiv und kann nur eine eindimensionale 8·1- Transformation implementieren. Die zweidimensionale Transformation enthält zwei eindimensionale Transformationen und benötigt eine temporäre Speicherung für Zwischenergebnisse und die Matrixtransposition, weshalb sie viel komplexer als die eindimensionale Transformation ist. Auch wird in einem Artikel mit dem Titel "A Pipelined Distributed Arithmetic PFFT Processor" in IEEE Transactions on Computers, Ausgabe C-32, Nr. 12, Dezember 1983, S. 1128-1136 eine Primärfaktor- Fourier-Tranformation (PFFT) beschrieben, die das Zerlegen der diskreten Fourier-Transformation in einen Satz von relativ kurzen Primärlängentransformationen entwickelt und eine Matrix-Zerlegungstechnik wie der oben beschriebenen Typ ist.
- Die Implementierung der PFFT verwendet eine verteilte Arithmetik, die Verweistabellen umfaßt, die in ROMs gespeichert sind. Die Eingangsschaltungsanordnung zum Übergeben der in ROMs gespeicherten Daten an die Verweistabellen umfaßt eine "Winkel-Dreh"-Schaltung, ein paar RAMs, einen Wortauswahlzähler und einen "Leitungs-Signalspeicher". Eine Technik zum Reduzieren der Größe eines ROMs durch Hinzufügen besonders kleiner ROMs und eines Addierers ist ebenfalls darin in Fig. 8 enthalten.
- Unsere beanspruchte Erfindung ist eine Reaktion auf eine Notwendigkeit für die Echtzeitverarbeitung einer zweidimensionalen DCT, die effizient durch eine VLSI- Technologie nach dem Stand der Technik implementiert werden kann. Unsere Erfindung sieht eine Echtzeitverarbeitung einer 16·16-DCT auf einem einzelnen Chip vor. Dies bedeutet, daß der Prozessor 16·16 Matrizen für das Anlegen an einen Quantisierer mit der selben Rate, mit der die 16·16 Eingangsmatrizen durch die Videokamera erzeugt wurden, zur Verfügung stellen muß. Der Prozessor sollte in der Lage sein, mit einer Eingangs-Abtast- oder Pixel-Rate von 14,3 MHz umzugehen, die eine Rate ist, die häufig in digitalen Videosystemen mit aktueller MOS- Technologie verwendet wird. Aufgrund der großen Zahl von benötigten Berechnungen kann Echtzeitverarbeitung mit dieser Rate nur durch Ausnützen inhärenter Gleichzeitigkeit und Parallelität in der Architektur erreicht werden. Auch da die Siliziumbereiche und die Entwicklungsbemühung, die zum Implementieren eines Algorithmus benötigt werden, sehr stark von dem Grad der Regelmäßigkeit der Architektur abhängig sind, kann man erkennen, daß die Herausforderung der effizienten VLSI-Implementierung einer DCT darin besteht, eine Architektur zu entwickeln, die die gewaltige Zahl von Multiplikationen, die bei einer herkömmlichen Struktur benötigt wird, verwirklichen kann.
- Anstelle einer Umsetzung schneller Algorithmen in Silizium, verwenden wir, entsprechend unserer beanspruchten Erfindung, eine mit einer Dezimierung der Frequenz kombinierte verteilte Arithmetik, bit-serielle und bit-parallele Datenstrukturen und Partialsummen, um gleichzeitig und mit minimaler ROM-Größe innere Vektorprodukte zu implementieren. Neuartige Eingangs-/Ausgangs-Schaltungsanordnungen und effiziente Matrixtranspositions-Schaltungsanordnungen sind ausgedacht worden. Daraus ergibt sich eine Architektur (oder Schaltungsanordnung) mit einer sehr regelmäßigen Struktur und ohne Multiplizierer. Dies ist möglich, weil die inhärenten Eigenschaften der Transformationsoperationen, nämlich (1) die Tranformationsmatrixelemente Konstanten sind, die die Verwendung der verteilten Arithmetik vorsehen, wobei Speicher-Verweistabellen oder Festwertspeicher (ROMs) durch Multiplizierer ersetzt sind, und (2) die Matrix-Vektorprodukte durch mehrere gleichzeitige innere Vektorprodukte verwirklicht werden. Die Dezimierung der Frequenz und Partialsummen werden dazu verwendet, die Größe der benötigten Verweistabellen zu reduzieren. Die bit-serielle Struktur wird dazu verwendet, die Dezimierung der Frequenz zu implementieren, so daß der Siliziumbereich möglichst klein ist und die Leitwegführung außerordentlich vereinfacht wird. Das Ergebnis ist ein zweidimensionaler DCT-Prozessor, der nur aus Speichern, Addierern und Registern besteht; keine Multiplizierer werden benötigt. Die Regelmäßigkeit des hochgleichzeitigen Betriebs der Schaltungsanordnung erlaubt eine modulare Entwicklung, ein ideales Merkmal für VLSI-Implementierung. Auch verbindet die Architektur sehr vorteilhaft bit-serielle und bit-parallele Schaltungsanordnungen. Unsere neuartige Architektur kann auch an andere zweidimensionale lineare Operationen angepaßt werden.
- Unser zweidimensionaler DCT-Prozessor umfaßt einen eindimensionalen (N·1)- Spalten-DCT-Eingangsprozessor, an den die N·N Eingangsdaten nacheinander Spalte für Spalte angelegt werden. Der Eingangs- oder Spaltenprozessor wurde entwickelt, um die Spaltentransformation der Eingangsdaten in einer Schaltungsanordnung zu erzeugen, die eine verteilte Arithmetik mit den zusätzlichen Merkmalen der Dezimierung der Frequenz und Partialsummen verwendet, um die Zahl der benötigten ROMs zu reduzieren. Der N·1-Eingangsprozessor ist mit N Schaltungen versehen, von denen jede einen Festwertspeicher (ROM) und einen hintereinander geschalteten Akkumulator umfaßt, und die RACs genannt werden. Die Akkumulatoren berechnen gleichzeitig die Elemente der Spaltentransformation durch Verschieben und Addieren der Daten, die von den ROMs abgefragt werden. Der resultierende Zwischenvektor ist in einer Zeile eines N·N-Transpositionsspeichers gespeichert, der einen RAM umfaßt. Jede Spalte der Datenmatrix liegt an den N·1- Eingangsprozessor der Reihe nach an, um die N·N-Zwischenmatrix (Y) zu erzeugen, die das Produkt (XtC) der Transposition der Datenmatrix (Xt) und der diskreten Cosinusmatrix (C), die durch die Konstanten, die in dem ROM gespeichert sind, dargestellt werden, ist. Die hochgestellten Zeichen "t" bezeichnen die Transpositionen der Matrizen. Ein zweiter oder N·1-Zeilen-DCT-Ausgangsprozessor wird dann verwendet, um die eindimensionale N·1-DCT für jede Spalte von XtC zu berechnen, die aus der Speicherung im Speicher ausgelesen werden. Das Ergebnis dieser zweiten oder Reihen-Transformationsoperation ist deshalb CtXC, was die gewünschte zweidimensionale N·N-DCT ist. Der Prozessor ist mit einer Steuerschaltung versehen, die Takt- und andere Steuer-Signale liefert, um den Betrieb der beschriebenen Komponenten zu steuern.
- Der N·1-DCT-Eingangsprozessor umfaßt ein N-stufiges Eingangsregister, an das die Eingangsdaten nacheinander auf n&sub1; parallelen Leitungen angelegt werden, wobei n&sub1; die Zahl der Bits pro Wort oder Pixel der Eingangsdaten ist. Sobald sich das Eingangsregister mit einer Spalte von Daten füllt, wird die gesamte Spalte gleichzeitig in bit-parallelem Format zu einem Halteregister verschoben und das Eingangsregister beginnt dann die nächste Spalte von Daten zu sammeln. Die Daten in jeder der N Stufen des Halteregisters werden dann gleichzeitig Bit für Bit, mit dem niedrigstwertigen Bit zuerst, herausgeschoben. Die N-Bit-Worte, die so gebildet werden, werden in zwei N/2-Bit-Worte umgewandelt, als Teil einer Technik, die als erststufige Dezimierung der Frequenz bekannt ist, und die sich ergebenden N/2-Bit-Worte werden dazu benutzt, alle ROMs der RACs gleichzeitig zu adressieren. Da die erststufige Dezimierung die n&sub1; vorzeichenlosen Eingangsdaten in (n&sub1;+2)-Bit Zweierkomplement-Zahlen umwandelt, wird die gleiche Operation n&sub1;+2-mal wiederholt und die n&sub1;+2 Worte, die aus jedem ROM ausgelesen werden werden nacheinander zu den Inhalten des Akkumulators hinzuaddiert, der einen Schieberegister mit einer festverdrahteten 1-Bit-Rechtsverschiebung umfaßt. Das Vorzeichenbit, das ein Teil des Datenworts ist, führt an Stelle einer Addition zu einer Subtraktion. Der aufsummierte Ausgang eines jeden dieser RACs umfaßt, nachdem jede Spalte von Ausgangsdaten erzeugt worden ist, einen einzelnen Koeffizienten oder ein Element der Spaltentransformation. Die Inhalte aller RACs werden gleichzeitig und in bit-parallelem Format an ein N-stufiges Ausgangsregister übertragen, nach welchem die Inhalte daraus nacheinander in eine Zeile (oder Spalte) des Transpositionsspeichers auf n&sub2;-parallelen Leitungen verschoben werden. Nachdem der N·N-Speicher auf diese Art gefüllt ist, liest der zweite oder N·1- Zeilen-DCT-Ausgangsprozessor die Matrix aus, die in dem RAM-Speicher Spalte für Spalte (oder Zeile für Zeile) gespeichert ist, so daß die Transposition von XtC erreicht wird. Der zweite N·1-DCT erzeugt dann die gewünschte zweidimensionale N·N-DCT auf die gleiche Weise, auf die es der erste oder DCT-Eingangsprozessor tut. Beide N·1-Prozessoren könnten ähnliche Schaltungen umfassen, mit der Ausnahme daß mehrere Bits benötigt werden könnten, um die Daten an dem zweiten N·1-Prozessor anzulegen.
- Der neuartige zweidimensionale N·N-Prozessor umfaßt einen ersten N·1-DCT- Prozessor, an den die Transposition eines N·N-Blocks der Eingangsdaten durch spaltenweises Lesen der ursprünglichen Matrix angelegt wird, wobei der erste N·1-Prozessor eine Einrichtung umfaßt, um gleichzeitig N innere Vektorprodukte für jede Spalte der Eingangsdaten zu berechnen, die eine verteilte Arithmetik benutzen, wobei die Konstanten der diskreten N·N-Cosinusmatrix in N RACs gespeichert werden, wobei jede von ihnen ein ROM plus einem Akkumulator umfaßt, wobei die ROMs durch N/2-bit-Worte adressiert sind, die aus den Datenworten der Spalten der Eingangsdaten gewonnen werden. Die so aus den ROMs ausgelesenen Worte werden in einem Schieberegister durch eine Schiebe- und Addier- Operation aufaddiert, wobei der Ausgang eines jeden der N RACs ein unterschiedliches Element oder einen Koeffizienten einer Reihe (oder Spalte) einer N·N- Zwischenmatrix umfaßt, welcher die N·1-Transformationen des Blocks der Eingangsdaten umfaßt. Es ist eine Schaltungsanordnung vorgesehen, um die Zwischenmatrix in einem N·N-RAM-Array zu speichern und dann dessen Transponierte in einen zweiten N·1-DCT-Prozessor auszulesen, der die gewünschte zweidimensionale N·N-DCT mittels einer Schaltungsanordnung erzeugt, ähnlich der, die dazu verwendet wird, die oben genannte N·N-Zwischenmatrix zu erzeugen. Es ist eine geeignete Steuerschaltungsanordnung vorgesehen, um die benötigten Steuersignale zu erzeugen.
- Es ist deshalb eine Aufgabe der Erfindung, einen zweidimensionalen diskreten Cosinustransformations(DCT)-Prozessor vorzusehen, der ein Paar von eindimensionalen DCT-Prozessoren benutzt, um die zweidimensionale DCT einer N·N- Matrix von Eingangsdaten durch ein Reihen-Spalten-Dekompositionsverfahren zu bestimmen, der aufweist: einen ersten N·1-DCT-Prozessor, der die eindimensionale Transformation der Eingangsdatenmatrix spaltenweise berechnet, um eine eindimensionale N·N-Zwischentransformations-Matrix zu erhalten, einen N·N-Transpositionsspeicher zum Speichern der Zwischentransformations-Matrix, und einen zweiten N·1-DCT-Prozessor, der die eindimensionale Transformierte der Transponierten der Zwischentransformations-Matrix berechnet, die in dem Transpositionsspeicher gespeichert ist, um die gewünschte zweidimensionale DCT zu erhalten; worin beide der N·1-DCT-Prozessoren aufweisen: ein N-stufiges Eingangsregister, an das eine Spalte der Eingangsdatenmatrix oder eine Reihe oder Spalte der gespeicherten Zwischentransformations-Matrix in einem bit-seriellen Format eingegeben wird, ein N-stufiges Halteregister, dessen Stufen mit den entsprechenden Stufen des Eingangsregisters verbunden sind, und eine Einrichtung zur Übertragung des Inhalts des Eingangsregisters in einem bit-parallelen Format an das Halteregister zu jeder Zeit, wenn das Eingangsregister sich füllt, eine Einrichtung, die mit dem Halteregister verbunden ist, um gleichzeitig N innere Vektorprodukte zu berechnen, wobei die Einrichtung Schaltungseinrichtungen aufweist, die mit dem Halteregister verbunden sind, um eine Dezimierung (Dezimation) der Frequenzen der ersten Stufe zu implementieren, um dadurch ein Paar von N/2-Bit- Wörtern von den N-Bit-Wörtern zu produzieren, die von dem Halteregister empfangen werden, N RACs, die mit der Schaltungseinrichtung verbunden sind, wobei jedes RAC einen oder mehrere Festwertspeicher (ROMs) und einen Akkumulator aufweist, und worin jedes der RACs durch das eine oder das andere der N/2-Bit- Wörter adressiert wird, ein N-stufiges Ausgangsregister, das jedes seiner Stufen mit dem entsprechenden Akkumulator von jedem entsprechenden RAC verbunden hat, und eine Einrichtung, um gleichzeitig die N berechneten inneren Vektorprodukte zu dem Ausgangsregister zu übertragen.
- Eine weitere Aufgabe der Erfindung ist: ein N·1 diskreter Cosinustransformations- Prozessor, der aufweist: ein N-stufiges Eingangsregister, dem eine Spalte oder Zeile der Eingangsdaten in einem bit-seriellen Format zugeführt werden kann, ein N-stufiges Halteregister, dessen Stufen mit den entsprechenden Stufen des Eingangsregisters verbunden sind, und eine Einrichtung zur Übertragung der Inhalte des Eingangsregisters in bit-parallelem Format immer dann zu dem Halteregister zu übertragen, wenn sich das Eingangsregister füllt, verteilte Arithmetikschaltungen, die mit dem Halteregister verbunden sind, um zeitlich zusammenfallend die N inneren Vektorprodukte zu berechnen, wobei die verteilten Arithmetikschaltungen erste Dezimationsstufen in Frequenzschaltungen aufweisen, die mit dem Ausgang des Halteregisters verbunden sind, die Dezimation in der Frequenzschaltung eine Einrichtung aufweist, um ein Paar von N/2-Bit-Wörtern von jedem N-Bit-Wort zu schaffen, das von dem Halteregister empfangen wird, die verteilte arithmetische Schaltung weiterhin N RACs aufweist, von denen jede einen oder mehrere Festwertspeicher (Read Only Memories ROMs) plus einen Akkumulator aufweist, wobei die RACs mit dem Ausgang der Dezimation in der Frequenzschaltung verbunden sind, und ein Ausgangsregister, von dem jedes seiner Stufen mit dem entsprechenden Akkumulator von jedem der RACs verbunden hat, das Ausgangsregister eine Einrichtung zum Empfang der inneren Vektorprodukte von den Akkumulatoren in bit-parallelem Format und eine Einrichtung, um die inneren Produkte in bitseriellem Format auszugeben, aufweist.
- Fig. 1 zeigt die Verbindungen, die benötigt werden, wenn unsere Erfindung auf einem einzelnen Chip implementiert wird.
- Fig. 2 zeigt ein Gesamt-Blockschaubild einer Ausführungsform unserer Erfindung.
- Fig. 3 zeigt einen DCT-Prozessor, der eine verteilte Arithmetik oder andere Merkmale verwendet.
- Fig. 4 ist ein Blockschaubild eines RAC.
- Fig. 5 ist ein Blockschaubild eines DCT-Prozessors, der eine Dezimierung der Frequenz verwendet.
- Fig. 6 ist ein Schaubild eines RACs, das keine Partialsummen verwendet.
- Fig. 7 und 8 sind Schaubilder von RACs, die Partialsummen verwenden.
- Fig. 9 ist ein Gesamtschaubild der N·1 DCTs aus Fig. 2.
- Die diskrete Cosinustransformation (DCT) ist eine orthogonale Transformation, die aus einem Satz von Basisvektoren besteht, die ausprobierte Cosinusfunktionen sind. Die DCT-Transformationsmatrix N-ter Ordnung C, ist definiert durch:
- mit k = 1, 2, 3, . . . N, l = 2, 3, . . . N und ck,l = N-½ für l = 1. Um eine Bandbreitenkomprimierung mittels der DCT zu erreichen, müssen die Blöcke der N·N-Videodaten in der Form vorzeichenloser binärkodierter Pixel einer zweidimensionalen Transformation unterworfen werden. Die zweidimensionale DCT N-ter Ordnung ist definiert als:
- Y = CtXC (2)
- Hierbei ist Y die transformierte Matrix, X sind die Daten oder die Video-Pixel-Matrix und Ct ist die Transponierte der diskreten Cosinusmatrix C, die durch Gleichung (1) definiert ist.
- Die Implementierung einer zweidimensionalen N·N-DCT kann durch ein Verfahren nach Stand der Technik, das als die Reihen-Spalten-Dekompositionstechnik bekannt ist, geschaffen werden; vergleiche dazu das Buch mit dem Titel "Multidimensional Digital Signal Processing", von Dudgeon und Mersereau in Prentice Hall Signal Processing Series, 1984. In dieser Technik nach Stand der Technik wird die zweidimensionale DCT durch zwei sequentielle eindimensionale DCTs geschaffen, wobei die Datenmatrix an die erste eindimensionale DCT zeilenweise angelegt wird. In unserer Erfindung wird eine Variante dieser Technik verwendet, wobei, wie oben angegeben, die Transponierte der Datenmatrix erhalten und an den ersten eindimensionalen DCT-Prozessor durch spaltenweises anstatt zeilenweises Lesen angelegt wird, so daß die Transponierte der Datenmatrix erhalten wird. Dies führt zu einer vereinfachten Schaltungsanordnung. Deshalb ist in der vorliegenden Erfindung der Ausgabewert des ersten eindimensionalen N·1- DCT-Prozessors XtC, der vorübergehend in dem Transpositionsspeicher gespeichert wird, und eine weitere N·1-DCT wird dann von der Transponierten der gespeicherten Matrix berechnet, um die erwünschte zweidimensionale DCT (Y) der Gleichung (2) zu erhalten. Wenn Geschwindigkeit nicht wichtig ist, können die zwei N·1-DCT-Berechnungen von der gleichen Schaltungsanordnung zeitlich verzahnt werden, aber in dem vorliegenden Fall, in dem Echtzeitoperation verlangt wird, werden zwei N·1-Prozessoren verwendet.
- Fig. 1 ist ein Schaubild, das unsere Erfindung auf einem einzelnen Chip implementiert darstellt. Die Anschlüsse an diesen Chip umfassen die Vorspannung Vcc, die Masse, einen Probetakt und ein Start-eines-Blocks-Aktivierungssignal. Die Eingangsdaten werden parallel über n&sub1; parallele Leitungen, eine für jedes Bit der Pixelworte, angelegt. Die transformierten Ausgangsdaten können n&sub3; parallele Leitungen für die längeren transformierten Worte umfassen. Die Eingangs- und Ausgangsdaten werden kontinuierlich mit der Probetakt-Rate in den und aus dem Chip geschoben.
- Fig. 2 zeigt den Gesamtaufbau unserer Erfindung, die den ersten oder N·1- Spalten-DCT 3 umfaßt, an den die Eingangsdaten auf n&sub1; parallelen Leitungen anliegen; die Ausgabedaten des DCT 3 werden temporär zeilen- oder spaltenweise in dem N·N Transpositionsspeicher 5 gespeichert, der wie gezeigt einen Direktzugriffsspeicher (RAM) mit separaten Eingangs- und Ausgangsanschlüssen umfaßt. Die n&sub2; parallelen Leitungen vom DCT 3 zum Speicher 5 umfassen abhängig von der benötigten Genauigkeit normalerweise mehr Bits, als die Eingangsdaten. Die gespeicherte Matrix wird (abhängig davon, wie die Zwischenmatrix gespeichert wurde) spalten- oder zeilenweise an den zweiten oder N·1-Zeilen-DCT 7 über n&sub2; parallele Leitungen angelegt. Die Transponierte der gespeicherten Matrix wird deshalb ausgelesen. Die transformierten Ausgangsdaten werden über n&sub3; parallele Leitungen vom zweiten N·1-DCT-Prozessor erhalten. Eine Zeitablauf- und Steuerschaltung 9 besitzt ein Taktsignal und das Start-eines-Blocks-Aktivierungssignal, das von der externen Schaltungsanordnung daran angelegt wird, und eine Schaltung 9 liefert mehrere Zeitablauf- und Steuersignale 11 und 12 an die Verarbeitungsschaltungsanordnung. Die Lese/Schreibe-Adreß- und Steuer-Schaltung 16 empfängt die Steuersignale 12 von der Schaltung 9 und legt über die Leitungen 14 geeignete Lese/Schreibe-Adressen und andere Steuersignale an den Speicher 5 an.
- Jeder der oben genannten inneren Vektorprodukte umfaßt eine Summation von N Produkten. Es kann mathematisch gezeigt werden, daß diese Berechnung ohne Multiplizierer unter Verwendung von Verweistabellen, die ROMs umfassen, realisiert werden kann, wobei die benötigten Koeffizienten der transformierten Matrizen durch Verschieben und Addieren der Verweistabellenwerte erhalten werden, die von den ROMs erhalten werden. Diese Rechentechnik, die auch nach Stand der Technik bekannt ist, ist als verteilte Arithmetik bekannt. Die ROMs und die Akkumulatoren, in denen die Verschiebungen und Additionen stattfinden, umfassen Einheiten, die RACs genannt werden, und jedes RAC speichert die Konstanten, die eine unterschiedliche Spalte der diskreten Cosinusmatrix darstellt.
- Die Fig. 3 und 4 zeigen einen N·1-DCT, der verdeutlicht, wie eine verteilte Arithmetik arbeitet und auch einige der Schaltungsmerkmale verdeutlicht, die in unserer Erfindung verwendet werden. Nach Fig. 3 umfaßt das Eingaberegister 13 N Stufen Q&sub1;-QN. Jede Spalte von Pixeln oder anderer zweidimensionalen Daten x1,k . . . XN,k, wird an die Stufe Q&sub1; des Registers 13 in bit-parallelem Format mit der Daten- oder Taktrate 1/T angelegt. Durch das spaltenweise Lesen der Pixeldatenmatrix wird deren Transformierte geschaffen. Digitale Videopixeldaten werden normalerweise in vorzeichenlose 8-Bit-Worte kodiert, wobei jedes die Helligkeit eines Pixels darstellt. Daher würden die Dateneingänge über 8 (oder n&sub1;) parallele Leitungen an Q&sub1; anliegen, und jede Registerstufe Q&sub1;-QN würde 8 (oder n&sub1;) parallele Bits umfassen. Nach N Taktzyklen würde die Spalte komplett in die N Stufen des Registers 13 geladen werden. Zu dieser Zeit würden die Steuersignale 11a und 11b von der Schaltung 9 in Fig. 2 alle 8 (oder n&sub1;) Bit-Worte von Q&sub1;-QN in die entsprechenden Stufen R&sub1;-RN des Halteregisters 15 übertragen. Die nächste Spalte der Eingangsdaten würde dann beginnen, das Eingaberegister vollzufüllen, während die restliche Schaltungsanordnung eine gleichzeitige Berechnung von N inneren Vektorprodukten durchführt, um die eindimensionale Transformation der Daten in dem Halteregister zu erhalten. Durch die Durchführung dieser gleichzeitigen Berechnung werden die Daten in dem Halteregister Bit für Bit mit dem niedrigstwertigen Bit zuerst als Reaktion auf das Steuersignal 11c herausgeschoben. Die N Leitungen von den N Stufen des Registers 15 bilden einen N-Bit-Bus, dessen Leitungen alle an N verschiedenen RACs (RAC(1)-RAC(N)) anliegen. Deshalb wird in jedem Taktzyklus ein unterschiedliches N-Bit-Wort dazu verwendet, gleichzeitig die ROMs zu adressieren, die ein Teil eines jeden RACs sind. Das RAC (1) hat in seinem ROM 2N Konstanten, die alle möglichen Kombinationen von Koeffizienten der ersten Spalte der Matrix C darstellen. Wenn zum Beispiel die ersten Spaltenkoeffizienten c1,1, c2,1, c3,1, . . . , CN,1 sind, dann würde das ROM all diese Koeffizienten und alle möglichen Summen von diesen einzeln speichern, zum Beispiel c1,1+c2,1, c1,1+c3,1, c1,1+CN1, c1,1+c2,1+c3,1, usw., bis zu und einschließlich der Summe all dieser Spaltenkoeffizienten. Zum Beispiel kann für N = 4 die Berechnung jedes Elements ykl der Spaltentransformation wie folgt dargestellt werden: c1,1 (110101001) + c&sub2;&sub1; (00101010) + c3,1 (11001111) + c4,1 (10101110). Dabei stellen die 8-Bit-Worte verschiedene Datenpixel dar, die eine Spalte von Daten bilden. In diesem Beispiel würden die niedrigstwertigen Bits aller Datenworte das Wort 1010 bilden. Dieses Wort würde aus dem ROM von RAC (1) den gespeicherten Wert c1,1+c3,1 auslesen, der, wie in Fig. 4 gezeigt, an das Schieberegister 25 des RACs (1) angelegt werden würde. Im nächsten Taktzyklus würde, abhängig davon, welches RAC adressiert wird und welches das N-Codewort ist, das nächst höchstwertige Codeelement aller Datenworte an alle RACs angelegt werden, um verschiedene Werte aus diesen auszulesen. Dieses ausgelesene Wort wird ebenfalls an das Schieberegister über die ADD/SUB-Schaltung 23 in Fig. 4 angelegt, wobei es zu den vorherigen Inhalten des Schieberegisters addiert wird, die zu der ADD/SUB- Schaltung mit einer 1-Bit-Rechtsverschiebung zurückgeleitet werden. Deshalb speichert nach der zweiten Adressierung des ROMs 21 das Schieberegister 25 darin die Summe der zwei ausgelesenen Worte, wobei das erste mit 1/2 gewichtet wird (oder durch 2 dividiert wird), um die Tatsache widerzuspiegeln, daß es ein Bit eines Datenworts geringerer Bedeutung darstellt. Dieses Verfahren wird für jedes Bit des Datenworts wiederholt. Die ADD/SUB-Schaltung 23 führt eine ADD (Addition) für die regulären Datenbits und eine SUB (Subtraktion) für das Vorzeichenbit aus. Die Schlußsummation aller solchermaßen von dem ROM abgefragten und gewichteten Worte gleicht einem Koeffizienten der Produktmatrix oder der eindimensionalen Transformation. Nachdem die erste Spalte der Eingangsdaten auf diese Weise erzeugt worden ist, nimmt zum Beispiel der Ausgabewert von RAC (1) den Wert y1,1 an, wenn die Elemente der Produktmatrix XtC yk,l sind, und ebenso nimmt der Ausgang von RAC (N) den Wert y1,N an. Deshalb wird die gesamte erste Reihe der Produktmatrix XtC an den RAC-Ausgängen nach Beendigung dieser Berechnung verfügbar sein. Entsprechend dem Steuersignal 11d von der Schaltung 9, werden dann die angesammelten Inhalte yk,l-yk,N jedes RACs gleichzeitig parallel über n&sub2; (oder n&sub3;) parallele Leitungen in die Stufen U&sub1;-UN des Ausgaberegisters 19 geladen, der ähnlich dem Eingaberegister mit einem zusätzlichen Multiplexer mit zwei Eingängen ist. Die Inhalte des Registers 19 würden dann entsprechend dem Steuersignal 11e nacheinander aus dessen Stufe U&sub1; auf n&sub2; (oder n&sub3;) parallelen Leitungen zum Transpositionsspeicher oder zum zweidimensionalen Prozessorausgang herausgeschoben. Wenn N = 16 ist, würden zum Beispiel 16 Taktzyklen benötigt werden, um das Eingaberegister 13 mit einer Spalte von Daten zu füllen; deshalb würde alle 16 Zyklen die Steuerschaltung 9 so gesteuert werden, damit sie das Signal 11b ausgibt, um die Übertragung der Spalte von Daten an das Halteregister 15 zu bewirken. Das Register 19 kann seine Inhalte yk,l seriell herausschieben, während die RACs die nächste Zeile der Produktmatrix berechnen und die Eingaberegister Eingabedaten sammeln. Wie in Fig. 4 gezeigt, wird der Ausgabewert des ROMs 21 eine Wortlänge von n&sub4;-Bits besitzen, die durch die Länge der in dem ROM gespeicherten Worte festgelegt ist. Das Signal 11f, das von der Schaltung 9 an der Schaltung 23 angelegt wird, legt fest, ob diese Schaltung eine Addition oder Subtraktion ausführt. Die Steuersignale 11g und 11h, die an das Schieberegister 25 angelegt werden, sind rückgesetzte und parallel geladene Signale.
- Die Schaltungsanordnung beider eindimensionaler DCT-Prozessoren sind gleich, mit Ausnahme der Zahl der Bits pro Wort. Wie in Fig. 2 gezeigt, hat der erste Prozessor eine Eingabewortlänge n&sub1; und eine Ausgabewortlänge von n&sub2;. Der zweite DCT-Prozessor 7 hat Eingabe- und Ausgabewortlängen von n&sub2; bzw. n&sub3;.
- Obwohl die Schaltungsanordnung in Fig. 3 und 4 keine Multiplizierer benötigt, weist sie schwere Einschränkungen aufgrund der Zahl der Konstanten, die in jedem ihrer ROMs gespeichert werden müssen, auf. Wenn zum Beispiel N = 16 ist, ist die Zahl der Worte, die für jedes ROM jedes RACs benötigt wird, 2¹&sup6; oder 65.536. ROMs dieser Größe sind mit der derzeitigen VLSI-Technologie nicht machbar, wenn der gesamte Prozessor auf einem einzelnen Chip implementiert ist. Zwei Methoden sind übernommen worden, um die ROM-Größe zu reduzieren, wobei beide nur eine bescheidene zusätzliche Schaltungsanordnung benötigen. Die erste Methode ist eine Variante der Technik der Dezimierung der Frequenz, die nach Stand der Technik in herkömmlichen schnellen Fourier-Transformationens (FFT)-Algorithmen verwendet worden ist. Das (k,l)-te Element der Produktmatrix Y = XtC ist durch folgende Gleichung gegeben:
- Hierbei ist k der k-te Spaltenvektor von X und l der l-te Spaltenvektor von C. Unter Bezugnahme auf die N·N-DCT-Transformationsmatrix C, die in Gleichung (1) definiert ist, kann gezeigt werden, daß für geradzahlige N, ck,l + cN+1-k,l für l = 1, 3, . . . N-1 und ck,l = -cN+1-k,l für l = 2, 4, . . . N. Mit diesen Beziehungen wird Gleichung (3):
- für l = 1, 3 . . . N-1, wobei Uk,m = xm,k+xN-m+1,1,k, und
- für l = 2, 4 . . . N, mit vk,m = xm,k-xN-m+1,k. Die Gleichungen (4) und (5) lassen darauf schließen, daß, wenn die Variablen u und v die ursprüngliche Datenfolge ersetzen, die Summation von 1 bis N zur Summation von 1 bis N/2 wird. Deshalb wird die Zahl der Datenbits, die benötigt werden, um jedes ROM zu adressieren, um einen Faktor 2, und die Zahl der benötigten gespeicherten Worte um einen Faktor 2N/2 reduziert. Prinzipiell kann diese Technik der Dezimierung der Frequenz auf mehr Stufen ausgeweitet werden, so wie es die meisten FFT Algorithmen tun. Jedoch könnten die Ersparnisse wegen der zunehmenden darin verwickelten Unregelmäßigkeiten, nicht lohnend sein. Um die modulare Struktur zu erhalten, wurde deshalb nur die erststufige Dezimierung angewendet. Dieses Merkmal der Erfindung ist in Fig. 5 dargestellt.
- In Fig. 5 sind N/2 serielle Addierer 31 vorgesehen, um die Variablen u aus N/2 verschiedenen Paaren der ursprünglichen Datensequenzen von dem Register 15 zu erzeugen. Wie gezeigt, wird die Variable uk,1 durch Addition von x1,k und xN,k gebildet, uk,2 aus x2,k plus xN-1,k, und uk,N/2 aus xN/2,k plus xN/2+1,k. Die gleichen Paare von EingabedateneIementen werden in N/2 seriellen Ein-Bit-Subtrahierern 33 voneinander abgezogen, um die neuen Variablen vk,l, vk,2 . . . vk,N/2 zu erhalten. Deshalb umfassen die Paare von Datenelementen jeder Eingabedaten-Spalte die Elemente von der ersten und letzten Zeile der Spalten, die Elemente von der zweiten und der vorletzten Zeile der Spalten, die Elemente von der dritten und drittletzten Zeile der Spalten, usw. Die Eingabedatenbits xk,l in Fig. 5 würden Bit für Bit (in bit-seriellem Format) von einem Halteregister wie in Fig. 3 erhalten werden und die Ausgabedaten der seriellen Addierer und Subtrahierer 31 und 33 würden Bit für Bit erscheinen, um zwei N/2-Leitungs-Busse zu bilden, wobei jeder Bus die Eingabedaten zweier verschiedener Gruppen von N/2-RACs bildet. Der N/2-Leitungs- Bus 34, der mit den Addierern 31 verbunden ist, besitzt die ungeradzahligen RACs, 1, 3, N-1, die damit verbunden sind, und diese RACs berechnen alle Elemente der inneren Vektorprodukte der ungeradzahligen Spalten, z. B., yk,1, yk,3, yk,N-1. Der N/2-Leitungs-Bus 36, der mit den Subtrahierschaltungen 33 verbunden ist, besitzt die damit verbundenen geradzahligen RACs 2, 4, N, die die Elemente der geradzahligen Spalten der inneren Vektorprodukte berechnen.
- Die Benutzung einer erststufigen Dezimierungs-Schaltung wie in Fig. 5, wird die Größe eines jeden ROMs auf 256 Worte für eine 16·16-Matrix reduzieren, da jedes RAC nun durch ein 8-Bit-Wort adressiert wird.
- Die Erfindung verwendet eine zusätzliche Technik, um die ROM-Größe weiter zu reduzieren. Diese zusätzliche Technik basiert auf der Beobachtung, daß die Summationen über den Index die Zahl der Datenpunkte in den Gleichungen (4) und (5), in Partialsummen aufgespaltet werden können. Wenn wir gewählt haben, (3) in zwei Partialsummen zu zerlegen, dann wird
- ist.
- Beachte, daß die Summation in F&sub1; und F&sub2; nur N/2 Eingabeproben anstelle von N Proben umfaßt. Durch die derartige Zerlegung wird jedes ROM mit 2N Worten durch zwei kleinere ROMs mit 2N/2 Worten ersetzt. Genauer gesagt, werden die Datenworte am Eingang jedes RACs in zwei Gruppen zerlegt, wobei die erste Gruppe aus den Bits von 1 bis N/2 und die zweite Gruppe aus den Bits von den Datennummern (N/2)+1 bis N besteht. Deshalb werden die Worte, die normalerweise benutzt werden, um das RAC zu adressieren, in zwei gleiche Teile zerlegt, die die erste und zweite Hälfte davon umfassen. Jedes der kleineren Worte wird dazu benutzt, einzelne ROMs zu adressieren, und die ROM-Ausgabedaten werden parallel addiert und die Summe an den Akkumulator angelegt. Die Zahl der Partialsummen, die diese Zerlegungstechnik benutzen, kann jede geradzahlige Zahl sein. Für N = 16 wird jedes ROM durch zwei kleinere ROMs ersetzt. Wenn N = 32, kann jedes ROM durch vier ROMs ersetzt werden, wobei in diesem Fall eine zusätzliche Additionsstufe benötigt wird. Für N = 8 wird keine Zerlegung benötigt, da die ROM- Größe schon sehr klein ist.
- Die Implementierung der RACs, die sowohl die Partialsummentechnik als auch die Technik der erststufigen Dezimierung der Frequenz nutzt, ist in den Fig. 6, 7 und 8 für 8·1, 16·1 bzw. 36·1 DCTs gezeigt. Das RAC in Fig. 6 für einen 8·1- DCT mit einem Merkmal der erststufigen Dezimierung der Frequenz, wie das in Figur 5, würde zwei Vier-Codeelement-Busse umfassen, die die ROMs adressieren. Jedes ROM 37 speichert nur 2&sup4; oder 16 Worte und deshalb werden keine Partialsummen benötigt, wobei die Ausgangsdaten des ROMs 37 durch die ADD/SUB- Schaltung 39 und das Schieberegister 11 an den Ausgang 43 angelegt ist. Das 16·1-DCT-RAC in Fig. 7 würde als ein Ergebnis des Dezimierungsmerkmals zwei 8-Bit-Busse besitzen, die, wie oben erklärt, in zwei 4-Bit-Worte zerlegt werden würden, die an zwei gleiche 16-Wort-ROMs 45 und 47 angelegt werden. Der Addierer 49 würde die aus den zwei ROMs ausgelesenen n&sub4;-Bit-Worte aufsummieren, um ein einzelnes n&sub4;+1-Bit-Wort zu erhalten, das an den Akkumulator angelegt wird, der die ADD/SUB-Schaltung 51 umfaßt, wobei das Schieberegister 53 und der 1-Bit-Rechtsverschiebungsrückleitungsweg zwischen dem Ausgang des Schieberegisters und dem Addierer-Subtrahierer 51 ist. Die RAC-Ausgabedaten an 55 würden Worte mit n&sub2; (oder n&sub3;) Bits umfassen, die ein wenig länger wären als n&sub4;&sbplus;&sub1; Bits.
- Das 32·1-DCT-RAC in Fig. 8 umfaßt einen 16-Bit-Leitungs-Eingangsbus, der in vier 4-Bit-Worte zerlegt ist, um vier ähnliche ROMs 61, 63, 65 und 67 zu adressieren, wobei jedes davon 16 Worte speichert. Die n&sub4;-Bit-Worte am Ausgang der ROMs 61 und 63 werden im Addierer 69 addiert, und die ähnlichen Worte von den ROMs 65 und 67 werden an den Addierer 71 angelegt. Diese zwei Addierer haben ihre Ausgabedaten der Reihe nach an den Addierer 73 angelegt, der seine Ausgabedaten an den Akkumulator angelegt hat, der genauso funktioniert, wie der vorher beschriebene, um ein Element eines inneren Vektorprodukts zu berechnen.
- Durch Kombination dieser zwei Techniken kann die benötigte ROM-Größe mit nur einer bescheidenen Vergrößerung der Schaltungsanordnung außerordentlich reduziert werden. Zum Beispiel für N = 16 benötigt die direkte Implementierung eines zweidimensionalen 16·16-DCTs 2¹&sup6;·16·2 = 2²¹ Worte des ROMs. Auf der anderen Seite benötigt die Schaltung in Fig. 7 bei Benutzung der zwei Techniken, die oben beschrieben sind, nur 2&sup4;·2·16·2 = 2¹&sup0;, also näherungsweise 1K Worte des ROMs. Mit dieser ROM-Größe ist die neuartige Schaltungsanordnung der vorliegenden Erfindung nicht nur machbar, sondern sehr effizient, was IC-Realisierung betrifft.
- Fig. 9 ist ein Gesamt-Blockschaubild des N·1-DCTs mit dem Merkmal der Dezimierung der Frequenz. Das Schaubild in Fig. 9 hebt die Regelmäßigkeit und die Modularität dieser Schaltungsentwicklung hervor. In dieser Figur umfaßt das Eingaberegister N Stufen Q&sub1;-QN, wobei jede n&sub1; (oder n&sub2;) Bits umfaßt, abhängig davon, ob die Schaltung den ersten oder zweiten N·1-DCT-Prozessor in Fig. 2 umfaßt, wobei die Eingangsspalten der Daten x1,k, x2,k . . . xN,k an Q&sub1; über n&sub1; (oder n&sub2;) parallelen Leitungen anliegen. N/2 serielle Addierer 81 und eine ähnliche Zahl von seriellen Subtrahierern 83 sind vorgesehen und jeder besitzt ein Paar einzelner Leitungen von den Stufen R&sub1;-RN des Halteregisters, das damit verbunden ist. Der N/2-Bit-Bus 85 umfaßt Bits, die aus den Addierern 81 gewonnen werden, und der N/2-Bit-Bus 87 umfaßt Bits vom Subtrahierer 83. Beachte, daß der Addierer und der Subtrahierer, die die ersten Bits uk,l und vk,l beider N/2-Bit-Busse erzeugen, beide mit der ersten und letzten Halteregisterstufe R&sub1; und RN verbunden sind. Ebenso sind der Addierer und der Subtrahierer, die das zweite Bit eines jeden Worts auf den zwei Bussen erzeugen, mit der zweiten und der vorletzten Halteregisterstufe R&sub2; und RN-1 verbunden, usw. Indem man dieser logischen Regel folgt, wird das letzte Bit auf jedem Bus aus dem Addierer und Subtrahierer ausgelesen, die mit den Halteregisterstufen N/2 und (N/2)+1 verbunden sind. Die N RACs in Fig. 9 sind in numerischer Ordnung angeordnet, wobei die ungeradzahligen mit dem Bus 85 verbunden sind, der mit allen Addierern 81 verbunden ist, und alle geradzahligen RACs sind mit allen Subtrahierern 83 über den Bus 87 verbunden. Die Spaltentransformationskoeffizienten yk,1, yk,2, . . . yk,N werden gleichzeitig von den RAC- Ausgängen bit-parallel zu den Stufen U&sub1;-UN des Ausgaberegisters verschoben, so wie in der vorherigen Ausführungsform, und die Inhalte dieser Registers werden dann nacheinander herausgeschoben.
- Die Bereitstellung von Eingabe-, Ausgabe- und Halteregistern als Teil der N·1- DCT-Prozessoren minimiert die Zahl der Chip- (oder IC-) Eingabe/Ausgabe-Pins und vereinfacht die Leitwegführung, da jedes Register-Array nur mit seinen Nachbarn kommuniziert. Auch erleichtert diese Schaltungsanordnung einen gleichzeitigen Betrieb, in dem fast alle Schaltungen gleichzeitig verschiedene Aufgaben während des Betriebs ausführen. Dies ist erforderlich, wenn Echtzeitverarbeitung auf einem einzelnen Chip erreicht werden soll. Weiterhin reduziert die Benutzung einer bit-seriellen Struktur zur Implementierung der erststufigen Dezimierung der Frequenz die benötigte Schaltungsanordnung und vereinfacht die Leitwegführung.
- Durch eine geeignete Steuerung der Lese- und Schreib-Adressen des Transpositonsspeichers werden nur N·N Worte des RAMs sowohl zum Speichern der Zwischenergebnisse (oder Matrix) als auch zum Ausführen in der Matrix-Transposition benötigt, die beim Auslesen der gespeicherten Zwischenergebnisse benötigt wird. Der Transpositionsspeicher (oder RAM) umfaßt 16·16 Worte, wenn N = 16 ist, und besitzt einzelne Lese- und Schreibeanschlüsse, wie in Fig. 2 gezeigt. Da die Zwischenergebnisse des gegenwärtigen Blocks kontinuierlich von dem ersten N·1- Prozessor in den Speicher geschrieben werden, während die Zwischenergebnisse des vorherigen Blocks kontinuierlich in den zweiten N·1-Prozessor ausgelesen werden, muß die Lese/Schreibeoperation so durchgeführt werden, daß keine Information zerstört wird, bevor sie ausgelesen wird. Ein Weg um das zu erreichen, ist, die Lese/Schreibe-Steuerung und die Adressen so auszubilden, daß jede Probe (oder Wort) in die gleiche Speicherstelle geschrieben wird, aus der die Probe des vorherigen Blocks ausgelesen worden ist. Auf diese Weise benötigt jede Lese- und Schreiboperation einen halben Taktzyklus (T/2). Ein anderer Weg ist, sie so anzuordnen, daß die Schreibadresse hinter der Leseadresse um eine Zeile oder eine Spalte zurück bleibt. Auf diese Weise kann jede Lese- und Schreibeoperation einen vollen Zyklus (T) durchfahren, wobei jedoch zwei Sätze von Adreßdecodern benutzt werden müssen.
- Um die erwünschte Matrixtransposition zu erreichen, werden die Daten aus dem Speicher 5 spaltenweise ausgelesen, falls der vorherige Block in das RAM zeilenweise geschrieben worden ist, und umgekehrt. Wenn zum Beispiel für N = 16 die Daten des vorherigen Blocks in das RAM in der Folge 0, 1, 2, 3, . . . usw. geschrieben werden, werden die Daten dann in der Folge 0, 16, 32, 48, . . . usw. ausgelesen und zur gleichen Zeit die Daten des vorliegenden Blocks in der gleichen Folge (0, 16, 32, 48, usw.) in das RAM geschrieben. Im nächsten Block lesen/schreiben die Daten wieder in der Folge 0, 1, 23, . . . usw. und die Operation wiederholt sich. Die Adressen können durch einen 8-Bit-Zähler erzeugt werden, und die Änderung der Sequenz kann leicht durch Abänderung der 4 höchstwertigen Bits und der 4 niedrigstwertigen erreicht werden. Diese Schaltungsanordnung wäre ein Teil der Schaltung 16 in Fig. 2. Das Starten-eines-Blocks-Aktivierungssignal wird dazu verwendet, die Adresse der Lese/Schreibeoperation zurückzusetzen. Beachte, daß der Zähler, der für die derartige Steuerung der RAM-Adresse benötigt wird, so aufgebaut werden kann, daß er einen Addierer und ein Register benutzt, wobei das Steuerungssignal durch ein ROM erzeugt wird.
- In diesem zweidimensionalen Prozessor ist n&sub1; = 8 für die meisten Anwendungen. Die Wortlängen für n&sub2;, n&sub3; und n&sub4; werden durch Computersimulation der Schaltung festgelegt, in der viele Bilder digitalisiert und deren Pixel entsprechend der vorliegenden Schaltungsanordnung transformiert werden und die inverse Transformation dann ausgeführt und die Bilder reproduziert werden. Man hat herausgefunden, daß mit n&sub2; = 12, n&sub3; = 16 und n&sub4; = 9 eine sehr hohe Genauigkeit erreicht wird. Für manche Anwendungen wie zum Beispiel Video mit einer geringen Bit-Rate, wobei solch hohe Genauigkeit nicht benötigt wird, kann die Zahl der Bits für n&sub2;, n&sub3; und n&sub4; um 1 oder 2 reduziert werden.
Claims (6)
1. Zweidimensionaler diskreter Cosinustransformations
(DCT)-Prozessor, der ein Paar von eindimensionalen
DCT-Prozessoren benutzt, um die zweidimensionale DCT einer
N·N-Matrix von Eingangsdaten durch ein
Reihen-Spalten-Dekompositionsverfahren zu bestimmen, der aufweist:
einen ersten N·1 DCT-Prozessor (3) der die
eindimensionale Transformation der Eingangsdatenmatrix spaltenweise
berechnet, um eine eindimensionale N·N-Zwischentransformations-
Matrix zu erhalten,
einen N·N-Transpositionsspeicher (5) zum Speichern der
Zwischentransformations-Matrix, und
einen zweiten N·1-DCT-Prozessor (7), der die
eindimensionale Transformierte der Transponierten der
Zwischentransformations-Matrix berechnet, die in dem
Transpositionsspeicher gespeichert ist, um die gewünschte zweidimensionale DCT
zu erhalten;
worin beide der N·i-DCT-Prozessoren aufweisen:
ein N-stufiges Eingangsregister (13), an das eine Spalte,
der Eingangsdatenmatrix oder eine Reihe oder Spalte der
gespeicherten Zwischentransformationsmatrix in einem
bit-seriellen Format eingegeben wird,
ein N-stufiges Halteregister (15), dessen Stufen mit den
entsprechenden Stufen des Eingangsregisters verbunden sind,
und eine Einrichtung zur Übertragung des Inhalts des
Eingangsregisters in einem bit-parallelen Format an das
Halteregister zu jeder Zeit, wenn das Eingangsregister sich füllt,
eine Einrichtung, die mit dem Halteregister verbunden
ist, um gleichzeitig N innere Vektorprodukte zu berechnen,
wobei die Einrichtung Schaltungseinrichtungen (31, 33, 34,
36) aufweist, die mit dem Halteregister verbunden sind, um
eine Dezimation erster Stufe der Frequenz zu implementieren,
um dadurch ein Paar von N/2-Bitwörtern von den N-Bitwörtern
zu produzieren, die von dem Halteregister empfangen werden,
N RACs (17), die mit der Schalteinrichtung verbunden
sind, wobei jedes RAC eines oder mehrere Read Only Memories
ROMs (37) und einen Akkumulator (39, 41) aufweist, und worin
jedes der RACs durch das eine oder das andere der
N/2-Bitwörter adressiert wird,
ein N-stufiges Ausgangsregister (19) das jedes seiner
Stufen mit dem entsprechenden Akkumulator von jedem
entsprechenden RAC verbunden hat, und
eine Einrichtung, um gleichzeitig die N berechneten
inneren Vektorprodukte zu dem Ausgangsregister zu übertragen.
2. Zweidimensionaler DCT-Prozessor nach Anspruch 1, worin
die RACs mit einer Teilsummeneinrichtung ausgerüstet sind,
worin jedes der RACs zwei oder mehrere ROMs (45, 47) umfaßt,
von denen jedes durch einen verschiedenen Abschnitt von einem
oder dem anderen der N/2-Bitwörter adressiert wird, die von
der Schaltungseinrichtung erhalten werden, jedes der RACs
weiterhin eine Einrichtung (49) zum Addieren der von den zwei
oder mehreren ROMs wiedergewonnen Wörter und eine Einrichtung
aufweist, um die resultierenden addierten Wörter an den mit
den RACs verbundenen Akkumulator anzulegen.
3. Prozessor nach Anspruch 1, in dem N 16 ist, und in dem
die Matrix der Eingangsdaten in 8-bit-binären Wörtern
codierte Video-Pixeln enthält, und in dem die Schaltung auf
einem einzigen Chip implementiert ist.
4. Zweidimensionaler DCT-Prozessor nach Anspruch 1, worin
der Transpositionsspeicher ein N·N Random Access Memory (RAM)
Array mit getrennten Lese- und Schreibeanschlüssen und eine
damit verbundene Lese-/Schreibekontrollschaltung (16)
enthält, und worin der Ausgang des ersten DCT-Prozessors in
einer abwechselnden Weise Zeilen- und Spaltenweise gelesen wird
und der Eingang des zweiten DTC-Prozessors in einer
abwechselnden Weise aus dem Speicher Zeilen- und Spaltenweise durch
die Kontrollschaltung derart gelesen wird, daß die
Transposition der gespeicherten Matrix zur Anwendung an den zweiten
N·1-DCT-Prozessor erzielt wird.
5. N·1 diskrete Cosinustransformation Prozessor, der
aufweist:
ein N-stufiges Eingangsregister (13), dem eine Spalte
oder Zeile der Eingangsdaten in einem bit-seriellen Format
zugeführt werden kann,
ein N-stufiges Halteregister (15), dessen Stufen mit den
entsprechenden Stufen des Eingangsregisters verbunden sind,
und eine Einrichtung zur Übertragung der Inhalte des
Eingangsregisters in bit-parallelem Format immer dann zu dem
Halteregister zu übertragen, wenn sich das Eingangsregister
füllt,
verteilte Arithmetikschaltungen (31, 33, 34, 36), die
mit dem Halteregister verbunden sind, um zeitlich
zusammenfallend die N-inneren Vektorprodukte zu berechnen, wobei die
verteilen Arithmetikschaltungen erste Dezimationsstufen in
Frequenzschaltungen aufweisen, die mit dem Ausgang des
Halteregisters verbunden sind, die Decimation in der
Frequenzschaltung eine Einrichtung aufweist, um ein Paar von
N/2-3itwörtern von jedem N-Bitwort zu schaffen, das von dem
Halteregister empfangen wird,
die verteilte arithmetische Schaltung weiterhin N RACs
(17) aufweist, von denen jede eines mehrere Read Only
Speicher ROMs (37) plus einen Akkumulator (39, 41) aufweisen,
wobei die RACs mit dem Ausgang der Dezimation in der
Frequenzschaltung verbunden sind, und
ein Ausgangsregister (19), von dem jedes seiner Stufen
mit dem entsprechenden Akkumulator von jedem der RACs
verbunden hat, das Ausgangsregister eine Einrichtung zum Empfang
der inneren Vektorprodukte von den Akkumulatoren in
bit-parallelem Format und eine Einrichtung, um die inneren Produkte
in bit-seriellem Format auszugeben, aufweist.
6. DCT-Prozessor nach Anspruch 5, worin jeder der RACs mit
einer Partialsummeneinrichtung versehen ist, worin jeder RAC
zwei oder mehrere ROMs (45, 47) aufweist, von denen jedes
durch einen verschiedenen Teil des einen oder des anderen der
N/2-Bitwörter adressiert wird, die von der Dezimation des
Frequenzschaltkreises empfangen werdend jedes RAC weiterhin
eine Einrichtung (49) zur Addition der Wörter, die von den
zwei oder mehreren ROMs durch die verschiedenen Anteile der
N/2-Bitwörter wiedergewonnen werden, und eine Einrichtung
aufweist, um die resultierenden addierten Wörter an dem zu
dem RAC zugeordneten Akkumulator anzulegen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/029,761 US4791598A (en) | 1987-03-24 | 1987-03-24 | Two-dimensional discrete cosine transform processor |
PCT/US1987/003347 WO1988007725A1 (en) | 1987-03-24 | 1987-12-15 | Two-dimensional discrete cosine transform processor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3789116D1 DE3789116D1 (de) | 1994-03-24 |
DE3789116T2 true DE3789116T2 (de) | 1994-10-06 |
Family
ID=21850746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3789116T Expired - Fee Related DE3789116T2 (de) | 1987-03-24 | 1987-12-15 | Prozessor zur zweidimensionalen diskreten cosinustransformation. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4791598A (de) |
EP (1) | EP0353223B1 (de) |
JP (1) | JPH02501601A (de) |
CA (1) | CA1290854C (de) |
DE (1) | DE3789116T2 (de) |
WO (1) | WO1988007725A1 (de) |
Families Citing this family (104)
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 |
NL8700845A (nl) * | 1987-04-10 | 1988-11-01 | Philips Nv | Een-dimensionale lineaire beeldtransformator. |
FR2617621B1 (fr) * | 1987-07-03 | 1989-12-01 | Thomson Semiconducteurs | Memoire de transposition pour circuit de traitement de donnees |
JPH0795320B2 (ja) * | 1988-10-11 | 1995-10-11 | 日本電子株式会社 | 大容量高速フーリエ変換装置 |
IT8921420V0 (it) * | 1989-07-13 | 1989-07-13 | Telettra Spa | Sistema e circuito per il calcolo di trasformata discreta bidimensionale. |
US5299025A (en) * | 1989-10-18 | 1994-03-29 | Ricoh Company, Ltd. | Method of coding two-dimensional data by fast cosine transform and method of decoding compressed data by inverse fast cosine transform |
US5053985A (en) * | 1989-10-19 | 1991-10-01 | Zoran Corporation | Recycling dct/idct integrated circuit apparatus using a single multiplier/accumulator and a single random access memory |
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 | 日本電気株式会社 | ディジタル信号処理装置 |
US5191548A (en) * | 1990-03-14 | 1993-03-02 | C-Cube Microsystems | System for compression and decompression of video data using discrete cosine transform and coding techniques |
US5128754A (en) * | 1990-03-30 | 1992-07-07 | New York Institute Of Technology | Apparatus and method for encoding and decoding video |
US5319724A (en) * | 1990-04-19 | 1994-06-07 | Ricoh Corporation | Apparatus and method for compressing still images |
US5126962A (en) * | 1990-07-11 | 1992-06-30 | Massachusetts Institute Of Technology | Discrete cosine transform processing system |
US5196930A (en) * | 1990-07-20 | 1993-03-23 | Matsushita Electric Industrial Co., Ltd. | High efficienccy coding and decoding apparatus for lowering transmission or recording rate of transmitted or recorded video signal without reducing picture quality |
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 |
US5933538A (en) * | 1990-07-31 | 1999-08-03 | Fujitsu Limited | Image data processing method and apparatus |
US7142720B1 (en) * | 1990-07-31 | 2006-11-28 | Fujitsu Limited | Image data processing method and apparatus |
JP2646844B2 (ja) * | 1990-11-16 | 1997-08-27 | 日本電気株式会社 | 離散コサイン変換装置 |
JPH04242860A (ja) * | 1990-12-28 | 1992-08-31 | Sony Corp | 演算装置 |
JPH04236664A (ja) * | 1991-01-18 | 1992-08-25 | Sony Corp | 演算回路 |
JP2964172B2 (ja) * | 1991-03-08 | 1999-10-18 | 富士通株式会社 | Dctマトリクス演算回路 |
JP2866754B2 (ja) * | 1991-03-27 | 1999-03-08 | 三菱電機株式会社 | 演算処理装置 |
FR2681962B1 (fr) * | 1991-09-30 | 1993-12-24 | Sgs Thomson Microelectronics Sa | Procede et circuit de traitement de donnees par transformee cosinus. |
US5285402A (en) * | 1991-11-22 | 1994-02-08 | Intel Corporation | Multiplyless discrete cosine transform |
US5361220A (en) * | 1991-11-29 | 1994-11-01 | Fuji Photo Film Co., Ltd. | Discrete cosine transformation with reduced components |
US5410500A (en) * | 1992-02-21 | 1995-04-25 | Sony Corporation | Discrete cosine transform apparatus and inverse discrete cosine transform apparatus |
US5528736A (en) * | 1992-04-28 | 1996-06-18 | Polytechnic University | Apparatus and method for performing a two-dimensional block data transform without transposition |
US5394349A (en) * | 1992-07-10 | 1995-02-28 | Xing Technology Corporation | Fast inverse discrete transform using subwords for decompression of information |
KR940004467A (ko) * | 1992-08-26 | 1994-03-15 | 오오가 노리오 | 이산코사인 변환장치 및 그 역변환장치 |
US5654910A (en) * | 1992-08-26 | 1997-08-05 | Sony Corporation | Processing method and apparatus for performing 4 ×4 discrete cosine transformation or inverse discrete cosing transformation |
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 |
JPH06103301A (ja) * | 1992-09-17 | 1994-04-15 | Sony Corp | 8x8離散コサイン変換回路および8x8離散コサイン逆変換回路 |
US5523847A (en) * | 1992-10-09 | 1996-06-04 | International Business Machines Corporation | Digital image processor for color image compression |
JPH06149862A (ja) * | 1992-11-13 | 1994-05-31 | Sony Corp | 行列データ乗算方法及び行列データ乗算装置 |
KR950000386B1 (ko) * | 1992-12-30 | 1995-01-16 | 재단법인 한국전자통신연구소 | 이산여현 변환회로 |
US6002809A (en) * | 1993-04-15 | 1999-12-14 | International Business Machines Corporation | Digital image processor for image scaling |
US5345408A (en) * | 1993-04-19 | 1994-09-06 | Gi Corporation | Inverse discrete cosine transform processor |
US5572691A (en) * | 1993-04-21 | 1996-11-05 | Gi Corporation | Apparatus and method for providing multiple data streams from stored data using dual memory buffers |
US5483475A (en) * | 1993-09-15 | 1996-01-09 | Industrial Technology Research Institute | Fast pipelined 2-D discrete cosine transform architecture |
US5638068A (en) * | 1993-11-24 | 1997-06-10 | Intel Corporation | Processing images using two-dimensional forward transforms |
JPH07152730A (ja) * | 1993-11-30 | 1995-06-16 | Toshiba Corp | 離散コサイン変換装置 |
JP2677969B2 (ja) * | 1993-12-27 | 1997-11-17 | 松下電器産業株式会社 | 直交変換装置 |
US5583803A (en) * | 1993-12-27 | 1996-12-10 | Matsushita Electric Industrial Co., Ltd. | Two-dimensional orthogonal transform processor |
KR0130446B1 (ko) * | 1994-01-18 | 1998-04-15 | 배순훈 | 이차원 역이산코사인 변환방법 및 장치 |
US5481487A (en) * | 1994-01-28 | 1996-01-02 | Industrial Technology Research Institute | Transpose memory for DCT/IDCT circuit |
JP3133601B2 (ja) * | 1994-02-09 | 2001-02-13 | 株式会社東芝 | パラレル・シリアル変換装置及びこれを用いた線形変換装置 |
US5729484A (en) * | 1994-02-28 | 1998-03-17 | Intel Corporation | Processes, apparatuses, and systems of encoding and decoding signals using transforms |
KR0150350B1 (ko) * | 1994-05-10 | 1998-10-15 | 모리시다 요이치 | 직교변환 프로세서 |
TW284869B (de) | 1994-05-27 | 1996-09-01 | Hitachi Ltd | |
KR100357338B1 (ko) * | 1994-08-02 | 2003-02-11 | 가부시끼가이샤 히다치 세이사꾸쇼 | 데이타처리시스템 |
US5574798A (en) * | 1994-08-03 | 1996-11-12 | International Business Machines Corporation | Visual presentation system which determines length of time to present each slide or transparency |
JP4035789B2 (ja) * | 1994-10-13 | 2008-01-23 | 富士通株式会社 | 逆離散コサイン変換装置 |
US5717468A (en) * | 1994-12-02 | 1998-02-10 | International Business Machines Corporation | System and method for dynamically recording and displaying comments for a video movie |
US5623423A (en) * | 1994-12-12 | 1997-04-22 | Univ. Of Texas | Apparatus and method for video decoding |
JPH08186723A (ja) * | 1994-12-28 | 1996-07-16 | Ricoh Co Ltd | 画像処理装置用エンコーダ |
GB2302421B (en) * | 1995-03-18 | 1999-11-03 | United Microelectronics Corp | Apparatus for two-dimensional inverse discrete cosine transform |
GB2301203B (en) * | 1995-03-18 | 2000-01-12 | United Microelectronics Corp | Real time two dimensional discrete cosine transform/inverse discrete cosine transform circuit |
US5668748A (en) * | 1995-04-15 | 1997-09-16 | United Microelectronics Corporation | Apparatus for two-dimensional discrete cosine transform |
US5610849A (en) * | 1995-06-23 | 1997-03-11 | United Microelectronics Corporation | Real time two-dimensional discrete cosine transform/inverse discrete cosine transform circuit |
JPH0981541A (ja) * | 1995-09-12 | 1997-03-28 | Matsushita Electric Ind Co Ltd | 累算器 |
US5729691A (en) * | 1995-09-29 | 1998-03-17 | Intel Corporation | Two-stage transform for video signals |
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 |
US5959690A (en) * | 1996-02-20 | 1999-09-28 | Sas Institute, Inc. | Method and apparatus for transitions and other special effects in digital motion video |
US5764553A (en) * | 1996-02-28 | 1998-06-09 | Lsi Logic Corporation | Generalized data processing path for performing transformation and quantization functions for video encoder systems |
US5999958A (en) * | 1996-04-24 | 1999-12-07 | National Science Council | Device for computing discrete cosine transform and inverse discrete cosine transform |
US5894430A (en) * | 1996-05-20 | 1999-04-13 | Matsushita Electric Industrial Co., Ltd. | Orthogonal transform processor |
US5949920A (en) * | 1996-08-13 | 1999-09-07 | Hewlett-Packard Co. | Reconfigurable convolver circuit |
US6819783B2 (en) | 1996-09-04 | 2004-11-16 | Centerframe, Llc | Obtaining person-specific images in a public venue |
US6044176A (en) * | 1996-11-12 | 2000-03-28 | Samsung Electronics Co., Ltd. | Method of performing inverse discrete cosine transform |
JPH10207868A (ja) * | 1997-01-21 | 1998-08-07 | Sharp Corp | 2次元配列転置回路 |
CN1268135C (zh) * | 1997-03-12 | 2006-08-02 | 松下电器产业株式会社 | 编码方法、编码装置和记录媒体、以及解码方法、解码装置和记录媒体 |
AUPO648397A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US6311258B1 (en) | 1997-04-03 | 2001-10-30 | Canon Kabushiki Kaisha | Data buffer apparatus and method for storing graphical data using data encoders and decoders |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6707463B1 (en) | 1997-04-30 | 2004-03-16 | Canon Kabushiki Kaisha | Data normalization technique |
US6349379B2 (en) | 1997-04-30 | 2002-02-19 | Canon Kabushiki Kaisha | System for executing instructions having flag for indicating direct or indirect specification of a length of operand data |
US6259456B1 (en) | 1997-04-30 | 2001-07-10 | Canon Kabushiki Kaisha | Data normalization techniques |
AUPO647997A0 (en) * | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
JP3586427B2 (ja) * | 1998-12-14 | 2004-11-10 | 松下電器産業株式会社 | Dct演算装置 |
KR100313217B1 (ko) * | 1998-12-23 | 2001-12-28 | 서평원 | 파이프라인dct장치 |
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 |
US6901422B1 (en) | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US6870885B2 (en) | 2001-05-16 | 2005-03-22 | Qualcomm Incorporated | Apparatus and method for decoding and computing a discrete cosine transform using a butterfly processor |
US6996595B2 (en) * | 2001-05-16 | 2006-02-07 | Qualcomm Incorporated | Apparatus and method for consolidating output data from a plurality of processors |
TWI220716B (en) * | 2003-05-19 | 2004-09-01 | Ind Tech Res Inst | Method and apparatus of constructing a hardware architecture for transfer functions |
US7756351B2 (en) * | 2003-12-19 | 2010-07-13 | Stmicroelectronics, Inc. | Low power, high performance transform coprocessor for video compression |
KR100754167B1 (ko) * | 2004-10-06 | 2007-09-03 | 삼성전자주식회사 | 다양한 크기의 블록에 대한 변환/역변환 방법 및 그 장치 |
US7730116B2 (en) * | 2004-12-14 | 2010-06-01 | Stmicroelectronics, Inc. | Method and system for fast implementation of an approximation of a discrete cosine transform |
US8081830B2 (en) * | 2005-01-11 | 2011-12-20 | Hewlett-Packard Development Company, L.P. | Enhancement of digital images |
US8406481B2 (en) | 2005-02-25 | 2013-03-26 | Hysterical Sunset Limited | Automated indexing for distributing event photography |
US20070009166A1 (en) * | 2005-07-05 | 2007-01-11 | Ju Chi-Cheng | Scalable system for discrete cosine transform and method thereof |
US8306284B2 (en) | 2005-07-18 | 2012-11-06 | Hysterical Sunset Limited | Manually-assisted automated indexing of images using facial recognition |
US8332281B2 (en) | 2009-09-02 | 2012-12-11 | Image Holdings | Method of displaying, managing and selling images in an event photography environment |
CA2774353C (en) | 2009-09-16 | 2016-01-26 | Image Holdings | Method and system of displaying, managing and selling images in an event photography environment |
US10356440B2 (en) * | 2014-10-01 | 2019-07-16 | Qualcomm Incorporated | Scalable transform hardware architecture with improved transpose buffer |
US9716852B2 (en) * | 2015-04-03 | 2017-07-25 | Semiconductor Energy Laboratory Co., Ltd. | Broadcast system |
US10482155B2 (en) * | 2016-12-30 | 2019-11-19 | Intel Corporation | Winograd algorithm on a matrix processing architecture |
CN115425988B (zh) * | 2022-07-29 | 2024-02-09 | 北京融为科技有限公司 | 一种高速ldpc全模式列变换方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
GB2091526B (en) * | 1981-01-13 | 1985-10-02 | Harris Corp | Digital map generator and display system |
US4449194A (en) * | 1981-09-25 | 1984-05-15 | Motorola Inc. | Multiple point, discrete cosine processor |
US4541012A (en) * | 1982-01-04 | 1985-09-10 | Compression Labs, Inc. | Video bandwidth reduction system employing interframe block differencing and transform domain coding |
FR2561010B1 (fr) * | 1984-03-09 | 1986-09-12 | Cit Alcatel | Processeur de calcul d'une transformee discrete du cosinus |
-
1987
- 1987-03-24 US US07/029,761 patent/US4791598A/en not_active Expired - Lifetime
- 1987-12-15 JP JP63501201A patent/JPH02501601A/ja active Granted
- 1987-12-15 DE DE3789116T patent/DE3789116T2/de not_active Expired - Fee Related
- 1987-12-15 WO PCT/US1987/003347 patent/WO1988007725A1/en active IP Right Grant
-
1988
- 1988-03-23 CA CA000562276A patent/CA1290854C/en not_active Expired - Lifetime
- 1988-10-18 EP EP88900977A patent/EP0353223B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CA1290854C (en) | 1991-10-15 |
US4791598A (en) | 1988-12-13 |
JPH0526229B2 (de) | 1993-04-15 |
WO1988007725A1 (en) | 1988-10-06 |
JPH02501601A (ja) | 1990-05-31 |
EP0353223A1 (de) | 1990-02-07 |
EP0353223B1 (de) | 1994-02-16 |
DE3789116D1 (de) | 1994-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3789116T2 (de) | Prozessor zur zweidimensionalen diskreten cosinustransformation. | |
DE3875979T2 (de) | Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten. | |
DE69031674T2 (de) | Verfahren und Schaltungsanordnung zur zweidimensionalen diskreten Transformation | |
DE3750017T2 (de) | Prozessor für orthogonale Transformation. | |
DE3750791T2 (de) | Sehr schnelle Transformationsvorrichtung. | |
DE69435034T2 (de) | Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform | |
DE2625973C3 (de) | Verfahren und Anordnung zur redundanzvermindernden Transformation von Bildern | |
DE69520974T2 (de) | Eine integrierte Halbleiterschaltung | |
DE69425847T2 (de) | Rechner für die inverse diskrete Cosinus-Transformation | |
DE69522380T2 (de) | Parallel-Verarbeitungsarchitektur für Bildverarbeitung | |
DE2640140C2 (de) | Verfahren und Anordnung zur redundanzvermindernden Bildcodierung | |
DE3687430T2 (de) | Schnelle rechnerschaltung fuer die direkte oder umgekehrte cosinustransformation eines diskreten signals. | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
DE3632639C2 (de) | Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung | |
DE4038240A1 (de) | Prozessor zum durchfuehren einer orthogonaltransformation | |
DE69329962T2 (de) | System und Verfahren für die diskrete Cosinus-Transformation und für die inverse diskrete Cosinus-Transformation mit einfacher Struktur und mit hoher Betriebsgeschwindigkeit | |
DE69116854T2 (de) | Digitales fehlerdiffusionsverfahren mit hoher geschwindigkeit zur umsetzung eines kontinuierlichen -in ein binäres- bild | |
DE102010048485A1 (de) | Textureinheit zur Universalberechnung | |
DE102019126719A1 (de) | Energieeffiziente Speichersysteme und Verfahren | |
DE1549584A1 (de) | Datenverarbeiter zum Erhalt komplexer Fourierreihe-Koeffizienten | |
DE4234985C2 (de) | Verfahren zum Transformieren von Farbsignalen und Vorrichtung zur Durchführung des Verfahrens | |
DE19504089A1 (de) | Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren | |
DE4345029C2 (de) | Schaltkreis für diskrete Kosinustransformation | |
DE69025182T2 (de) | Digitaler prozessor für zweierkomplementberechnungen | |
DE69424790T2 (de) | Prozessor für schnelle Fourier-Transformation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: TELCORDIA TECHNOLOGIES, INC., MORRISTOWN, N.J., US |