DE3851230T2 - Steuergerät für gespeicherte programme mit einer möglichkeit für bedingte abzweigung wie in einem videosignalverarbeitungssystem. - Google Patents

Steuergerät für gespeicherte programme mit einer möglichkeit für bedingte abzweigung wie in einem videosignalverarbeitungssystem.

Info

Publication number
DE3851230T2
DE3851230T2 DE3851230T DE3851230T DE3851230T2 DE 3851230 T2 DE3851230 T2 DE 3851230T2 DE 3851230 T DE3851230 T DE 3851230T DE 3851230 T DE3851230 T DE 3851230T DE 3851230 T2 DE3851230 T2 DE 3851230T2
Authority
DE
Germany
Prior art keywords
value
register
signal
circuit
bit
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
DE3851230T
Other languages
English (en)
Other versions
DE3851230D1 (de
Inventor
Kevin Harney
Allen Simon
David Sprague
Herbert Taylor
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE3851230D1 publication Critical patent/DE3851230D1/de
Application granted granted Critical
Publication of DE3851230T2 publication Critical patent/DE3851230T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • G06F9/267Microinstruction selection based on results of processing by instruction selection on output of storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Studio Circuits (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Steuereinrichtung für ein gespeichertes Programm mit einer Ausrüstung zu bedingter Verzweigung, konstruiert für Betrieb mit hoher Geschwindigkeit und somit geeignet zur Verwendung in einem Realzeit-Videosignalprozessor.
  • In den letzten Jahren hat es einen beträchtlichen Fortschritt auf dem Gebiet der Videosignal-Kompression gegeben. Es sind einige Verfahren entwickelt worden, um die Redundanz in digital codierten Videosignalen zu reduzieren und dadurch ihre Übertragung oder Speicherung zu erleichtern. In der vorliegenden Anmeldung sind drei Verfahren von besonderem Interesse, die nachstehend als absolute Codierung, relative Codierung und Differenz-Pulscodemodulations-Codierung (DPCM) bezeichnet sind. Diese Videokompressionstechniken werden im folgenden beschrieben.
  • Ein absolut-codiertes Bild wird entwickelt, indem ein Bild in eine Vielzahl aneinandergrenzender Segmente unterteilt wird und dann jedem Segment ein Füllwert zugeordnet wird. Dieser Füllwert kann ein fester Leuchtdichte- und/oder Farbartwert sein oder es kann sich um einen Wert handeln, der sich von Pixel zu Pixel als Funktion des Ortes des Pixels innerhalb des Segmentes ändert. Wenn ein absolut-codiertes Bild decodiert und wiedergegeben wird, ist das Ergebnis ein Mosaik, das sich aus den rekonstruierten Segmenten zusammensetzt.
  • Die Technik der absoluten Codierung liefert eine Vielzahl von Datensätzen, deren jeder ein anderes Segment des Originalbildes beschreibt. Jeder dieser Sätze enthält mehrere Felder, wobei jedes Feld ein oder mehr Binärwörter enthält. Ein beispielgebender Satz aus einem absolut-codierten Bild ist in Fig. 1A gezeigt. Dieser Satz enthält zwei Einbyte-Felder x POS und Y POS, welche die horizontale bzw. vertikale Position des Pixels in der oberen linken Ecke eines Segmentes angeben. Der Satz enthält ferner ein Einbyte-Feld W und ein Einbyte- Feld H, welche die Anzahl der Pixel, die das Segment definieren, in der horizontalen bzw. vertikalen Richtung angeben. Die letzten drei Felder A, B und C im Absolutcode- Satz bestimmen, wie das Segment gefüllt wird. Diese Werte sind die Koeffizienten einer bilinearen Gleichung (1), welche beschreibt, wie der Wert eines speziellen Pixels bestimmt ist.
  • PV = AX + BY + C (1)
  • In der Gleichung (1) ist C ein Einbyte-Wert, der z. B. den Leuchtdichtepegel in der linken oberen Ecke des Segmentes darstellt. A und B sind jeweils Zweibyte-Werte, welche die Beträge darstellen, um die sich der Leuchtdichtewert zwischen aufeinanderfolgenden Pixeln in der horizontalen bzw. der vertikalen Richtung ändert. X und Y sind Werte, welche die Position des Pixels innerhalb des Segmentes relativ zur oberen linken Ecke des Segmentes angeben. Bei diesem Beispiel eines Absolutcode-Satzes ist angenommen, daß für jede Leuchtdichteinformations- und/oder Farbinformations- Signalkomponente des Videosignals gesonderte Gruppen von Sätzen vorhanden sind und daß alle Segmente rechteckig sind. Ein allgemeineres Beispiel eines Systems für absolute Codierung findet sich in einem Artikel von M. Kocher und R. Leonardi mit dem Titel "Adaptive Region Growing Technique Using Polynomial Functions For Image Approximation", Signal Processing (Niederlande), Band 11, Nr. 1, Juli 1986, Seiten 47-60, auf den hier verwiesen wird.
  • Das zweite oben genannte Kompressionsverfahren für Videosignale, die relative Codierung, arbeitet mit Unterteilung des Bildes in aneinandergrenzende Segmente, die vermittels entsprechender Segmente aus dem vorherigen Bild einer Mehrbildfolge definiert werden. Dieses Codierverfahren eignet sich für eine Gruppe von Video-Teilbildern, die Videoinformation mit voller Bewegung darstellen. Ein unter Anwendung dieses Verfahrens codiertes Bild wird durch eine Vielzahl von Datensätzen dargestellt. Ein beispielgebender Datensatz ist in Fig. 1B gezeigt. Die Felder X POS, Y POS, W und H sind die gleichen wie bei dem Datensatz der Absolutcodierung. Die beiden Einbyte-Felder ΔX und ΔY zeigen die Pixelverschiebung in der horizontalen bzw. der vertikalen Richtung des Segmentes im laufenden Video-Teilbild relativ zum entsprechenden Segment im vorangegangenen Video-Teilbild an. Diese Verschiebungswerte können angegeben werden in Einheiten eines Bruchteils des Abstandes zwischen benachbarten Pixeln im wiedergegebenen Bild.
  • Die Felder A, B und C im Relativcode-Datensatz sind ähnlich wie die entsprechenden Felder im Absolutcode-Datensatz. Diese Werte werden benutzt als die Koeffizienten der bilinearen Gleichung (1), um Werte zu entwickeln, die mit den Pixelwerten im Segment addiert werden.
  • Das Datensatzformat für relativ-codierte Bilder setzt außerdem voraus, daß die Segmente rechteckig sind und daß durch einen gegebenen Datensatz nur eine der Leuchtdichte- und Farbartkomponenten eines Bildes beschrieben wird. Eine allgemeine Beschreibung der Komplexitäten relativer Codierung findet sich in einem Artikel von S. Brofferio und F. Rocca mit dem Titel "Interframe Redundancy of Video Signal Generated by Translating Objects", IEEE Transactions on Communications, April 1977, Seiten 448-455, auf den hiermit verwiesen wird.
  • Das oben genannte dritte Codierverfahren, also die DPCM- Codierung, beschreibt allgemein gesagt jedes Pixel in einem Bild als die Summe eines vorhergesagten Pixelwertes und eines Differenz-Pixelwertes. Dieses Verfahren wird auf Segmente in einem Bild angewandt, die sich nicht leicht durch Sätze des absoluten oder relativen Codes beschreiben lassen. Ein Beispiel für einen DPCM-Datensatz ist in Fig. 1C gezeigt. Die Felder X POS, Y POS, W und H für diesen Datensatz sind die gleichen wie bei den oben beschriebenen Absolutcode- und Relativcode-Datensätzen. Der Rest des Datensatzes des DPCM- Codes ist eine Reihe von N Bytes, wobei N das Produkt der in den Feldern W und H gehaltenen Werte ist. Das erste dieser N Bytes, nämlich das Byte DP&sub0; ist ein Differenzwert, der unter Addition mit einem festen Vorhersagewert von z. B. 128 den Pixelwert in der oberen linken Ecke des Segmentes ergibt. Das nächste Byte DP&sub1; ist ein Differenzwert, der unter Addition mit der Summe 128 + DP&sub0; den nächstfolgenden Pixelwert in der oberen Zeile des Segmentes ergibt. In ähnlicher Weise ist der Wert DP&sub2; ein Differenzwert, der unter Addition mit der akkumulierten Summe von 128, DP&sub0; und DP&sub1; den dritten Pixelwert in der oberen Zeile des Segmentes ergibt. Die aufeinanderfolgenden Werte im DCPM-Codedatensatz beschreiben jeweils einen Pixelwert als die Akkumulation der vorherigen Werte im Datensatz. Ein Beispiel für ein Videosignal-Kompressionssystem, welches die DPCM-Codiertechnik verwendet, findet sich im US-Patent 41 25 861 mit dem Titel "Video Signal Encoding", auf das hiermit verwiesen wird.
  • Würden die DPCM-Daten in der in Fig. 1C gezeigten Weise gespeichert oder übertragen werden, dann gäbe es wenig oder keinen Vorteil zur Verwendung der DPCM-Codiertechnik, da jeder der Werte, der einen Pixel beschreibt, ein Datenbyte belegt, genauso wie ein nicht-codierter Pixelwert. Jedoch ist, wie im angeführten Patent 41 25 861 beschrieben, die Häufigkeit des Auftretens codierter Bytes relativ kleinen Wertes viel größer als die Häufigkeit des Auftretens codierter Bytes relativ großen Wertes. Diese ungleiche Verteilung der codierten Bytes wird bei dem angeführten Patent ausgenutzt, um den Videodatenstrom weiter zu komprimieren, indem man die Abtastwerte kleineren Wertes mit weniger Bits codiert als die Abtastwerte größeren Wertes. Längenvariable statistische Codierer, welche diese Art der Kompression durchführen, sind in der Technik bekannt. Ein Algorithmus zur Erzeugung eines Codes dieses Typs, eines Huffman-Codes, ist in einem Abschnitt eines Buches von N. Abramson mit dem Titel "Information Theory and Coding" beschrieben, McGraw Hill, 1963, Seiten 77-85, auf das hier verwiesen wird.
  • Jedes der oben beschriebenen Codierverfahren funktioniert bei einigen Arten von Videoinformation gut und bei anderen schlecht. Die Technik der absoluten Codierung ist am besten für stillstehende Bilder oder für das erste Video-Teilbild einer Bewegungssequenz, wenn das zu codierende Bild relativ große Flächen gleichmäßiger oder sich linear ändernder Leuchtdichte- oder Farbartinformation enthält. Die Technik der relativen Codierung ist am besten für das zweite und die nachfolgenden Video-Teilbilder einer Bewegungssequenz. Die DPCM-Codiertechnik ist am besten für Bilder, die Bereiche feindetaillierter Information enthalten.
  • Da es verschiedenen Arten von Videoinformation sind, die von diesen Codes jeweils effizient dargestellt werden, kann es erwünscht sein, für die Darstellung eines einzigen Videobildes zwei oder mehr der Codes zu kombinieren. Beispielsweise würde die Kombination von Absolut-Codierung und DPCM-Codierung eine kompakte Darstellung eines Bildes ergeben, das sowohl geringe als auch hohe Grade an Feinheit enthält. Für bewegte Sequenzen kann es außerdem erwünscht sein, Teile des Bildes unter Anwendung der Relativ-Codiertechniken darzustellen. Wie in den Fig. 1A, 1B und 1C gezeigt, können diese drei Codierverfahren so zugeschnitten werden, daß man kompatible Datensatzformate bekommt.
  • Bei einer solchen Codierung wäre es allerdings wünschenswert, das Bild schnell decodieren zu können, so daß sich die reproduzierten Bilder mit natürlicher Feinheit und Bewegung wiedergeben lassen.
  • Die zur Decodierung eines codiertern Bildes dieses Typs verwendete Schaltungsanordnung sollte zweckmäßigerweise verschiedene Verarbeitungselemente enthalten, die in der Lage sind, unter Steuerung durch eine Steuereinrichtung für gespeichertes Programm im Zusammenspiel zu arbeiten. Ein Typ einer Steuereinrichtung für gespeichertes Programm, die in einer Mikrocode-Folgesteuerschaltung verwendet werden kann, findet sich in vielen üblichen integrierten Mikroprozessorschaltungen. Eine allgemeine Diskussion der Konstruktion von Mikrocode-Folgesteuerschaltungen findet sich in einem Buch von H. W. Gschwind mit dem Titel Design of Digital Computers An Introduction, Springer-Verlag, 1967, Seiten 379-387, auf das hiermit verwiesen wird. Wie in dieser Diskussion beschrieben, ist die Implementierung einer Operation bedingter Verzweigung ein wichtiger Gesichtspunkt bei der Konstruktion einer Mikrocode-Folgesteuerschaltung.
  • Eine bedingte Verzweigungsoperation bewirkt eine Änderung in der Folge von Mikrocode-Befehlen, die von der Mikrocode- Folgesteuerschaltung vorgesehen wird in Ansprache auf das Eintreten einer speziellen Bedingung in der Verarbeitungsschaltung außerhalb der Mikrocode-Folgesteuerschaltung. Eine solche Bedingung kann z. B. sein, daß der in einem bestimmten Register gehaltene Wert gleich null ist. Wenn beim Aufruf der Operation bedingter Verzweigung die angegebene Bedingung erfüllt ist, wird von der Mikrocode-Folgesteuerschaltung die eine Folge von Mikrocode-Befehlen vorgesehen. Ist die Bedingung nicht erfüllt, wird eine andere eigene Folge von Befehlen vorgesehen.
  • In einem Videosignalprozessor, der codierte Daten wie die oben beschriebenen verarbeitet, um in Realzeit ein vollbewegtes Bild zu produzieren, ist die Geschwindigkeit des Decodierungsprozessors ein wichtiger Gesichtspunkt. Die Ausführung der Operation bedingter Verzweigung kann das Leistungsvermögen des Decodierungsprozessors wesentlich beeinträchtigen. Beispielsweise kann jede der im obengenannten Buch beschriebenen bedingungsabhängigen Verzweigungsoperationen so viel wie einen Extra-Befehlszyklus erfordern, wenn der erste Befehl in einer der alternativen Befehlsfolgen nicht der nächste planmäßig vorzusehende Befehl ist. In diesen Fall kann der zusätzliche Befehlszyklus notwendig sein, um einen neuen Adressenwert für den die Mikrocode-Befehle enthaltenden RAM- Speicher einzustellen und den Zielbefehl zu lesen.
  • Eine Steuereinrichtung für ein gespeichertes Programm zur Implementierung einer Operation bedingter Verzweigung ist im IBM Technical Disclosure Bulletin Vol. 29, Nr. 2, Seiten 727- 728 beschrieben. Dort speichert ein Paar von Nur-Lese- Speichern Paare von Befehlen parallel. Eine Wähleinrichtung empfängt die Ausgangswerte der beiden Speicher und liefert, abhängig von Verzweigungsbedingungen, einen Befehl eines Paars an ein Register, auf den es am Ende eines Maschinenzyklus verriegelt wird. Der Befehl wird dann zu einem zweiten Register geleitet, das ihn zu einem Datenprozessor gibt. Falls der Befehl am Beginn eines Maschinenzyklus, d. h. unmittelbar nach seiner Verriegelung im ersten Register, zum zweiten Register geleitet wird, kann er eventuell keine Zeit zu seiner Stabilisierung im ersten Register haben, und in den Bits des Befehls können Fehler erscheinen.
  • Es wäre wünschenswert, eine Steuereinrichtung für ein gespeichertes Programm vorzusehen, die keinen wesentlichen Zeitnachteil hat, weder für das eine noch für das andere Ergebnis der bedingten Verzweigung.
  • Gemäß den Prinzipien der vorliegenden Erfindung, die in den angefügten Patentansprüchen beschrieben sind, wird eine Steuereinrichtung für ein gespeichertes Programm eines Datenverarbeitungssystems vorgesehen. Die Steuereinrichtung für gespeichertes Programm enthält einen adressierbaren Speicher zum Speichern einer Vielzahl von Befehlswerten und eine Befehls-Decodierer, der in Ansprache auf vom besagten Speicher gelieferte Befehlswerte eine Verarbeitungsschaltung im Datenverarbeitungssystem steuert. In Ansprache auf einen Adressenwert, der von der Befehls-Decodierschaltung geliefert wird, werden durch eine Schaltungsanordnung, die interner Bestandteil der Steuereinrichtung für gespeichertes Programm ist, zwei Befehlswerte aus dem Speicher ausgelesen. Wenn der in der Befehls-Decodierschaltung gehaltene Befehl eine Operation bedingter Verzweigung befielt, bestimmt der Wert einer Bedingung, die in einer gegenüber der Steuereinrichtung für gespeichertes Programm externen Verarbeitungsschaltung herrscht, welcher der der beiden aus dem Speicher gelesenen Befehle der Befehl ist, der an die Decodierschaltung gelegt wird.
  • Fig. 1A, 1B und 1C, auf die oben Bezug genommen wurde, sind Diagramme, welche die Datenformate von Datensätzen zeigen, die durch drei Datenkompressionsverfahren erzeugt werden.
  • Fig. 2 ist ein Blockschaltbild einer Videosignal- Verarbeitungsschaltung, die eine Ausführungsform der vorliegenden Erfindung enthält.
  • Fig. 3A ist ein Blockschaltbild einer die vorliegende Erfindung verkörpernden Schaltungsanordnung, die als Mikrocode-RAM- und Folgesteuerschaltung der Videosignal- Verarbeitungsschaltung nach Fig. 2 verwendet werden kann.
  • Fig. 3B ist ein Zeitdiagramm, das die Signalamplituden als Funktion der Zeit für mehrere Signale zeigt, nützlich zur Erläuterung der Arbeitsweise der Schaltung nach Fig. 3A.
  • Fig. 3C ist ein Diagramm des Datenformates eines Mikrocode- Steuerwortes für die Mikrocode-RAM- und Folgesteuerschaltung, die in der Schaltungsanordnung nach Fig. 2 verwendet werden.
  • Fig. 4A ist ein Blockschaltbild der Arithmetik- und Logikeinheit, die bei der in Fig. 2 gezeigten Ausführungsform der Erfindung verwendet wird.
  • Fig. 4B ist ein teilweises Blockschaltbild der Arithmetik- und Logikschaltung nach Fig. 4A.
  • Fig. 5 ist ein Blockschaltbild der Datenwegschaltung, die bei der in Fig. 2 gezeigten Ausführungsform der Erfindung verwendet wird.
  • Fig. 6 ist ein Blockschaltbild der Daten-RAM-Schaltung, die bei der in Fig. 2 gezeigten Ausführungsform der Erfindung verwendet wird.
  • Fig. 7A, 7B, 7C, 7D und 7E sind Zeitdiagramme, die nützlich zur Erläuterung der Arbeitsweise der in Fig. 6 gezeigten Daten-RAM-Schaltung sind.
  • Fig. 8A ist ein Blockschaltbild des Pixelinterpolators, der bei der in Fig. 2 gezeigten Ausführungsform der Erfindung verwendet wird.
  • Fig. 8B ist ein Blockschaltbild des Multiplizierers, der im Pixelinterpolator nach Fig. 8A verwendet wird.
  • Fig. 9A, 9B, 9C, 9D, 9E und 9F sind Diagramme, die hilfreich zur Erläuterung der Arbeitsweise des in Fig. 8 dargestellten Pixelinterpolators sind.
  • Fig. 10A ist ein Blockschaltbild eines statistischen Decoders, der sich zur Verwendung in der Videosignal- Verarbeitungsschaltung nach Fig. 2 eignet.
  • Fig. 10B ist ein Zeitdiagramm, das hilfreich ist zum Verständnis der Arbeitsweise der in Fig. 10A gezeigten Schaltungsanordnung.
  • Fig. 11A ist ein Blockschaltbild einer FIFO-Eingangsschaltung, die sich zur Verwendung in der Videosignal- Verarbeitungsschaltung nach Fig. 2 eignet.
  • Fig. 11B ist ein Zeitdiagramm, das nützlich ist zum Verständnis der Arbeitsweise der in Fig. 11A gezeigten Schaltung.
  • Fig. 12A ist ein Blockschaltbild einer FIFO-Ausgangsschaltung, die sich zur Verwendung in der Videosignal- Verarbeitungsschaltung nach Fig. 2 eignet.
  • Fig. 12B ist ein Zeitdiagramm, das nützlich ist zum Verständnis der Arbeitsweise der in Fig. 12A gezeigten Schaltung.
  • Fig. 13A und 13B sind ein Blockschaltbild der VRAM-Steuerschaltung, die bei der in Fig. 2 gezeigten Ausführungsform der Erfindung verwendet wird.
  • Fig. 13C ist ein Zeitdiagramm, das nützlich ist zum Verständnis der Arbeitsweise der in den Fig. 13A und 13B dargestellten Schaltung.
  • Fig. 14 ist ein Diagramm einer Speicher-Bitkarte, das zeigt, wie die komprimierten Daten im Video-Randomspeicher nach Fig. 2 gespeichert werden.
  • Fig. 15 bis 23 sind Steuerflußdiagramme und andere Diagramme, die nützlich sind zur Erläuterung der Arbeitsweise der in den Fig. 2-13 gezeigten Schaltungsanordnung.
  • In den Zeichnungen stellen breite Pfeile Busse zur Übertragung von Mehrbit-Digitalsignalen in Parallelform dar, und gepfeilte Linien stellen Verbindungen zur Übertragung von Analogsignalen oder Einbit-Digitalsignalen dar. Abhängig von der Verarbeitungsgeschwindigkeit der Bausteine können in gewissen Signalwegen kompensierende Verzögerungen erforderlich sein. Ein Fachmann auf dem Gebiet der Konstruktion digitaler Signalverarbeitungsschaltungen wird wissen, wo in einem speziellen System solche Verzögerungen benötigt werden.
  • Die Fig. 2 ist ein Blockschaltbild, das die Videosignal- Verarbeitungsschaltung 210 und zugeordnete Peripherieschaltungen zeigt. Bei der vorliegenden Ausführungsform der Erfindung ist die Schaltung 210 als einzige integrierte Schaltung realisiert. Das Videosignal-Verarbeitungssystem wird nachstehend zunächst nur kurz anhand der Fig. 2 und später ausführlicher anhand der Fig. 2-13 beschrieben. Ein dritter Teil dieser Anmeldung bezieht sich auf die Fig. 14-23 und beschreibt, wie die verschiedenen Teile des Systems parallel arbeiten, um komprimierte Videodaten, in Formaten, wie sie in den Fig. 1A, 1B und 1C gezeigt sind, in Pixelwerte umzuwandeln.
  • In der Anordnung nach Fig. 2 liefert eine Quelle 212 komprimierter Videosignale Videosignaldaten, die unter Verwendung einer oder mehrerer der oben genannten Videosignal- Kompressionstechniken komprimiert worden sind und die Daten enthalten, welche statistisch codiert worden sind. Bei der vorliegenden Ausführungsform der Erfindung werden die von der Quelle 212 gelieferten Daten einem Videospeicher mit wahlfreiem Zugriff (VRAM) 216 angelegt, und zwar unter Steuerung durch eine VRAM-Steuereinheit 238, die interner Bestandteil des Videosignalprozessors 210 ist. Die bei der vorliegenden Ausführungsform der Erfindung verwendete Quelle 212 ist ein Nur-Lese-Speicher in Form einer Kompakt- Speicherplatte (CD ROM). Sie liefert die komprimierten Daten kontinuierlich an das VRAM 216 in Blöcken von z. B. jeweils 32 Bits. Die VRAM-Steuereinheit 238 koordiniert Datenzugriffs- Anforderungen zum VRAM 216 von der Quelle 212 und der Schaltung 210, um sicherzustellen, daß alle von der Quelle 212 gelieferten Daten an das VRAM 216 eingeschrieben werden.
  • Das bei dieser Ausführungsform der Erfindung verwendete VRAM 216 ist zusammengesetzt aus 128 integrierten Zweianschluß- Speicherschaltungen mit wahlfreiem Zugriff vom Typ uPD41264 64K mal 4 Bits des Herstellers NEC Electronics Inc. Die integrierten Speicherschaltungen sind in einer Matrix mit 16 Reihen und 8 Spalten angeordnet. In dieser Konfiguration liefert das VRAM 216 eine Speicherkapazität von 4 Megabytes (MB), arrangiert als 1.048.576 Wörter von jeweils 32 Bits.
  • Ein Wiedergabeprozessor 218 nimmt über einen seriellen Ausgangsanschluß Zugriff zum VRAM 216, um den aktiven Bildteil eines wiedergegebenen Videosignals zu entwickeln. Die Videosignal-Verarbeitungsschaltung 210 und die Quelle 212 komprimierter Videosignale nehmen über den Eingangs/Ausgangs- Standardbus Zugriff zu den Datenzellen des VRAM 216. Jeglicher Zugriff zum VRAM 216 durch den Videosignalprozessor 210 und den Wiedergabeprozessor 218 wird durch die VRAM-Steuereinheit 328 der Schaltungsanordnung 210 gesteuert.
  • Die im VRAM 216 gespeicherten Daten werden durch den statistischen Decoder 230 und durch die nach dem Durchrückprinzip (FIFO) arbeitenden Eingangsschaltungen 232 und 234 zur Verarbeitungsschaltung 210 geliefert. Von der Schaltung 210 werden Daten über die FIFO-Ausgangsschaltung 236 zum VRAM 216 geliefert. Die vom statistischen Decoder 230 und den FIFO-Eingangsschaltungen 232 und 234 gelieferten Datenwerte werden über einen bidirektionalen Datenbus B BUS an eine Datenwegschaltung 242, eine Arithmetik- und Logikeinheit (ALU) 244 und ein Daten-RAM 228 gelegt. Der Bus B BUS wird außerdem dazu verwendet, Adressenwerte an die VRAM-Steuereinheit 238 zu liefern. Ein zweiter bidirektionaler Bus A BUS ist in der Schaltung 210 enthalten, um eine Abwechseleinrichtung zum Übertragen von Daten zwischen der Datenwegschaltung 242, der ALU 244 und dem Daten-RAM 228 zu schaffen und um Daten an einen Pixelinterpolator 246 zu liefern und von ihm zu empfangen. Neben der vorstehend beschriebenen Verbindung ist der Datenbus A BUS außerdem mit einer Mikrocode-RAM- und Folgesteuerschaltung 226 verbunden und kann mit einem Mikroprozessor 224 verbunden sein.
  • Allgemein gesagt arbeitet die in Fig. 2 gezeigte Schaltung wie folgt. Komprimierte Videosignale, von der Quelle 212 geliefert, werden in das VRAM 216 eingeschrieben. Auf diese komprimierten Videosignale wird über den statistischen Decoder 230 und die FIFO-Eingangsschaltungen 232 und 234 unter Steuerung durch die Folgesteuerschaltung 226 Zugriff genommen. Die vom Decoder 230 und den FIFO-Schaltungen 232 und 234 gelieferten Werte werden auf den Datenweg 242, die ALU 244 und den Pixelinterpolator 246 gegeben, ebenfalls unter Steuerung durch die Folgesteuerschaltung 226, um die komprimierten Videosignale zu strecken und Pixelwerte zu erzeugen, welche das codierte Bild beschreiben. Die erzeugten Pixelwerte werden über die FIFO-Ausgangsschaltung 236 in das VRAM 216 als eine Matrix eingeschrieben, die z. B. 240 Reihen und 256 Spalten hat. Dies entspricht 240 Zeilen eines Videosignals, worin jede Zeile 256 Pixelwerte hat. Die Matrix sei im folgenden als Bitkarte bezeichnet. Die Bitkarte wird vom Wiedergabeprozessor 218 aus dem VRAM 216 ausgelesen, um ein Bild zu reproduzieren. Der bei dieser Ausführungsform der Erfindung verwendete Wiedergabeprozessor 218 wandelt die Pixelwerte in der Bitkarte in ein Videosignal um und fügt die benötigten Horizontal- und Vertikalsynchronsignale hinzu, um zu ermöglichen, daß das Bild auf einem mit Rasterabtastung arbeitenden Wiedergabegerät wiedergegeben werden kann. Um die Datenübertragungen vom VRAM 216 zum Wiedergabeprozessor 218 zu koordinieren, werden ein Horizontal- oder Zeilensynchronisiersignal HS und ein Vertikal- oder Teilbildsynchronisiersignal VS aus einer jeweils zugeordneten Signalquelle 220 bzw. 222 an die Prozessoren 210 und 218 geliefert. In einer bevorzugten Ausführungsform der Erfindung können diese Signale vom Wiedergabeprozessor 218 erzeugt werden.
  • Bei der vorliegenden Ausführungsform der Erfindung liefert eine Taktsignalquelle 225 ein 25-MHz-Taktsignal CLK an die Mikrocode-RAM- und Folgesteuerschaltung 226. Die Schaltung 226 erzeugt Signale CK und CK' mit jeweils einer Frequenz von 12,5 MHz, ein Taktsignal CKA mit im wesentlichen der gleichen Frequenz und Phase wie das Signal CK und ein Signal CKB, das im wesentlichen gegenphasig zum Signal CK ist. Die Taktsignale CLK, CKA und CKB werden an das Daten-RAM 228 gelegt. Die Signale CKA und CKB werden auf den Datenweg 222, die ALU 244 und den Pixelinterpolator 246 gegeben. Das Signal CK wird an den statistischen Decoder 230, an die FIFO-Eingangsschaltungen 232 und 234 und an die FIFO-Ausgangsschaltung 236 gelegt. Das Signal CK' wird an die VRAM-Steuereinheit 238 gelegt.
  • Um die Erläuterung der in Fig. 2 gezeigten Schaltung zu vereinfachen, sei angenommen, daß die Quelle komprimierter Videosignale nur codierte Leuchtdichtesignale liefert und somit die Schaltung 210 nur eine Bitkarte erstellt, nämlich die Leuchtdichte-Bitkarte. In der Praxis wären außerdem zusätzliche Bitkarten für Farbinformationssignale zu erzeugen, z. B. für die Farbdifferenzsignale I und Q.
  • Wie oben beschrieben, ist das zentrale Steuerelement in der Videosignal-Verarbeitungsschaltung 210 die Mikrocode-RAM- und Folgesteuerschaltung 226. Die Fig. 3A zeigt das Blockschaltbild einer Schaltungsanordnung, die sich zur Verwendung als Mikrocode-RAM- und Folgesteuerschaltung 226 eignet. Das Mikrocode-RAM 310 ist ein herkömmlicher Speicher mit wahlfreiem Zugriff, organisiert in 128 Wörtern mit jeweils 96 Bits. Im Normalbetrieb liefert das Mikrocode-RAM 310 ein 96-Bit-Wort, das durch die 7 höchstwertigen Bits (MSBs) eines in einem Adressenregister 322 gespeicherten Adressenwertes adressiert wird, an den Eingangsanschluß eines Registers 312. Das Register 312 wird durch ein von einer Steuerschaltung 308 geliefertes Signal LD konditioniert, um den an seinen Eingangsanschluß gelegten Wert zu laden. Jeder der vom Mikrocode-RAM 310 gelieferten 96-Bit-Werte enthält zwei Mikrocode-Steuerwörter oder Befehle von jeweils 48 Bit. Einer dieser Befehle, der sich in den 48 MSB-Positionen des Registers 312 befindet, wird einem Eingangsanschluß eines Multiplexers 314 angelegt, und der andere Befehl, der sich in den 48 niedrigstwertigen Bitpositionen (LSBs) des Registers 312 befindet, wird auf einen zweiten Eingangsanschluß des Multiplexers 314 gegeben. Der Multiplexer 314 wird durch ein von einem Flipflop 318 geliefertes Einbit-Signal konditioniert, um einen der 48-Bit-Befehle an den Eingangsanschluß des Befehlsregisters 316 durchzulassen. Das Befehlsregister 316 lädt das seinem Eingangsanschluß angelegte Mikrocode- Steuerwort in Ansprache auf ein von der Steuerschaltung 308 geliefertes Signal LI.
  • Die einzelnen Bits des Befehlsregisters 316 sind über einen Bus MCW mit Steuereingängen eines jeden der Bausteine der Videosignal-Verarbeitungsschaltung 210 verbunden. Wenn die vom Mikrocode-RAM 310 gelieferten Mikrocode-Steuerwörter hintereinander durch das Befehlsregisters 216 laufen, werden die einzelnen Bausteine der Schaltung 210 konditioniert, um Operationen durchzuführen, die im Zusammenspiel die komprimierten Videodaten in Bitkarten-Pixeldaten umwandeln. Die Funktion eines jeden Bits des Mikrocode-Steuerwortes wird weiter unten anhand der Fig. 3C beschrieben.
  • Die vom Videosignalprozessor 210 benutzten Taktsignale CK und CK' werden von einer Schaltung erzeugt, die in der Mikrocode- RAM- und Folgesteuerschaltung 226 enthalten ist. Das von der Quelle 225 gelieferte 25-MHz-Taktsignal CLK wird an eine Frequenzteilerschaltung 304 gelegt, welche die Frequenz des Signals CLK durch zwei teilt, um das 12,5-MHz-Taktsignal CK' zu erzeugen. Das Signal CLK wird des weiteren einem Eingangsanschluß eines UND-Gliedes 306 angelegt, dessen anderer Eingang mit einem Inverter 302 gekoppelt ist, um eine invertierte Version eines Signals HALT zu empfangen, das vom Mikroprozessor 224 geliefert wird. Das Ausgangssignal des UND- Gliedes 306 wird einer Frequenzteilerschaltung 307 angelegt, die seine Frequenz durch zwei teilt, um das 12,5-MHz-Taktsignal CK zu erzeugen. Wenn das Signal HALT den Logikwert null hat, dann ist das Signal CK ein Schwingungssignal in Form einer 12,5-MHz-Reckteckwelle. Wenn das Signal HALT jedoch auf den Logikwert eins wechselt, wird der Zustand des Signals CLK auf dem Logikwert 1 oder 0 eingefroren, d. h. auf denjenigen Zustand, der beim Wechsel des Signals HALT herrschte.
  • Wie oben beschrieben, definieren die acht niedrigstwertigen Bits (LSBs) des Mikrocode-Steuerwortes das Feld NEXT ADDRESS. In jedem Mikrocode-Steuerwort enthält dieses Feld die im Mikrocode-RAM 310 bestehende Adresse des als nächstes in das Befehlsregister 316 zu ladenden Mikrocode-Steuerwortes. Der im Feld NEXT ADDRESS enthaltene Wert wird über einen Multiplexer 320 an das Adressenregister 322 gelegt. Das LSB des Wertes für NEXT ADDRESS wird an den Eingangsanschluß D des Flipflops 318 gelegt. Das Adressenregister 322 und das Flipflop 318 werden durch das Signal CK konditioniert, um die ihren jeweiligen Eingangsanschlüssen angelegten Werte zu laden.
  • Ein Signal CD, das wie unten beschrieben von der Datenwegschaltung 242 geliefert wird, wird auf den Rücksetzeingang R des Flipflops 318 gegeben. Der Wert des Signals CD wird durch das den Bedingungscode wählende Feld (COND CODE SEL, weiter unten beschrieben) des Mikrocode-Steuerwortes gesteuert. Dieses Signal wird in der Mikrocode-RAM- und Folgesteuerschaltung 226 verwendet, um die Folge der an das Befehlsregister 316 gelegten Mikrocode-Steuerwörter bedingungsabhängig zu steuern. Das Signal CD repräsentiert eine Bedingung, die früher in der Signalverarbeitung gestellt wurde, z. B. die Bedingung, daß der Ausgangswert der ALU 244 gleich null ist. Wenn die gewählte Bedingung wahr ist, bekommt das vom Flipflop 318 gelieferte Ausgangssignal Q den Logikwert 0. Dieser Wert konditioniert den Multiplexer 314, um den in den 48 LSB-Positionen des Registers 312 gehaltenen Wert an das Befehlsregister 316 durchzulassen.
  • Um zu verstehen, wie diese Schaltung verwendet werden kann, um den Steuerungsablauf der Mikrocode-RAM- und Folgesteuerschaltung 226 bedingungsabhängig zu ändern, also um eine bedingungsabhängige Verzweigungsoperation durchzuführen, sei angenommen, daß ein Mikrocode-Steuerwort A in seinem Feld COND CODE SEL einen von 0 verschiedenen Wert hat und in seinem Feld NEXT ADDRESS einen Wert von 81 hat. Wenn dieses Mikrocode- Steuerwort in das Befehlsregister 316 geladen wird, wird der 8-Bit-Wert im Feld NEXT ADDRESS an das Adressenregister 322 gelegt, und die an den Adressen 80 und 81 befindlichen Mikrocode-Steuerwörter im Mikrocode-RAM 310 werden in das Register 312 geladen. Wenn das Bedingungssignal CD den Logikwert 0 hat, ist das als nächstes zu verwendende Mikrocode- Steuerwort dasjenige, das die 48 MSB-Positionen (Adresse 81) des Registers 312 belegt. Andernfalls ist das nächste Mikrocode-Steuerwort dasjenige, welches die 48 LSB-Positionen (Adresse 80) des Registers 213 belegt. Jeder dieser Befehle hat ein eindeutig bestimmtes Feld NEXT ADDRESS, und somit definiert jeder Befehl eine andere Folge von Mikrocode- Steuerwörtern, d. h. eine andere Funktionsweise des Videosignalprozessors 210. Da das Mikrocode-RAM 310 den nächsten Befehl für beide mögliche Werte des Bedingungscodes liefert, geht keine Zeit beim Holen des nächsten Mikrocode-Steuerwortes verloren, sobald der Wert des Bedingungssignals festgestellt ist.
  • Die Mikrocode-RAM- und Folgesteuerschaltung 226 ist in der Lage, Mikrocode-Steuerwörter, die über den Bus A BUS geliefert werden, in das Mikrocode-RAM 310 zu laden. Drei 16-Bit-Werte, deren jeder ein Drittel eines Mikrocode-Steuerwortes darstellt, werden nacheinander an drei Register 324 gelegt. Der erste 16-Bit-Wert wird in das Register MR0 eingespeichert, der zweite in das Register MR1 und der dritte in das Register MR2. Als nächstes wird ein Adressenwert, der auch vom VRAM 216 über die FIFO-Eingangsschaltung 232 und das Daten-RAM 228 geliefert werden kann, an das Adressenregister 322 gelegt. Das LSB dieses Adressenwertes, das Signal DXC, konditioniert einen Demultiplexer 326 so, daß er den von den drei Registern MR0, MR1 und MR2 gelieferten 48-Bit-Wert entweder an die 48 MSB- Positionen oder an die 48 LSB-Positionen des Eingangs/Ausgangs-Busses (I/O-Bus) für das Mikrocode-RAM 310 legt. Gleichzeitig wird ein Schreibaktivierungssignal WE gepulst, um das RAM 310 für die Einspeicherung des 48-Bit- Wertes in die adressierte Speicherzelle zu konditionieren.
  • Die durch diese Operationen in das Mikrocode-RAM 310 eingeschriebenen Mikrocode-Steuerwörter werden vom VRAM 216 geliefert, z. B. über die FIFO-Eingangsschaltung 232 und das Daten-RAM 228. Diese Fähigkeit, Mikrocode-Befehle aus dem VRAM 216 zu laden, erlaubt es der Quelle 212 komprimierter Videosignale, an den Videosignalprozessor 210 sowohl komprimierte Daten als auch die zu deren Dekomprimierung benötigten Befehle zu liefern. Anfänglich kann ein Ladeprogramm in das Mikrocode- RAM 310 vom Mikroprozessor 224 eingegeben werden, der die Steuerung des Prozessors 210 übernehmen kann, wie weiter unten beschrieben. In Ansprache auf die Befehle dieses Ladeprogramms lädt die Mikrocode-RAM- und Folgesteuerschaltung 226 die Befehle aus dem VRAM 216, die den Prozessor 210 befähigen, die komprimierten Videodaten zu decodieren.
  • Die Fig. 3B ist ein Zeitdiagramm, das den Betrieb der Mikrocode-RAM- und Folgesteuerschaltung bei der Einspeicherung eines Mikrocode-Steuerwortes MC in das Mikrocode-RAM 310 veranschaulicht. In diesem Zeitdiagramm stellen die Symbole T&sub0; bis T&sub5; sechs Mikrocode-Befehlszyklen dar. Jeder Befehlszyklus beginnt und endet an einem positiv gerichteten Übergang des Signals CKA.
  • Während des Befehlszyklus T&sub0; hat das im Befehlsregister 316 enthaltene Mikrocode-Steuerwort in seinem Feld A DST einen Wert (z. B. 8), der anzeigt, daß der vom Bus A BUS übertragene 16-Bit-Wert in das Register MR0 eingespeichert werden soll. Bei diesem Befehlszyklus wird der Wert MC0, also die 16 LSBs des Mikrocode-Steuerwortes MC, auf den Bus A BUS geschleust, z. B. von der Daten-RAM-Schaltung 228. Während des Befehlszyklus T&sub0; wird das Register MR0 durch den Wert des Signals A DST so konditioniert, daß es den vom Bus A BUS gelieferten 16- Bit-Wert MC0 speichert. Die Speicheroperation erfolgt koinzident mit dem negativ gerichteten Übergang des Signals CKA im Mittelpunkt des Befehlszyklus T&sub0;. Im wesentlichen zur selben Zeit, zu welcher der Wert MC0 in das Register MR0 gespeichert wird, wird der Wert des Feldes NEXT ADDRESS des Mikrocode-Steuerwortes im Befehlsregister 316 in das Adressenregister 322 gespeichert, und das LSB dieses Adressenwertes wird in das Flipflop 318 gespeichert. Der im Adressenregister 322 gespeicherte Wert konditioniert das Mikrocode-RAM 310, um einen 96-Bit-Wert, der den nächsten Befehl enthält, an das Register 312 zu legen. Das Laden dieses 96-Bit-Wertes in das Register 312 erfolgt koinzident mit dem negativ gerichteten Übergang des Signals LD, der kurz nach dem Mittelpunkt des Befehlszyklus T&sub0; auftritt. In Ansprache auf den im Flipflop 318 enthaltenen Einbit-Wert wird das adressierte 48-Bit- Mikrocode-Steuerwort an den Eingangsanschluß des Befehlsregisters 316 gelegt. Das Laden dieses Mikrocode-Steuerwortes in das Befehlsregister 316 erfolgt koinzident mit der negativ gerichteten Flanke des Signals LI, die am Ende des Befehlszyklus T&sub0; erscheint. Während des Befehlszyklus T&sub1; konditioniert das neu geladene Mikrocode-Steuerwort das Register MR1, einen Wert MC1 zu laden, der die mittleren 16 Bits des Mikrocode-Steuerwortes MC darstellt. In der gleichen Weise konditioniert ein Mikrocode-Steuerwort, das am Ende des Befehlszyklus T&sub1; in das Befehlsregister 316 geladen wird, das Register MR2, die 16 MSBs des Mikrocode-Steuerwortes MC während des Befehlszyklus T&sub2; zu laden.
  • Das am Ende des Befehlszyklus T&sub2; in das Befehlsregister 316 geladene Mikrocode-Steuerwort steuert die Übergabe des Mikrocode-Steuerwortes MC aus den Registern 324 zum Mikrocode- RAM 310. Die zur Einspeicherung des Mikrocode-Steuerwortes MC verwendete Adresse wird über den Bus A BUS geliefert. Am Beginn des Befehlszyklus T&sub3; hat das Feld A DST des Mikrocode- Steuerwortes im Befehlsregister 316 einen Wert von 11, der anzeigt, daß der vom Bus A BUS gelieferte 16-Bit-Wert in das Adressenregister 322 geladen werden soll. In Ansprache auf diesen Wert im Feld A DST legt die Steuerschaltung 308 für ungefähr die Dauer einer Periode des Signals CK den Logikwert l als Signal MXC an den Multiplexer 320. Dieses Signal konditioniert den Multiplexer 320 so, daß er die 8 LSBs des vom Bus A BUS gelieferten Wertes an den Eingangsanschluß des Adressenregisters 322 legt. Das Laden dieses Adressenwertes in das Register 322 erfolgt koinzident mit dem ersten negativ gerichteten Übergang des Signals CK im Befehlszyklus T&sub3;. Das LSB des im Adressenregister 322 enthaltenen Wertes, das Signal DXC, wird an einen Steuereingang eines Demultiplexers 326 gelegt. Der Demultiplexer 326 wird durch das Signal DXC, das die Logikwerte 1 oder 0 hat, so konditioniert, daß er den von den Registern 324 gelieferten 48-Bit-Wert zu den 48 MSB- Positionen oder zu den 48 LSB-Positionen des I/O-Busses schleust.
  • Das Signal DXC wird außerdem dazu verwendet, über UND-Glieder 311 und 313, für jede Hälfte des Mikrocode-RAM 310 ein gesondertes Schreibaktivierungssignal zu erzeugen. Wie oben beschrieben, ist das Mikrocode-RAM 310 in 128 Wörter zu jeweils 96 Bits organisiert. Dieser Speicher ist in zwei Hälften unterteilt. Die linke Hälfte enthält die 48 MSBs der 128 Wörter, und die rechte Hälfte enthält die 48 LSBs der 128 Wörter. Das Signal DXC wird im UND-Glied 313 mit dem von der Steuerschaltung 308 gelieferten Schreibaktivierungssignal WE kombiniert, um das Schreibaktivierungssignal für die linke Hälfte des Mikrocode-RAM 310 zu erzeugen. Das Signal DXC wird invertiert und erfährt im Glied 311 eine logische UND- Verknüpfung mit dem Signal WE, um das Schreibaktivierungssignal für die rechte Hälfte des Mikrocode-RAM 310 zu erzeugen.
  • Beim vorliegenden Beispiel hat das Signal DXC den Logikwert 1 für ungefähr eine Periode des Signals CK am Beginn des Befehlszyklus T&sub3;. Infolgedessen wird das Mikrocode-Steuerwort MC in die 48 MSB-Positionen der Zelle des Mikrocode-RAM 310 geschrieben, welche den Adressenwert hat, der durch die 7 MSBs des im Adressenregister 322 gehaltenen Wertes dargestellt ist. Die Einschreibung des Mikrocode-Steuerwortes in das Mikrocode- RAM 310 erfolgt koinzident mit dem Signal WE, das in Fig. 3B gezeigt ist.
  • Da der Befehlszyklus T&sub3; eine Speicherschreiboperation durchführt, wird das nächste Mikrocode-Steuerwort während der ersten Periode des Signals CK nicht in das Befehlsregister 316 geladen. Diese Operation erfolgt während der zweiten Periode des Signals CK im Befehlszyklus T&sub3;. Koinzident mit dem zweiten positiv gerichteten Übergang des Signals CK während des Befehlszyklus T&sub3; wird der Wert des Signals MXC auf den Logikwert 0 geändert und eine Befehlsabrufoperation läuft ab, wie es oben in Verbindung mit dem Befehlszyklus T&sub0; beschrieben wurde. Die Mikrocode-RAM- und Folgesteuerschaltung 226 arbeitet für die Befehlszyklen T&sub4; und T&sub5; in der gleichen Weise, wie oben in Verbindung mit dem Befehlsintervall T&sub0; beschrieben.
  • Bei dem in Fig. 3B dargestellten Beispiel werden die Signale LD und LI während der ersten Hälfte des Befehlszyklus T&sub3; gesperrt, um zu verhindern, daß Mikrocode-Steuerwörter fälschlich in die Register 312 und 316 geschrieben werden. Außerdem werden die Signale CKA und CKB durch die Steuerschaltung 308 während der zweiten Hälfte des Befehlszyklus T&sub3; eingefroren, um die Videosignal-Verarbeitungsschaltung in einen Pausenzustand zu versetzen. Dies geschieht, um den Betrieb der ALU 244, des Daten-RAM 228 und des Pixelinterpolators 246 synchron zueinander zu halten. Da die Taktsignale CKA und CKB während der zweiten Hälfte des Befehlszyklus T&sub3; abgeschaltet sind, ändern sich die inneren Zustände der ALU 244, des Daten-RAM 228 und des Pixelinterpolators 246 während dieser Zeitspanne nicht.
  • Bei der vorliegenden Ausführungsform der Erfindung treten eine Datenleseoperation und eine Datenschreiboperation für das Mikrocode-RAM 310 während getrennter Perioden des Signals CK auf. Alternativ kann die Mikrocode-RAM- und Folgesteuerschaltung 226 auch so ausgelegt werden, daß beide Operationen in einer einzigen Periode des Signals durchgeführt werden.
  • Die Steuerschaltung 308 spricht außerdem auf ein Signal PAUSE an, das von der Pausenlogik 240 geliefert wird, um die Taktsignale CKA und CKB einzufrieren. Außerdem spricht die Steuerschaltung 308 auf ein Signal HALT an, das vom Mikroprozessor 224 geliefert wird, um das Signal CK zu sperren und dadurch effektiv den inneren Zustand des gesamten Videosignalprozessors 210, mit Ausnahme der VRAM-Steuereinheit 238, einzufrieren.
  • Unter Verwendung des Signals HALT kann der Mikroprozessor 224 effektiv die Steuerfunktionen des Videosignalprozessors 210 übernehmen. Das Signal HALT wird an das Befehlsregister 316 gelegt, um dieses Register so zu konditionieren, daß es Daten vom Bus MCW aufnimmt, die vom Mikroprozessor 224 über die Torschaltung 223 geliefert werden. Durch Änderung des Signals HALT vom Logikwert 1 auf den Logikwert 0 veranlaßt der Mikroprozessor 224 das Register 316, das angelegte Mikrocode- Steuerwort zu laden. Während der nächsten Periode des Taktsignals CK nach dieser Änderung veranlaßt die Mikrocode-RAM- und Folgesteuerschaltung 226 die Ausführung dieses Mikrocode- Befehls. Am Ende dieser Taktperiode ändert der Mikroprozessor 224 das Signal HALT wieder auf den Logikwert 1 und legt einen weiteren Mikrocode-Befehl an das Register 316. Durch diese Betriebsweise kann der Mikroprozessor 224 die Mikrocode-RAM- und Folgesteuerschaltung 226 veranlassen, Daten in jedes beliebige Register zu schreiben, das mit den Bussen A BUS oder B BUS verbunden ist, oder ein Ladeprogramm zu laden, wie oben beschrieben. Außerdem kann der Mikroprozessor 224, dank seiner Verbindung mit dem Bus A BUS und einer Bus-Torschaltung 520, die weiter unten in Verbindung mit Fig. 5 beschrieben wird, den Inhalt jedes beliebigen Registers oder jedes der Busse A BUS oder B BUS lesen.
  • Die Fig. 3C ist ein Diagramm, welches das Format eines Mikrocode-Steuerwortes oder Befehls zeigt, wie es von der Mikrocode-RAM- und Folgesteuerschaltung 226 verwendet wird. Das Steuerwort enthält 13 Felder. Jedes Feld wird nachstehend beschrieben anhand des Wertes, den dieses Feld haben kann, und anhand der Wirkung dieser Werte auf verschiedene Bausteine des Videosignalprozessors 210. Der Aufbau der gesteuerten Bausteine wird weiter unten anhand der verschiedenen Fig. 4-13 beschrieben.
  • Die Bits 0-7 des Mikrocode-Steuerwortes bilden das Feld NEXT ADDRESS. Der durch diese Bits dargestellte Wert ist die im Mikrocode-RAM 310 bestehende Adresse desjenigen Mikrocode- Steuerwortes, das als nächstes in das Befehlsregister 316 zu laden ist. Während eines gegebenen Mikrocode-Befehlszyklus wird der durch dieses Feld dargestellte Wert im Mikrocode- Adressenregister 322 gespeichert.
  • Das Feld für die Bedingungscode-Wahl, COND CODE SEL, belegt die Bits 8-10 des Mikrocode-Steuerwortes. Diese 3 Bits wählen einen der Bedingungswerte aus, gespeichert durch ein Bedingungsregister in der Datenwegschaltung 242, wie weiter unten beschrieben. Der gewählte Bedingungswert ist das Signal CD. Dieses Signal wird verwendet, um eine bedingungsabhängige Verzweigungsoperation durchzuführen. Wie weiter oben beschrieben, ist eine bedingungsabhängige Verzweigung eine Änderung in der Folge von Mikrocode-Steuerwörtern, die dem Befehlsregister 316 angelegt werden, die nur dann stattfindet, wenn eine gewählte Bedingung erfüllt ist (d. h. wenn CD den Logikwert 1 hat). Die nachstehende Tabelle 1 ist eine Auflistung der Bedingungscode-Wählwerte und der zugehörigen Beschreibungen. Tabelle 1 Wert im Feld Beschreibung der gewählten Bedingung NULL, keine bedingte Verzweigung Übertragausgabe-Markierung f. ALU Überlauf-Markierung f. ALU Ausgangswert d. ALU ist negativ Ausgangswert d. ALU ist null Wert des Schleifenzählers im Datenweg 242 ist null das LSB des Registers R0 im Datenweg 242 das MSB des Registers M0 im Datenweg 242
  • Die Bits 11-29 des Mikrocode-Steuerwortes enthalten vier Felder, welche die Art und Weise steuern, wie Datenwerte über die Busse A BUS und B BUS zwischen den verschiedenen Bausteinen der Schaltung 210 übertragen werden. Die Bits 11-15 bilden das Feld A SRC. Dieses Feld zeigt an, welcher der Bausteine oder welches Register innerhalb eines Bausteins als Quelle arbeitet, die einen Ausgangswert an den Bus A BUS liefert. Die Bits 16-20 des Mikrocode-Steuerwortes bilden das Feld A DST. Dieses Feld zeigt an, welcher der Bausteine oder welche Register innerhalb des Bausteins als Ziel wirkt, welches den auf den Bus A BUS erscheinenden Wert als Eingangswert aufnimmt. In ähnlicher Weise bestimmen das Feld B SRC mit den Bits 21-24 und das Feld B DST mit den Bits 25-29, welche Bausteine der Schaltung 210 Werte an den Bus B BUS liefern bzw. von diesem Bus aufnehmen. Die Busse A BUS und B BUS können sowohl Daten- als auch Steuerinformation an die verschiedenen Bausteine des Videosignalprozessors 210 übertragen. Die Register, die mit den Bussen A BUS und B BUS verbunden sein können, und die von diesen Bussen übertragenen Steuerinformationen werden weiter unten in Verbindung mit dem jeweils betreffenden Baustein der Schaltung 210 beschrieben.
  • Allgemein gesagt enthalten die mit den Bussen A BUS und B BUS verbundenen Register eine herkömmliche Decodierschaltung (nicht gezeigt), die mit einem der Felder A SRC, A DST, B SRC oder B DST des Mikrocode-Steuerwortes gekoppelt ist. Diese Decodierschaltung erzeugt den Logikwert 1, wenn der Steuerwert detektiert wird, der Zugriff zum Register erlaubt. Die auf das Feld A SRC ansprechende Decodierschaltung wird gesperrt, wenn das Feld LIT SEL, also das Bit 31 des Mikrocode-Steuerwortes, den Logikwert 1 hat. Wenn dieses Bits den Logikwert 1 hat, ist der Wert des Feldes A SRC kein gültiger Wert A SRC, jedoch ein Teil eines aus 8 Bits bestehenden Literalwertes, wie weiter unten beschrieben. Für die Register, die durch die Felder A SRC und B SRC gesteuert werden, wird der Ausgangswert der Decodierschaltungen auf einen Ausgangsaktivierungs-Eingangsanschluß des Registers gekoppelt. Ein an diesen Eingangsanschluß gelegter Logikwert 1 konditioniert das Register so, daß es seinen Speicherwert an den passenden Bus legt, und ein Logikwert 0 konditioniert das Register so, daß es für den Bus eine hohe Impedanz darstellt. Für die Register, die durch die Felder A DST und B DST gesteuert werden, wird der Ausgangswert der Decodierschaltung auf einen Datenlade-Eingangsanschluß des Registers gekoppelt. Diese Register werden, während das von den Decodierschaltungen gelieferte Signal den Logikwert 1 hat, so konditioniert, daß sie den vom passenden Bus übertragenen Wert laden.
  • Das Bit 30 des Mikrocode-Steuerwortes ist das Feld DEC LOOP CTR. Wenn dieses Feld den Wert 1 hat, wird der Schleifenzähler in der Datenwegschaltung 242 so konditioniert, daß er seinen Zählwert während des Mikrocode-Befehlszyklus vermindert.
  • Das Bit 31 des Mikrocode-Steuerwortes ist das Feld LIT SEL. Ein Wert 1 dieses Feldes konditioniert die Mikrocode-RAM- und Folgesteuerschaltung so, daß sie die Bits 8-15 des laufenden Mikrocode-Steuerwortes als Literalwert behandelt. Dieser Wert wird als ein Quellenwert an die 8 LSB-Positionen des Busses A BUS gelegt, und zwar über die Torschaltung 317, die durch das Bit 31 des Mikrocode-Steuerwortes aktiviert wird. Ein Nullwert aus einer Digitalwertquelle 315 wird an die acht MSB- Positionen des Busses A BUS gelegt, wenn der Literalwert gewählt ist.
  • Das Bit 31 des Mikrocode-Steuerwortes ist ferner mit Exemplaren der Register gekoppelt, die den Bus A BUS als Quelle nutzen, wie weiter oben beschrieben, und mit der Bedingungscode-Logik 518 der Datenwegschaltung, wie weiter unten beschrieben.
  • Das Bit 32 des Mikrocode-Steuerwortes ist das Feld INT uP. Wenn dieses Bit den Logikwert 1 hat, wird der Mikroprozessor 224 "unterbrochen". Diese Steuerfunkion kann z. B. verwendet werden, um dem Mikroprozessor 224 zu signalisieren, daß eine bestimmte Mikrocode-Befehlsfolge beendet ist.
  • Das Bit 33 des Mikrocode-Steuerwortes ist das Feld LATCH COND CODE. Wenn dieses Feld den Wert 1 hat, verriegelt die Datenwegschaltung 242 die Werte der verschiedenen Bedingungen, die von der ALU 244 produziert werden, im Bedingungscoderegister. Diese Steuerfunktion ist im allgemeinen in einem Befehl enthalten, der demjenigen Befehl vorangeht, welcher einen Bedingungscode für eine bedingungsabhängige Verzweigungsoperation wählt.
  • Die Bits 34 und 35 des Mikrocode-Steuerwortes bilden das Feld SHIFT CONT. Dieses Feld steuert Bitverschiebungsoperationen, die vom Register R0 der Datenwegschaltung 242 durchgeführt werden. Die Tabelle 2 beschreibt, welche Funktionen das Register R0 als Antwort auf die verschiedenen Werte des Feldes SHIFT CONT durchführt. TABELLE 2 Wert Funktion keine Verschiebung. Verschiebe alle Bits um eine Bitposition in LSB-Richtung. Das MSB des Wertes vor der Schiebeoperation wird in die MSB-Position des durch die Schiebeoperation erzeugten Wertes kopiert. Verschiebe alle Bits um eine Bitposition in MSB-Richtung. Das LSB des verschobenen Wertes ist null. Vertausche die oberen und unteren Bytes eines an das Register R0 gelegten Wertes während des laufenden Befehlszyklus.
  • Die Bits 38-46 des Mikrocode-Steuerwortes bestimmen die Funktion der ALU 244 während des Mikrocode-Befehlszyklus. Das Bit 47 wird nicht benutzt. Um die Funktion der ALU 244 zu verstehen, ist es hilfreich, zunächst ihren Aufbau zu beschreiben. Die in Fig. 4A gezeigte ALU 244 besteht aus fünf Teilen, zwei Operanden-Eingangsregistern 410 und 412, der Arithmetik- und Logikschaltung (ALC) 414, einem Ausgangsregister 416 und einem Demultiplexer 418. Das Register 412 ist mit dem Bus B BUS verbunden und wird durch einen Logikwert l im Bit 36 des Mikrocode-Steuerwortes aktiviert, das über den Bus MCB geliefert wird, um einen Wert vom Bus B BUS zu laden. Das Register 410 ist mit dem Bus A BUS verbunden und wird durch einen Logikwert 1 im Bit 37 des Mikrocode-Steuerwortes aktiviert, um einen Wert von diesem Bus zu laden. Die ALC 414 führt verschiedene arithmetische und logische Operationen an den Werten durch, die in den Registern 410 und 412 enthalten sind. Die während jedes beliebigen Befehlszyklus durchgeführte Operation wird durch den 9-Bit-Wert gesteuert, der im Feld ALU OP CODE, also in den Bits 38-46 des Mikrocode-Steuerwortes, enthalten ist, die über den Bus MCW an die ALU geliefert werden. In diesem 9-Bit-Feld bestimmt der in den Bits 38-44 enthaltene Wert die von der ALU durchzuführende Operation, entsprechend der Tabelle 3. In der Tabelle 3 stellen A und B Werte dar, die im Register 410 bzw. 412 enthalten sind, und CIN stellt den Wert dar, der an den Übertrag-Eingabeanschluß CIN der ALC 414 gelegt wird. Tabelle 3 Wert der Bits 38-44 Operation A ODER B NICHT A keine Operation NICHT B NICHT B + CIN A-B - NICHT CIN A UND B
  • In der obigen Tabelle zeigt das Wort "NICHT" eine Einerkomplement-Operation an, und das Kürzel "XOR" zeigt eine Exklusiv-ODER-Operation an.
  • Die Bits 45 und 46 des Mikrocode-Steuerwortes werden über den Bus MCW an einen Multiplexer 420 gelegt, um das Übertrag- Eingabesignal CIN zu ändern und die Addieroperation ADD (Operationscode 79) in eine Operation "Doppeladdition mit Sättigung" zu ändern. Wenn die Bits 45 und 46 beide den Wert 0 haben oder wenn das Bit 45 den Wert 0 und das Bit 46 den Wert 1 hat, dann legt der Multiplexer 420 einen Wert 0 aus einer Digitalwertquelle 422 als das Signal CIN an. Wenn das Bit 45 den Wert 1 und das Bit 46 den Wert 0 hat, legt der Multiplexer 420 einen Wert 1 aus einer Digitalwertquelle 424 als das Signal CIN an. Haben die Bits 45 und 46 beide den Wert 1, dann ist der vom Multiplexer 420 gelieferte CIN-Eingangswert der Übertrag-Ausgabe-Bedingungswert COUT, der vom Bedingungscoderegister der Datenwegschaltung 242 geliefert wird.
  • Das von der ALC 414 erzeugte Signal CARRY OUT ist das Übertrag-Ausgabesignal, das von der MSB-Stufe des in Fig. 4B gezeigten 16-Bit-Addierers geliefert wird. Das Signal SIGN ist das MSB des 16-Bit-Resultates, das von der ALC 414 erzeugt wird. Das Signal OVERFLOW ist eine logische Kombination der Vorzeichenbits der beiden an die ALC 414 gelegten Eingangswerte und des Vorzeichenbits des von der ALC 414 erzeugten Ausgangswertes. Dieses Signal hat den Logikwert 1, wenn zwei negative Eingangswerte einen positiven Ausgangswert erzeugen oder wenn zwei positive Eingangswerte einen negativen Ausgangswert erzeugen. Für alle anderen Kombinationen der drei Vorzeichenbits hat das Signal OVERFLOW den Logikwert 0.
  • Die Addieroperation wird zu einer Operation der Doppeladdition mit Sättigung, wenn das Bit 45 den Wert 0 und das Bit 46 den Wert 1 hat. Bei der Operation der Doppeladdition mit Sättigung wird jedes der 16-Bit-Register 410 und 412 als ein Register behandelt, das zwei 8-Bit-Werte enthält. Die acht MSBs des im Register 410 enthaltenen Wertes werden mit den acht MSBs des im Register 412 gehaltenen Wertes addiert, und das Resultat wird in den acht MSBs des Ausgangsregisters 416 gespeichert. In ähnlicher Weise werden die acht LSBs der in den Registern 410 und 412 enthaltenen Werte summiert, und das Resultat wird in den acht LSBs des Registers 416 gespeichert. Weder die eine noch die andere dieser Addieroperationen kann zu einer Überlaufbedingung führen. Statt dessen sättigt die Schaltung in der ALC 414 die Summe. Wenn die Eingangswerte der Doppeladdition so sind, daß entweder die 8-LSB-Summe oder die 8-MSB-Summe eine negative Überlaufbedingung oder eine positive Überlaufbedingung hervorrufen würde, wird der für die Summe gelieferte Wert bei 0 bzw. bei 255 gesättigt, d. h. bei dem kleinsten bzw. dem größten Wert, der durch einen vorzeichenlosen 8-Bit-Binärwert dargestellt werden kann.
  • Um zwischen der Durchführung einer herkömmlichen Addition und einer Doppeladdition mit Sättigung umzuschalten, wird von der ALC 414 ein unkonventioneller Addierer benutzt.
  • Die Fig. 4B ist ein Blockschaltbild eines Addierers, der sich zur Verwendung in der ALC 414 eignet. Eine herkömmliche Arithmetik- und Logikschaltung für 16 Bits würde einen 16-Bit- Addierer enthalten, der in der Lage ist, zwei 16-Bit- Zweierkomplementzahlen und ein Übertrag-Eingabesignal zu summieren, um einen 16-Bit-Zweierkomplement-Ausgangswert und ein Übertrag-Ausgabesignal zu erzeugen. Die in Fig. 4B gezeigte Schaltung spricht auf ein Signal SPLIT an, um als ein herkömmlicher 16-Bit-Zweierkomplementaddierer zu arbeiten, wenn SPLIT den Wert 0 hat, oder als zwei unabhängige 8-Bit- Addierer in der oben beschriebenen Betriebsart der Doppeladdition mit Sättigung, wenn SPLIT den Wert 1 hat.
  • In der Fig. 4B werden die beiden an die Eingangsanschlüsse A und B der ALC 414 gelegten 16-Bit-Eingangswerte jeweils in einen 8-MSB-Teil und einen 8-LSB-Teil aufgesplittet. Die 8- MSB-Teile der Eingangswerte A und B werden an verschiedene Eingangsanschlüsse eines Addierer 450 gelegt. Die 8-LSB-Teile der Werte A und B werden verschiedenen Eingangsanschlüssen eines Addierers 452 angelegt. Die bei dieser Ausführungsform der Erfindung verwendeten Addierer 450 und 452 sind herkömmliche 8-Bit-Zweierkomplementaddierer. Das Übertrag- Eingabesignal zum Addierer 452 ist das der ALC 414 angelegte Signal CIN. Das Übertrag-Eingangssignal zum Addierer 450 wird von einem UND-Glied 454 geliefert. Dieses Signal ist die logische UND-Verknüpfung eines Übertrag-Ausgabesignals CO&sub0;, das vom Addierer 452 geliefert wird, und eines Signal , einer logisch invertierten Version des Signals SPLIT, die von einem Inverter 456 geliefert wird. Das Signal an der MSB- Position des vom Addierer 450 gelieferten 8-Bit-Ausgangssignals ist das Bedingungssignal SIGN, welches die Polarität des vom ALC-Addierer 414 gelieferten Wertes anzeigt. Das Übertrag-Ausgabesignal CO&sub1; des Addierers 450 ist das von der ALC 414 gelieferte Signal CARRY OUT.
  • Der vom Addierer 450 gelieferte 8-Bit-Wert ist die Zweierkomplementsumme der 8 MSBs der an die Eingangsanschlüsse A und B der ALC 414 gelegten Werte. Das MSB dieses Ausgangswertes wird an einen Eingangsanschluß eines Exklusiv-ODER- Gliedes 472 gelegt, dessen anderer Eingang so angeschlossen ist, daß er das Signal SPLIT empfängt. Das vom Exklusiv-ODER- Glied 472 gelieferte Signal wird mit den 7 LSBs des vom Addierer 450 gelieferten Wertes verkettet, um eine modifizierte 8-Bit-Summe zu entwickeln. Wenn das Signal SPLIT den Wert 0 hat, ist die modifizierte Summe ein 8-Bit- Zweierkomplementwert, der die Summe der beiden 8-Bit- Zweierkomplementwerte darstellt. Wenn jedoch das Signal SPLIT den Wert 1 hat, dann ist die modifizierte Summe ein vorzeichenloser 8-Bit-Binärwert, der die Summe eines vorzeichenlosen 8-Bit-Binärwertes und eines 8-Bit-Binärwertes mit Offset 128 darstellt.
  • Die Änderung im Typ der an den ALC-Addierer gelegten Eingangswerte ist nicht eine Funktion der Addierschaltung, sondern eine Konvention, die für die Programmierung des Videosignalprozessors 210 aufgestellt ist. Durch diese Konvention sind, wenn das Signal SPLIT den Wert 0 hat, die an den ALC-Addierer gelegten Werte herkömmliche 16-Bit-Zweierkomplementwerte. Wenn das Signal SPLIT jedoch den Wert 1 hat, ist einer der an jeden der Addierer 450 und 452 gelegten Werte ein vorzeichenloser 8- Bit-Binärwert, und der andere Wert ist ein 8-Bit-Wert in Offset-128-Schreibweise. Diese Werte können von irgendeinem Register in irgendeiner Einrichtung geliefert werden, die als Quelle für die Busse A BUS oder B BUS wirken kann.
  • Wenn das Signal SPLIT den Wert 1 hat, kann der vorzeichenlose 8-Bit-Eingangsbinärwert einen Wertebereich zwischen 0 und 255 belegen, und der Offset-128-Wert kann einen Wertebereich zwischen -128 und +127 belegen. Somit kann die modifizierte Summe Werte von -128 bis -382 darstellen. Da jedoch die modifizierte Summe in dieser Betriebsart eine vorzeichenlose 8-Bit-Binärzahl ist, sind nur die Werte zwischen 0 und 255 gültig. Der in Fig. 4B gezeigte ALC-Addierer enthält eine Schaltungsanordnung zum Fühlen von Werten außerhalb dieses gültigen Bereichs und zum Sättigen bzw. Begrenzen des Wertes der modifizierten Summe auf 0 für den Fall kleinerer Werte als 0 und auf 255 für den Fall größerer Werte als 255.
  • Ein UND-Glied 470 entwickelt ein Positiv-Überlaufsignal POV&sub1;, welches anzeigt, daß der Wert der modifizierten Summe größer ist als 255. Die drei Eingangssignale zum UND-Glied 470 sind das Signal SPLIT, das Übertrag-Ausgabesignal CO&sub1; vom Addierer 450 und das MSB des vom Addierer 450 gelieferten 8-Bit-Wertes. Das Signal POV&sub1; ist 0, wenn das Signal SPLIT den Wert 0 hat oder wenn das Signal SPLIT den Wert 1 hat und der Wert der modifizierten Summe kleiner ist als 256. Das Signal POV&sub1; wird an einen Eingangsanschluß eines jeden von acht NOR-Gliedern 474 gelegt. Der andere Eingang eines jeden der NOR-Glieder 474 ist so angeschlossen, daß er ein jeweils anderes Exemplar der 8 Bits der modifizierten Summe enthält.
  • Ein NOR-Glied 468 spricht auf das Signal , das Signal CO&sub1; und das MSB des vom Addierer 450 gelieferten 8-Bit-Wertes an, um ein Negativ-Überlaufsignal NOV&sub1; zu erzeugen. Dieses Signal zeigt an, daß die modifizierte Summe einen Wert unter 0 hat. Das Signal NOV&sub1; wird auf einen Eingangsanschluß eines jeden von acht NOR-Gliedern 476 gekoppelt. Die anderen Eingänge aller dieser NOR-Glieder 476 sind so angeschlossen, daß jeder von ihnen ein jeweils anderes Exemplar der von den acht NOR- Gliedern 474 gelieferten Signale empfängt. Die acht Ausgangssignale der NOR-Glieder 476 sind die acht MSBs des 16-Bit- Ausgangssignals des ALC-Addierers.
  • Der Addierer 452 ist mit einer Wertbegrenzungsschaltung verbunden, die genauso wie die oben beschriebene Schaltung ist. Die acht Ausgangssignale der acht NOR-Glieder 466, die dem NOR-Glied 476 entsprechen, sind die acht LSBs des 16-Bit- Ausgangssignals des ALC-Addierers.
  • Wenn das Bit 45 des Mikrocode-Steuerwortes den Wert 0 und das Bit 46 den Wert 1 hat, dann hat das Signal SPLIT den Wert 1, und der ALC-Addierer ist so konditioniert, daß er in seinem Betrieb der Doppeladdition mit Sättigung arbeitet. Für alle anderen Wertekombinationen der Bits 45 und 46 des Mikrocode- Steuerwortes hat das Signal SPLIT den Wert 0, und der ALC- Addierer ist so konditioniert, daß er als herkömmlicher 16- Bit-Zweierkomplementaddierer arbeitet.
  • Nachstehend wird der Betrieb des ALC-Addierers in jeder seiner beiden Betriebsarten erläutert. Wenn das Signal SPLIT den Wert 0 hat, ist das UND-Glied 454 so konditioniert, daß es das Übertrag-Ausgabesignal vom Ausgangsanschluß CO&sub0; des Addierers 452 an den Übertrag-Eingabeeingang CI&sub1; des Addierers 450 legt, womit die Addierer 450 und 452 als ein 16-Bit- Zweierkomplementaddierer konfiguriert sind. Das den Wert 0 aufweisende Signal SPLIT an den Exklusiv-ODER-Gliedern 462 und 472 konditioniert diese Glieder, um unverändert die MSBs der von den einzelnen Addierern 452 und 450 gelieferten 8-Bit- Ausgangswerte an die zugeordneten NOR-Glieder 464 und 474 durchzulassen. Das den Wert 0 aufweisende Signal SPLIT an den UND-Gliedern 460 und 470 konditioniert diese Glieder, um jeweils ein Positiv-Überlaufsignal POV&sub0; bzw. POV&sub1; vom Wert 0 an die jeweils zugeordneten NOR-Glieder 464 bzw. 474 durchzulassen. In der gleichen Weise konditioniert das den Logikwert 1 aufweisende Signal SPLIT die NOR-Glieder 458 und 468 so, daß sie jeweils ein Negativ-Überlaufsignal NOV&sub0; bzw. NOV&sub1; vom Wert 0 an die zugeordneten NOR-Glieder 466 bzw. 476 durchlassen. Das Anlegen der Signale POV&sub0; und NOV&sub0; vom Wert l an die NOR-Glieder 464 und 466 hat die Wirkung, den vom Addierer 452 gelieferten Ausgangswert zweimal zu invertieren und somit den Wert am Ausgang des Addierers 452 als die acht LSBs des von der ALC-Schaltung gelieferten 16-Bit-Wertes zu liefern. Gleiches gilt für den 8-MSB-Wert, der vom Addierer 450 über die NOR-Glieder 474 und 476 zum Ausgangsanschluß des ALC-Addierers geliefert wird.
  • Wenn das Signal SPLIT den Logikwert 1 hat, hat das vom Inverter 456 gelieferte Signal·SPLIT den Logikwert 0, und das UND-Glied 454 wird daran gehindert, das Übertrag-Ausgabesignal vom Addierer 452 an den Übertrag-Eingabeanschluß CI des Addierers 450 durchzulassen. Dies konfiguriert die Addierer 450 und 452 als zwei getrennte 8-Bit-Addierer. Das Signal SPLIT mit dem Logikwert 1, das an die Exklusiv-ODER-Glieder 462 und 472 gelegt wird, konditioniert diese Glieder so, daß sie die MSBs der jeweiligen 8-Bit-Werte, die von den Addierern 452 und 450 geliefert werden, logisch invertieren. Das MSB wird invertiert, so daß die vorzeichenlosen 8-Bit-Binärwerte, die von jedem der Addierer 452 und 450 erzeugt werden, in der richtigen Weise die Summe eines vorzeichenlosen 8-Bit-Binärwertes und eines Offset-128-Binärwertes darstellen.
  • Wenn das Signal SPLIT den Logikwert 1 hat, sind die UND- Glieder 460 und 470 aktiviert, um die jeweiligen Positiv- Überlaufsignale POV&sub0; und POV&sub1; zu erzeugen, und die NOR-Glieder 458 und 468 sind aktiviert, um die jeweiligen Negativ- Überlaufsignale NOV&sub0; und NOV&sub1; zu erzeugen. Wenn das Negativ- Überlaufsignal NOV&sub1; den Logikwert 1 hat, dann bekommen die Ausgangssignale der acht NOR-Glieder 476 alle den Wert 0, und der Wert des höchstwertigen Bytes des vom ALC-Addierer erzeugten Wertes ist gleich 0. Wenn das Signal POV&sub1; den Logikwert 1 hat, bekommen die Ausgänge der acht NOR-Glieder 474 alle den Logikwert 0. Diese Signale werden durch die NOR- Glieder 476 invertiert. Somit haben die acht MSBs des Ausgangswertes des ALC-Addierers alle den Logikwert l. Dies entspricht einem vorzeichenlosen Binärwert von 255. Die gleiche Analyse gilt bezüglich der Signale NOV&sub0; und POV&sub0;, die den NOR-Gliedern 466 bzw. 464 angelegt werden.
  • Das Resultat einer jeden der in der Tabelle 3 gezeigten Operationen wird im Ausgangsregister 416 gespeichert. Dieses Register kann mit einem oder beiden Exemplaren der Busse A BUS und B BUS über die Demultiplexerschaltung 418 gekoppelt werden, in Ansprache auf passende Werte in den Feldern A SRC und B SRC des Mikrocode-Steuerwortes.
  • Die bei dieser Ausführungsform der Erfindung verwendete ALC ist nur ein Beispiel. Ein Fachmann auf dem Gebiet des Entwurfs digitaler Logikschaltungen kann auch alternative Schaltungsanordnungen entwerfen und bauen, die Operationen durchführen, welche mit den oben beschriebenen Operationen gleichwertig sind.
  • Die Eingangsregister 410 und 412 der ALU nehmen Zugriff auf die zugeordneten Busse A BUS und B BUS unabhängig von den für die Busse geltenden Quellen- und Zielbestimmungsfeldern A SRC, A DST, B SRC und B DST des Mikrocode-Steuerwortes. Infolgedessen kann die Mikrocode-RAM- und Folgesteuerschaltung 226 in einer Betriebsart anweisen, daß Datenwerte von einer Quelle zu einem Ziel auf jedem der Busse A BUS und B BUS übertragen werden sollen, während sie gleichzeitig die ALU anweist, eine Operation an einem oder beiden der gerade übertragenen Datenwerte durchzuführen.
  • Eine Quelle von Eingangswerten für die ALU 244 und ein Ziel für Ausgangswerte von der ALU 244 ist eine Registerbank 510 in der Datenwegschaltung 242. Die Fig. 5 ist ein Blockschaltbild der Datenwegschaltung 242, die bei der vorliegenden Ausführungsform der Erfindung verwendet wird. Die bei dieser als Beispiel gezeigten Ausführungsform verwendete Registerbank 510 enthält vier Allzweckregister: R0, R1, R2 und R3. Jedes dieser Register ist mit beiden Bussen A BUS und B BUS gekoppelt. Unter Steuerung durch die Felder A SRC und B SRC die Mikrocode-Steuerwortes, die über den BUS MCW geliefert werden, kann jedes beliebige dieser Register aktiviert werden, um einen Wert entweder an einen oder an beide Busse zu legen. Jedoch kann in Ansprache auf die Felder A DST und B DST ein Register während irgendeines Mikrocode-Befehlszyklus als Ziel für nur einen der Busse A BUS und B BUS dienen. Wie oben beschrieben, enthält das Register R0 eine Schaltungsanordnung, die auf Feld SHIFT CONT des Mikrocode-Steuerwortes anspricht, um den Inhalt des Registers an höherwertige oder niedrigerwertige Bitpositionen zu verschieben oder um die acht MSBs und die acht LSBs eines dem Register angelegten Wertes zu vertauschen.
  • Das MSB und das LSB des Registers R0 sind mit jeweils einem gesonderten Eingangsanschluß des Bedingungscoderegisters 512 verbunden. Zusätzlich hierzu ist das Bedingungscoderegister so angeschlossen, daß es einen Nullwert von einer Digitalwertquelle 513, die Bedingungswerte SIGN, ZERO, OVFLOW und CARRY OUT von der ALU 244 und einen Bedingungswert empfängt, der anzeigt, daß der von einem Schleifenzähler 514 gehaltene Wert gleich 0 ist. Das Bedingungscoderegister spricht auf das Feld LATCH COND CODE des Mikrocode-Steuerwortes an, um die Werte der von der ALU 244 erzeugten Bedingungen am Ende eines Mikrocode-Befehlszyklus zu speichern. Andere Bedingungscodes werden in das Bedingungscoderegister 512 asynchron mit ihrem Erscheinen eingeklinkt.
  • Die Bedingungscode-Logik 518 spricht auf das Feld COND CODE SEL des Mikrocode-Steuerwortes an, um einen der im Bedingungscoderegister 512 enthaltenen Bedingungswerte als das Bedingungssignal CD auszuwählen, das verwendet werden soll, um eine bedingungsabhängige Verzweigungsoperation in der Mikrocode-RAM- und Folgesteuerschaltung 226 durchzuführen, wie oben beschrieben. Die Bedingungscode-Logik spricht außerdem auf das Feld LIT SEL des Mikrocode-Steuerwortes an, um die Wahl einer Bedingung zu inhibieren, wenn das Feld COND CODE SEL gemeinsam mit dem Feld A SRC benutzt wird, um einen Literalwert an den Bus A BUS zu legen.
  • Der Schleifenzähler 514 ist ein 16-Bit-Zähler, der unter Steuerung durch Felder A SRC und A DST des Mikrocode- Steuerwortes entweder als Quelle oder als Ziel für Datenwerte auf dem Bus A BUS dienen kann. Der Schleifenzähler 514 wird synchron mit dem Taktsignal CKB vermindert, wenn das Bit 30 des Mikrocode-Steuerwortes den Logikwert 1 hat. Dieser Zähler wird dazu verwendet, zu zählen, wieviel mal die Befehle einer iterativen Schleife von der Mikrocode-Folgesteuerschaltung 226 ausgeführt werden.
  • In gewöhnlichen Betriebsarten sind die Busse A BUS und B BUS vollständig unabhängig. Jedoch kann der Videosignalprozessor 210 in einen Zustand versetzt werden, in welchem diese beiden Busse zu einem einzigen Bus vereinigt sind. Diese Betriebsart ist die HALT-Betriebsart. Der Prozessor 210 kann durch den Mikroprozessor 224 in die HALT-Betriebsart versetzt werden. Das vom Mikroprozessor 224 gelieferte Signal HALT konditioniert eine bidirektionale Torschaltung 520, um die beiden Busse zu vereinigen. In dieser Betriebsart kann der Mikroprozessor 224 Zugriff auf jedes beliebige Register an den vereinigten Bussen als Quelle oder als Ziel nehmen. Dieses Merkmal ermöglicht eine Prüfung des Videosignalprozessors 210 und erlaubt es dem Mikroprozessor 224, den Prozessor 210 so zu konfigurieren, daß er in jedem beliebigen von mehreren vorbestimmten Zuständen starten kann. Obwohl bei der vorliegenden Ausführungsform der Erfindung nicht gezeigt, kann die Bus-Torschaltung 520 alternativ auch durch ein Bit im Mikrocode-Steuerwort gesteuert werden, z. B. vom Bit 47. Unter Steuerung durch einen Mikrocode-Befehl könnte die Torschaltung 520 so konditioniert werden, daß sie die Busse A BUS und B BUS kombiniert, um die Übertragung von Daten, die aus einer Quelle an einem der Busse geliefert werden, an ein Ziel zu bewirken, das mit dem anderen Bus gekoppelt ist.
  • Zusätzlich zu den vier Allzweck-Registern R0, R1, R2 und R3 benutzt der Videosignalprozessor 210 die Daten-RAM-Schaltung 228, um Datenwerte zwischenzuspeichern. Die Fig. 6 ist ein Blockschaltbild, welches Einzelheiten der Daten-RAM-Schaltung 228 zeigt, die bei dieser Ausführungsform der Erfindung verwendet wird. Die Daten-RAM-Schaltung 228 enthält ein 256- mal-16-Bit-RAM 610, eine Registerbank 612, die vier Adressenregister DR0, DR1, DR2 und DR3 enthält, eine Erhöhungs/Verminderungs-Schaltung 622 und eine Steuerschaltung 614. Die Steuerschaltung 614 spricht auf die Felder A SRC, A DST, B SRC und B DST des Mikrocode-Steuerwortes an, um Daten zum und vom RAM 610 zu übertragen und um Adressenwerte in den verschiedenen Registern der Registerbank 612 zu laden und eventuell zu vermindern oder zu erhöhen.
  • Im normalen Betrieb werden die relevanten Felder des Mikrocode-Steuerwortes über den Bus MCW an die Steuerschaltung 614 gelegt. Werte, welche die Adressen zum Zugriff am RAM 610 darstellen, werden z. B. von der ALU-Schaltung 244 an einen Eingangsanschluß eines Multiplexers 616 gelegt, als die acht LSB Positionen des Busses A BUS. Ein anderer Eingangsanschluß des Multiplexers 616 ist zum Empfang von 8-Bit-Adressenwerten angeschlossen, die von der Verminderungs/Erhöhungs-Schaltung 622 erzeugt werden, wie weiter unten beschrieben. Der Multiplexer 610 wird durch ein von der Steuerschaltung 614 geliefertes Signal MC1 konditioniert, um einen der beiden Adressenwerte, die seinen Eingangsanschlüssen angelegt werden, an die Register DR0 bis DR3 durchzulassen. Die Register DR0 bis DR3 sind 8-Bit-Register mit Paralleleingang und Parallelausgang und werden durch die Signale L&sub0;, L&sub1;, L&sub2; und L&sub3; dazu konditioniert, Werte, die ihren Eingangsanschlüssen angelegt werden, zu laden. Die von den Registern DR0 bis DR3 gelieferten Ausgangswerte werden jeweils zugeordneten Eingangsanschlüssen eines Multiplexers 618 angelegt. Ein Steuersignal MC2 von der Steuerschaltung 614 konditioniert den Multiplexer 618, um einen der von den Registern DR0 bis DR3 gehaltenen Adressenwerte an den Eingangsanschluß eines 8-Bit- Adressenregisters 620 zu legen. In Ansprache auf ein Steuersignal LA, das von der Steuerschaltung 614 geliefert wird, werden Adressenwerte in das Adressenregister 620 geladen. Die im Register 620 enthaltenen Adressenwerte werden einem Adressen-Eingangsanschluß des RAM 610 und dem Eingangsanschluß der Erhöhungs/Verminderungs-Schaltung 622 angelegt. Die Schaltung 622 wird durch ein von der Steuerschaltung 614 geliefertes Signal I/D gesteuert, um den ihrem Adresseneingang angelegten Adressenwert entweder zu erhöhen oder zu vermindern und um diesen modifizierten Adressenwert an den zweiten Eingangsanschluß des Multiplexers 616 zu legen, wie oben beschrieben.
  • Der vom Multiplexer 618 gelieferte Adressenwert kann dem Bus A BUS über eine Dreizustands-Torschaltung 619 angelegt werden. In Ansprache auf ein Signal R0, das von der Steuerschaltung 614 geliefert wird, legt die Torschaltung 619 entweder den vom Multiplexer 618 und einer Quelle 621 gelieferten Adressenwert oder eine hohe Impedanz an den Bus A BUS. Die Torschaltung 619 wird bei dieser Ausführungsform der Erfindung verwendet, um zu erlauben, daß die in den Registern DR0 bis DR3 gehaltenen Werte als ein 8-Bit-Datenwert an den Bus A BUS gelegt werden. Die acht MSBs des dem Bus A BUS angelegten Wertes werden auf 0 gesetzt. Das Signal R0 konditioniert die Torschaltung 619 zum Anlegen eines Wertes an den Bus A BUS, wenn das Feld A SRC des Mikrocode-Steuerwortes, geliefert über den Bus MCW, anzeigt, daß eines der Register DR0 bis DR3 die Quelle des über den Bus A BUS zu übertragenden Datenwertes ist.
  • Datenwerte, die in das RAM 610 gespeichert werden sollen, werden der Daten-RAM-Schaltung 228 über die beiden 16-Bit- Busse A BUS und B BUS angelegt. Eine für 16 Bits ausgelegte Dreizustands-Torschaltung 624 spricht auf ein von der Steuerschaltung 614 erzeugtes Signal AIN an, um entweder einen Datenwert vom Bus A BUS oder eine hohe Impedanz an den I/O-Bus des RAM 610 zu legen. Ein genauso ausgelegtes Glied 626 spricht auf ein von der Steuerschaltung 614 erzeugtes Signal BIN an, um wahlweise einen Datenwert vom Bus B BUS oder eine hohe Impedanz an den I/O-Bus des RAM 610 zu legen.
  • Datenwerte, die dem I/O-Bus des RAM 610 angelegt werden, werden in Datenzellen geschrieben, die ,durch den im Adressenregister 620 enthaltenen Adressenwert adressiert sind. Die Steuerschaltung 614 erzeugt ein Schreibaktivierungssignal WE, welches das RAM 610 konditioniert, um den Datenwert während eines gegebenen Speicherzyklus in die adressierte Zelle zu schreiben.
  • Datenwerte können aus einer adressierten Zelle des RAM 610 ausgelesen werden, indem das Signal WE während mindestens eines Teils eines Speicherzyklus im Logikzustand 0 gehalten wird. Aus dem RAM 610 ausgelesene Werte können entweder einem oder beiden Bussen A BUS bzw. B BUS über zugeordnete Torschaltungen 628 und 630 angelegt werden. Die Torschaltungen 628 und 630 sind genauso ausgelegt wie die Torschaltungen 624 und 626, sie sprechen auf die Signale AOUT bzw. BOUT an, die von der Steuerschaltung 614 geliefert werden, um entweder den vom RAM 610 über dessen I/O-Bus gelieferten Ausgangswert oder eine hohe Impedanz an den jeweiligen Bus A BUS bzw. B BUS zu legen.
  • Wie oben beschrieben, wird die von der Daten-RAM-Schaltung 228 durchgeführte Operation durch die Werte der Felder A SRC, A DST, B SRC und B DST des Mikrocode-Steuerwortes bestimmt. Die Tabelle 4 beschreibt, welche Operationen jeweils in Ansprache auf verschiedene Werte dieser vier Felder durchgeführt werden können. TABELLE 4 WERT
  • Die Funktionen der Tabelle 4 sind in der Assembly-Sprache codiert, die benutzt wird, um die Mikrocode-Steuerwörter für den Videosignalprozessor 210 zu erzeugen. Ein Sternchen (*) vor einem Registernamen zeigt an, daß der geschriebene oder gelesene Wert ein Wert ist, der in die oder aus der RAM-Zelle geschrieben bzw. gelesen werden soll, welche durch den im Register gehaltenen Wert adressiert ist. Ist kein Sternchen vorangestellt, dann ist der gelesene oder geschriebene Wert der vom jeweils genannten Register gehaltene 8-Bit-Wert. Die Symbole "++" und "--" hinter einem Registernamen zeigen an, daß der Wert im Register erhöht bzw. vermindert wird, nachdem auf die adressierte Speicherzelle zugegriffen worden ist.
  • Ist die codierte Operation in den Spalten A SRC oder B SRC eingetragen, dann ist die Operation eine Leseoperation, und der Ausgangswert wird auf den Bus A BUS bzw. B BUS geschleust. Steht die codierte Operation in den Spalten A DST oder B DST, dann ist die Operation eine Schreiboperation, und der Eingangswert wird vom Bus A BUS bzw. B BUS geliefert.
  • Die Fig. 7A bis 7E sind Zeitdiagramme, welche die verschiedenen Signale zeigen, die von der Steuerschaltung 614 in Ansprache auf verschiedene Werte der Felder A SRC, A DST, B SRC und B DST des Mikrocode-Steuerwortes geliefert werden. Um einen Vergleich mit anderen Zeitdiagrammen in der vorliegenden Anmeldung zu geben, ist in jedem der Zeitdiagramme 7A bis 7E das von der Mikrocode-RAM- und Folgesteuerschaltung 226 gelieferte Taktsignal CKA dargestellt.
  • Die Fig. 7A zeigt den Zeitverlauf der verschiedenen Signale, die von der Steuerschaltung 614 erzeugt werden in Ansprache auf eine Aufforderung, einen 8-Bit-Wert vom Bus A BUS in das Register DR0 zu schreiben (d. h. A DST = 28). Zu einem vorbestimmten frühen Zeitpunkt im Befehlszyklus wird der in das Register DR0 zu schreibende Wert VAL an den Bus A BUS gelegt. Während dieses Befehlszyklus hält die Steuerschaltung 614 das Signal MC auf dem Logikwert 0, was den Multiplexer 616 konditioniert, den von den acht LSB-Positionen des Busses A BUS übertragenen Wert an die Eingangsanschlüsse der Register DR0 bis DR3 zu legen. Wenn sich der an den Bus A BUS gelegte Wert stabilisiert hat, pulst die Steuerschaltung 614 das Signal L0, um das Register DR0 zu konditionieren, den seinem Eingangsanschluß angelegten Wert zu laden. Die Befehle zum Laden der Register DR1, DR2 und DR3 sind ähnlich, der einzige Unterschied besteht darin, daß statt des Signals L0 eines der jeweiligen Signale L1, L2 oder L3 gepulst wird, wie in Fig. 7A gezeigt.
  • Die Fig. 7B ist ein Zeitdiagramm, welches die Signale zeigt, die von der Steuerschaltung 614 erzeugt werden, um den im Register DR0 gehaltenen Wert an die acht LSB-Positionen des Busses A BUS zu übertragen (d. h. A SRC = 28). Zu einer vorbestimmten Zeit kurz nach dem Beginn des Befehlszyklus ändert die Steuerschaltung 614 das Signal MC2 auf den Wert 0. Dieses Signal konditioniert den Multiplexer 618 so, daß er den im Register DR0 gehaltenen Wert an den Eingangsanschluß der Torschaltung 619 legt. Nach Änderung des Signals MC2 legt die Steuerschaltung 614 den Logikwert 1 als Signal R0 an die Torschaltung 619. Dieses Signal veranlaßt die Torschaltung 619, den vom Register R0 gehaltenen Wert an die acht LSB-Positionen des Busses A BUS zu legen und einen Wert 0 an die acht MSB- Positionen des Busses A BUS zu legen. Die Auslesung von Werten aus den Registern DR1, DR2 oder DR3 kann durch eine ähnliche Folge von Signaländerungen geschehen. Der einzige Unterschied besteht darin, daß dann der Wert von MC2 gleich 1, 2 oder 3 anstatt 0 ist, wie in Fig. 7B gezeigt.
  • Die Fig. 7C zeigt den zeitlichen Verlauf verschiedener Signale, die verwendet werden, um einen Wert aus einer Speicherzelle des RAM 610 auszulesen, die durch einen im Register DR0 gehaltenen Adressenwert adressiert wird (d. h. A SRC = 16). Für diese Operation ändert die Steuerschaltung 614 zunächst das Signal MC2 auf den Wert 0, was den Multiplexer 618 so konditioniert, daß er den von DR0 gehaltenen Adressenwert an den Eingangsanschluß des Adressenregisters 620 legt. Wenn sich dieses Signal stabilisiert hat, pulst die Steuerschaltung 614 das Signal LA, um den Adressenwert in das Adressenregister 620 zu laden. Wenn der Adressenwert durch die Adressen-Decodierlogik des RAM 610 gelaufen ist, wird der adressierte Wert am I/O-Bus des RAM 610 verfügbar. Die Steuerschaltung 614 schleust dann diesen Wert auf den Bus A BUS, indem sie das Signal AOUT auf den Logikwert 1 ändert. Vom Register DR1 adressierte Werte können mit Hilfe der gleichen Befehlsfolge ausgelesen werden, nur daß der Wert des Signals MC2 gleich 1 anstatt 0 ist. Bei dieser Ausführungsform der Erfindung können Daten im RAM 610, welche durch das Register DR2 oder DR3 adressiert werden, nur über den Bus B BUS ausgelesen werden. Die Signalfolge zur Auslesung dieser Werte kann erhalten werden, indem der Wert von MC2 in Fig. 7C auf 2 bzw. 3 geändert wird und indem das Torsteuersignal BOUT anstelle von AOUT verwendet wird.
  • Die Fig. 7D zeigt die Steuersignale, welche die Daten-RAM- Schaltung 228 dazu bringen, einen vom Bus B BUS gelieferten Wert in eine Zelle des RAM 610 einzuschreiben, die den im Register DR2 gehaltenen Adressenwert hat (d. h. B DST = 2). Als erster Schritt dieser Operation ändert die Steuerschaltung 614 das Signal MC2 auf den Wert 2. Dies konditioniert den Multiplexer 618, den im Register DR2 gehaltenen Adressenwert an den Eingangsanschluß des Adressenregisters 620 zu legen. Wenn sich der Adressenwert stabilisiert hat, pulst die Steuerschaltung 614 das Signal LA, womit das Adressenregister 620 konditioniert wird, um den seinem Eingangsanschluß angelegten Wert zu laden. Nachdem sich der an das RAM 610 gelegte Adressenwert stabilisiert hat, ändert die Steuerschaltung 614 das Signal BIN auf den Logikwert 1, wodurch die Torschaltung 626 veranlaßt wird, den auf dem Bus B BUS anstehenden Wert an den I/O-Bus des RAM 610 zu legen. Nach einer Stabilisierungsperiode pulst die Steuerschaltung 614 das Signal WE, um das RAM 610 zu konditionieren, die auf seinem I/O-Bus anstehenden Daten in die Zelle zu schreiben, welche den seinem Adresseneingang angelegten Adressenwert hat. Die Signale, die dazu verwendet werden, mittels des Adressenwertes in DR3 Datenwerte aus dem Bus B BUS in das RAM 610 zu schreiben, sind die gleichen, wie sie in Fig. 7D gezeigt sind, nur daß das Signal MC2 den Wert 3 anstatt dem Wert 2 hat. Bei der vorliegenden Ausführungsform der Erfindung können Speicherschreiboperationen, die Daten auf dem Bus A BUS verwenden, nur die Register DR0 und DR1 benutzen. Infolgedessen wäre zur Darstellung der Signale, die für diese Operationen verwendet werden (A DST = 28 oder 29), die Fig. 7D in dreierlei Weise zu ändern: das Signal B BUS müßte das Signal A BUS werden, der Wert des Signal MC2 müßte 0 bzw. 1 werden, und das Signal BIN müßte das Signal AIN werden.
  • Die Fig. 7E zeigt die gleiche Operation wie in 7D, nur daß der Adressenwert nach Speicherung des Datenwertes erhöht wird. Diese Operation wird hervorgerufen, wenn der Wert im Feld B DST gleich 4 ist. Die Signale B BUS, MC2, LA, BIN und WE sind die gleichen wie oben in Verbindung mit Fig. 7D beschrieben. Außerdem ändert die Steuerschaltung 614 kurz nach Änderung des Wertes des Signals BIN das Signal I/D auf den Logikwert 1. Dieses Signal veranlaßt die Erhöhungs/Verminderungs-Schaltung 622, den im Adressenregister 620 gehaltenen Wert zu erhöhen und das Resultat an den zweiten Eingangsanschluß des Multiplexers 616 zu legen. Wenn sich dieser Wert stabilisiert hat, pulst die Steuerschaltung 614 das Signal MC1, um den erhöhten Adressenwert an die Register DR0 bis DR2 zu legen. Die Steuerschaltung 614 pulst das Signal L2, während das Signal MC1 im Logikzustand 1 ist, um den erhöhten Adressenwert in das Register DR2 zu laden.
  • Durch Halten des Wertes des Signals I/D auf dem Logikwert 0 über die Dauer des Befehlszyklus, können die in Fig. 7E gezeigten Signals modifiziert werden, um den Adressenwert zu vermindern anstatt zu erhöhen. Signale für die Schreiboperationen, welche die Register DR0, DR1 und DR3 verwenden, können auf der Grundlage von Fig. 7E erhalten werden, indem die Signale B BUS, MC2 und BIN modifiziert werden, wie es oben in Verbindung mit Fig. 7D beschrieben ist. Außerdem können die Signale, die verwendet werden für die Lese- und Erhöhungsoperationen (A SRC = 18 und 19 und B SRC = 4 und 5) und für die Lese- und Verminderungsoperationen (A SRC = 20 und 21 und B SRC = 6 und 7), erhalten werden durch Addition der Signale MC1, I/D und L2 aus Fig. 7E, unter geeigneten Modifikationen, mit den in Fig. 7C gezeigten Signalen.
  • Bei dieser Ausführungsform der Erfindung werden die in den Fig. 7A bis 7E gezeigten Impulssignale erzeugt, indem selektiv Impulse des von der Quelle 225 an die Daten-RAM- Schaltung 228 gelieferten 25-MHz-Signals CLK eingetastet werden und indem die getasteten Taktimpulse über kaskadengeschaltete Torglieder verzögert werden. Selbst wenn das Taktsignal CLK zur Erzeugung ihrer Steuersignale verwendet wird, spricht die Daten-RAM-Schaltung 228 auf die Taktsignale CKA und CKB an, um ihre Operation zu suspendieren, wenn diese Taktsignale durch einen Befehl PAUSE oder HALT eingefroren werden.
  • Unter Heranziehen der Fig. 6 und 7A bis 7E und der zugehörigen Beschreibung dürfte ein Fachmann auf dem Gebiet des Entwurfs digitaler Signalverarbeitungsschaltungen leicht in der Lage sein, eine geeignete Steuerschaltung 614 zur Verwendung in der Daten-RAM-Schaltung 228 zu bauen.
  • Wie weiter oben in Verbindung mit Fig. 1B beschrieben wurde, kann ein Segment eines Bildes codiert werden als eine Modifikation eines entsprechenden Segmentes aus dem vorangegangenen Bild. Diese Form der Codierung, relative Codierung genannt, enthält Parameter, die einen Offset in der horizontalen und vertikalen Richtung zwischen einander entsprechenden Pixelpositionen der beiden Segmente beschreiben (z. B. ΔX und ΔY aus Fig. 1B). Wie oben beschrieben, können diese Offsetwerte als Bruchteile des Abstandes zwischen benachbarten Pixeln ausgedrückt werden. Zur richtigen Decodierung von Bildern, in denen der Bruchteil eines Pixel- Offsetwertes nicht gleich 0 ist, enthält der Videosignalprozessor 210 zweckmäßigerweise eine Schaltung zur Erzeugung von Pseudo-Pixeln aus den Pixeln des Segmentes im vorangegangenen Teilbild. Diese Pseudo-Pixel haben Werte, die den Werten von bruchteilmäßig versetzten Pixeln angenähert sind. Bei der vorliegenden Ausführungsform der Erfindung werden die Pseudo-Pixel durch den Pixelinterpolator 246 erzeugt.
  • Der Pixelinterpolator 246 ist so ausgebildet, daß er Paare von Zwischenwerten berechnet und speichert, welche in der vertikalen Richtung interpolierten Pixeln entsprechen. Diese Paare von Zwischenwerten werden dann zum Interpolator rückgekoppelt, der unter Bearbeitung aufeinanderfolgender Zwischenwerte eine horizontale Interpolation durchführt, um Pixelwerte zu erzeugen, die sowohl horizontal als auch vertikal interpoliert sind. Mit anderen Worten: der Pixelinterpolator 246 führt verschachtelte Vertikal- und Horizontal-Interpolationsberechnungen durch, um die ausgangsseitigen Pseudo-Pixelwerte zu erzeugen.
  • Die Fig. 8A ist ein Blockschaltbild, das eine Schaltung zeigt, die sich zur Verwendung als Pixelinterpolator 246 eignet. In Fig. 8A ist der 16-Bit-Bus A BUS mit zugeordneten Eingangsanschlüssen von Registern 802 und 812 gekoppelt, um jeweils Pixeldaten z. B. vom Daten-RAM 228 zu liefern und Werte z. B. von der ALU 244 zum Pixelinterpolator 246 zu steuern. Die Register 802 und 812 werden zum Laden von Werten aus dem Bus A BUS konditioniert, wenn das Feld A DST des Mikrocode- Steuerwortes Werte von 5 bzw. 4 hat. Das Mikrocode-Steuerwort wird über den Steuerbus MCW an den Pixelinterpolator 246 gelegt. Das Register 812 ist mit einer Steuerschaltung 814 gekoppelt, die Steuersignale für die verschiedenen Teile des Pixelinterpolators 246 entwickelt, wie weiter unten beschrieben.
  • Der 16-Bit-Wert, der in das Register 802 geladen wird, wenn das Feld A DST einen Wert von 5 hat, wird vom Pixelinterpolator 246 als zwei 8-Bit-Pixelwerte interpretiert, die aufeinanderfolgende Positionen in einer Horizontalzeile des Eingangs-Videosignals haben. In Ansprache auf Signale LR&sub0; und LR&sub1; werden die im Register 802 enthaltenen Werte abwechselnd in die 16-Bit-Register 804 und 806 übertragen. Im Normalbetrieb des Pixelinterpolators 246 sind abwechselnde Werte, die an das Register 802 gelegt werden, entsprechende Paare von Abtastwerten aus aufeinanderfolgenden Zeilen des Eingangs-Videosignals. In Fig. 9A beispielsweise, wo die Dreiecke Pixel des Eingangs-Videosignals darstellen, würde der dem Register 802 angelegte erste Wert diejenigen Werte enthalten, welche die Pixel S&sub0;&sub0; und S&sub0;&sub1; darstellen. Der nächstfolgende Wert, der dem Register angelegt wird, würde Werte enthalten, welche die Pixel S&sub1;&sub0; und S&sub1;&sub1; darstellen, also die entsprechenden Pixelwerte aus der nächsten Zeile des Videosignals.
  • Wie weiter unten anhand der Fig. 9A bis 9C noch beschrieben wird, ist es wünschenswert, daß der Pixelinterpolator die in den Registern 804 und 806 gespeicherten Pixelpaare aus horizontal benachbarten Pixelwerten in Paare vertikal benachbarter Pixelwerte umwandelt. Zu diesem Zweck sind die acht MSB-Positionen der Register 804 und 806 mit den acht MSB- Positionen bzw. den acht LSB-Positionen eines Registers 808 gekoppelt, und die acht LSB-Positionen der Register 804 und 806 sind mit den acht MSB-Positionen bzw. den acht LSB- Positionen eines Registers 810 gekoppelt. Die Register 808 und 810 werden durch ein von der Steuerschaltung 814 geliefertes Signal XF kondioniert, um die ihren Eingangsanschlüssen angelegten Werte zu laden. Bei dem oben beschriebenen Beispiel enthalten die Register 808 und 810 unmittelbar nach dem Pulsen des Signals XF durch die Steuerschaltung 814 die Pixelwertpaare S&sub0;&sub0;, S&sub1;&sub0;, bzw. S&sub0;&sub1;, S&sub1;&sub1;.
  • Die von den Registern 808 und 810 gelieferten 16-Bit-Werte werden an jeweils gesonderte Eingangsanschlüsse eines Multiplexers 811 gelegt. Der Multiplexer wird durch ein von der Steuerschaltung 814 geliefertes Signal MV konditioniert, um den einem ausgewählten Exemplar seiner Eingangsanschlüsse angelegten 16-Bit-Wert an die Multiplexer 816 und 818 durchzulassen. Die acht MSB-Positionen des Ausgangswertes des Multiplexers 811 werden einem Eingangsanschluß des Multiplexers 816 angelegt. Die acht LSB-Positionen des Ausgangswertes des Multiplexers 811 werden einem entsprechenden Eingangsanschluß des Multiplexers 818 angelegt.
  • Die Multiplexer 816 und 818 werden durch ein von der Steuerschaltung 814 geliefertes Signal ML konditioniert, um entweder die beiden vom Multiplexer 811 gelieferte Pixelwerte oder zwei von den Multiplexern 861 und 863 gelieferte vertikal interpolierte 8-Bit-Pixelwerte durchzulassen. Die von den Multiplexern 816 und 818 durchgelassenen Pixelwerte jeweils einem zugeordneten Register 820 bzw. 822 angelegt. Die Register 820 und 822 sprechen auf ein von der Mikrocode-RAM- und Folgesteuerschaltung 226 geliefertes Taktsignal CKA an, um die ihren jeweiligen Eingangsanschlüssen angelegten Werte zu laden. Der im Register 822 gehaltene Pixelwert wird in einer Subtrahierschaltung 824 von dem im Register 820 gehaltenen Pixelwert subtrahiert. Der vom Subtrahierer 824 erzeugte Pixel-Differenzwert wird einer Multiplizierschaltung 825 angelegt.
  • Die bei dieser Ausführungsform der Erfindung verwendete Multiplizierschaltung 825 ist ein programmierbarer Multiplizierer von einem Typ, der mit Stellenverschiebung und Addition arbeitet. Eine für den Multiplizierer 825 geeignete Schaltung ist in Fig. 8B gezeigt. Der zu multiplizierende Wert wird zwei Datenwegen angelegt, deren jeder drei hintereinandergeschaltete Paare jeweils eines Stellenverschiebers und eines Multiplexers enthält. Sowohl der erste als auch der zweite Datenweg führen 9-Bit-Werte. Der vom Subtrahierer 824 gelieferte 8-Bit-Wert bildet die acht MSB- Positionen des an die Verschieber 826 und 840 und an die Multiplexer 828 und 842 gelegten 9-Bit-Wertes. Das LSB dieses Wertes ist gleich Null. Das Extrabit an Genauigkeit wird im Multiplizierer 825 benutzt, um Rundungsfehler zu mildern, die infolge der mit Stellenverschiebung und Addition arbeitenden Multipliziertechnik auftreten können.
  • Der erste Datenweg enthält einen Verschieber 826, der so angeschlossen ist, daß er den vom Subtrahierer 824 gelieferten Pixel-Differenzwert empfängt und eine bitverschobene Version dieses Wertes an einen Eingangsanschluß eines Multiplexers 828 legt. Der andere Eingangsanschluß des Multiplexers 828 ist direkt mit dem Ausgangsanschluß des Subtrahierers 824 gekoppelt. Der Verschieber 826, und jeder der Verschieber im Multiplizierer 825, liefert die acht MSB-Positionen seines 9- Bit-Engangswertes als die acht LSB-Positionen seines 9-Bit- Ausgangswertes. An der MSB-Position des Ausgangswertes wird der Logikwert 0 eingefügt. Ein Fachmann auf dem Gebiet der Konstruktion digitaler Signalverarbeitungsschaltungen wird erkennen, daß eine Stellenverschiebung dieser Art das Äquivalent einer Division durch 2 ist. Der Multiplexer 828 wird durch ein von der Steuerschaltung 814 geliefertes Signal MA&sub1; konditioniert, um entweder den verschobenen oder den unverschobenen Wert an seinem Ausgangsanschluß zu liefern. Der Ausgangsanschluß des Multiplexers 828 ist mit dem Eingangsanschluß eines Verschiebers 830 und mit einem Eingangsanschluß eines Multiplexers 832 gekoppelt. Der Verschieber 830 und der Multiplexer 832 bilden die gleiche Konfiguration wie der Verschieber 826 und der Multiplexer 828. Der Multiplexer 832 wird durch ein Signal MA&sub2; gesteuert, um wahlweise den Ausgangswert des Multiplexers 828 oder eine bitverschobene Version dieses Ausgangswertes zu liefern. Der Multiplexer 832 ist so angeschlossen, daß er seinen Ausgangswert an einen Verschieber 834 und an einen Multiplexer 836 liefert, welche die gleiche Konfiguration wie der Verschieber 830 und der Multiplexer 832 bilden. Der Multiplexer 836 wird durch ein von der Steuerschaltung 814 geliefertes Signal MA&sub3; gesteuert.
  • Der zweite Datenweg enthält drei Paare jeweils eines Verschiebers und eines Multiplexers 840, 842 bzw. 844, 846 bzw. 848, 850, deren jedes in der gleichen Weise konfiguriert ist wie die Verschieber/Multiplexer-Paare im ersten Datenweg. Die Multiplexer 842, 846 und 850 werden durch die Signale MB&sub1; bzw. MB&sub2; bzw. MB&sub3; gesteuert.
  • Die vom Multiplexer 850 gelieferten Ausgangswerte werden einer selektiven zweierkomplementbildenden Schaltung 852 angelegt. Die Schaltung 852 wird durch ein von der Steureschaltung 814 geliefertes Signal CP gesteuert, um entweder ihren Eingangswert oder das Zweierkomplement ihres Eingangswertes an den Eingangsanschluß eines Registers 854 zu liefern. Die vom Multiplexer 836 des ersten Datenweges gelieferten Ausgangswerte werden direkt an den Eingangsanschluß eines Registers 838 gelegt. Beide Register 838 und 854 sprechen auf das von der Mikrocode-RAM- und Folgesteuerschaltung 226 gelieferte Taktsignal CKB an, um die ihren jeweiligen Eingangsanschlüssen angelegten Werte zu laden. Die von den Registern 838 und 854 gelieferten Ausgangswerte werden jeweils zugeordneten unterschiedlichen Eingangsanschlüssen eines Addierers 856 angelegt. Die vom Addierer 856 gelieferten Werte sind die Ausgangswerte des Multiplizierers 825.
  • Durch Steuerung der Werte der Signale MA&sub1;, MA&sub2;, MA&sub3;, MB&sub1;, MB&sub2;, MB&sub3; und CP kann der Multiplizierer 825 konditioniert werden, um die vom Subtrahierer 824 gelieferten Werte mit Maßstabsfaktoren zu multiplizieren, die Werte zwischen 1/8 und 1 annehmen können, und zwar in Stufen von 1/8. Die Tabelle 5 gibt die Werte der verschiedenen Steuersignale an, die benötigt werden, um die graduierten Ausgangswerte zu erzeugen. In der Tabelle 5 konditioniert ein Steuerwert 0 für das Signal MA oder MB den entsprechenden Multiplexer so, daß er den unverschobenen Wert durchläßt, während ein Steuerwert 1 den Multiplexer zum Durchlassen des verschobenen Wertes konditioniert. Ein Wert 1 für das Signal CP konditioniert die selektive zweierkomplementbildende Schaltung 852, um das Komplement des ihrem Eingangsanschluß angelegten Wertes zu bilden. Tabelle 5 MASSSTABSFAKTOR
  • Die Werte der Signale MA&sub1;, MA&sub2;, MA&sub3;, MB&sub1;, MB&sub2;, MB&sub3; und CP werden durch die Steuerschaltung 814 in Ansprache auf den Steuerwert erzeugt, der vom Register 812 geliefert wird.
  • Der skalierte Pixel-Differenzwert vom Addierer 856 wird mit einem von einem Register 857 gelieferten Pixelwert addiert. Der im Register 857 enthaltene Pixelwert wird aus dem Register 822 synchron mit dem von der Mikrocode-RAM- und Folgesteuerschaltung 226 gelieferten Taktsignal CKB geladen. Die vom Subtrahierer 824, vom Multiplizierer 825 und von den Addierern 856 und 858 durchgeführte Funktion läßt sich mit der nachstehenden Gleichung (2) beschreiben.
  • R = SF*(A-B) + B, (2)
  • worin A und B die in den Registern 820 und 822 enthaltenen Pixelwerte sind. SF ist der Skalierungs- oder Maßstabsfaktor, der z. B. von der ALU 244 als ein Feld im Steuerwert geliefert wird und im Register 812 gehalten wird. Der Maßstabsfaktor SF wird über die Signale MA, MB und CP an den Multiplizierer 825 geliefert. R ist der vom Addierer 858 gelieferte Wert. Eine algebraische Manipulation der Gleichung (2) führt zu einer Gleichung (3), die eine herkömmliche lineare Interpolationsoperation beschreibt.
  • R = SF*A + (1-SF)*B (3)
  • Somit ist die Kombination des Subtrahierers 824, des Multiplizierers 825 und der Addierer 856 und 858 ein linearer Interpolator.
  • Der vom Addierer 858 gelieferte Wert wird an jeweils einen zugeordneten Eingangsanschluß von Registern 860 und 862 und an jeweils einen ersten Eingangsanschluß zugeordneter Multiplexer 861 und 863 gelegt. Die zweiten Eingangsanschlüsse der Multiplexer 861 und 863 sind mit den Ausgangsanschlüssen der jeweils zugeordneten Register 860 und 862 gekoppelt. Die Register 860 und 862 laden die ihren jeweiligen Eingangsanschlüssen angelegten Werte koinzident mit dem negativ gerichteten Übergang eines jeweils zugeordneten Taktsignals Φ&sub2; bzw. Φ&sub1;. Die Multiplexer 861 und 863 lassen den vom Addierer 858 gelieferten Wert an den Multiplexer 816 bzw. 818 durch, wenn das betreffende Taktsignal Φ&sub2; bzw. Φ&sub1; den Logikwert 1 hat, ansonsten lassen sie den in den zugeordneten Registern 860 und 862 enthaltenen Wert durch. Diese Konfiguration der Register 860 und 862 und der Multiplexer 861 und 863 ermöglicht ein gleichzeitiges Laden des vom Addierer 858 gelieferten Wertes in beide Register 860 und 820 oder in die Register 862 und 822. Die Bedeutung dieser Fähigkeit wird weiter unten anhand der Fig. 9C beschrieben.
  • Die vom Addierer 858 gelieferten Pixelwerte werden außerdem auf die acht MSB-Positionen und die acht LSB-Positionen eines 16-Bit-Registers 864 gegeben. Die acht MSB-Positionen des Registers 864 werden synchron mit einem von der Steuerschaltung 814 gelieferten Signal L0&sub1; geladen, und die acht LSB-Positionen des Registers 864 werden synchron mit einem von der Schaltung 814 gelieferten Signal L0&sub0; geladen. Die im Register 864 enthaltenen Pixelwerte werden in Ansprache auf ein von der Steuerschaltung 814 geliefertes Signal X0 in ein Register 866 übertragen. Diese Pixelwerte werden dann vom Register 866 an den Bus A BUS gelegt, und zwar unter Steuerung durch das Feld A SRC des Mikrocode-Steuerwortes, das dem Register 866 über den Bus MCW angelegt wird.
  • Im Normalbetrieb entwickelt der Pixelinterpolator 246, als Bestandteil des Videosignalprozessors 210, interpolierte Pseudo-Pixelwerte aus den Pixelwerten eines vorangegangenen Bildes, als ein Schritt bei der Erzeugung von Pixelwerten für das laufende Bild. Die Fig. 9A bis 9C veranschaulichen den Betrieb der Schaltung 246.
  • In der Fig. 9A stellen die drei eckig gezeichneten Punkte S&sub0;&sub0; bis S&sub0;&sub7; und S&sub1;&sub0; bis S&sub1;&sub7; einander entsprechende Pixelwerte aus zwei aufeinanderfolgenden Zeilen des vorangegangenen Bildes dar, die aus einer Bitkarte im VRAM 216 über die FIFO- Eingangsschaltung 232 und den Datenweg 242 geliefert werden. Die kreisförmig gezeichneten Punkte I&sub0;&sub0; bis I&sub0;&sub6; stellen interpolierte Pseudo-Pixelwerte dar. Wie in Fig. 9A gezeigt, liegen die interpolierten Pixelwerte gegenüber den Pixeln im vorangegangenen Bild in Horizontalrichtung um ein Viertel des Pixel-Pixel-Abstandes und in Vertikalrichtung um fünf Achtel des Pixel-Pixel-Abstandes versetzt.
  • Die Fig. 9B zeigt, wie der Pixelinterpolator 264 durch die an den Bus A BUS gelegten Daten gesteuert wird, um die Pseudo- Pixelwerte I&sub0;&sub0; bis I&sub0;&sub3; zum liefern. In Fig. 9B stellen die Zeitintervalle T&sub0; bis T&sub1;&sub6; siebzehn aufeinanderfolgende Befehlszyklen des Videosignalprozessors 210 dar. Während des Befehlszyklus T&sub0; hat das Feld A DST des Mikrocode-Steuerwortes den Wert 4, was den Pixelinterpolator 246 konditioniert, um einen 16-Bit-Steuerwert zu laden, der z. B. von der ALU 244 über den Bus A BUS geliefert wird. Die acht MSB-Positionen dieses 16-Bit-Steuerwertes konditionieren den Pixelinterpolator 246 in seiner In-Phase-Betriebsart. In dieser Betriebsart haben die Eingangs-Pixelwerte und ihre entsprechenden Ausgangs-Pixelwerte geradzahlige Adressen im VRAM 216. Der Pixelinterpolator 246 kann alternativ in einer Außerphase-Betriebsart arbeiten. In der Außerphase-Betriebsart sind die Eingangspixel-Adressen ungeradzahlig und die Ausgangspixel-Adressen geradzahlig. Der dem Pixelinterpolator zur Zeit T&sub0; angelegte Steuerwert enthält ferner die Werte 5 und 2 in den Bits 0-3 und 4-7. Der Wert 2 entspricht dem Offset- oder Maßstabsfaktor 2/8 oder 1/4 in der Horizontalrichtung, und der Wert 5 entspricht dem Offset von 5/8 in der Vertikalrichtung. Beim vorliegenden Beispiel werden die Werte 5 und 2 aus dem Bruchteil der Werte ΔX und ΔY eines Relativcode-Datensatzes erhalten, wie er in Fig. 1B gezeigt ist.
  • Während der Befehlszyklen T&sub1; und T&sub2; hat das Feld A DST des Mikrocode-Steuerwortes den Wert 5, und die Pixelwertpaare S&sub0;&sub0;, S&sub0;&sub1; und S&sub1;&sub0;, S&sub1;&sub1; werden an das Register 802 des Pixelinterpolators 246 gelegt. Für den Befehlszyklus T&sub3; gibt es keine Aktivität auf den Bus A BUS hinsichtlich des Pixelinterpolators 246. Während des Befehlszyklus T&sub4; steht am Ausgangsanschluß des Pixelinterpolators 246 ein ungültiges Paar interpolierter Pixelwerte (x, x) zur Verfügung. Diese Werte werden von der Videosignal-Verarbeitungsschaltung 210 ignoriert.
  • In den Befehlszyklen T&sub5; und T&sub6; werden die Pixelpaare S&sub0;&sub2;, S&sub0;&sub3; und S&sub1;&sub2;, S&sub1;&sub3; an das Register 802 des Pixelinterpolators 246 gelegt. Während des Befehlszyklus T&sub7; gibt es keine Aktivität auf den Bus A BUS hinsichtlich des Pixelinterpolators 246. Im Befehlszyklus T&sub8; wird ein zweites ungültiges Paar interpolierter Pixelwerte am Ausgangsanschluß des Pixelinterpolators 246 verfügbar. Diese Werte werden ignoriert. Während der Befehlszyklen T&sub9; und T&sub1;&sub0; werden die Pixelwertpaare S&sub0;&sub4;, S&sub0;&sub5; und S&sub1;&sub4;, S&sub1;&sub5; an das Register 802 des Pixelinterpolators 246 gelegt. Im Befehlszyklus T&sub1;&sub1; gibt keine Aktivität auf den Bus A BUS hinsichtlich des Pixelinterpolators. Während des Befehlszyklus T&sub1;&sub2; hat das Feld A SRC des Mikrocode- Steuerwortes den Wert 5, was den Pixelinterpolator 246 konditioniert, an den Bus A BUS einen 16-Bit-Wert zu legen, der die interpolierten Pixelwerte I&sub0;&sub0; und I&sub0;&sub1; darstellt.
  • Die Befehlszyklen T&sub1;&sub3; bis T&sub1;&sub6; sind ähnlich den Befehlszyklen T&sub9; bis T&sub1;&sub2;, die einzigen Unterschiede sind die Pixelwerte, die an die bzw. von der Pixelinterpolationsschaltung 246 geliefert werden. Allgemein gesagt wiederholt die Mikrocode-Folgesteuerschaltung 226 die Operationen der Befehlszyklen T&sub9; bis T&sub1;&sub2; unter Verwendung anderer Eingangs- und Ausgangs-Pixelwerte so oft, wie es notwendig ist, um alle gewünschten interpolierten Pseudo-Pixelwerte zu erzeugen.
  • Der bei dieser Ausführungsform der Erfindung verwendete Pixelinterpolator 246 ist eine Einrichtung, die in hohem Maße eine Pipeline-Struktur hat. Die Pipeline-Verzögerung beträgt 11 Befehlszyklen, dies ist die Verzögerung zwischen dem Anlegen des ersten Eingangswertes zur Zeit T&sub1; und der Abgabe des ersten Ausgangswertes zur Zeit T&sub1;&sub2;.
  • Die Fig. 9C ist ein Signalzeitdiagramm, das den zeitlichen Verlauf der verschiedenen Signale zeigt, die von der Steuerschaltung 814 bei dem in Fig. 9B dargestellten Beispiel zeigt. Die Signale CKA und CKB sind gegenphasige Taktsignale mit einer Periode, die im wesentlichen gleich der Zeit eines Befehlszyklus ist. Die Taktsignale CKA und CKB werden dem Pixelinterpolator von der Mikrocode-RAM- und Folgesteuerschaltung 226 angelegt.
  • Alle in der Pixelinterpolatorschaltung nach Fig. 8 verwendeten Register werden durch negative Flanken getriggert. Das heißt, sie sind alle so konditioniert, daß sie die ihren Eingangsanschlüssen angelegten Werte koinzident mit negativ gerichteten Übergängen ihrer zugeordneten Takt- oder Ladesignale laden. Die Register in Fig. 8 werden entweder durch das Taktsignal CKA oder das Taktsignal CKB synchronisiert.
  • Gemäß den Fig. 9B und 9C wird der Steuerwert für den Pixelinterpolator in das Register 812 während des Befehlszyklus T&sub0; koinzident mit dem negativ gerichteten Übergang des Signals CKA geladen. Dieser Wert stabilisiert die Steuerschaltung 814 mit dem Ende des Befehlszyklus T&sub0;, was die Schaltung 814 so konditioniert, daß sie die Werte 1, 0, 0, 1, 1, 1 und 0 für die Signale MA1, MA2, MA3, MB1, MB2, MB3 und CP (in einer Zuordnung entsprechend der genannten Reihenfolge) anlegt. Diese Werte entsprechen einem Maßstabsfaktor von 5/8, dem beim vorliegenden Beispiel verwendeten Maßstabsfaktor zur Interpolation zwischen Paaren vertikal zueinander ausgerichteter Pixelwerte.
  • Das erste Pixelwertpaar S&sub0;&sub0; und S&sub0;&sub1; wird während des Befehlszyklus T&sub1; koinzident mit dem negativ gerichteten Übergang des Signals CKA in das Register 802 geladen. Diese Pixelwerte werden am Ende des Befehlszyklus T&sub1; an das Register 806 übertragen, koinzident mit der negativ gerichteten Flanke des Signals LR&sub0;.
  • Das zweite Pixelwertpaar S&sub1;&sub0; und S&sub1;&sub1; wird koinzident mit dem negativ gerichteten Übergang des Taktsignals CKA, der während des Befehlszyklus T&sub2; erscheint, in das Register 802 geladen. Diese Pixelwerte werden koinzident mit dem negativ gerichteten Übergang des Signals des Signals LR&sub1;, der am Ende des Befehlszyklus T&sub2; erscheint, in das Register 804 übertragen.
  • Während des Befehlszyklus T&sub3; werden die in den acht MSB- Positionen der Register 804 und 806 gehaltenen Pixelwerte in die acht MSB-Positionen bzw. die acht LSB-Positionen des Registers 808 übertragen, und die in den acht LSB-Positionen der Register 804 und 806 gehaltenen Werte werden an die acht MSB-Positionen bzw. die acht LSB-Positionen des Registers 810 übertragen. Diese Übertragung erfolgt koinzident mit dem negativ gerichteten Übergang des Signals XF. Diese Übertragung hat die Wirkung, daß die Paare horizontal miteinander ausgerichteter Pixelwerte S&sub0;&sub0;, S&sub0;&sub1; und S&sub1;&sub0;, S&sub1;&sub1; in den Registern 804 bzw. 806 in Paare vertikal miteinander ausgerichteter Pixelwerte S&sub1;&sub0;, S&sub1;&sub1; und S&sub0;&sub0;, S&sub0;&sub1; in den Registern 808 bzw. 810 umgewandelt werden.
  • Während des Zyklus T&sub4; ändert die Steuerschaltung 814 die Signale MA&sub1; bis MA&sub3;, MB&sub1; bis MB&sub3; und CP auf Werte, die im Einklang mit einem Maßstabsfaktor von 5/8 stehen. Die Steuerschaltung 814 erzeugt außerdem den Logikwert 1 als Signal MV und den Logikwert 0 als Signal ML, womit der durch das Signal MV gesteuerte Multiplexer 811 und die durch das Signal ML gesteuerten Multiplexer 816 und 818 so konditioniert werden, daß sie die beiden im Register 810 gehaltenen Pixelwerte an die zugeordneten Eingangsanschlüsse der Register 820 und 822 übertragen. Koinzident mit der negativ gerichteten Flanke des Signals CKA während des Befehlszyklus T&sub4; wird der Pixelwert S&sub0;&sub0; in das Register 822 und der Pixelwert S&sub1;&sub0; in das Register 820 geladen. Während des restlichen Teils des Befehlszyklus T&sub4; laufen die in den Registern 820 und 822 enthaltenen Werte durch den Subtrahierer 824 und den ersten und zweiten Datenweg des Multiplizierers 825, wie oben beschrieben. Die vom Multiplexer 836 und von dem selektiven Zweierkomplementbildner 852 gelieferten skalierten Pixeldifferenzwerte werden koinzident mit der negativ gerichteten Flanke des Signals CKB, die am Ende des Befehlszyklus T&sub4; erscheint, in die zugeordneten Register 838 und 854 geladen. Zur selben Zeit wird der Pixelwert -00 aus dem Register 822 in das Register 857 geladen.
  • Im Befehlszyklus T&sub5; werden die in den Registern 838 und 854 enthaltenen Pixeldifferenzwerte vom Addierer 856 summiert. Die resultierende Summe wird dann vom Addierer 858 mit dem vom Register 857 gelieferten Pixelwert S&sub0;&sub0; addiert. Die vom Addierer 858 gelieferte Summe, die das 5/8-fache des Pixelwertes S&sub1;&sub0; plus dem 3/8-fachen des Pixelwertes S&sub0;&sub0; darstellt, wird im Register 862 gespeichert, synchron mit dem negativ gerichteten Übergang des Signals Φ&sub1;.
  • Ebenfalls während des Befehlszyklus T&sub5; werden die über den Bus A BUS gelieferten Pixelwerte S&sub0;&sub2; und S&sub0;&sub3; in das Register 802 geladen und dann synchron mit dem negativ gerichteten Übergang des Signals LR&sub0; an das Register 806 übertragen.
  • Während des Befehlszyklus T&sub6; werden die Pixelwerte S&sub1;&sub2; und S&sub1;&sub3; an den Bus A BUS gelegt, in das Register 802 geladen und dann synchron mit dem negativ gerichteten Übergang des Signals LR&sub1; an das Register 804 übertragen.
  • In der Mitte des Befehlszyklus T&sub6; werden die im Register 808 gehaltenen Pixelwerte S&sub0;&sub1; und S&sub1;&sub1; über die Multiplexer 811, 816 und 818 an die zugeordneten Register 822 und 820 übertragen und, in Ansprache auf den negativ gerichteten Übergang des Signals CKA, in diese Register geladen. Diese Pixelwerte laufen während des restlichen Teils des Befehlszyklus T&sub6; und der ersten Hälfte des Befehlszyklus T&sub7; durch den Subtrahierer 824, den Multiplizierer 825, das Register 857 und den Addierer 858.
  • Während der ersten Hälfte des Befehlszyklus T&sub7; werden die horizontal miteinander ausgerichteten Pixelwerte S&sub0;&sub2;, S&sub0;&sub3; und S&sub1;&sub2;, S&sub1;&sub3;, die im Register 806 bzw. 804 enthalten sind, in vertikal miteinander ausgerichtete Pixelwerte S&sub0;&sub2;, S&sub1;&sub2; bzw. S&sub0;&sub3;, S&sub1;&sub3; umgewandelt, die synchron mit dem negativ gerichteten Übergang des Signals XF, das in der Mitte des Befehlszyklus T&sub7; erscheint, in das jeweils zugeordnete Register 810 bzw. 808 eingespeichert werden.
  • Der vertikal interpolierte Pixelwert (S&sub0;&sub1;, S&sub1;&sub1;), der vom Addierer 858 während des Befehlszyklus T&sub7; geliefert wird, wird in das Register 860 und über die Multiplexer 861 und 816 in das Register 820 geladen, synchron mit der negativ gerichteten Flanke des Signals CKA, die in der Mitte des Befehlszyklus T&sub7; erscheint. Das Signal ML, welches den Multiplexer 816 zum Durchlassen des vom Multiplexer 861 gelieferten Wertes an das Register 820 konditioniert, stellt auch den Multiplexer 818 so ein, daß er den vom Multiplexer 863 gelieferten vertikal interpolierten Pixelwert (S&sub0;&sub0;, S&sub1;&sub0;) an das Register 822 legt. Dieser Pixelwert wird synchron mit dem negativ gerichteten Übergang des Signals CKA, der in der Mitte des Befehlszyklus T&sub7; erscheint, in das Register 822 geladen, die Signale MA&sub1; bis MA&sub3;, MB&sub1; bis MB&sub3; und das Signal CP werden auf die Werte 1, 0, 0, 1, 1, 0 und 1 geändert (Zuordnung entsprechend der genannten Reihenfolge). Diese Werte entsprechen einem Maßstabsfaktor von 1/4. Während der zweiten Hälfte des Befehlszyklus T&sub7; und der ersten Hälfte des Befehlszyklus T&sub8; bewirken der Subtrahierer 824, der Multiplizierer 825 und der Addierer 858 die horizontale Interpolation eines Pixelwertes aus diesem Paar vertikal interpolierter Pixelwerte, um den Pixelwert I&sub0;&sub0; zu erzeugen. Dieser Pixelwert wird koinzident mit der negativ gerichteten Flanke des Signals L0&sub0;, die in der Mitte des Befehlszyklus T&sub8; erscheint, an den acht LSB- Positionen des Registers 864 gespeichert.
  • Ebenfalls während des Befehlszyklus T&sub8; werden die beiden im Register 810 gehaltenen Pixelwerte S&sub0;&sub2;, S&sub1;&sub2; über die Multiplexer 812, 816 und 818 in die jeweils zugeordneten Register 822 und 820 übertragen. Diese Pixelwerte werden synchron mit dem negativ gerichteten Übergang des Signals CKA, der in der Mitte des Befehlszyklus T&sub8; erscheint, in die Register 822 und 820 geladen. Im restlichen Teil des Befehlszyklus T&sub8; und der ersten Hälfte des Befehlszyklus T&sub9; berechnen der Subtrahierer 824, der Multiplizierer 825 und der Addierer 858 einen vertikal interpolierten Pixelwert aus dem Pixelwertpaar S&sub0;&sub2;, S&sub1;&sub2;. Dieser interpolierte Pixelwert wird in die Register 862 und 822 gespeichert, jeweils synchron mit dem negativ gerichteten Übergang des zugeordneten Signals Φ&sub1; bzw. CKA, die beide in der Mitte des Befehlszyklus T&sub9; erscheinen. Während des restlichen Teils des Befehlszyklus T&sub9; und der ersten Hälfte des Befehlszyklus T&sub1;&sub0; wird der horizontal interpolierte Pixelwert I&sub0;&sub1; aus den von den Multiplexern 861 und 863 gelieferten vertikal interpolierten Pixelwerten entwickelt. Die Signale MA&sub1; bis MA&sub3;, MB&sub1; bis MB&sub3; und CP werden während des Befehlszyklus T&sub9; durch die Steuerschaltung 814 so eingestellt, daß sie die Werte 0, 0, 0, 1, 1, 0 und 1 haben (Zuordnung gemäß der genannten Reihenfolge). Diese Werte entsprechen einem Maßstabsfaktor von 3/4. Der Pixelwert I&sub0;&sub1; wird synchron mit dem negativ gerichteten Übergang des Signals L0&sub1;, der in der Mitte des Befehlszyklus T&sub1;&sub0; erscheint, in die acht MSB- Positionen des Registers 864 eingespeichert. Das Pixelpaar I&sub0;&sub0;, I&sub0;&sub1; wird am Ende des Befehlszyklus T&sub1;&sub0;, synchron mit dem negativ gerichteten Übergang des Signals X0, aus dem Register 864 in das Register 866 übertragen.
  • Ebenfalls in der Mitte des Befehlszyklus T&sub1;&sub0; werden die im Register 808 gehaltenen Pixelwerte S&sub0;&sub3; und S&sub1;&sub3; in die zugeordneten Register 822 und 820 geladen, synchron mit der negativ gerichteten Flanke des Signals CKA. Im restlichen Teil des Befehlszyklus T&sub1;&sub0; und in der ersten Hälfte des Befehlszyklus T&sub1;&sub1; wird aus den Pixelwerten S&sub0;&sub3; und S&sub1;&sub3; ein vertikal interpolierter Pixelwert entwickelt. Dieser Pixelwert wird in die Register 860 und 820 gespeichert, jeweils synchron mit dem negativ gerichteten Übergang des Signals Φ&sub2; bzw. CKA in der Mitte des Zyklus T&sub1;&sub1;.
  • Während der Befehlszyklen T&sub9; und T&sub1;&sub0; werden die Pixelpaare S&sub0;&sub4;, S&sub0;&sub5; und S&sub1;&sub4;, S&sub1;&sub5; in die zugeordneten Register 806 bzw. 804 geladen. In der Mitte des Befehlszyklus T&sub1;&sub1; werden diese Pixelwerte in vertikal miteinander ausgerichtete Pixelpaare S&sub0;&sub4;, S&sub1;&sub4; und S&sub0;&sub5;, S&sub1;&sub5; konfiguriert, die in die zugeordneten Register 810 und 808 gespeichert werden.
  • Während der zweiten Hälfte des Befehlszyklus T&sub1;&sub1; und der ersten Hälfte des Befehlszyklus T&sub1;&sub2; berechnen der Subtrahierer 824, der Multiplizierer 825 und der Addierer 858 den Pixelwert 102, der synchron mit dem negativ gerichteten Übergang des Signals L0&sub0;, der in der Mitte des Zyklus T&sub1;&sub2; erscheint, in die acht LSB-Positionen des Registers 864 eingespeichert wird. Ebenfalls im Mittelpunkt des Befehlszyklus T&sub1;&sub2; wird das Pixelpaar I&sub0;&sub0;, I&sub0;&sub1; aus dem Register 866 an den Bus A BUS gelegt.
  • Während der Befehlszyklen T&sub1;&sub2; und T&sub1;&sub3; wird ein vertikal interpolierter Pixelwert für das Pixelpaar S&sub0;&sub4;, S&sub1;&sub4; entwickelt. Dieser interpolierte Pixelwert wird in die Register 860 und 820 geladen, jeweils synchron mit dem negativ gerichteten Übergang des zugeordneten Signals Φ&sub2; bzw. CKA, der in der Mitte des Befehlszyklus T&sub1;&sub3; erscheint. Während der Befehlszyklen T&sub1;&sub3; und T&sub1;&sub4; wird der Pixelwert 103 entwickelt, unter Verwendung eines Maßstabsfaktors von 3/4. Dieser Pixelwert wird in der Mitte des Befehlszyklus T&sub1;&sub4; in die acht MSB- Positionen des Registers 864 eingespeichert. Am Ende des Befehlszyklus T&sub1;&sub4; wird das Pixelpaar I&sub0;&sub2;, I&sub0;&sub3; aus dem Register 864 in das Register 866 übertragen. Dieses Pixelpaar wird während des Befehlszyklus T&sub1;&sub6; an den Bus A BUS gelegt.
  • Die Signale, die den Pixelinterpolator 246 steuern, wiederholen sich alle vier Befehlszyklen. So sind z. B. die Signale für die Befehlszyklen T&sub1;&sub3; bis T&sub1;&sub6; die gleichen wie für die Befehlszyklen T&sub9; bis T&sub1;&sub2;. Diese Folge von Signalen wiederholt sich so oft, wie es notwendig ist, um die gewünschte Anzahl an Pseudo-Pixelwerten zu erzeugen.
  • Es sei bemerkt, daß der erste vertikal interpolierte Pixelwert eines Paars von Pixelwerten, die horizontal interpoliert werden sollen, abwechselnd die Register 820 und 822 belegt. Infolgedessen wechselt der vertikal interpolierte Wert, der im Addierer 858 mit dem skalierten vertikal interpolierten Differenzwert addiert wird, zwischen dem ersten und dem zweiten vertikal interpolierten Wert in aufeinanderfolgenden Paaren vertikal interpolierter Werte ab, die kombiniert werden, um aufeinanderfolgende horizontal interpolierte Werte zu erzeugen. Um dieses Abwechseln für die Berechnungen der horizontalen Interpolation zu berücksichtigen, liefert die Steuerschaltung 814 abwechselnd Werte für die Signale MA&sub1; bis MA&sub3;, MB&sub1; bis MB&sub3; und CP, die einmal dem Maßstabsfaktor SFH und einmal dem Maßstabsfaktor (1-SFH) entsprechen, wobei SFH der horizontale Interpolations-Maßstabsfaktor ist. Beim vorliegenden Beispiel, wenn der ersten Pixelwert eines Paars im Register 822 ist, erzeugt der Horizontal-Interpolationsfaktor von 1/4 den richtigen Pseudopixel-Ausgangswert. Wenn der erste Pixelwert eines Paars jedoch im Register 820 ist, wird der Horizontal-Interpolationsfaktor auf 3/4 geändert, um den korrekten Pseudopixel-Ausgangswert zu erzeugen.
  • Im oben beschriebenen Fall konditioniert der dem Pixelinterpolator 246 während des Befehlszyklus T&sub0; angelegte Steuerwert den Interpolator so, daß er in der In-Phase-Betriebsart arbeitet. Die Fig. 9D und 9E veranschaulichen den Betrieb des Pixelinterpolators in der Außerphase-Betriebsart. Wie oben beschrieben, wird die Außerphase-Betriebsart für den Pixelinterpolator 246 gewählt, wenn die Adresse eines Eingangs- Pixelpaars nicht mit der Adresse eines 16-Bit-Wertes im VRAM 216 zusammenfällt. Diese Bedingung ergibt sich, wenn die Paare von Eingangs-Pixelwerten an einer Wortgrenze des VRAM auseinandergerissen sind. Die Fig. 9E veranschaulicht diese Situation.
  • Der grundlegende Unterschied zwischen der In-Phase- und der Außerphase-Betriebsart des Pixelinterpolators 246 ist in den Fig. 9E und 9F gezeigt. Wie in Fig. 9E gezeigt, stehen die Pixelwerte I&sub0;&sub0; und I&sub0;&sub1; am Ausgangsregister 866 während des Befehlszyklus T&sub1;&sub6; anstatt während des Zyklus T&sub1;&sub2; wie in der In-Phase-Betriebsart zur Verfügung. Wie in Fig. 9F gezeigt, wird diese Änderung im Betrieb durch Umschalten der Signale L0&sub0; und L0&sub1; und durch Verzögerung des Signals X0 um zwei Perioden des Taktsignals CKA erreicht.
  • Obwohl der Pixelinterpolator 246 als Einrichtung zur räumlichen Interpolation von Pixelwerten für ein Videobild beschrieben wurde, kann er allgemeiner gesagt auch dazu verwendet werden, Pixelwerte in der horizontalen oder der vertikalen Richtung zu mitteln. Diese Funktion ist nützlich für verschiedene Filterungsalgorithmen. Sollte z. B. das Anlegen der Pixelwerte in Fig. 9A an den Pixelinterpolator 246 in der Folge S&sub0;&sub0;, S&sub0;&sub1;, S&sub0;&sub0;, S&sub0;&sub1;; S&sub0;&sub2;, S&sub0;&sub3;, S&sub0;&sub2;, S&sub0;&sub3;; usw. geschehen, würden die vom Pixelinterpolator gelieferten Ausgangswerte Pixel darstellen, die nur in der horizontalen Richtung interpoliert oder gemittelt sind.
  • Anhand der vorstehenden Beschreibung und der Fig. 8A, 8B und 9A bis 9F ist ein Fachmann auf dem Gebiet der Konstruktion digitaler Videosignal-Verarbeitungsschaltungen leicht in der Lage, eine geeignete Schaltungsanordnung zu bauen, die als Pixelinterpolator 246 verwendet werden kann.
  • Der Zugriff auf Pixelwerte und Daten im VRAM 216 durch den Videosignalprozessor 210 erfolgt über den statistischen Decoder 230, die FIFO-Eingangsschaltungen 232 und 234 und die FIFO-Ausgangsschaltung 236. Alle Datenlese- und Datenschreiboperationen am VRAM 216 mittels dieser Einrichtungen werden durch die VRAM-Steuereinheit 238 koordiniert. Der statistische Decoder und jede der FIFO-Schaltungen hat einen zugeordneten VRAM-Adressen- und Steuerwert. Die Mikrocode-Folgesteuerschaltung 226 initialisiert die FIFO-Parameter, wonach jede FIFO-Schaltung autonom läuft. Aus der Sicht des Videosignalprozessors 210 gesehen, gibt es drei Eingangsbefehle und einen Ausgangsbefehl. Die drei Eingangsbefehle betreffen das Nehmen von Pixelwerten aus dem statistischen Decoder 230, der FIFO- Eingangsschaltung 232 oder der FIFO-Eingangsschaltung 234, und der Ausgangsbefehl betrifft das Senden eines Pixelwertes an die FIFO-Ausgangsschaltung 236. Jede dieser Einrichtungen gibt automatisch Speicherzugriffs-Anforderungen für 32-Bit-Wörter zum und vom VRAM 216 und führt das Paketieren und Entpaketieren durch, welches notwendig ist, um für die Umwandlung zwischen 8- oder 16-Bit-Pixelwerten und den im VRAM 216 gespeicherten 32-Bit-Wörtern durchzuführen oder um statistisch codierte Daten in Pixelwerte umzuwandeln.
  • Der statistische Decoder 230 übersetzt längenvariabel codierte Daten, die im VRAM 216 enthalten sind, in 16-Bit-Binärwerte, die dem Bus B BUS angelegt werden, in Ansprache auf den Wert 14 im Feld B SRC des Mikrocode-Steuerwortes. Die Fig. 10A ist ein Blockschaltbild einer Schaltung, die sich zur Realisierung des statistischen Decoders 230 eignet.
  • Wie weiter unten anhand der Fig. 13A beschrieben wird, wird der Adressenwert, der für den Zugriff des statistischen Decoders 230 auf das VRAM 216 verwendet wird, in zwei Stufen z. B. aus dem Daten-RAM 228 in die VRAM-Steuereinheit geladen. Zuerst wird ein Wert, der die acht HSB-Positionen eines 32- Bit-Adressenwertes darstellt, an den Bus B BUS gelegt, während das Feld B DST des Microcode-Steuerwortes den Wert 31 hat. Als nächstes werden die vierzehn LSB-Positionen des Adressenwertes aus den vierzehn MSB-Positionen eines dem Bus B BUS angelegten Wertes geladen, während das Feld B DST den Wert 30 hat. Der Wert 30 im Feld B DST des Mikrocode-Steuerwortes konditioniert die Steuerschaltung 1018 so, daß sie den statistischen Decoder 230 zurücksetzt und eine Operation statistischer Decodierung einleitet.
  • Eine typische Befehlsfolge würde wie folgt ablaufen. Während zweier aufeinanderfolgender Befehlszyklen werden die acht MSBs und die vierzehn LSBs eines Adressenwertes in ein Registerpaar in der VRAM-Steuereinheit 238 geladen. Im selben Befehlszyklus, in dem die vierzehn LSBs des Adressenwertes geladen werden, wird der statistische Decoder 230 zurückgesetzt und beginnt zu arbeiten.
  • Die Rücksetzoperation wird von der Steuerschaltung 1018 durchgeführt, die den Logikwert 1 als Signal RV an das Flipflop 1017 legt, wodurch der im Ausgangsregister 1016 gehaltene 8-Bit-Wert als ungültig markiert wird. Gleichzeitig pulst die Steuerschaltung 1018 ein Signal RDR, das dem Setzeingang S eines Flipflops 1022 angelegt wird. Diese Operation ändert das Ausgangssignal SDR des Flipflops 1022 auf den Logikwert 1. Das Signal SDR wird über den Bus R/S an die VRAM-Steuereinheit 238 gelegt, um eine Leseoperation an der adressierten Stelle im VRAM 216 anzufordern. Das Ausgangssignal SDR des Flipflops 1022 wird außerdem an die Steuerschaltung 1018 gelegt, um anzuzeigen, daß Daten aus dem VRAM 216 angefordert worden sind.
  • Wenn die VRAM-Steuereinheit 238 die angeforderte Leseoperation verarbeitet hat und das VRAM 216 den angeforderten 32-Bit-Wert an den Bus D BUS legt, pulst die VRAM-Steuereinheit 238 ein Abtastsignal SDS, das über den Bus R/S geliefert wird. Dieses Signal konditioniert ein Register 1010 zum Laden des 32-Bit- Wertes vom Bus D BUS. Das Signal SDS wird außerdem an den Rücksetzeingang R des Flipflops 1022 gelegt, um den Zustand des Signals SDR auf den Logikwert 0 zu ändern, wenn der 32- Bit-Datenwert in das Register 1010 geladen wird. Eine halbe Periode des Signals CK nach dem Übergang des Signals SDS auf den Logikwert 0 liefert die Steuerschaltung 1018 ein Signal SRL, welches den 32-Bit-Wert aus dem Register 1010 in ein Schieberegister 1012 überträgt und den in einem Zähler 1020 gehaltenen Wert auf 0 zurücksetzt.
  • Der statistische Decoder 230 beginnt seine Decodieroperation immer mit dem LSB des aus dem VRAM 216 gelesenen 32-Bit- Wertes. Wie weiter unten beschrieben, können die FIFO- Eingangsschaltungen 232 und 234 und die FIFO-Ausgangsschaltung 236 einen Byte-Positionswert angeben zur Spezifizierung des als erstes zu übertragenden Bytes des 4-Byte-Wertes, der am VRAM 216 gelesen oder eingeschrieben wird. Der Byte-Positionswert für diese Einrichtungen ist in den beiden LSB-Positionen eines 24-Bit-Adressenwertes codiert. Bei der vorliegenden Ausführungsform der Erfindung ignoriert der statistische Decoder 230 diesen Byte-Positionswert. Infolgedessen wird angenommen, daß die an den statistischen Decoder 230 zu legenden Daten mit der LSB-Position eines 32-Bit-Wortes im VRAM 216 beginnen.
  • Immer wenn die Steuerschaltung 1018 das Signal SRL pulst, um einen 32-Bit-Datenwert aus dem Register 1010 zu übertragen, pulst sie auch das Signal RDR, um die VRAM-Steuerschaltung 238 zu veranlassen, den gespeicherten Adressenwert zu erhöhen und den nächstfolgenden 32-Bit-Datenwert aus dem VRAM 216 zum Register 1010 zu liefern. Eine halbe Periode des Taktsignals CK nach dem Pulsen der Signale SRL und RDR legt die Schaltung 1018 einen Logikwert 1 als Signal EN an die statistische Decodierschaltung 1014, womit die Schaltung 1014 befähigt wird, mit dem Decodieren des im Schieberegister 1012 gehaltenen Wertes zu beginnen.
  • Die bei dieser Ausführungsform der Erfindung verwendete statistische Decodierschaltung 1014 kann z. B. von einem Typ sein, wie er im US-Patent Nr. 43 96 906 beschrieben ist, die den Titel "Method and Apparatus for Digital Huffman Encoding" trägt und auf die hiermit verwiesen wird. Im aktivierten Zustand schleust die Schaltung 1014 das Systemtaktsignal CK als Signal SRCK zum Schieberegister 1012 und zum Zähler 1020.
  • Das Schieberegister 1012 liefert bei jeder Periode des Signals SRCK ein Bit des in ihm gehaltenen Wertes, beginnend mit der LSB-Position und weiterlaufend bis zur MSB-Position. Mit jeder Lieferung eines Bits zum Schieberegister 1012 wird der Wert im Zähler 1020 um 1 erhöht.
  • Wenn die statistische Decodierschaltung 1014 eine genügende Anzahl von Bits verarbeitet hat, um einen 16-Bit-Ausgangswert zu erzeugen, d. h. wenn sie einen Wert des längenvariablen Codes decodiert hat, legt sie den decodierten 16-Bit-Wert an den Eingangsanschluß des Ausgangsregisters 1016 und einen Logikwert 1 als Signal RDY an die Steuerschaltung 1018. Die Steuerschaltung 1018 pulst dann das Signal ORL, um den von der Schaltung 1014 gelieferten Wert in das Ausgangsregister 1016 zu laden und um das Flipflop 1017 zurückzusetzen, womit die vom Register 1016 gehaltenen Daten als gültig markiert werden.
  • Diese Decodieroperation ist vollendet, wenn Zugriff auf den im Ausgangsregister 1016 gehaltenen Wert als Quelle für den Bus B BUS erfolgt, durch Verwendung eines Mikrocode-Steuerwortes, das ein Feld B SRC mit dem Wert 14 oder 15 hat. Bei der nächsten Taktperiode nach Detektion dieses Wertes im Feld B SRC durch die Steuerschaltung 1018 pulst diese Schaltung das Signal RV, womit die im Register 1016 gehaltenen Daten als ungültig markiert werden. Ein Wert 14 für B SRC zeigt an, daß noch mehr Datenwerte erwartet werden, während ein Wert von 15 anzeigt, daß der ergriffene Wert der letzte in der Folge ist.
  • Bei der oben beschriebenen Analyse ist vorausgesetzt, daß auf die Daten im Register 1016 so lange nicht zugegriffen wird, bis sie gültig sind. Wenn ein Zugriff auf ungültige Daten versucht wird (z. B. B SRC = 14 und ORV = 0), dann pulst die Steuerschaltung 1018 das Signal PR. Das Signal PR wird an den Setzeingang S eines Flipflops 1023 gelegt. Wenn das Signal PR gepulst wird, ändert sich das Ausgangssignal SDPA des Flipflops 1023 auf den Logikwert l. Dieses Signal wird an die Pausenlogik 240 gelegt, um die Mikrocode-RAM- und Folgesteuerschaltung 226 zu veranlassen, den Videosignalprozessor in einen Pausenzustand zu versetzen. Das Signal SDPA wird außerdem einen Eingang eines UND-Gliedes 1025 angelegt, dessen anderer Eingang zum Empfang des Signals SDR angeschlossen ist. Wenn beide Signal SDR und SDPA den Logikwert 1 haben, bekommt das Ausgangssignal SDP des UND-Gliedes 1025 den Logikwert 1. Dieses Signal wird über die Pausenlogik 240 an die VRAM- Steuereinheit 238 gelegt, um die Priorität der angeforderten Leseoperation zu erhöhen. Das Signal SDP bedeutet eine dringliche Anforderung für eine Leseoperation vom statistischen Decoder 230. Das Signal SDPA geht auf den Logikwert 0, womit der Pausenzustand gelöst wird, wenn die Steuerschaltung 1018 das Signal ORL pulst, um den im Register 1016 gehaltenen Wert als gültig zu markieren.
  • Das obige Beispiel beschreibt die interne Operation des statistischen Decoders 230 beim Erzeugen eines 16-Bit- Ausgangswertes. Typischerweise erzeugt der Decoder 230 eine Folge solcher Werte. Um den ersten Wert dieser Folge zu erzeugen, arbeitet die in Fig. 10 gezeigte Schaltung wie oben beschrieben. Sobald dieser Wert zum Ausgangsregister 1016 übertragen worden ist, legt die Steuerschaltung 1018 einen Logikwert 1 als Signal EN an, womit die statistische Decodierschaltung 1014 befähigt wird, den nächsten decodierten Wert zu erzeugen. Wenn Zugriff auf den ersten decodierten Wert vom Ausgangsregister 1016 erfolgt und das Signal ORV auf den Logikwert 0 geändert wird, pulst die Steuerschaltung 1018 das Signal ORL, um den zweiten Wert zu laden. Wenn der zweite Wert beim Zugriff auf den ersten Wert nicht decodiert worden ist, pulst die Steuerschaltung 1018 das Signal ORL so lange nicht, bis das Signal RDY durch die statistische Decodierschaltung 1014 auf den Logikwert 1 geändert ist. Diese Folge von Operationen wiederholt sich so lange, bis mittels eines Wertes 15 im Feld B SRC des Mikrocode-Steuerwortes Zugriff auf den Wert im Ausgangsregister 1016 erfolgt. Wenn in Ansprache auf ein Mikrocode-Steuerwort, das in seinem Feld B SRC den Wert 15 hat, Zugriff auf den Wert im Ausgangsregister 1016 erfolgt, beendet die Steuerschaltung 1016 den Betrieb der statistischen Decodierschaltung 230, indem sie Werte des Signals EN auf den Logikwert 0 ändert. Es erfolgt so lange kein Datenzugriff durch den statistischen Decoder 230, bis ein neuer Wert für die vierzehn LSB-Positionen des vom Decoder 230 benutzten VRAM-Adressenwertes hergestellt ist.
  • Bei jeder der oben beschriebenen Decodieroperationen werden 32-Bit-Datenwerte vom VRAM 216 wie gewünscht zum Register 1010 geliefert. Wenn der Zähler 1020 auf den Wert 31 hochgetrieben ist, was anzeigt, daß das MSB des laufenden 32-Bit-Wertes an die Schaltung 1014 gelegt worden ist, pulst die Steuerschaltung 1018 das Signal SRL, um den nächsten 32-Bit-Wert vom Register 1010 zum Schieberegister 1012 zu übertragen und um den Wert des Zählers 1020 zurückzusetzen. Gleichzeitig pulst die Steuerschaltung 1018 das Signal RDR, um den nächsten sequentiellen 32-Bit-Wert aus dem VRAM 216 anzufordern.
  • Wenn beim Zählwert 31 im Zähler 1020 das Signal SDR den Logikwert 1 hat, kann die Steuerschaltung 1018 keine Übertragung eines Wertes aus dem Register 1010 in das Register 1012 bewirken, weil die Leseoperation für das Füllen des Registers 1010 noch nicht beendet ist. In diesem Fall ändert die Steuerschaltung 1018 das Signal EN auf den Logikwert 0, um die Decodierschaltung 1014 abzuschalten. Wenn die angeforderte Leseoperation beendet ist, pulst die Steuerschaltung 1018 das Signal SRL, um den neuen 32-Bit-Wert aus dem Register 1010 zum Register 1012 zu übertragen, sie ändert den Wert des Signals EN auf den Logikwert 1 und pulst das Signal RDR. Diese Signale befähigen den statistischen Decoder 230, den Normalbetrieb wieder aufzunehmen, und fordern einen neuen 32-Bit-Wert aus dem VRAM 216 an.
  • Die Fig. 10B ist ein Zeitdiagramm, das die relative Zeitsteuerung von Signalen zeigt, die von der Steuerschaltung 1018 erzeugt werden, wenn zwei Datenwerte codiert werden.
  • Anhand der Fig. 10A und 10B und der vorstehenden Beschreibung dürfte ein Fachmann auf dem Gebiet der Konstruktion digitaler Signalverarbeitungsschaltungen leicht in der Lage sein, eine geeignete Schaltungsanordnung zu entwerfen und zu bauen, die als statistischer Decoder 230 verwendet werden kann.
  • Die FIFO-Eingangsschaltungen 232 und 234 erlauben es dem Videosignalprozessor 210, am VRAM 216 einen beliebig frei gewählten 8-Bit- oder 16-Bit-Wert zu lesen oder eine Sequenz von 8-Bit- oder 16-Bit-Werten zu lesen, für die Verarbeitung durch ihre pixelverarbeiteten Elemente. Sowohl in der Freiwahl-Betriebsart als auch in der Sequenz-Betriebsart legen die von der Mikrocode-RAM- und Folgesteuerschaltung 226 ausgeführten Befehle des Mikrocode-Steuerwortes einen Anfangsadressenwert an die VRAM-Steuereinheit 238. Die gewählte FIFO- Eingangsschaltung nimmt Zugriff auf das VRAM 216 über die VRAM-Steuereinheit 238 und liefert den oder die geforderten Werte an den Bus B BUS ohne weitere Intervention seitens der Mikrocode-RAM- und Folgesteuerschaltung 226.
  • Die Anfangsadressenwerte für die FIFO-Eingangsschaltungen 232 und 234, die z. B. vom Daten-RAM geliefert werden, werden in der VRAM-Steuereinheit 238 in derselben Weise hergestellt, wie Adressenwerte für den statistischen Decoder 230 spezifiziert werden. Die acht MSB-Positionen eines Adressenwertes werden über den Bus B BUS an das Adressenregister für die jeweilige FIFO-Eingangsschaltung 232 oder 234 übertragen, in Ansprache auf das Erscheinen eines Wertes 23 bzw. 27 im Feld B DST der Mikrocode-Steuerwörter. Die vierzehn LSB-Positionen eines Adressenwertes für die FIFO-Eingangsschaltungen 232 und 234 werden aus den vierzehn MSB-Positionen von Werten übertragen, die dem Bus B BUS angelegt werden, wenn das Feld B DST des Mikrocode-Steuerwortes Werte von 22 bzw. 26 hat. Die beiden LSB-Positionen der Werte, die dem Bus B BUS beim Erscheinen von Werten 22 bzw. 26 im Feld B DST angelegt werden, werden intern in der jeweiligen FIFO-Eingangsschaltung 232 bzw. 234 gespeichert. Der durch diese beiden Bits dargestellte Wert weist auf ein bestimmtes Byte des vom VRAM gelieferten 4-Byte- Wertes, das als erstes Byte an den Bus B BUS geliefert werden soll.
  • Die Fig. 11A ist ein Blockschaltbild einer Schaltungsanordnung, die sich zur Realisierung der FIFO-Eingangsschaltung 232 oder 234 eignet. Die Schaltungsanordnung wird nachstehend für die FIFO-Eingangsschaltung 232 geschrieben. Was in der Beschreibung anders lauten muß, wenn die FIFO- Eingangsschaltung 234 betrachtet wird, ist in Klammern angegeben, wo es dienlich ist. Die in Fig. 11A gezeigte Schaltung wird anhand einer normalen Folge von Operationen beschrieben, bei welcher die FIFO-Eingangsschaltung so eingestellt ist, daß sie in der Freiwahl-Betriebsart arbeitet. Im Anschluß an diese Beschreibung wird erläutert, was sich in der Folge von Operationen ändert, wenn die FIFO-Schaltung auf die Sequenz-Betriebsart eingestellt ist.
  • Der erste Schritt in der Folge ist das Anlegen eines Steuerwertes an den Bus B BUS unter Verwendung eines Mikrocode- Steuerwortes, das in seinem Feld B DST den Wert 21 hat (den Wert 29 für die FIFO-Schaltung 234). In Ansprache auf diesen Wert im Feld B DST wird der z. B. von der ALU 244 gelieferte Steuerwert in ein Register 1112 geladen. Der bei diesem Beispiel verwendete Steuerwert konditioniert die FIFO- Eingangsschaltung 232 so, daß sie in ihrer Freiwahl- Betriebsart im Gegensatz zu ihrer Sequenz-Betriebsart arbeitet und 8-Bit-Werte im Gegensatz zu 16-Bit-Werten an den Bus B BUS liefert.
  • Der nächste Schritt in der Folge ist das Herstellen des Adressenwertes für die FIFO-Schaltung 232 in der VRAM- Steuereinheit 238, wie weiter oben beschrieben. Ein internes Register 1110 in der FIFO-Schaltung 232 spricht an, wenn das Feld B DST des Mikrocode-Steuerwortes den Wert 22 (26) hat, um den Byte-Positionswert zu laden, d. h. die beiden LSBs des über den Bus B BUS gelieferten 16-Bit-Adressenwertes. Eine Steuerschaltung 1116 wird durch diesen Wert des Feldes B DST ebenfalls konditioniert, um die FIFO-Eingangsschaltung 232 in einen Anfangszustand zurückzusetzen und eine VRAM-Leseoperation einzuleiten.
  • Bei dieser Rücksetzoperation pulst die Steuerschaltung 1116 ein Signal CO, um ein Flipflop 1134 zurückzusetzen. Eine halbe Periode des Signals CK später pulst die Steuerschaltung 1116 das Signal PC, um den Byte-Positionswert BP aus dem Register 1110 in den Zähler 1128 und in das Flipflop 1132 zu laden. Eine halbe Periode-des Signals CK nach dieser Operation pulst die Steuerschaltung 1116 ein Signal IR, das dem Setzeingang S eines Flipflops 1133 angelegt wird. Das vom Flipflop 1133 gelieferte Signal IFOR wird über den Steuerbus R/S an die VRAM-Steuereinheit 238 gelegt, um die VRAM-Steuereinheit 238 zu veranlassen, eine Leseoperation für die adressierte Speicherstelle in der VRAM 216 einzuleiten. Das Signal IFOR wird außerdem an die Steuerschaltung 1116 gelegt, um anzuzeigen, daß eine Leseoperation im Gange ist.
  • Wenn die VRAM-Steuereinheit 238 die Leseoperation verarbeitet hat und das VRAM 216 die angeforderten Daten an den Bus D BUS gelegt hat, pulst die VRAM-Steuereinheit ein Abtastsignal IFOS, das über den Bus R/S geliefert wird, um ein Register 1118 zu konditionieren, einen 32-Bit-Wert vom Bus D BUS zu laden. Das Signal IFOS wird außerdem dem Rücksetzeingang R des Flipflops 1133 angelegt, um den inneren Zustand des Flipflops 1133 und somit das Signal IFOR auf den Logikwert 0 zurückzusetzen, was anzeigt, daß die Speicherleseoperation vollendet ist.
  • Während der ersten Periode des Signals CK, nachdem das Signal IFOR auf den Logikwert 0 gegangen ist, pulst die Steuerschaltung 1116 ein Signal LR, um den im Register 1118 gehaltenen 32-Bit-Wert an das Register 1120 zu übertragen.
  • Die Bits im Register 1120 sind in vier 8-Bit-Segment B0, B1, B2 und B3 unterteilt, welche die Bits 0-7 bzw. 8-15 bzw. 16-23 bzw. 24-31 umfassen. Die 8-Bit-Werte B0, B1, B2 und B3 werden jeweils einem gesonderten Eingangsanschluß des Multiplexers 1124 angelegt. Der Multiplexer 1124 wird durch einen Wert, der vom Zähler 1128 oder vom Multiplizierer 1130 kommt, gesteuert, um einen der vier Werte, der seinem Eingangsanschluß anliegt, an die acht LSB-Positionen des Ausgangsregisters 1114 zu liefern.
  • Beim vorliegenden Beispiel zeigt der Steuerwert im Register 1112 an, daß 8-Bit-Werte vom Ausgangsregister 1114 geliefert werden sollen. Infolgedessen legt die Steuerschaltung 1116 einen Logikwert 1 als Signal MXC an einen Multiplexer 1126. Dieser Wert des Signals MXC konditioniert den Multiplexer 1126 so, daß er den im Zähler 1128 gehaltenen Wert an den Steuereingang des Multiplexers 1124 legt. Dieser Wert, welcher der Wert der ersten Byteposition ist, konditioniert den Multiplexer 1124 so, daß dieser das adressierte Byte an die acht LSB-Positionen des Ausgangsregisters 1114 legt. In der nächstfolgenden Periode des Signals CK nach dem Pulsen des Signals LR, pulst die Steuerschaltung 1116 die Signale LL und RH, um den vom Multiplexer 1124 angelegten Wert in die acht LSB-Positionen des Registers 1114 zu laden, die acht MSB- Positionen des Registers 1114 zurückzusetzen und das Flipflop 1134 zu setzen. Da das Flipflop 1134 gesetzt ist, hat sein Ausgangssignal OV den Logikwert 1, was anzeigt, daß der Wert im Ausgangsregister 1114 gültig ist.
  • Die Folge von Operationen für dieses Beispiel ist vollendet, wenn die Mikrocode-RAM- und Folgesteuerschaltung 226 ein Mikrocode-Steuerwort handhabt, in welchem das Feld B SRC den Wert 12 hat (den Wert 13 für die FIFO-Eingangsschaltung 234). Dieser Wert, dem Register 1114 angelegt, aktiviert dieses Register zur Abgabe seines gespeicherten Wertes an den Bus B BUS. Die Steuerschaltung 1116 pulst außerdem, wenn das Feld B SRC den Wert 12 (13) hat, das Signal CO und setzt damit das Flipflop 1134 zurück, was den Wert im Ausgangsregister 1114 als ungültig markiert.
  • Wenn der Wert im Steuerregister 1112 anzeigt, daß 16-Bit-Werte zum Bus B BUS geliefert werden sollen, legt die Steuerschaltung 1116 den Logikwert 0 als Signal MXC an den Steuereingang des Multiplexers 1126. Dieser Steuerwert konditioniert den Multiplexer 1126 so, daß er den vom Multiplizierer 1130 gelieferten Wert an den Steuereingang des Multiplexers 1124 legt.
  • Der Multiplizierer 1130 ist mit dem Ausgangsanschluß des Flipflops 1132 gekoppelt. Wie oben beschrieben, wird das Flipflop 1132 voreingestellt auf den Wert des MSB des im Register 1110 gespeicherten Byte-Positionswertes. Dieser Einbit-Wert wird vom Multiplizierer 1130 um eine Bitposition in Richtung höheren Stellenwertes verschoben (d. h. mit zwei multipliziert). Somit ist der vom Multiplexer 1124 gelieferte Wert entweder eine 2 oder eine 0. Dementsprechend legt der Multiplexer entweder das Byte B0 oder das Byte B2 an die acht LSB-Positionen des Ausgangsregisters 1114.
  • Der Ausgangsanschluß des Flipflops 1132 ist außerdem mit dem Steuereingang eines Multiplexers 1122 gekoppelt. Der Multiplexer 1122 ist mit den B3- und B1-Abschnitten des Registers 1120 verbunden. Wenn der vom Flipflop 1132 gelieferte Wert ein Logikwert 0 oder ein Logikwert 1 ist, legt der Multiplexer 1122 entsprechend den im B1- oder im B3-Abschnitt des Registers 1120 gehaltenen Wert an die acht MSB-Positionen des Registers 1114. In der 16-Bit-Betriebsart pulst die Steuerschaltung 1116 gleichzeitig die Signale LL und LM, um sowohl die gewählten acht MSBs als auch die gewählten acht LSBs in das Register 1114 zu laden. Wenn auf diesen Wert zugegriffen wird, über ein Mikrocode-Steuerwort, das in seinem Feld B SRC den Wert 12 (13) hat, können die sechzehn MSBs oder die sechzehn LSBs des vom VRAM 216 gelieferten 32-Bit-Wertes gelesen werden. Wenn der im Register 1110 gehaltene Byte- Positionswert eine 1 oder eine 3 ist, wird er als eine o bzw. eine 2 interpretiert; ein die Bytes B1 und B2 enthaltender 16- Bit-Wert kann von den bei dieser Ausführungsform der Erfindung verwendeten FIFO-Eingangsschaltungen 232 und 234 nicht geliefert werden.
  • Bei den vorstehend beschriebenen Beispielen konditioniert der an die FIFO-Eingangsschaltung gelegte Steuerwert die Schaltung so, daß sie in ihrer Freiwahl-Betriebsart arbeitet. In dieser Betriebsart liefert die FIFO-Schaltung nur den adressierten Wert an den Bus B BUS. In ihrer Sequenz-Betriebsart kann die FIFO-Eingangsschaltung 232 oder 234 eine Sequenz von Werten liefern, beginnend mit einem Wert, der die angegebene Adresse im VRAM 216 hat, und weiterlaufend über fortschreitend höhere Adressenwerte. Die Arbeitsweise der FIFO-Schaltungen 232 und 234 in der Sequenz-Betriebsart wird beschrieben durch Nennung der Unterschiede gegenüber ihrer Arbeitsweise in der Freiwahl- Betriebsart.
  • Ein erster Unterschied zwischen der Freiwahl- und der Sequenz- Betriebsart besteht darin, daß in der Sequenz-Betriebsart die Steuerschaltung 1116, immer wenn sie das Signal LR zum Laden eines neuen 32-Bit-Wertes in das Register 1120 pulst, auch das Signal IR pulst, um den nächsten 32-Bit-Wert vom VRAM 216 anzufordern.
  • In der Freiwahl-Betriebsart wurden der Zähler 1128 und das Flipflop 1132 nur als Register benutzt, um den im Register 1110 gespeicherten Byte-Positionswert zu halten. In der Sequenz-Betriebsart werden der Zähler 1128 und das Flipflop 1132 benutzt, um sequentiell aufeinanderfolgende 8-Bit- bzw. 16-Bit-Werte vom Register 1120 an das Ausgangsregister 1114 zu liefern. Der Zähler 1128 ist ein herkömmlicher 2-Bit- Binärzähler mit einem Eingangsanschluß für einen Voreinstellwert und einen Voreinstelleingang. Wenn das dem Voreinstelleingang angelegte Signal gepulst wird, wird der Zähler 1128 veranlaßt, den seinem Voreinstellwert-Eingangsanschluß angelegten Wert als seinen internen Wert zu laden. Das Flipflop 1132 ist ein herkömmliches Trigger- oder T- Flipflop. Dieses Flipflop hat einen Voreinstellwert- und einen Voreinstell-Eingang, die durch angelegte Signale konditioniert werden, um so zu arbeiten, wie oben beschrieben. Ein Taktsignal CCK von der Steuerschaltung 1116 wird dem Takteingang sowohl des Zählers 1128 als auch des Flipflops 1132 angelegt. In Ansprache auf aufeinanderfolgende Impulse des Taktsignals CCK läßt der Zähler 1128 seinen internen Wert CV zyklisch über die Werte 0, 1, 2 und 3 laufen. Das Flipflop 1132 ändert seinen internen Zustand zwischen 0 und 1 in Ansprache auf aufeinanderfolgende Impulse des Signals CCK. Bei dieser Ausführungsform der Erfindung ist, wenn die FIFO-Eingangsschaltung in ihrer Sequenz-Betriebsart arbeitet, das Signal CCK das gleiche wie das Signal LL, und wenn die FIFO-Schaltung in ihrer Freiwahl-Betriebsart arbeitet, hat das Signal CCK konstant den Logikwert 0. Infolgedessen konditioniert der Zähler 1128 oder das Flipflop 1132, sobald ein Wert in das Ausgangsregister 1114 geladen ist, die Multiplexer 1122 und 1124 zum Anlegen des nächsten Wertes der Sequenz an den Eingangsanschluß des Registers 1114. Da der dem Eingangsanschluß des Registers 1114 angelegte Wert jedesmal mit dem Laden eines neuen Wertes in das Ausgangsregister 1114 geändert wird, kann dieser angelegte Wert in das Ausgangsregister geladen werden, sobald der Wert im Register 1114 an den Bus B BUS gelegt ist.
  • Der Ausgangswert CV des Zählers 1128 wird an die Steuerschaltung 1116 gelegt. Die Steuerschaltung 1116 überwacht dieses Signal, um festzustellen, wann ein 32-Bit-Wert vom Register 1118 in das Register 1120 zu übertragen ist. Wenn der im Register 1112 gehaltene Steuerwert anzeigt, daß die FIFO- Eingangsschaltung 232 in ihrer 8-Bit-Betriebsart arbeitet, pulst die Steuerschaltung 1116 das Signal LR, um einen 32-Bit- Wert vom Register 1118 in das Register 1120 zu übertragen, gleichzeitig mit der Änderung des Wertes des Signals CV von 3 auf 0 (d. h. wenn das MSB des Signals CV von 1 auf 0 geht).
  • Wenn die FIFO-Eingangsschaltung im 16-Bit-Betrieb arbeitet, pulst die Steuerschaltung 1116 das Signal LR, wenn sich der Wert des Signals CV von 1 auf 2 oder von 3 auf 0 ändert (d. h. wenn das LSB des Signals CV von 1 auf 0 geht).
  • Bei den vorstehend beschriebenen Beispielen ist angenommen, daß die VRAM-Steuerschaltung 238 und das VRAM 216 32-Bit- Datenwerte in einem ständigen Strom an die FIFO-Eingangsschaltungen 232 und 234 legen. Sollte dieser Strom unterbrochen werden und z. B. das Signal IFOR den Logikwert l bekommen, was anzeigt, daß eine Leseoperation im Gange ist, wenn der Wert des Signals CV von 3 auf 0 geht, dann pulst die Steuerschaltung 1116 das Signal LR nicht. In diesem Fall friert die Schaltung 1116 ihren inneren Zustand ein, bis sich das Signal IFOR auf den Logikwert 0 ändert, was anzeigt, daß die angeforderte VRAM-Leseoperation stattgefunden hat und somit das Register 1118 gültige Daten enthält. Wenn das Signal IFOR auf 0 geht, nimmt die Steuerschaltung 1116 ihren Betrieb wieder auf.
  • Wenn während des Einfrierens des inneren Zustandes der Steuerschaltung 1116 eine Aufforderung empfangen wird, den Inhalt des Registers 1114 auf den Bus B BUS auszulesen (d. h. B SRC = 12), pulst die Steuerschaltung 1116 ein Signal IP, das dem Setzeingang S eines Flipflops 1135 angelegt wird. Diese Aktion ändert den Zustand des vom Flipflop 1135 gelieferten Signals IFOPA auf den Logowert 1. Das Signal IFOPA wird an die Pausenlogik-Schaltung 240 gelegt, was die Mikrocode-RAM- und Folgesteuerschaltung veranlaßt, die Videosignal-Verarbeitungsschaltung 210 in den Pausenzustand zu versetzen. Wie oben anhand der Fig. 3A beschrieben wurde, werden die Taktsignale CKA und CKB im Pausenzustand abgeschaltet, wodurch effektiv der interne Zustand der Datenwegschaltung 242, der ALU 244, des Daten-RAM 228 und des Pixelinterpolators 246 eingefroren wird. Das Signal IFOPA und das Signal IFOR werden an die Eingangsanschlüsse eines UND-Gliedes 1136 gelegt. Wenn beide diese Signale den Logikwert 1 haben, was anzeigt, daß eine Leseoperation angefordert wurde und daß der Prozessor 210 in einem Pausenzustand ist und auf einen Wert von der FIFO- Eingangsschaltung 232 wartet, ändert sich das Ausgangssignal IFOP des UND-Gliedes 1136 auf den Logikwert 1. Das Signal IFOP wird über die Pausenlogik 240 an die VRAM-Steuereinheit 238 gelegt. Ein Logikwert 1 des Signals IFOP konditioniert die VRAM-Steuereinheit 238 so, daß sie die Leseanforderungs- Operation für die FIFO-Eingangsschaltung 232 als dringende Anforderung verarbeitet, das heißt mit erhöhter Priorität. Wenn die Leseoperation vollendet ist, setzt das Signal IFOS das Flipflop 1133 zurück, wodurch die Signale IFOR und IFOP auf den Logikwert 0 geändert werden. Wenn der angeforderte Wert vom Register 1118 zum Ausgangsregister 1114 gelaufen ist, setzt die Steuerschaltung 1116 das Flipflop 1134, dessen Ausgangssignal OV das Flipflop 1135 zurücksetzt, um die Prozessorschaltung 210 aus dem Pausenzustand zu nehmen.
  • Die Fig. 11B ist ein Zeitdiagramm, welches die relative Zeitlage der Signale zeigt, die von der Steuerschaltung 1116 für zwei aufeinanderfolgende 8-Bit-Datenanforderungen der FIFO-Eingangsschaltung 232 erzeugt werden.
  • Die FIFO-Ausgangsschaltung 236 führt eine Funktion durch, die im wesentlichen entgegengesetzt zu derjenigen der FIFO- Eingangsschaltungen 232 und 234 ist; sie nimmt Daten, jeweils 1 oder 2 Bytes auf einmal, aus den pixelverarbeitenden Elementen des Videosignalprozessors 210 auf, formatiert diese Daten in 32-Bit-Blöcke und überträgt diese Blöcke an das VRAM 216. Die FIFO-Ausgangsschaltung 236 hat zwei Betriebsarten, nämlich eine Freiwahl-Betriebsart, in der ein einzelner 8- oder 16-Bit-Datenwert unter Verwendung eines gegebenen Adressenwertes in das VRAM 216 eingeschrieben wird, und eine Sequenz-Betriebsart, in der eine Sequenz von 8- oder 16-Bit- Datenwerten unter Verwendung fortschreitend höherer Adressenwerte eingeschrieben werden.
  • Der verwendete Adressenwert für eine Freiwahl-Übertragung oder der Anfangsadressenwert für eine Sequenz-Übertragung wird in der VRAM-Steuereinheit in der gleichen Weise hergestellt, wie es oben für den statistischen Decoder 230 und die FIFO- Eingangsschaltungen 232 und 234 beschrieben wurde. Der Wert des Feldes B DST, der für die acht MSBs und für die vierzehn LSBs des 22-Bit-Adressenwertes verwendet wird, ist der Wert 15 bzw. der Wert 14. Der Wert in den beiden LSB-Positionen des 16-Bit-Wertes, der an den Bus B BUS gelegt wird, wenn das Feld B DST den Wert 14 hat, wird in einem Register gespeichert, das sich intern in der FIFO-Ausgangsschaltung 236 befindet. Dieser Wert weist auf eine bestimmte Byteposition in dem an das VRAM 216 gelegten 32-Bit-Wert (4-Byte-Wert), die das niedrigstwertige Byte oder das einzige einzuschreibende Byte beinhaltet. Die FIFO-Ausgangsschaltung und die VRAM- Steuereinheit 238 enthalten eine Schaltung, die eine Verfälschung derjenigen Daten im VRAM 216 verhindert, welche den anderen Bytepositionen im 32-Bit-Wert entsprechen, die nicht in das VRAM 216 eingeschrieben werden.
  • Die Fig. 12A ist ein Blockschaltbild, welches eine Schaltung zeigt, die sich zur Verwendung als FIFO-Ausgangsschaltung 236 eignet. Diese Schaltung wird anhand einer normalen Folge von Operationen in der Freiwahl-Betriebsart beschrieben, bei welcher ein einziger 8-Bit-Wert unter Verwendung eines vorbestimmten Adressenwertes in das VRAM 216 geschrieben werden soll. Anschließend an diese Beschreibung wird erläutert, was sich im Betrieb der FIFO-Ausgangsschaltung ändert, wenn diese Schaltung in der Sequenz-Betriebsart anstatt in der Freiwahl-Betriebsart arbeitet und wenn 16-Bit- Datenwerte anstatt 8-Bit-Datenwerte verwendet werden.
  • Der erste Schritt in der Folge von Operationen zum Einschreiben eines Datenbytes an eine wahlfreie Speicherstelle im VRAM 216 besteht darin, an die FIFO-Ausgangsschaltung 236 einen Steuerwert zu legen, der diese Schaltung so konditioniert, daß sie in ihrer Freiwahl-Betriebsart arbeitet und 8-Bit-Eingangswerte erwartet. Bei der vorliegenden Ausführungsform der Erfindung wird z. B. von der ALU 244 ein 2- Bit-Steuerwert an den Bus B BUS gelegt, in Ansprache auf ein Mikrocode-Steuerwort, das in seinem Feld B DST den Wert 13 hat. Das Feld B DST des Mikrocode-Steuerwortes wird über den Bus MCW an ein Steuerregister 1212 gelegt. In Ansprache auf den Wert 13 im Feld B DST des Mikrocode-Steuerwortes lädt das Register 1212 den von den beiden LSB-Positionen des Busses B BUS übertragenen Wert als den Steuerwert für die FIFO- Ausgangsschaltung 236.
  • Die Steuerschaltung 1216, interner Bestandteil der FIFO- Ausgangsschaltung 236, spricht ebenfalls beim Wert 13 im Feld B BST an, um eine Schreiboperation einzuleiten, die in einem Register 1212 enthaltene Daten zum VRAM 216 überträgt. Diese Daten sind der letzte Daten-Teilblock aus der vorangegangenen Daten-Ausgabeoperation.
  • Wenn ein von einem Flipflop 1232 geliefertes Signal OFR den Logikwert 0 hat, was anzeigt, daß keine Speicherschreiboperation für die FIFO-Ausgangsschaltung 236 im Gange ist, pulst die Steuerschaltung 1216 ein Signal LOR, um den im Register 1220 enthaltenen Wert an das Ausgangsregister 1218 zu übertragen und eine in einer Latch-Schaltung gehaltene 4-Bit- Bytemaske in ein 4-Bit-Register 1230 zu übertragen. Eine halbe Periode des Signals CK nach dem Pulsen des Signals LOR durch die Steuerschaltung pulst diese Schaltung ein Signal WR, das dem Setzeingang S des Flipflops 1232 angelegt wird. Diese Aktion ändert den Zustand des vom Flipflop 1232 gelieferten Signals OFR auf den Logikwert 1.
  • Das Signal OFR wird über den Bus R/S an die VRAM-Steuereinheit 238 gelegt. Ein Logikwert 1 des Signals OFR wird von der VRAM- Steuereinheit 238 interpretiert als eine Anforderung einer VRAM-Schreiboperation unter Verwendung des in der VRAM- Steuereinheit gehaltenen Adressenwertes für die FIFO-Ausgangsschaltung 236 und unter Verwendung des im Register 1218 enthaltenen 32-Bit-Datenwertes. Die Bytemaske im Register 1230 wird über den Bus CASM an die VRAM-Steuereinheit 238 gelegt. Diese Maske wird in der VRAM-Steuereinheit 238 dazu verwendet, das VRAM 218 zur Speicherung nur derjenigen Bytes im Register 1218 zu konditionieren, deren Bytepositionen dem Bytemasken- Signal CASM entsprechen, d. h. nur derjenigen Bytes, die von der Steuerschaltung 1216 als gültig markiert wurden, als sie in das Register 1220 geladen wurden. Die Methode, wie Bytes als gültig markiert werden, und die Verwendung des Signals CASM durch die VRAM-Steuereinheit 238 werden ausführlich weiter unten beschrieben.
  • Gleichzeitig mit dem Pulsen des Signals WR durch die Steuerschaltung 1216 pulst diese Schaltung ein Signal RM, das an den Rücksetzeingang R eines jeden der vier Flipflops in der Latch- Schaltung 1228 gelegt wird. Dieses Signal setzt die Flipflops FF0 bis FF3 in der Latch-Schaltung 1228 zurück, was die Werte der jeweiligen Bytepositionen B0 bis B3 als ungültig markiert.
  • Wie oben beschrieben, leitet die Steuereinheit 1216 eine Schreiboperation nur dann ein, wenn das Signal OFR gleich 0 ist. Hat das Signal OFR den Logikwert 1, wenn der Wert im Steuerregister 1212 geändert wird, dann friert die Steuerschaltung 1216 ihren internen Zustand ein, bis ein von der VRAM-Steuereinheit 238 geliefertes Signal OFS anzeigt, daß die angeforderte Speicherschreiboperation durchgeführt worden ist. Das Signal OFS wird an einen Ausgangsaktivierungsanschluß OE des Registers 1218 gelegt, um dieses Register zu aktivieren, seinen Speicherwert an den Bus D BUS zu legen. Während das Signal OFS den Logikwert 1 hat, werden die im Register 1218 enthaltenen Daten zum VRAM 216 übertragen. Das Signal OFS setzt außerdem das Flipflop 1232 zurück, womit der Logikwert des Signals OFR auf 0 geändert wird. Die Steuerschaltung 1216 spricht auf den Logikwert 0 des Signals OFR an, um ihre normale Operation wieder aufzunehmen.
  • Um zu verhindern, daß nach dem Einschalten der Stromversorgung des Videosignalprozessors 1210 falsche Daten durch die erste Forderung der FIFO-Ausgangsschaltung in das VRAM 216 geschrieben werden, werden die Flipflops 1228 z. B. durch eine herkömmliche, beim Einschalten der Stromversorgung wirksame Rücksetzschaltung so konditioniert, daß sie Anfangswerte mit Logikwert 0 haben. Wie weiter unten beschrieben, verhindern Logikwerte 0 in diesen Flipflops, daß Daten aus dem Register 1220 in das VRAM 216 geschrieben werden.
  • Wenn die Daten aus der vorangegangenen Ausgabeoperation vom Register 1220 zum Register 1218 übertragen worden sind und eine Speicherschreiboperation durchgeführt worden ist, kann der Adressenwert für die beispielgebende wahlfreie Ausgabeoperation spezifiziert werden. Dieser Schritt ist weiter oben beschrieben. Ein Bytepositions-Register 1210 spricht beim Wert 14 im Feld B DST an, um den durch die beiden LSB-Positionen des Busses B BUS geführten Wert zu laden. Wie weiter oben beschrieben, gibt dieser Wert an, welche der Bytepositionen B0, B1, B2 oder B3 des Registers 1220 den angelegten Datenwert festhalten werden.
  • Die Steuerschaltung 1216 spricht an, wenn das Feld B DST den Wert 14 hat, um ein Signal OPC eine halbe Periode des Signals CK nach dem Laden des Bytepositions-Registers zu pulsen und dadurch den Byte-Positionswert als internen Wert eines 2-Bit- Zählers 1226 einzustellen. Dieser Wert wird an die Steuerschaltung 1216 als Signal OCV gelegt. Gleichzeitig mit dem Pulsen des Signals OPC pulst die Steuerschaltung 216 ein Signal LR, um das Flipflop 1234 zurückzusetzen, wodurch die Daten im Eingangsregister 1214 als ungültig markiert werden. Das Ausgangssignal INV des Flipflops 1234 wird an die Steuerschaltung 1216 gelegt, um anzuzeigen, daß Daten vom Bus B BUS in das Register 1214 geladen werden können.
  • Der nächste Schritt bei der beispielgebenden Operationenfolge besteht im Anlegen des 8-Bit-Datenwertes an die FIFO-Ausgangsschaltung 236. Dies erfolgt, wenn ein Mikrocode-Steuerwort in seinem Feld B DST den Wert 20 hat. Dieser Wert im Feld B DST konditioniert das Register 1214 zum Laden des 16-Bit-Wertes, der z. B. von der ALU 244 geliefert und vom Bus B BUS übertragen wird. Da der Wert im Steuerregister 1212 anzeigt, daß 8-Bit-Werte zu verarbeiten sind, sind nur die acht LSB- Positionen des Wertes im Register 1214 relevant. Wenn ein Wert in das Register 1214 geladen wird, pulst die Steuerschaltung 1216 das Signal CO, das dem Rücksetzeingang des Flipflops 1234 angelegt wird. Diese Aktion ändert den Zustand des Signals INV auf den Logikwert o, womit der im Eingangsregister 1214 enthaltene Wert als gültig markiert wird.
  • Die acht LSB-Positionen des Eingangsregisters 1214 werden direkt auf die Bitpositionen 0-7 (Byteposition B0) und 16-23 (Byteposition B2) des Registers 1220 gekoppelt und über eine Dreizustands-Torschaltung 1224 auf die Bitpositionen 8-15 (Byteposition B1) und 24-31 (Byteposition B3) des Registers 1250 gegeben. Die acht MSB-Positionen des Eingangsregisters 1214 werden über eine Dreizustands-Torschaltung 1222 auf die Bytepositionen B1 und B3 des Registers 1220 gekoppelt. Die Dreizustands-Torschaltungen 1222 und 1224 werden durch zugeordnete Signale UBE und LBE gesteuert, die von der Steuerschaltung 1216 geliefert werden. Wenn, wie bei diesem Beispiel, der Steuerwert im Register 1212 anzeigt, daß die FIFO-Ausgangsschaltung 1236 8-Bit-Werte zu verarbeiten hat, dann konditioniert das Steuersignal UBE die Dreizustands-Torschaltung 1222 so, daß sie an ihrem Ausgangsanschluß eine hohe Impedanz darstellt, und das Steuersignal LBE konditioniert die Dreizustands-Torschaltung 1224 so, daß sie ihren eingangsseitigen Datenwert an ihren Ausgangsanschluß legt und somit auf die Bytepositionen B&sub1; und B&sub3; des Registers 1220 koppelt. Beim vorliegenden Beispiel werden daher die acht LSB- Positionen des Registers 1214 auf jede der Bytepositionen B0 bis B3 des Registers 1220 gekoppelt.
  • Die Steuerschaltung 1226 reagiert außerdem auf einen Wert 20 im Feld B DST. Eine halbe Periode des Signals CK nach Detektion dieses Wertes pulst die Steuerschaltung 1216 eines der Signale LR0, LR1, LR2 und LR3, um den 8-Bit-Wert vom Register 1214 in eine der Bytepositionen des Registers 1220 zu laden und die gewählte Byteposition als gültige Daten enthaltend zu markieren, indem sie das betreffende Flipflop FF0 bzw. FF1 bzw. FF2 bzw. FF3 in der Latch-Schaltung 1228 setzt. Gleichzeitig pulst die Steuerschaltung 1216 das Signal LR, um die im Eingangsregister 1214 enthaltenen Daten als ungültig zu markieren. Welche Byteposition im Register 1220 ausgewählt wird, wird durch das vom Zähler 1226 gelieferte Signal OCV bestimmt. Beim vorliegenden Beispiel ist dieses Signal, das Ausgangssignal des Zählers 1226, das gleiche wie der im Register 1210 gehaltene Bytepositionswert.
  • Der Einbyte-Datenwert, der zur FIFO-Ausgangsschaltung 236 geliefert wurde, belegt eine der Bytepositionen im Register 1220. Dieser Wert wird in das VRAM 216 geschrieben, wenn ein neuer Steuerwert an das Register 1212 gelegt wird, wie oben beschrieben.
  • Bei dem oben beschriebenen Beispiel wurde die FIFO-Ausgangsschaltung 236 durch den ihr angelegten anfänglichen Steuerwert so konditioniert, daß sie in ihrer Freiwahl-Betriebsart arbeitete. Wenn statt dessen der Steuerwert angegeben hätte, daß die Sequenz-Betriebsart zu verwenden ist, würde das obige Beispiel nur die erste einer Folge von Byteübertragungs- Operationen beschreiben. In der Sequenz-Betriebsart wird der vom Zähler 1226 gehaltene Wert durch einen Impuls des Signals CCK erhöht. Bei dieser Ausführungsform der Erfindung pulst die Steuerschaltung 216, wenn die FIFO-Ausgangsschaltung 236 auf ihre Sequenz-Betriebsart eingestellt ist, das Signal CCK immer dann, wenn sie eines der Signale LR0 bis LR3 pulst.
  • Wenn das zweite Byte einer Sequenz an das Register 1214 gelegt wird, konditioniert das erhöhte Zählwertsignal OCV die Steuerschaltung 1216 zum Pulsen des nächstfolgenden Exemplars der Signale LR0, LR1, LR2, LR3 und somit zum Laden des Eingangs- Bytes in die jeweils nächstfolgende der Bytepositionen B0, B1, B2, B3 des Registers 1220. Da der Zähler 1226 ein 2-Bit-Zähler ist, liefert er einen Ausgangswert modulo 4, d. h. er erzeugt die Werte 0, 1, 2, 3, 0, 1, usw . .
  • Wenn der Zählwert OCV von 3 auf 0 weitergeschaltet wird, ist die letzte Byteposition B3 des Registers 1220 gefüllt. Die Steuerschaltung 1216 pulst dann das Signal LOR, um die Daten im Register 1220 an das Register 1218 zu übertragen, und pulst das Signal WR, um die VRAM-Steuereinheit 238 zu veranlassen, eine VRAM-Schreiboperation für die im Register 1218 enthaltenen Daten zu planen. Falls beim Wechsel des Signals OCV von 3 auf 0 das Signal OFR den Logikwert 1 hat, was anzeigt, daß eine Schreiboperation im Gange ist, wird die Steuerschaltung 1216 das Signal LOR nicht pulsen. Statt dessen friert sie ihren inneren Zustand ein, bis das von der VRAM- Steuereinheit 238 gelieferte Signal OFS das Flipflop 1232 zurücksetzt und damit den Zustand des Signals OFR auf den Logikwert 0 ändert.
  • Falls versucht wird, Daten vom Bus B BUS an das Register 1214 zu übertragen, während das vom Flipflop 1234 gelieferte Signal INV anzeigt, daß die Daten im Register 1214 gültig sind (d. h. daß sie nicht zum Register 1220 übertragen worden sind), pulst die Steuerschaltung 1216 das Signal OP, welches das Flipflop 1233 setzt und, über das vom Flipflop 1233 zur Pausenlogik 240 gelieferte Signal OFPA, die Schaltung 210 in einen Pausenzustand versetzt. Das Signal OFPA erfährt durch ein UND- Glied 1236 eine logische UND-Verknüpfung mit dem Signal OFR, um ein Signal OFP zu erzeugen. Das Signal OFP wird über die Pausenlogik 240 an die VRAM-Steuereinheit 238 gelegt. Dieses Signal erhöht die Priorität der im Augenblick ablaufenden VRAM-Schreiboperation. Wenn diese Schreiboperation vollendet ist, pulst die VRAM-Steuereinheit 238 das Signal OFS, womit das Flipflop 1232 zurückgesetzt wird, was die Signale OFR und OFP auf den Logikwert 0 ändert.
  • In Ansprache auf den Übergang des Signals OFR vom Logikwert 1 auf den Logikwert 0 pulst die Schaltung 1216 das Signal LOR, um den Wert im Register 1220 in das Register 1218 zu laden und um den Wert der Latch-Schaltung 1228 in das Register 1230 zu laden. Die Steuerschaltung 1216 pulst dann das Signal WR, um eine VRAM-Schreiboperation anzufordern. Nach einer halben Periode des Signals CK nachdem die Steuerschaltung 1216 das Signal LOR gepulst hat, pulst sie das Signal RM, um die Flipflops FF0, FF1, FF2 und FF3 der Latch-Schaltung 1228 zurückzusetzen. An diesem Punkt ihrer Folge von Operationen ist die FIFO-Ausgangsschaltung 236 so konditioniert, daß sie das nächste Byte der Eingangsdaten aufnimmt und es an der Byteposition B0 des Registers 1220 speichert. Dementsprechend pulst die Steuerschaltung 1216 eines der Signale LR0 bis LR3, um den im Register 1214 gehaltenen Wert in die entsprechende der Bytepositionen B0 bis B3 des Registers 1220 zu laden. Gleichzeitig pulst die Steuerschaltung 1216 das Signal LR, um das Flipflop 1234 zurückzusetzen, wodurch der Wert im Eingangsregister 1214 als ungültig markiert wird, und um über das Signal INV das Flipflop 1233 zurückzusetzen und dadurch den Prozessor 210 aus seinem Pausenzustand zu nehmen.
  • Die letzte Variante im Betrieb der FIFO-Ausgangsschaltung 236 ist die 16-Bit-Datenübertragung. Bei dieser Betriebsart nimmt die FIFO-Ausgangsschaltung 16-Bit-Werte vom Bus B BUS auf und schreibt sie entweder wahlfrei oder sequentiell in das VRAM 216. Die FIFO-Ausgangsschaltung 236 wird durch einen in das Steuerregister 1212 geladenen Steuerwert in die Betriebsart für die 16-Bit-Datenübertragung versetzt. Wenn die FIFO- Ausgangsschaltung in diesem Betriebszustand ist, konditioniert das von der Steuerschaltung 216 gelieferte Signal UBE die Dreizustands-Torschaltung 1222, um den an den acht MSB- Positionen des Registers 1214 stehenden Wert an die Bitpositionen B1 und B3 des Registers 1220 zu legen. Das Signal LBE hat bei dieser Betriebsart einen Wert, der die Dreizustands-Torschaltung 1224 so konditioniert, daß sie an ihrem Ausgangsanschluß eine hohe Impedanz präsentiert.
  • In der Betriebsart der 16-Bit-Übertragung wird das MSB des Bytepositionswertes im Register 1210 an die LSB-Position des Zählers 1226 übertragen, und die Steuerschaltung 1216 spricht nur auf das LSB des Signals OCV an. Wenn dieses Bit eine 0 ist und ein Datenwert in das Register 1214 geladen wird, pulst die Steuerschaltung die Signale LR0, LR1 und LR, um den 16-Bit- Wert vom Register 1214 an die Bytepositionen B0 und B1 des Registers 1220 zu übertragen, die Flipflops FF0 und FF1 in der Latch-Schaltung 1228 zu setzen und das Register 1214 als ungültige Daten enthaltend zu markieren. Alternativ, wenn das LSB des Signals OCV eine 1 ist, pulst die Steuerschaltung 1216 die Signale LR2, LR3 und LR, um den 16-Bit-Wert an die Bitpositionen B2 und B3 des Registers 1220 zu übertragen, die Flipflops FF2 und FF3 in der Latch-Schaltung zu setzen und das Register 1214 als ungültige Daten enthaltend zu markieren. Die Steuerschaltung 1216 spricht auf einen Übergang im Wert des LSB des Signals OCV von 1 auf 0 an, um im Register 1220 gehaltene Daten an das Register 1218 zu übertragen und eine VRAM-Schreiboperation zu planen.
  • Die Fig. 12B ist ein Zeitdiagramm, welches die relative Zeitlage von fünf sequentiellen 1-Byte-Datenübertragungen zeigt, die über die FIFO-Ausgangsschaltung 236 erfolgen.
  • Die bei dieser Ausführungsform der Erfindung verwendete Pausenlogik 240 enthält zwei ODER-Glieder (nicht gezeigt). Die Eingangssignale SDP, IF0P, IF1P und OFP werden an das erste Glied gelegt, das ein Ausgangssignal UREQ erzeugt. Das Signal UREQ wird an die VRAM-Steuereinheit 238 gelegt, wie weiter unten beschrieben, um anzuzeigen, daß eine dringliche Speicheroperation vom statistischen Decoder 230 oder von der FIFO-Eingangsschaltung 232 oder 234 oder von der FIFO- Ausgangsschaltung 236 angefordert worden ist. Die Signale SDPA, IF0P, IF1P und OFP werden außerdem über den Bus UR zur VRAM-Steuereinheit 238 geliefert.
  • Die Eingangssignale zum zweiten ODER-Glied sind die Signale SDP, IF0PA, IF1PA und OFPA und ein Signal VCUPA, geliefert von der VRAM-Steuereinheit 238. Das Ausgangssignal dieses zweiten ODER-Gliedes ist das Signal PAUSE, das der Mikrocode-RAM- und Folgesteuerschaltung 226 angelegt wird, wie weiter oben beschrieben.
  • Die Fig. 13A und 13B bilden ein Blockdiagramm, das eine Schaltung zeigt, die sich zur Verwendung als VRAM- Steuereinheit 238 eignet. Wie oben beschrieben, enthält die VRAM-Steuereinheit 238 eine auf das Feld B DST des Mikrocode- Steuerwortes ansprechende Schaltungsanordnung, welche VRAM- Adressenwerte für den statistischen Decoder 230, die FIFO- Eingangsschaltungen 232 und 234 und die FIFO-Ausgangsschaltung 236 speichert. Außerdem enthält die VRAM-Steuereinheit 238 eine Schaltungsanordnung zur Speicherung einer Bitkarten- Adresse, die zur Lieferung von Pixelwerten an den Wiedergabeprozessor 218 verwendet wird, und einer Auffrischungsadresse, die zur periodischen Auffrischung des Inhalts der dynamischen RAM-Speicherschaltungen verwendet wird, die das VRAM 216 benutzt. Die VRAM-Steuereinheit 238 enthält außerdem eine Schaltungsanordnung, die auf Speicherlese- und speicherschreib-Anforderungssignale anspricht, welche vom statistischen Decoder 230, den FIFO-Eingangsschaltungen 232 und 234 und der FIFO-Ausgangsschaltung 236 erzeugt werden, ferner auf Lese-Anforderungssignale für den Wiedergabeprozessor 218, auf Schreib-Anforderungssignale für die Quelle 212 komprimierter Videosignale und auf intern erzeugte Auffrischungs-Anforderungssignale, um die verschiedenen angeforderten Speicheroperationen einzuleiten und ihre Ausführung passend zu signalisieren.
  • Die Schaltungsanordnung, welche die verschiedenen Adressenwerte speichert, wird durch die Steuerschaltung 1310 gesteuert. Die Schaltung 1310 spricht an auf das Taktsignal CK', auf das vom Bus MCW gelieferte Feld B DST des Mikrocode- Steuerwortes, auf einen von einem Multiplexer 1378 in weiter unten beschriebener Weise gelieferten Baugruppen-Wählwert und auf ein von der Quelle 222 geliefertes Vertikal-Teilbildsynchronisiersignal. Die Steuerschaltung 1310 ist hauptsächlich verantwortlich zum Steuern des Ladens von Adressenwerten für die verschiedenen Baugruppen.
  • Um z. B. einen Adressenwert für den statistischen Decoder 230 zu laden, konditioniert ein Mikrocode-Steuerwort, das im Feld B DST einen Wert von 31 hat, andere Schaltungsanordnungen im Videosignalprozessor 210 wie z. B. die ALU 244 über einen Wert im Feld B SRC, um die acht MSBs des Adressenwertes als die acht LSBs eines dem Bus B BUS angelegten Wertes zu liefern. In Ansprache auf den Wert 31 im Feld B DST legt die Steuerschaltung 1310 einen Logikwert 1 als Signal STM für eine Periode des Signals CK' an ein Paar von Multiplexern 1312 und 1316. Dieses Signal konditioniert den Multiplexer 1312 zum Anlegen des vom Bus B BUS geführten 8-Bit-Wertes an den Eingangsanschluß eines Registers 1314. Während das Signal STM den Logikwert 1 hat, pulst die Steuerschaltung 1310 ein Signal STHL, welches das Regiser 1314 veranlaßt, den seinem Eingangsanschluß angelegten Wert zu laden.
  • In einem nachfolgenden Befehlszyklus veranlaßt ein Mikrocode- Steuerwort, das in seinem Feld B DST den Wert 30 hat, die Steuereinheit 1310, das Signal STM für eine Periode des Signals CK' auf dem Logikwert 1 zu halten und ein Signal STLL zu pulsen. Diese Kombination von Signalen konditioniert den Multiplexer 1316 zum Anlegen des von den 14 MSB-Positionen des Busses B BUS geführten Wertes an den Eingangsanschluß eines 14-Bit-Registers 1318 und konditioniert das Register 1318 zur Speicherung des seinem Eingangsanschluß angelegten Wertes. Die in den Registern 1314 und 1318 gehaltenen Werte werden aneinandergefügt, um einen 22-Bit-Adressenwert zu bilden, der an einen Eingangsanschluß O eines Multiplexers 1356 gelegt wird.
  • Die Zeitsteuerung der Folge von Operationen zum Speichern von Adressenwerten für die FIFO-Eingangsschaltungen 232 und 234 und für die FIFO-Ausgangsschaltung 236 ist die gleiche wie für die Operationen, die einen Adressenwert für den statistischen Decoder 230 speichern. Um Adressenwerte für die FIFO-Eingangsschaltung 232 zu speichern, werden die Multiplexer 1320 und 1324 durch ein von der Steuerschaltung 1310 geliefertes Signal IFOM so konditioniert, daß der erste die acht MSBs eines Adressenwertes und der zweite die 14 LSBs eines Adressenwertes an die Eingangsanschlüsse eines jeweils zugeordneten Registers 1322 bzw. 1326 legt. Die Register 1322 und 1326 laden die ihren Eingangsanschlüssen angelegten Werte in Ansprache auf Signale IFOHL und IFOLL, die von der Steuerschaltung 1310 geliefert werden. Die Multiplexer 1320 und 1324 und die Register 1322 und 1326 entsprechen den Multiplexern 1312 und 1316 und den Registern 1314 und 1318. Die Signale IFOM, IFOHL und IFOLL entsprechen den Signalen STM bzw. STHL bzw. STLL. Die Signale IFOLL und IFOHL werden durch den Wert 22 bzw. 23 des Feldes B DST aktiviert; beide dieser Werte aktivieren das Signal IFOM.
  • Die Multiplexer 1328 und 1332 und die Register 1330 und 1334 sind in der gleichen Weise konfiguriert wie die Multiplexer 1312 und 1316 und die Regiser 1314 und 1318. Besagte Multiplexer sprechen auf die von der Steuerschaltung 1310 gelieferten Signale IF1M an, IF1HL und IF1LL an, um den 22- Bit-Adressenwert für die FIFO-Eingangsschaltung 234 zu laden. Die acht MSBs des Wertes werden in das Register 1330 geladen, wenn das Feld B DST einen Wert von 27 hat, und die 14 LSBs werden in das Register 1334 geladen, wenn das Feld B DST den Wert 26 hat.
  • Adressenwerte für die FIFO-Ausgangsschaltung 236 werden in die Register 1338 und 1342 über zugeordnete Multiplexer 1336 und 1340 in Ansprache auf die Signale OFM, OPHL und OPLL geladen, die von der Steuerschaltung 1310 erzeugt werden. Diese Signale entsprechen den Signalen STM bzw. STHL bzw. STLL, wie sie oben beschrieben wurden. Die Steuerschaltung 1310 pulst die Signale OFM und OPLL zum Laden der 14 LSBs des Adressenwertes in das Register 1342, wenn das Feld B DST einen Wert von 14 hat, und sie pulst die Signale OFM und OFHL zum Laden der acht MSBs des Adressenwertes in das Register 1338, wenn das Feld B DST den Wert 15 hat. Die 22-Bit-Adressenwerte, die gebildet werden durch Zusammenfügen der in den Registerpaaren 1322, 1326 und 1330, 1334 und 1338, 1342 gehaltenen Werte, werden jeweils an einen zugeordneten Eingangsanschluß 1 bzw. 2 bzw. 3 des Multiplexers 1356 gelegt.
  • Die zweiten Eingangsanschlüsse der Multiplexer 1312 und 1316, die Adressenwerte für den statistischen Decoder 230 durchlassen, sowie die zweiten Eingangsanschlüsse der entsprechenden Paare von Multiplexern, die Adressenwerte für die FIFO-Eingangsschaltungen 232 und 234 und für die FIFO- Ausgangsschaltung 236 durchlassen, sind mit dem Ausgangsanschluß eines Addierers 1392 gekoppelt. Wie weiter unten beschrieben, liefert der Addierer 1392 einen erhöhten Adressenwert.
  • Dieser erhöhte Adressenwert wird in der gleichen Weise für den statistischen Decoder 230, die FIFO-Eingangsschaltungen 232 und 234 und die FIFO-Ausgangsschaltung 236 verwendet. Im folgenden wird nur die Verwendung des statistischen Decoders 230 beschrieben. Die acht MSBs des erhöhten Adressenwertes werden an den zweiten Eingangsanschluß des Multiplexers 1312 gelegt, und die 14 LSBs werden an den zweiten Eingangsanschluß des Multiplexers 1316 gelegt. Wenn das Signal STM den Logikwert O hat, werden die Multiplexer 1312 und 1316 so konditioniert, daß sie diese Werte an die Eingangsanschlüsse des Adressenregisters 1314 bzw. 1318 durchlassen. Während eine Speicherleseoperation für den statistischen Decoder 230 im Gange ist, pulst die Steuerschaltung 310 die Signale STHL und STLL, um den erhöhten Adressenwert in die Register 1314 und 1318 zu laden. Wenn der statistische Decoder 230 auf Sequenz- Betriebsart eingestellt ist oder wenn bei Einstellung des Decoders 230 auf seine Freiwahl-Betriebsart ein zweiter 32- Bit-Adressenwert benötigt wird, wird dieser erhöhte Adressenwert dazu verwendet, die nächste Speicherleseoperation für den statistischen Decoder 230 durchzuführen.
  • Der Ausgangsanschluß des Addierers 1392 ist außerdem mit dem Eingangsanschluß eines 22-Bit-Registers 1346 gekoppelt, das die Adressenwerte hält, die zur Durchführung der Speicherauffrischungs-Operationen am VRAM 216 verwendet werden. Der Ausgangsanschluß des Registers 1346 ist mit einem Eingangsanschluß 5 des Multiplexers 1356 gekoppelt. Der vom Auffrischungsadressen-Register 1346 gelieferte Wert ändert sich zyklisch alle vier Millisekunden, zur Adressierung jeweils einer Reihe im VRAM 216. Bei der hier beschriebenen Ausführungsform der Erfindung wird die Auffrischungsoperation durch eine weiter unten beschriebene Schaltung gesteuert, die in der VRAM-Steuereinheit 238 intern enthalten ist.
  • Der letzte von der VRAM-Steuereinheit 238 gehaltene Adressenwert, der bei dieser Ausführungsform der Erfindung verwendet wird, ist die Bitkarten-Adresse. Dieser Adressenwert wird in die Register 1348 und 1350 eingeschrieben, indem die jeweils betreffenden Steuersignale BMHL bzw. BMLL in Ansprache auf zwei getrennte Mikrocode-Steuerwörter gepulst werden, die z. B. im Feld B DST Werte von 19 bzw. 18 haben. Der in die Register 1348 und 1350 eingeschriebene Adressenwert ist die Anfangsadresse einer Leuchtdichtesignal-Bitkarte, die von der videosignalverarbeitenden Schaltungsanordnung 210 aus einer komprimierten Darstellung des Bildes erzeugt worden ist, die von der Quelle komprimierter Videosignale 212 geliefert wurde. Der Bitkarten-Adressenwert, der zum Zugriff auf Daten für den Wiedergabeprozessor 218 verwendet wird, wird in einem Regiser 1354 gehalten. Der 22-Bit-Adressenwert, der erhalten wird durch Aneinanderfügen des 8-Bit-Wertes im Register 1348 und des 14-Bit-Wertes im Register 1350, wird in Ansprache auf einen Impuls des Vertikal-Teilbildsynchronsignals VS, das von der Quelle 222 geliefert wird, in das Register 1354 geladen. In seiner normalen Betriebsart lädt der Videosignalprozessor 210 einmal für jeweils zwei Impulse des Signals VS einen neuen Bitkarten-Adressenwert in die Register 1348 und 1350. Somit wird jede Bitkarte zweimal dargestellt, um eine bewegte Videoszene wiederzugeben.
  • Der Inhalt der Register 1348 und 1350 wird in der nachstehend beschriebenen Weise an das Register 1354 übertragen. Koinzident mit einem Impuls des Signals VS ändert die Steuerschaltung 1310 den Zustand eines Signals BMM für eine Periode des Signals CK auf den Logikwert 1. Dies konditioniert den Multiplexer 1352 zum Anlegen des in den Registern 1348 und 1350 gehaltenen Adressenwertes an den Eingangsanschluß des Registers 1354. Während das Signal BMM im Logikzustand 1 ist, pulst die Steuerschaltung 1310 ein Signal BML, welches das Register 1354 veranlaßt, den an seinem Eingangsanschluß liegenden Wert zu laden. Der im Register 1354 gehaltene Wert wird an einen Eingangsanschluß 6 des Multiplexers 1356 gelegt.
  • Wenn das Signal BMM im Logikzustand 0 ist, wird der Multiplexer 1352 konditioniert, um den vom Addierer 1392 gelieferten erhöhten 22-Bit-Adressenwert an den Eingangsanschluß des Registers 1354 zu legen. Während einer Speicherleseoperation für den Wiedergabeprozessor 218 pulst die Steuerschaltung 1310 das Signal BML, während das Signal BMM in seinem Logikzustand 0 gehalten wird, um zur Vorbereitung der nächsten Leseoperation für den Wiedergabeprozessor 218 einen erhöhten Bitkarten-Adressenwert in das Register 1354 zu laden.
  • Ein möglicher Konflikt existiert in der VRAM-Steuerschaltung 238, wenn ein Versuch unernommen wird, einen neuen Adressenwert für den statistischen Decoder 230 oder die FIFO-Eingangsschaltungen 232 und 234 oder die FIFO-Ausgangsschaltung 236 zu laden, während der laufende Adressenwert gerade erhöht wird. Der Konflikt würde auftreten, wenn der neue Adressenwert geladen würde und dann durch den vom Addierer 1392 gelieferten erhöhten vorherigen Adressenwert überschrieben würde. Beim Erkennen einer Konfliktgefahr ändert die Steuerschaltung 1310 den Zustand eines Signals VCUPA auf den Logikwert 1, während gerade ein Adressenwert erhöht und in eines der Registerpaare 1314, 1318; 1322, 1326; 1330, 1334; 1338, 1342 gespeichert wird. Dieses Signal wird an die Pausenlogik 240 gelegt, um den Prozessor 210 in einen Pausenzustand zu versetzen, bis die erhöhte Adresse gespeichert worden ist. Die Steuerschaltung 1310 setzt den Prozessor 210 nur dann auf Pause, wenn die Möglichkeit eines Konfliktes existiert, d. h. wenn ein Versuch zur Einspeicherung von Daten in eines der erwähnen Registerpaare gleichzeitig mit einem Versuch zur Speicherung eines erhöhten Adressenwertes unternommen wird.
  • Zur Veranschaulichung der relativen Zeitsteuerung einer Adressenladeoperation zeigt die Fig. 13C ein Zeitdiagramm für verschiedene Signale, die von der Steuerschaltung 1310 erzeugt werden, wenn ein Anfangsadressenwert und ein erhöhter Adressenwert für den statistischen Decoder 230 geladen werden.
  • Wie weiter unten beschrieben, kann jede der Baugruppen 230, 232, 234 und 236 eine normale Speicheranforderung oder eine dringliche Speicheranforderung geben. Die VRAM-Steuereinheit 238 handhabt die Signale der normalen Speicheranforderung für jede der Baugruppen in einer zirkularen Folge, gewöhnlich als "round-robin" bezeichnet. Alle Baugruppen 230, 232, 234 und 236 werden als praktisch prioritätsgleich behandelt.
  • Die Operationen dringender Speicheranforderung seitens der Baugruppen 230, 232, 234 und 236 werden durch einen zweiten rangplanenden Mechanismus gehandhabt. Dieser zweite Planer handhabt auch die Auffrischungsoperationen, die Schreiboperationen aus der Quelle 212 komprimierter Videosignale und die Bitkarten-Leseoperationen für den Prozessor 218. Der besagte Planer arbeitet nach einem festen Prioritätsschema. Die Bitkarten-Leseoperation hat die höchste Priorität, und danach folgen in der Reihenfolge abnehmender Priorität: die Auffrischungsoperation, die Schreiboperation für komprimierte Daten, die dringliche Speicherschreiboperation für die FIFO- Ausgangsschaltung 236, die dringliche Speicherleseoperation für die FIFO-Eingangsschaltungen 234 und 232 und die dringliche Speicherleseoperation für den statistischen Decoder 230. Die Schaltung, welche die Planung und Einleitung dieser Operationen steuert, wird weiter unten beschrieben.
  • Wie oben erwähnt, werden die Speicheranforderungssignale OFR, IF1R, IF0R und SDR über den Bus R/S an die VRAM-Steuereinheit 238 gelegt. In den Fig. 13A und 13B sind diese Signale getrennt von den anderen Signalen des Busses R/S und werden einem Rundverschieber 1360 angelegt. Im Rundverschieber 1360 wird das 4-Bit-Anforderungssignal einem zirkularen Verschieber 1362 und einem Eingangsanschluß eines Multiplexers 1364 angelegt. Der Verschieber 1362 verschiebt die drei MSBs des 4- Bit-Anforderungssignals um eine Bitposition in Richtung auf geringeren Stellenwert und verschiebt das LSB des 4-Bit- Anforderungssignals auf die MSB-Position des Ausgangssignals. Das Ausgangssignal des Verschiebers 1362 wird an einen zweiten Eingangsanschluß des Multiplexers 1364 gelegt. Das vom Multiplexer 1364 gelieferte Signal wird einem zirkularen Verschieber 1366 und einem Eingangsanschluß eines Multiplexers 1368 angelegt. Der zirkulare Verschieber 1366 vertauscht die zwei LSB-Positionen mit den zwei MSB-Positionen seines Eingangswertes, um einen Ausgangswert zu erzeugen, der an einen zweiten Eingangsanschluß des Multiplexers 1368 gelegt wird. Die Multiplexer 1364 und 1368 werden durch das niedrigerwertige bzw. das höherwertige Bit eines von einem Register 1376 gelieferten 2-Bit-Signals gesteuert. In Ansprache auf dieses Signal, das Werte von 0, 1, 2 oder 3 hat, führt der Rundverschieber 1360 eine rundlaufende Verschiebung auf niedrigerwertige Bitpositionen von 0 bzw. 1 bzw. 2 bzw. 3 durch.
  • Das vom Rundverschieber 1360 gelieferte Ausgangssignal wird einem 4-Bit-Prioritätsdecoder 1370 angelegt. Das Ausgangssignal des Prioritätsdecoders 1370 ist die Nummer 0, 1, 2 oder 3 derjenigen Bitposition des seinem Eingangsanschluß angelegten Wertes, an der sich der Binärwert 1 mit dem höchsten Stellenwert befindet. Wenn z. B. der 4-Bit-Eingangswert die Binärzahl 0101 wäre, würde der Prioritätsdecoder 1370 den Ausgangswert 2 liefern, weil sich das höchstwertige Bit mit dem Binärwert 1 an der Bitposition 2 befindet. Das Ausgangssignal des Prioritätsdecoders 1370 wird an ein Register 1372 gelegt, das in Ansprache auf ein von der Steuerschaltung 1310 geliefertes Signal CCK den seinem Eingangsanschluß angelegten Wert lädt.
  • Der im Register 1372 gehaltene Wert wird auf einen Eingangsanschluß eines 2-Bit-Addierers 1374 gegeben. Der Ausgangsanschluß des Addierers 1374 ist mit dem Eingangsanschluß des 2-Bit-Registers 1376 verbunden. Der Ausgangsanschluß des Registers 1376 ist mit dem Rundverschieber 1360 und mit einem zweiten Eingangsanschluß des Addierers 1374 gekoppelt. Die Kombination des Registers 1376 und des Addierers 1374 bildet einen Modulo-4-Akkumulator. Der im Register 1376 zu irgendeiner gegebenen Zeit gehaltene Wert ist die akkumulierte Modulo-4-Summe aller Werte, die bis dahin dem Addierer 1374 vom Register 1372 angelegt wurden. Der im Register 1376 gehaltene Wert ist die Nummer der Baugruppe, für welche eine Speicheroperation durchgeführt werden soll. Die Nummer 0 entspricht dem statistischen Decoder 230, 1 entspricht der FIFO-Eingangsschaltung 232, 2 entspricht der FIFO-Eingangsschaltung 234 und 3 entspricht der FIFO-Ausgangsschaltung 236. Durch die Wirkung des Rundverschiebers 1360 wird der Wert der Speicheranforderung für die gewählte Baugruppe auf die LSB- Position des dem Prioritätsdecoder 1370 angelegten Eingangswertes verschoben, wodurch dieser Baugruppe die niedrigste Priorität des Gewähltwerdens für die nächste Speicheroperation gegeben wird. Die den Rundverschieber 1360, den Prioritätsdecoder 1370, die Register 1372 und 1376 und den Addierer 1374 enthaltende Schaltungsanordnung ist ein Planer, der sicherstellt, daß die von den Baugruppen 230, 232, 234 und 236 erzeugten Speicheranforderungen mit praktisch gleicher Priorität behandelt werden.
  • Das Ausgangssignal des Registers 1376 wird durch Anfügen einer logischen 0 an der MSB-Position auf drei Bits erweitert. Dieses 3-Bit-Signal wird an einen Eingangsanschluß des Multiplexers 1378 gelegt. Ein zweiter Eingangsanschluß des Multiplexers 1378 ist zum Empfang des Ausgangssignals des Planers angeschlossen, der die dringlichen Anforderungen behandelt, die Auffrischungsanforderungen, die Anforderungen zum Schreiben komprimierter Daten und die Anforderungen zum Lesen der Bitkarte. Die dringlichen Speicheranforderungen für den statistischen Decoder 230, für die FIFO-Eingangsschaltungen 232 und 234 und für die FIFO-Ausgangsschaltung 236 werden durch die Signale SDP bzw. IF0P bzw. IF1P bzw. OFP geführt. Diese Signale werden an Bitpositionen 0 bzw. 1 bzw. 2 bzw. 3 am Eingangsanschluß eines Prioritätsdecoders 1380 angelegt. Das Anforderungssignal für die Auslesung der Bitkarte ist das Horizontal-Zeilensynchronsignal HS, das von der Quelle 220 geliefert wird. Dieses Signal wird an der Bitposition 6 am Eingangsanschluß des Prioritätsdecoders 1380 angelegt. Das Anforderungssignal für die Auffrischung wird durch einen Zähler 1382 erzeugt. Der Zähler 1382 ist ein herkömmlicher 7- Bit-Zähler mit Latch-Betrieb. Er zählt 128 Impulse des Signals CK und verriegelt dann sein 1-Bit-Ausgangssignal RF bei einem Logikwert 1, bis der Zähler zurückgesetzt wird. Bei dieser Ausführungsform der Erfindung wird das Signal RF an der Bitposition 5 am Eingangsanschluß des Prioritätsdecoders 1380 angelegt. Der Rücksetzeingang des Zählers 1382 ist zum Empfang eines Signals RFS angeschlossen, das von einem VRAM- Signalgenerator 1388 geliefert wird. Dieses Signal wird durch den Generator 1388 am Ende einer Auffrischungsoperation gepulst, um den Zähler 1382 zurückzusetzen. Das Anforderungssignal CVR für das Lesen komprimierter Daten wird der VRAM- Steuereinheit 238 durch die Quelle 212 komprimierter Videosignale angelegt, wie oben beschrieben. Dieses Signal wird auf die Bitposition 4 am Eingangsanschluß des Prioritätsdecoders 1380 gekoppelt.
  • Der Ausgangsanschluß des Prioritätsdecoders 1380 ist mit dem Eingangsanschluß eines Registers 1384 gekoppelt. Das Register 1384 wird in Ansprache auf einen Impuls des von der Steuerschaltung 1310 gelieferten Signals CCK' konditioniert, um den seinem Eingangsanschluß angelegten Wert zu laden. Das 3-Bit- Ausgangssignal des Registers 1384 wird an einen zweiten Eingangsanschluß des Multiplexers 1378 gelegt.
  • Der Multiplexer 1378 wird durch ein Signal gesteuert, das von einem ODER-Glied 1386 erzeugt wird. Dieses Signal ist die logische ODER-Verknüpfung des von der Pausenlogik 240 erzeugten Signals UREQ und der Signale HS, CVR und RF. Das Ausgangssignal des ODER-Gliedes 1386 hat nur dann den Logikwert 1, wenn eines oder mehr der Eingangssignale zum Prioritätsdecoder 1380 den Logikwert 1 hat. Der Multiplexer 1378 wird zum Durchlassen des vom Register 1376 gelieferten 3- Bit-Wertes konditioniert, wenn sein Steuereingang den Logikwert O hat, ansonsten ist er zum Durchlassen des vom Register 1384 gelieferten 3-Bit-Wertes konditioniert. Der vom Multiplexer 1378 durchgelassene Wert zeigt an, welcher der dem Multiplexer 1356 angelegten sechs Adressenwerte an die Adressen-Eingangsanschlüsse und die Bankwahllogik des VRAM 216 und an den ersten Eingangsanschluß des Addierers 1392 gelegt werden soll. Der vom Multiplexer 1378 gelieferte Wert wird außerdem an das ROM 1390 angelegt, das den Erhöhungswert an den zweiten Eingangsanschluß des Addierers 1392 legt. Das ROM 1390 ist z. B. so programmiert, daß es einen Erhöhungswert von 1 liefert, wenn die durchgeführte Speicheroperation vom statistischen Decoder 230, den FIFO-Eingangsschaltungen 232 oder 234 oder der FIFO-Ausgangsschaltung 236 angefordert wurde, einen Erhöhungswert von 64, wenn die Speicheroperation eine Bitkarten-Leseoperation ist, und einen Erhöhungswert von 256, wenn die Speicheroperation eine Auffrischungsoperation ist. Wie weiter oben beschrieben, spricht die Steuerschaltung 1310 auf den vom Multiplexer 1378 gelieferten 3-Bit-Wert an, um die Ladesignale für die zugehörigen Register zu aktivieren, damit der erhöhte Adressenwert während des Speicherzyklus in die Register geladen wird.
  • Der VRAM-Signalgenerator 1388 spricht auf das vom Multiplexer 1378 gelieferte 3-Bit-Signal an, um die Steuersignale für das VRAM 216 zu erzeugen, die benötigt werden, um eine wahlfreie Lese- oder Schreiboperation, eine serielle Leseoperation oder eine Auffrischungsoperation durchzuführen und um das passende Abtastsignal zu pulsen, wenn die Speicheroperation fertig ist. Der VRAM-Signalgenerator ist zum Empfang des von der FIFO-Ausgangsschaltung 236 gelieferten 4-Bit-Signals CASM angeschlossen. Dieses Signal wird während einer Speicherschreiboperation benutzt, um die Spaltenadressen- Abtastsignale , , und selektiv abzuschalten, von denen jeweils eines an jedes Paar der acht Spalten von integrierten Speicherschaltungen im VRAM 216 gelegt wird. Wie oben beschrieben, ist das bei der vorliegenden Ausführungsform der Erfindung verwendete VRAM 216 als eine Matrix ausgebildet, die acht Spalten und 16 Reihen von integrierten Schaltungen hat. Jede der integrierten Schaltungen empfängt und liefert vier Datenbits. Um die von allen acht Spalten des Speichers gelieferten 32 Bits in 8-Bit-Werte zu unterteilen, sind die Spalten paarweise organisiert, und an jedes der vier Spaltenpaare wird jeweils ein anderes der Spaltenadressen- Abtastsignale , , und gelegt. Wie im 1985 Memory Products Data Book, Seiten 3-45 bis 3-54, veröffentlicht von der NEC Electronics Inc., beschrieben ist, auf welches hier verwiesen wird, werden keine Daten in die adressierte Speicherzelle eingeschrieben, wenn der Spaltenadressen-Abtastimpuls nicht für eine Speicherschreiboperation an der integrierten Schaltung uPD41264 aktiviert ist. Infolgedessen schaltet der Signalgenerator 1388, wenn irgendeines der vier Bits des Signals CASM den Logikwert Null hat, das entsprechende Signal ab, und die Daten an der entsprechenden Byteposition des Busses D BUS werden nicht in das VRAM 216 geschrieben; der vorherige Inhalt der Byteposition im adressierten 32-Bit-Wort bleibt unbeeinflußt.
  • Der VRAM-Signalgenerator 1388 ist eine Endlichzustandsmaschine, welche die Spaltenadressen-Abtastsignale , , und sowie das Reihenadressen- Abtastsignal , ein Schreibaktivierungssignal WE, ein Ausgabe-Aktivierungssignal , ein Seriell-Steuersignal SC und ein Seriell-Ausgabeaktivierungssignal erzeugt, wie sie für die jeweilige Art der durchzuführenden Speicheroperation passend sind. Die Zeitdiagramme für diese Signale sind im oben angeführten Abschnitt des Memory Products Data Book angegeben.
  • Zusätzlich zur Erzeugung der Signale, welche die das VRAM 216 bildenden einzelnen integrierten Schaltungen steuern, liefert der VRAM-Signalgenerator 1388 die Abtastsignale SDS, IF0S, IF1S, OFS und RFS, die dem statistischen Decoder 230, den FIFO-Eingangsschaltungen 232 und 234, der FIFO-Ausgangsschaltung 236 und dem Auffrischungszähler 1382 anzeigen, daß die angeforderte Speicheroperation durchgeführt worden ist. Diese Signale werden am Ende eines Speicherzyklus erzeugt. Aus den Zeitdiagrammen im oben erwähnten Abschnitt des Memory Products Data Book und aus der vorstehenden Beschreibung in dieser Anmeldung wird ein Fachmann auf dem Gebiet des Entwurfs von Speicherschaltungen leicht eine geeignete Schaltungsanordnung entwerfen und bauen können, die sich zur Verwendung als VRAM-Signalgenerator 1388 eignet.
  • Der VRAM-Signalgenerator spricht ferner auf einen vom Multiplexer 1378 gelieferten Wert von 4 an, um an seinen Steuerausgängen eine hohe Impedanz zu bieten. Dieser Zustand hoher Impedanz erlaubt es der Quelle 212 zusammengesetzter Videosignale, das VRAM 216 für seine Speicherschreiboperationen zu steuern. Bei der hier beschriebenen Ausführungsform der Erfindung wird der vom Multiplexer 1378 gelieferte Wert 4 durch einen mit dem Multiplexer 1356 gekoppelten Decoder 1355 decodiert. Der Decoder 1355 wird durch Anlegen des Wertes 4 so konditioniert, daß er einen Logikwert 1 an einen Eingangsanschluß EN des Multiplexers 1376 legt. Dieses Signal veranlaßt den Multiplexer 1356, eine hohe Impedanz für den Adressen-Eingangsanschluß des VRAM 216 zu präsentieren. Diese hohe Impedanz befähigt die Quelle komprimierter Videosignale 212, den Adressen-Eingangsanschluß des VRAM 216 für einen Speicherzyklus zu steuern.
  • Jeder VRAM-Speicherzyklus geht über vier Perioden des Signals CK'. Die Steuerschaltung 1310 erzeugt unter Verwendung des Signals CK' ein Signal CCK', das dem VRAM-Speicherzyklus um eine halbe Periode des Signals CK' vorauseilt. Eine Periode des Signals CK' nach der Vorderflanke des Signals CCK, d. h. am Beginn eines VRAM-Speicherzyklus, hat die Planungsschaltung aus den geplanten Speicheroperationen eine ausgewählt, und am Ausgangsanschluß des Multiplexers 1378 steht ein Wert zur Verfügung, der anzeigt, welche Operation gewählt worden ist.
  • Der gewählte Wert konditioniert den Multiplexer 1356 zum Anlegen der Adresse im gewählten Register oder einer hohen Impedanz an die Adressen-Eingangsanschlüsse und die Bankwähllogik des VRAM 216 und konditioniert den VRAM- Signalgenerator 1388 zur Abgabe von Signalen, um eine serielle Leseoperation, eine Auffrischungsoperation, eine wahlfreie Schreiboperation oder eine wahlfreie Leseoperation durchzuführen, falls die gewählte Speicheranforderung von den jeweils betreffenden Signalen oder Baugruppen erzeugt worden ist, d. h. vom Horizontal-Zeilensynchronsignal HS, vom Zähler 1382, von der FIFO-Ausgangsschaltung 236 oder von einer der den statistischen Decoder 230, die FIFO-Eingangsschaltung 232 und die FIFO-Eingangsschaltung 234 umfassenden Baugruppen. Eine Periode des Taktsignals CK' vor dem Ende des Speicherzyklus pulst der VRAM-Signalgenerator 1388 das zugeordnete Signal RFS, OFS, SDS, IF0S oder IF1S, um anzuzeigen, daß die angeforderte Speicheroperation durchgeführt worden ist.
  • Es kann sein, daß die VRAM-Steuereinheit nicht jeden VRAM- Speicherzyklus benutzt, weil periodisch die Quelle 212 komprimierter Videosignale einen VRAM-Speicherzyklus verwendet, um komprimierte Videodaten in das VRAM 216 zu laden. Mögliche Konflikte bei der Benutzung des VRAM 216 werden durch die Planungsschaltung gelöst, die dringliche Speicheranforderungen handhabt.
  • Wenn die Quelle 212 komprimierter Videosignale einen 32-Bit- Wert in das VRAM 216 speichern muß, ändert sie den Zustand eines Signals CVR auf den Logikwert 1. Das Signal CVR wird an die Bitposition 4 am Eingangsanschluß des Prioritätsdecoders 1380 gelegt. Wenn die Planungsschaltung eine Anforderung dieses Typs behandelt, legt sie einen Wert 4 an den VRAM- Signalgenerator 1388, an die Steuerschaltung 1310 und an den Decoder 1355, der mit dem Multiplexer 1356 gekoppelt ist. Dieser Wert konditioniert den Signalgenerator 1388 und den Multiplexer 1356 so, daß sie an ihren Ausgangsanschlüssen, die über den Bus AD/CTL mit dem VRAM 216 gekoppelt sind, eine hohe Impedanz darstellen. Außerdem konditioniert der Wert 4 die Steuerschaltung 1310 zum Anlegen eines Logikwertes 1 als Signal GRANT an die Quelle 212 komprimierter Videodaten. Dieses Signal befähigt Adressen- und Steuerschaltungen im Inneren der Quelle 212, Signale für eine Speicherschreiboperation zum Speichern der Daten aus der Quelle 212 in das VRAM 216 abzugeben.
  • Es ist daran zu denken, daß der VRAM-Signalgenerator 1388 in zwei getrennte Schaltungen unterteilt werden kann, nämlich eine erste Schaltung, welche die vom Planer gelieferten Werte in Signale umwandelt, die anzeigen, ob eine wahlfreie Leseoperation, eine wahlfreie Schreiboperation, eine serielle Leseoperation oder eine Auffrischungsoperation durchgeführt werden soll, und eine zweite Schaltung, die aus diesen Signalen diejenigen Signale erzeugt, die tatsächlich an die integrierten VRAM-Schaltungen gelegt werden. Die erste Schaltung wäre ein Teil der VRAM-Steuereinheit 238 und somit intern in der integrierten Prozessorschaltung 210. Die zweite Schaltung könnte jedoch außerhalb der Schaltungsanordnung 210 realisiert werden, so daß sie von der Quelle 212 komprimierter Videodaten mitbenutzt werden kann.
  • Während die hier beschriebene Ausführungsform der Erfindung ein Paar von Bitkarten-Adressenregistern hat, um die Adresse einer Leuchtdichte-Bitkarte zu speichern, ist daran zu denken, daß eine Ausführungsform der Erfindung, die Farbvideosignale verarbeitet, zwei zusätzliche Bitkarten-Register haben kann, um Adressen zweier Bitkarten für Farbdifferenzsignale zu speichern. Außerdem ist daran zu denken, daß die anfänglichen Bitkarten-Adressenwerte für alle Bitkarten-Adressenregister vom Mikroprozessor 224 gespeichert werden können, während der Videosignalprozessor 210 in einem angehaltenen Zustand gehalten wird.
  • Vorstehend wurde die Schaltungsanordnung des Videosignalprozessors 210 im Detail beschrieben. Im folgenden sei das Verfahren beschrieben, wie dieser Mikroprozessor verwendet wird, um das komprimierte Videosignal zu decodieren (bzw. zu strecken).
  • Wie oben in Verbindung mit Fig. 1 gezeigt wurde, ist das vom Prozessor zu rekonstruierende Bild in Datensätzen codiert, die rechteckige Bereiche (nachstehend als "Zellen" bezeichnet) entweder durch absolute oder durch relative bilineare Polynome (Ax + By + C) beschreiben, oder als individuell codierte Pixel unter Anwendung von DPCM-Codierverfahren. Während das in der Fig. 1 beschriebene Datensatzformat konzeptuell gilt, ist eine bevorzugte Anordnung der codierten Daten in der Fig. 14 gezeigt. Die Daten bestehen aus fünf Teilen: einer "Zellentabelle", welche die zu jeder Zelle gehörenden Daten enthält, einem getrennten Block statistisch-codierter Daten (nachstehend als "Daten" bezeichnet), einem Paar von Tabellen, deren eine zur Erfüllung der bilinearen Gleichungen (die Steigungsliste) und deren andere zur Decodierung der DPCM- codierten Daten (die Tabelle D) verwendet wird, und einer Bitkarte für ein Bild, das gerade wiedergegeben wird. Der die statistisch-codierten Daten enthaltende Abschnitt ist getrennt, so daß er vom Prozessor 210 unter Verwendung seines statistischen Decoders 230 gelesen werden kann. Die Zellentabelle, die Datenwerte, die Steigungsliste, die Tabelle D und die Bitkarte sind alle im VRAM 216 gespeichert. Außerdem wird, wenn die Decodieroperation fortschreitet, eine neue oder laufende Bitkarte entwickelt, welche das nächste wiederzugebende Bild beschreibt.
  • Die Zellentabelle enthält für jede Zelle den als eine Zahl codierten Zellentyp T (z. B. 1 = absolut, 2 = relativ, 3 - DPCM), die in einer Bitkarte geltenden Koordinaten des Pixelwertes in ihrer oberen linken Ecke (X POS, Y POS) und ihre Abmessung (H, W). Wenn die Zelle entweder eine relative oder eine absolute Zelle ist, werden auch die Informationen über die Polynom-Koeffizienten A, B und C angegeben. Ist die Zelle eine relative Zelle, dann sind die Verschiebungswerte ΔX und ΔY der Pixelwerte in der laufenden Zelle relativ zu entsprechenden Pixelwerten in einer Zelle in der Bitkarte des gerade wiedergegebenen Bildes angegeben. Zur Vereinfachung der Decodierung wird vorausgesetzt, daß die Datensätze feste Länge haben (zehn 16-Bit-Wörter pro Datensatz). Datensätze mit weniger als zehn Datenwörtern (wie z. B. bei DPCM) werden auf zehn Wörter ausgestopft.
  • Die Koeffizienten A und B, welche die "Steigungs"-Terme im Polynom Ax + By + C darstellen, sind in einer speziellen Weise codiert. Anstatt der tatsächlichen Werte A und B enthält die Zellentabelle Indexwerte in die Steigungsliste. Diese Steigungsliste wird gemeinsam mit jedem Bild (oder alternativ mit jeder Folge von Bildern) zum Decoder übertragen. Der Grund für diese Steigungsliste ist, es dem Decoder zu erlauben "Steigungstabellen" wie oben beschrieben für bessere Wirtschaftlichkeit bei der Decodierung zu verwenden.
  • Da der zur Decodierung eines ganzen komprimierten Bildes verwendete Mikrocode im allgemeinen nicht in das dem Prozessor zur Verfügung stehende Mikrocode-RAM 310 paßt, wird die Decodieroperation in mehrere "Arbeitsgänge" getrennt. Der erste Arbeitsgang decodiert alle absoluten Zellen, gefolgt von einem weiteren Arbeitsgang für die relativen Zellen und einem weiteren Arbeitsgang für die DPCM-Zellen. Dieser Prozeß ist schematisch in Fig. 15 dargestellt und besteht einfach darin, denselben Prozeß 1520 (zur Decodierung aller Zellen eines bestimmten Typs) dreimal durch aufeinanderfolgende Wahl am Schalter 1510 aufzurufen.
  • Einzelheiten des Prozesses 1520 sind in Fig. 16 gezeigt. Zunächst werden der statistische Decoder 230 und die FIFO- Eingangsschaltung 232 in Schritten 1610 und 1620 initialisiert, um diejenigen Abschnitte des VRAM zu adressieren, welche die statistisch codierten Daten und die Zellentabelle enthalten. Der Schritt 1630 liest den Wert T aus einem Datensatz der Zellentabelle aus. Der Wert T gibt den Zellentyp an. Beim Schritt 1640 wird der Wert T mit einem speziellen "Tabellenende"-Wert verglichen. Typischerweise wird der Wert Null für das Tabellenende-Kennzeichen verwendet, so daß die Vergleichsoperation schnell ist. Falls das Ende der Tabelle nicht erreicht ist, wird der Wert T mit dem Typ der gerade verarbeiteten Zelle verglichen (Schritt 1650). Wenn dieser Code der gerade verarbeitete Typ ist, wird der Datensatz decodiert (Schritt 1660), andernfalls wird der Datensatz übersprungen (Schritt 1670).
  • Der Prozeß der Decodierung von Zellen sei nun ausführlich beschrieben. Zu Beginn ist es notwendig, das Konzept einer "Steigungstabelle" einzuführen und zu beschreiben, bei welcher es sich um ein Schlüsselelement des Prozesses handelt, um absolute und relative Zellen wirtschaftlich zu decodieren.
  • Das Konzept der "Steigungstabelle" ist in den Fig. 17A und 17B veranschaulicht. Die Fig. 17A zeigt einen rechteckigen Bereich, der mit einer bilinearen polynomen Funktion Ax + By + C gefüllt werden soll. Es sei daran erinnert, daß eine solche bilineare Funktion verwendet wird sowohl von absoluten Zellen, die direkt mit Werten aus dieser Funktion gefüllt werden, als auch relativen Zellen,in denen die von der Funktion gelieferten Werte mit Pixelwerten aus einer Zelle des vorhergehenden Videobildes addiert werden. Die Steigungstabellen sind für absolute und für relative Zellen jeweils die gleichen.
  • Die Werte der Funktion P (x, y) = Ax + By + C sind als Werte P0, P1, P2, usw. für die erste Reihe und P0', P1', P2' usw. für die zweite Reihe dargestellt. Es gibt zwei Probleme beim Berechnen des Wertes dieser Funktion in Realzeit. Das erste Problem besteht darin, daß zwei Multiplikationen notwendig sind (Ax und By). Wenn alle Koeffizienten (A, B, C) ganze Zahlen sind, kann dieses Problem durch Anwendung der bekannten Technik inkrementeller Addition gelöst werden. Diese zieht Vorteil aus der Tatsache, daß P (x+1, y) = P (x, y) + A, so daß aufeinanderfolgende Pixelwerte innerhalb einer Horizontalzeile einer Zelle durch aufeinanderfolgende Addition des Wertes A mit einem Akkumulator berechnet werden können. Bei der vorliegenden Erfindung jedoch ist zwar der Wert C immer eine ganze Zahl, die Werte A und B sind es hingegen nicht. Dies ist deswegen so, weil die räumliche Änderung von Leuchtdichtewerten in einem Bild typischerweise kleiner ist als 1 Graustufe pro Pixel. So haben in Wirklichkeit A und B nicht nur Bruchteile, sondern sind auch gewöhnlich in ihrem Absolutwert kleiner als 1. Außerdem ist es wünschenswert, die Operation einer Doppeladdition mit Sättigung anzuwenden, um diese Pixelwerte zu berechnen, weil zwei Pixelwerte in einem einzigen Befehlszyklus berechnet werden können. Die Operation einer Doppeladdition mit Sättigung unterstützt jedoch nur ganzzahlige Additionen und kann somit einen als Bruchteilwert erscheinenden Steigungswert nicht akkumulieren.
  • Um dieses zweite Problem zu lösen, werden die "Steigungsliste" und die "Steigungstabellen" verwendet. Die Steigungsliste ist eine kleine Menge spezieller Werte (angegeben mit einer Genauigkeit bis zu 1/256) von A und B, die als die exklusiven Steigungswerte für das ganze in der Verarbeitung befindliche Bild zu verwenden sind. In anderen Worten, jeder der Werte A und B, die natürlicherweise im Bild erscheinen, wird durch einen der Werte in der Steigungsliste angenähert. Man beachte nun, daß die Fig. 17A das Ergebnis der Auswertung der Funktion P (x, y) für einen in der Steigungsliste gefundenen speziellen Wert von A zeigt. Die Differenzwerte D0, D1, D2, D3, usw. werden ausgerechnet als der ganzzahlige Anteil der Differenz zwischen den Pixelwerten, die durch jeweils einen dazwischenliegenden Pixelwert getrennt sind. Beispielsweise ist D2 gleich dem ganzzahligen Anteil des Wertes von P2-P0, D3 ist gleich dem ganzzahligen Anteil von P3-P1, usw. Es sei bemerkt, daß das erste Differenzwerte-Paar D&sub0; und D&sub1; erhalten wird durch Subtraktion des Wertes P0 vom realen Pixelwert P0 bzw. P1.
  • Die Gruppe der Differenzwerte ist nur abhängig vom Wert A im Polynom, somit kann für jeden Wert von A in der Steigungsliste eine Tabelle von Differenzwerten berechnet werden. Die Menge aller dieser Tabellen für eine gegebene Steigungsliste wird als "X-Steigungstabelle" bezeichnet. Ist eine bestimmte Steigungsliste gegeben, kann die Steigungstabelle, welche nur ganzzahlige Werte enthält, vollständig vorberechnet werden und im VRAM 216 gespeichert werden, wodurch sich sehr geringe Kosten für die Realzeit-Decodierung ergeben.
  • In dieser Fig. sind Pixel paarweise dargestellt, weil der Decodierungsprozeß die ALU-Operation der doppelten Addition mit Sättigung in dem oben anhand der Fig. 4B beschriebenen Decodierungsprozessor anwendet. Alle in dieser Fig. gezeigten Werte sind 8-Bit-Werte, und jedes Paar von Werten ist zu einem einzigen 16-Bit-Wort zusammengepackt. Unter der Voraussetzung, daß Werte der X-Steigungstabelle zur Verfügung stehen, können die Werte der Funktion P (x,y) mit einer einzigen ALU- Operation berechnet werden, z. B.
  • (P4,P5) = (P2,P3) +] (D4,D5),
  • wobei +] die Operation der Doppeladdition mit Sättigung bedeutet. Indem mit einem Akkumulatorregister begonnen wird, das mit dem Paar von 8-Bit-Werten (P0, P0) geladen ist, und indem man nacheinander Paare von Werten aus der Steigungstabelle addiert, kann eine genaue Rekonstruktion der Werte P(x, y) unter Verwendung nur einer einzigen ALU-Operation für jedes Paar von Pixelwerten erzielt werden.
  • Die vorstehend beschriebene Technik erzeugt nur die Werte auf einer Abtastzeile. Um die nächste Abtastzeile zu erzeugen, ist der Wert (P0',P0') notwendig. Dieser wird erhalten durch die Berechnung
  • (P0',P0') = (P0,P0) +] (Q0,Q0)
  • wobei (Q0,Q0) ein Wert aus der "Y-Steigungstabelle" ist, die analog zur X-Steigungstabelle ist, aber anders organisiert ist. In der Y-Steigungstabelle sind, wie in der Fig. 17A angezeigt, vertikal benachbarte Werte der Funktion P(x,y) subtrahiert, um die Steigungstabellen-Werte zu erhalten. Dies unterscheidet sich von den x-Steigungstabellen, wo Werte, die durch ein zwischenliegendes Pixel voneinander getrennt sind, subtrahiert sind. Auch ist in der y-Steigungstabelle derselbe Wert in beiden Hälften des Doppel-8-Bit-Wortes dupliziert.
  • Zusammenfassend gesagt empfängt der Videosignalprozessor 210 als Teil der komprimierten Videodaten die Steigungsliste, welche die Liste von Steigungen enthält, die für das laufende Bild verwendet werden. Der Prozessor 210 baut dann vor dem Decodieren irgendeiner absoluten oder relativen Zelle sowohl die X- als auch die Y-Steigungstabellen auf, mit jeweils einer Vektoreintragung für jede Steigung in der Steigungsliste. Diese Steigungstabellen werden an einem vorbestimmten Platz im VRAM 216 gespeichert. Man kann zwar ins Auge fassen, die Steigungstabellen in der Zellentabelle anstatt in der Steigungsliste zu codieren, jedoch ist die Steigungsliste kompakter und trägt daher zur Wirtschaftlichkeit der Codierung bei.
  • Das Konzept der Steigungsliste und der X- und Y-Steigungstabellen ist durch ein Beispiel in der Fig. 17B veranschaulicht. Wie oben beschrieben, haben die X- und Y- Steigungstabellen jeweils Eintragungen für jeden Steigungswert in der Steigungsliste. Eine Eintragung besteht aus einer Reihe von Werten, die bei einem Eintrag für die X-Steigung Differenzen zwischen abwechselnden Pixelwerten entsprechen und die für die Y-Steigungstabellen Differenzen zwischen benachbarten Pixelwerten entsprechen. Bei dem nachstehend beschriebenen Beispiel wird als Eintragung der X-Steigungstabelle für die Position 6 in der Steigungsliste der Wert 1,25 und als Eintragung der Y-Steigungstabelle für die Position 10 in der Steigungsliste der Wert 2,25 entwickelt.
  • Der Eintrag der X-Steigungstabelle wird erzeugt durch Akkumulation einer laufenden Summe, indem wiederholt der 16- Bit-Steigungswert mit der vorherigen Summe addiert wird. Nach jeder Addieroperation wird der ganzzahlige Anteil (d. h. die acht MSBs) der akkumulierten Summe gespeichert. Die Eintragung der X-Steigungstabelle wird erzeugt, indem die Differenz zwischen abwechselnden Exemplaren der gespeicherten Werte gebildet wird. Diese Werte werden als Eintragung der X- Steigungstabelle für den gewählten Steigungswert gespeichert. Der Algorithmus, welcher die Eintragungen der X-Steigungstabelle erzeugt, speichert die Differenz von Werten, die durch einen dazwischenliegenden Wert voneinander getrennt sind, weil die Operation der Doppeladdition mit Sättigung angewandt wird, um die absoluten oder relativen Zellen aus den Eintragungen der X-Steigungstabelle zu rekonstruieren. Da diese Operation zwei parallele Additionen durchführt, akkumuliert der Algorithmus zum Rekonstruieren einer absoluten oder einer relativen Zelle die Summen abwechselnder Exemplare der Abtastwerte getrennt. Die Eintragungen der X-Steigungstabelle sind so angelegt, daß diese doppelte Akkumulation genau und wirtschaftlich wird.
  • Um eine Y-Steigungstabelle zu erzeugen, wird der gewählte Steigungswert in ähnlicher Weise akkumuliert, und der ganzzahlige Teil der akkumulierten Summen wird gespeichert. Die in der Eintragung der Y-Steigungstabelle gespeicherten Differenzwerte jedoch werden aus benachbarten Exemplaren der gespeicherten Abtastwerte entwickelt.
  • Die Fig. 18 zeigt die Folge von Operationen, die der Prozessor ausführt, um eine absolute Zelle zu decodieren. Der erste Schritt 1810 besteht darin, unter Verwendung der FIFO- Eingangsschaltung 232 die Werte von der Zellentabelle zum Daten-RAM 228 zu übertragen, für einen wirtschaftlicheren Zugriff während des restlichen Teils des Decodierprozesses. Der Schritt 1812 überträgt die Eintragung der X-Steigungstabelle, die dem Wert von A aus der Eintragung der Zellentabelle entspricht, in das Daten-RAM 228 unter Verwendung der FIFO-Eingangsschaltung 234. Dies geschieht, damit die Eintragung der Zellentabelle für schnellen Zugriff in der "inneren Schleife" des weiter unten beschriebenen Prozesses verfügbar ist. Der Schritt 1814 initialisiert die FIFO-Ausgangsschaltung 236 auf die Adresse in der Bitkarte des laufenden Bildes, die dem Anfang der Zelle entspricht. Der Schritt 1816 initialisiert die FIFO-Eingangsschaltung 234, um auf die erste Eintragung in der y-Steigungstabelle zu zeigen. Der nächste Schritt 1818 initialisiert ein Register, z. B. R3, (symbolisch als "Wert" bezeichnet) im Datenweg 242 auf den Wert (C,C), d. h. ein 16-Bit-Wort, das sowohl in den oberen als auch in den unteren acht Bitpositionen den konstanten Wert C aus dem Datensatz der Zellentabelle enthält. Der Schritt 1820 initialisiert ein weiteres Register, z. B. das Register R2, als "yzähl" bezeichnet, auf den Wert H aus dem Eintrag der Zellentabelle.
  • Der Schritt 1822 beginnt die "äußere Schleife" des Prozesses, d. h. eine Schleife, die für jede Abtastzeile der gerade verarbeiteten Zelle jeweils einmal ausgeführt wird. Zunächst (Schritt 1822) wird eines der Hinweismarken-Register im Daten- RAM 228, z. B. das Register DR2, initialisiert, um auf die erste Eintragung in der X-Steigungstabelle zu weisen, die zuvor beim Schritt 1812 in das Daten-RAM 228 übertragen wurde. Beim Schritt 1824 wird der Schleifenzähler 514 der Datenwegschaltung 242 (symbolisch mit "cnt" bezeichnet) auf den Wert W/2 initialisiert. Dies ist die Anzahl von Pixelwertpaaren, die für jede Horizontalzeile der Zelle zu erzeugen sind. Nach Übereinkunft erzeugt das Codiersystem nur Zellen, die eine gerade Anzahl von Pixeln pro Zeile haben, so daß W immer eine gerade Zahl ist. Der Schritt 1826 läßt den im Register "Wert" enthaltenen Wert zum Ausgangsregister 416 der ALU 244 durch, das dazu verwendet wird, die Ausgangs-Pixelwerte zu akkumulieren, wie es weiter oben bei der Diskussion der Steigungstabellen beschrieben wurde. Der Schritt 1828 ist die "innere Schleife" des Prozesses, die für jedes Pixelpaar in der Horizontalzeile der Zellenzeile einmal ausgeführt wird und ausführlich weiter unten beschrieben wird. Nach dem Verarbeiten einer Horizontalzeile von Pixeldaten für die Zelle addiert der nächste Schritt 1830 den Wert der Y-Steigungstabelle mit dem "Wert", was äquivalent ist mit der Rechnung "Wert = Wert +] (Q0,Q0)", wie weiter oben anhand der Fig. 17A beschrieben wurde. Der Schritt 1832 re-initialisiert die FIFO- Ausgangsschaltung 236 wieder auf die Anfangspixeladresse der nächsten Horizontalzeile in der Zelle, und der Schritt 1834 vermindert den Wert von "yzähl". Die Prüfung 1836 prüft, ob "yzähl" den Wert 0 erreicht hat, und geht dann entweder in der Schleife zurück zum Schritt 1822 (falls nein) oder verläßt die Schleife (falls ja). Dies beendet die Verarbeitung einer absoluten Zelle.
  • Die Fig. 19 zeigt die innere Schleife 1828 des Prozesses der Fig. 18 anhand der tatsächlichen Mikrocode-Steuerwörter oder -Befehle. Die innere Schleife 1828 besteht aus zwei Befehlen, die abwechselnd unter Steuerung durch den Schleifenzähler 514 ausgeführt werden. Die aufgelisteten Befehlsadressen dienen nur der Veranschaulichung, jedoch ist ihre Numerierung nicht völlig willkürlich, wie weiter unten beschrieben wird, und zwar infolge der Art, in der die Operation einer bedingten Verzweigung von der Mikrocode-RAM- und Folgesteuerschaltung 226 durchgeführt wird.
  • Der erste Befehl (1) führt die Berechnung ALU = ALU +] *DDR2++ durch, wobei das Symbol *DR2++ oben in Verbindung mit der Tabelle 4 erläutert worden ist. Diese Berechnung addiert ein Wertepaar aus der Eintragung der X-Steigungstabelle mit dem ALU-Ausgangsregister 416 (das als Akkumulator des Wertes der bilinearen Funktion verwendet wird) und erhöht selbständig das Hinweismarken-Register DR2 des Daten-RAM 228, um auf das nächste Wertepaar in der Steigungstabelle zu zeigen. Dieser Befehl vermindert auch den Schleifenzähler und konditioniert dann die Mikrocode-RAM- und Folgesteuerschaltung 226 zum Laden des Befehls 2, also des nächsten Mikrocode-Steuerwortes. Der Befehl 2 konditioniert die Schaltungsanordnung 210 zum Senden des Wertes im ALU-Ausgangsregister 416 durch die FIFO- Ausgangsschaltung 236 und somit zum Einschreiben zweier Pixelwerte in das VRAM. Auf diesen Befehl hin wird eine bedingte Verzweigung eingestellt, unter Anwendung des Nullzustandes des Schleifenzählers. Wenn die Bedingung unerfüllt ist, geht die Steuerung zum Befehl 1, und die Schleife geht weiter. Wenn die Pixeldaten für eine Horizontalzeile fertig sind, wird der Schleifenzähler auf 0 stehen, so daß die Bedingung erfüllt ist, was die Mikrocode-Folgesteuerschaltung veranlaßt, das LSB der Adresse auf 0 zu zwingen. Dies bewirkt einen Sprung zum Befehl 0 und somit ein Verlassen der inneren Schleife.
  • Da es sich um eine Schleife mit zwei Befehlen handelt und da jedesmal zwei Pixelwerte beim Lauf durch die Schleife erzeugt werden, läuft diese innere Schleife mit einer Geschwindigkeit mit einem Befehl pro Pixelwert. Nimmt man als Beispiel an, daß die Zeitdauer eines Befehlszyklus 80 ns beträgt und das Bild 256 mal 240 Pixel aufweist und keine Pausenzustände für den Prozessor 210 auftreten, ist die längste mögliche Ausführungszeit für die innere Schleife (d. h. wenn das Bild durch eine absolute Zelle beschrieben wäre) gleich 0,3 Teilbildintervalle (etwa 1/200 Sekunden). Die anderen Prozesse im System wie die äußere Schleife und der Prozeß nach Fig. 16 fügen zusätzliche Decodierungszeit hinzu. Außerdem sei daran erinnert, daß Bilder typischerweise nicht vollständig aus Zellen eines einzigen Typs zusammengesetzt sind. Wie noch zu sehen sein wird, benötigen relative Zellen und DPCM-Zellen mehr Zeit für die Decodierung als absolute Zellen. Selbst mit diesen Faktoren ist es jedoch gewöhnlich möglich, ein Bild in weniger als zwei Teilbildperioden zu decodieren. Es sei bemerkt, daß eine Decodierzeit von zwei Teilbildperioden der gewünschten Fernseh-Vollbildrate von 1/30 Sekunden entspricht.
  • Die Fig. 20 zeigt die Folge von Operationen, die der Prozessor 210 durchführt, um eine relative Zelle zu decodieren. Viele der Schritte sind ähnlich den Schritten des Decodierprozesses für eine absolute Zelle, es gibt jedoch einige wichtige Unterschiede. Zusätzlich zur Erzeugung der Werte der bilinearen Funktion Ax + By + C addiert der Decodierungsprozeß für relative Zellen die Werte dieser Funktion mit Pixelwerten aus einem rechteckigen Bereich der Bitkarte des vorangegangenen Bildes. Die resultierende Summe wird dann in die Bitkarte des laufenden Bildes eingeschrieben. Außerdem werden die Pixelwerte nicht direkt aus der Bitkarte des vorherigen Bildes genommen, sondern sie werden unter Verwendung des Pixelinterpolators 246 durch Interpolation aus diesen Pixeln erhalten.
  • Es sei daran erinnert, daß der Pixelinterpolator 246 pipelinemäßig arbeitet und daß infolgedessen seine Ausgangswerte gegenüber seinen Eingangswerten verzögert sind. Diese Zeitverzögerung macht die Operation des Abtastens über die Pixel in der vorherigen und in der laufenden Bildzelle komplizierter, weil die eingangsseitigen und ausgangsseitigen FIFO-Schaltungen außer Tritt sind. Dieses Problem wird dadurch gelöst, daß die innere Schleife in zwei gleiche Gruppen von Befehlen aufgebrochen wird. Anstatt einer inneren Schleife, die W/2-mal ausgeführt wird (wie bei der Absolut-Decodierung), gibt es zwei innere Schleifen, deren eine N1-mal und deren andere N2-mal ausgeführt wird (wobei N1 + N2 = W/2). die Werte N1 und N2 sind vorberechnet, so daß nach der ersten inneren Schleife die FIFO-Eingangsschaltung 232 fortgeschaltet werden kann, um auf einen Anfangs-Pixelort in der nächstfolgenden Horizontalzeile der Bitkarte des vorherigen Bildes zu zeigen, und daß nach der zweiten inneren Schleife die FIFO-Ausgangsschaltung 236 fortgeschaltet werden kann, um auf einen Anfangs-Pixelort in der nächstfolgenden Horizontalzeile der laufenden Zelle in der Bitkarte des laufenden Bildes zu zeigen.
  • Schließlich sei an den anhand der Fig. 9 beschriebenen Umstand erinnert, daß zwei Abtastzeilen von Pixeldaten aus dem vorherigen Bild ausgelesen werden, um eine Horizontalzeile von Pixeln für die laufende Zelle zu erzeugen. Um die Anzahl von Zugriffen auf das VRAM 216 zu vermindern und dadurch die Decodierzeit zu reduzieren, nutzt der Prozeß nach Fig. 20 in vorteilhafter Weise die Tatsache aus, daß die untere der beiden Zeilen, die für einen Durchlauf durch die Y-Schleife des Prozesses verwendet werden, dieselbe Zeile ist wie die obere Zeile der beiden Zeilen, die für den nächsten Durchlauf durch die Y-Schleife verwendet werden. Anstatt also diese Daten zweimal aus dem VRAM zu lesen, speichert die Schaltung 210 die Daten in einem "Zeilenpuffer" im Daten-RAM 228 bei jedem Durchlauf durch die Schleife, um für den nächsten Durchlauf durch die Schleife verwendet zu werden.
  • Der in Fig. 20 gezeigte Prozeß beginnt mit dem Schritt 2010, der die Werte aus dem Zellentabellen-Datensatz zum Daten-RAM 228 überträgt. Der Schritt 2012 überträgt die Eintragung der X-Steigungstabelle für den Wert A aus dem Datensatz der laufenden Zellentabelle vom VRAM 216 zum Daten-RAM 228. Diese Übertragungsoperationen benutzen die FIFO-Eingangsschaltung 232. Die Schritte 2014, 2016 und 2018 initialisieren die FIFO- Ausgangsschaltung 236 zum Hinweisen auf die Bitkarte des laufenden Bildes, die FIFO-Eingangsschaltung 232 zum Hinweisen auf die Bitkarte des vorherigen Bildes und die FIFO-Eingangsschaltung 234 zum Hinweisen auf die Eintragung der Y- Steigungstabelle entsprechend dem Wert B aus dem Datensatz der laufenden Zellentabelle. Der Schritt 2020 initialisiert den Pixelinterpolator 246 mit den Verschiebungswerten, die gleich den Bruchanteilen von ΔX und ΔY sind. Der Pixelinterpolator wird auf seine "In-Phase"-Betriebsart initialisiert, wenn das LSB der Anfangsadresse für das vorherige Bild gleich 0 ist, andernfalls wird er so eingestellt, daß er in seiner "Außer- Phase"-Betriebsart arbeitet. Der Schritt 2022 halbiert den Wert von W für die Verwendung im restlichen Teil des Decodierungsprozesses. Der Schritt 2024 errechnet die Werte von N1 und N2, die Zählwerte für die beiden inneren Schleifen (im Block 2024 hat die Variable "Phase" denselben Wert wie das LSB der Anfangsadresse für das vorherige Bild). Der Schritt 2026 initialisiert ein Register auf den Wert von H aus dem Datensatz der Zellentabelle, um Horizontalzeilen in der Zelle zu zählen. Der Schritt 2028 lädt eine Horizontalzeile der vorherigen Bildzelle in einen Zeilenpuffer im Daten-RAM 228 und setzt die Hinweismarken-Register DR1 und DR2 zurück, so daß sie auf den ersten 16-Bit-Wert im Zeilenpuffer weisen. Der Schritt 2030 lädt die Pipeline des Pixelinterpolators 246 gerade bis auf den Punkt, wo das erste brauchbare Ergebnis aus ihm ausgelesen werden kann. Unter Bezugnahme auf die Fig. 9B beispielsweise enthält der Schritt 2030 die Befehlszyklen T&sub1; bis T&sub1;&sub1;.
  • Der Schritt 2032 ist der Beginn der "äußeren Schleife" des Prozesses. Als erstes (Schritt 2032) wird eine der Hinweismarken im Daten-RAM 228 (z. B. DR0) initialisiert, um auf den ersten Wert in der Eintragung der X-Steigungstabelle zu weisen. Als nächstes wird der Wert (C,C), der duplizierte konstante Term aus dem Datensatz der laufenden Zellentabelle, in die B-Eingangs-Latch 412 der ALU 244 geladen, die dazu verwendet wird, den Wert der bilinearen Funktion P(x,y) zu akkumulieren. Die Schritte 2036, 2038 und 2039 beinhalten die Initialisierung und Ausführung der Befehle der inneren Schleife N1-mal, wobei N1 gleich 0 sein kann. Der Schritt 2040 setzt dann die FIFO-Eingangsschaltung 232 zurück, so daß sie auf den Anfang der nächsten Horizontalzeile in der Zelle aus dem vorherigen Bild weist. Der Schritt 2042 setzt die Zeilenpuffer-Hinweismarken (DR1 und DR2) zurück, so daß sie auf den Anfang dieses Zeilenpuffers weisen. Die Schritte 2044, 2046 und 2048 beinhalten die Initialisierung und Ausführung der Befehle der inneren Schleife N2-mal, wobei N2 gleich 0 sein kann.
  • Mit dem Schritt 2050 wird der von der FIFO-Ausgangsschaltung 236 verwendete Adressenwert weitergeschaltet, um auf die erste Pixelposition in der nächsten Zeile der Zelle für die laufende Bitkarte zu weisen. Der Schritt 2052 läßt eine weitere Gruppe (vier Pixel) von Werten durch den Pixelinterpolator laufen. Diese Werte entsprechen Pixeln, deren Positionen direkt hinter dem rechten Rand der Zelle des vorherigen Bildes liegen und die dazu verwendet werden, das letzte interpolierte Ergebnis in einer Zeile zu erzeugen. Dieser Schritt bewirkt aber auch, daß ein Extrapaar von Ergebnissen durch den Pixelinterpolator erzeugt wird. Dieses Ergebnis wird beim Schritt 2052 gelesen und einfach fallengelassen. Der Schritt 2054 vermindert den Wert von "yzähl", und beim Prüfschritt 2056 wird geprüft, ob die letzte Horizontalzeile von Pixelwerten für die Zelle verarbeitet worden ist. Falls ja, verläßt der Prozessor die äußere Schleife, andernfalls setzt er die Schleife mit dem Schritt 2032 fort.
  • Die Fig. 21 zeigt die innere Schleife des in Fig. 20 dargestellten Prozesses. Diese Schleife besteht aus vier Befehlen. Der erste Befehl (1) addiert den Wert im B-Eingangsregister 412 der ALU 244 mit einem Wert *DR0 (d. h. dem Wert in derjenigen Zelle des Daten-RAM, die den im Register DR0 gehaltenen Adressenwert hat). Dieser Wert kommt aus der X- Steigungstabelle. Ebenfalls während dieses Befehls wird der in DR0 gehaltene Adressenwert um 1 erhöht. Es sei daran erinnert, daß die B-Eingangslatchschaltung 412 der ALU 244 benutzt wird, um den Wert der bilinearen Funktion Ax + By + C zu akkumulieren. Der Befehl 1 liest außerdem ein Paar von Pixelwerten unter Verwendung der FIFO-Eingangsschaltung 232 und lädt sie in das Register R0 der Datenwegschaltung 242. Diese Pixelwerte entsprechen dem untersten Paar der vier Pixel, die dem Pixelinterpolator angelegt werden, um ein Paar interpolierter Pixelwerte zu erzeugen. Der nächste Befehl (2) versetzt den Ausgangswert der ALU (das Ergebnis des Befehls 1) zurück in das B-Eingangsregister 412. Außerdem addiert er diesen Wert mit dem Ausgangswert des Pixelinterpolators 246, um den Wert der Funktion "Ax + By + C + vorheriges Bild" für zwei aufeinanderfolgende Pixel zu erzeugen. Dieses Paar von Pixelwerten wird über die FIFO-Ausgangsschaltung 236 beim nächsten Befehl (3) in das VRAM 216 geschrieben. Außerdem lädt der Befehl 3 den Pixelinterpolator mit einem Wert (zwei Pixel) aus dem im Daten-RAM 228 gehaltenen Zeilenpuffer unter Verwendung des im Register DR1 gehaltenen Adressenwertes. Diese Pixel entsprechen dem obersten Paar der vier Pixel, die dem Interpolator 246 angelegt werden. Dieser Befehl vermindert außerdem den Zählwert des Schleifenzählers 514 der Datenwegschaltung 242. Schließlich nimmt der Befehl 4 den Wert im Register R0, das unterste Paar der Pixelwerte für den Interpolator 246, und lädt diesen Wert sowohl in den Pixelinterpolator 246 als auch in den Zeilenpuffer im Daten-RAM 228 (unter Verwendung der Adresse im Register DR2). Eine sich auf das Nullwerden des Schleifenzählers gründende bedingte Verzweigung bewirkt, daß die Befehle in der Schleife wiederholt werden, bis die gewünschte Anzahl von Pixelwerten erzeugt worden ist.
  • Diese innere Schleife erzeugt zwei Pixelwerte in vier Befehlszyklen, und wenn man voraussetzt, daß keine Pausenzustände auftreten, wird hierfür eine maximale Gesamtzeit von 0,6 Teilbildern für ein 256-mal-240-Bild verbraucht (dies gilt nur für die innere Schleife und ignoriert andere Gemeinkosten wie oben beschrieben).
  • Die Fig. 22 zeigt die Folge von Operationen, die beim Decodieren einer DPCM-Zelle vorkommen. Jeder Pixelwert in einer DPCM-Zelle ist codiert durch einen einzigen Wert V im Datenabschnitt des komprimierten Videobildes. Dieser Wert wird interpretiert als Index auf die Wertetabelle (Tabelle D), die alle möglichen Pixel-Pixel-Differenzen im laufenden Bild enthält. Die Tabelle D wird im Daten-RAM 228 gespeichert. Die meisten Pixelwerte für eine DPCM-Zelle werden erzeugt durch Addition eines Pixeldifferenzwertes aus der Tabelle D mit dem Pixelwert, der unmittelbar links des Zielpixels liegt. Ein Pixelwert für den linken Rand der Zelle wird erzeugt durch Addition des Pixeldifferenzwertes aus der Tabelle D mit dem entsprechenden Wert in der vorherigen Zeile. Für das Phantom- Pixel "über" dem Pixel der oberen linken Ecke der Zelle wird angenommen, daß es einen konstanten Wert von 128 hat.
  • Der DPCM-Decodierprozeß beginnt damit, die Werte X POS, Y POS, H, W aus der Zellentabelle im VRAM 216 über die FIFO-Eingangsschaltung 232 zum Daten-RAM 228 zu übertragen (Schritt 2210). Als nächstes wird die FIFO-Ausgangsschaltung 236 initialisiert, um auf die Adresse (X POS, Y POS) zu weisen, die dem Pixel in der oberen linken Ecke der laufenden Zelle entspricht (Schritt 2212). Beim Schritt 2214 wird ein Register, z. B. R3 ("Letztzeile") auf den Wert 128 gesetzt. Das Regiser "Letztzeile" wird benutzt, um den ersten Pixelwert der vorherigen Zeile im Gedächtnis zu behalten für seine Verwendung, wenn das erste Pixel in der laufenden Zeile erzeugt wird. Der Schritt 2216 lädt ein Register "yzähl", z. B. R2, das die Anzahl der Horizontalzeilen in der Zelle speichert.
  • Der Schritt 2218 lädt den Schleifenzähler 514 der Datenwegschaltung 242 mit dem Wert W aus dem Datensatz der Zellentabelle. Der Schritt 2220 berechnet den Wert des ersten Pixels in einer Horizontalzeile, indem ein Wert V aus dem statistischen Decoder 230 (d. h. ein Index zur Tabelle D) in das Register DR2 geladen wird, der Wert *DR2 (d. h. der Wert aus der Tabelle D) gelesen wird und dann die Berechnung "Letztzeile = Letztzeile +] *DR2" durchgeführt wird. Als nächstes wird die innere Schleife ausgeführt (Schritt 2222). Schließlich wird die FIFO-Ausgangsschaltung zurückgesetzt, so daß sie auf den ersten Pixelwert der nächsten Horizontalzeile der laufenden Bitkarte weist (Schritt 2224), und das Register "yzähl" wird vermindert und geprüft (Schritte 2226, 2228), bis die Schleife beendet ist (d. h. wenn "yzähl" = 0).
  • Die Fig. 23 zeigt die Mikrocode-Befehle für die innere Schleife des DPCM-Decodierungsprozesses. Der erste Befehl (2) schreibt den laufenden akkumulierten Wert (im Ausgangsregister 416 der ALU) über die FIFO-Ausgangsschaltung 236 in das VRAM 216 und speichert außerdem diesen Wert im Register R1 der Datenwegschaltung 242. Der erste Befehl dieser Schleife hat eine bedingte Verzweigung, die entweder zum Verlassen oder zum Fortsetzen der Schleife führt, abhängig davon, ob der im Schleifenzähler 514 gehaltene Wert gleich Null ist. Der nächste Befehl (1) liest einen V-Wert aus dem VRAM 216 unter Verwendung des statistischen Decoders 230 und speichert ihn in das Register R0. Der nächste Befehl (3) überträgt diesen Wert aus dem Register R0 in das Register DR2 der Daten-RAM- Schaltung 228. Der letzte Befehl der Schleife (4) addiert den vorherigen Pixelwert im Register R1 zum Wert *DR2 (dem Differenzwert aus der Tabelle D im Daten-RAM 228) und zweigt zurück zum Anfang der Schleife.
  • Es sei bemerkt, daß die innere Schleife der Befehlsfolge, die zur Decodierung von DPCM-Daten benutzt wird, die Operation der Doppeladdition mit Sättigung anwendet. Diese Befehlsfolge bearbeitet einzelne Bytes von Daten, die auf den acht LSB- Positionen der Busse A BUS und B BUS geführt werden. Die Operation der Doppeladdition mit Sättigung wird angewendet, um irgendwelche falschen Pixelwerte zu sättigen, die entstehen können, wenn man die angenäherten Differenzwerte aus der Tabelle D anstelle tatsächlicher Differenzwerte verwendet. Dieser Typ von Sättigungsaddition wird von der ALU 244 nur bei der Operation der Doppeladdition mit Sättigung unterstützt.
  • Die innere Schleife der Befehlsfolge für die DPCM-Decodierung erzeugt alle vier Befehle ein Pixel, und unter der Annahme, daß keine Pausenzustände auftreten, entspricht dies einer maximalen Gesamtzeit von 1,2 Teilbildern für ein 256-mal-240- Bild, nur für die innere Schleife.
  • Anhand der vorstehenden Beschreibung des inneren Schaltungsaufbaus des Videosignalprozessors 210, der Decodierungsprozesse und der tatsächlichen Mikrocode-Befehle für die inneren Schleifen kann ein Fachmann ohne weiteres eine Folge von Mikrocode-Befehlen erzeugen, die den vollständigen Decodierungsprozeß realisieren.
  • Obwohl bei der beschriebenen Ausführungsform der Erfindung die von der Quelle 212 gelieferten komprimierten Daten in der Form der Zellentabelle erscheinen, sei daran gedacht, daß diese Daten auch in anderen Formen geliefert werden können, z. B. in einer Binärbaum-Form. In diesem Falle kann der Prozessor 210 so programmiert sein, daß er die Binärbaum-Daten in Zellentabellenform umwandelt.

Claims (4)

1. Steuereinrichtung für ein gespeichertes Programm zur Auswahl und Lieferung eines von einem Paar möglicher Befehle für den nächsten Zyklus für eine Datenverarbeitungseinrichtung aufgrund des Ergebnisses einer Funktion, die von der Datenverarbeitungseinrichtung während eines augenblicklichen Zyklusses durchgeführt wird, wobei die Funktion des augenblicklichen Zyklusses eine Bedingungsverzweigung enthalten kann, mit
a) einem ersten Register (316) zur Speicherung eines Datenwortes, welches einen Befehl des augenblicklichen Zyklusses enthält,
b) einem Speicher (310) , der in Abhängigkeit von dem Befehl des momentanen Zyklus adressierbar ist,um das Befehlspaar des möglichen nächsten Zyklus zu liefern,
c) einem zweiten Register (312) zur Speicherung des Befehls des nächsten Zyklus,
d) eine einen Multiplexer (314) enthaltende Einrichtung zur Auswahl eines Befehls aus dem Befehlspaar des nächsten Zyklus aufgrund des Ergebnisses der während des augenblicklichen Zyklus ausgeführten Funktion, dadurch gekennzeichnet, daß
e) das zweite Register (312) gleichzeitig beide Befehle des Befehlspaares für den nächsten möglichen Zyklus speichern kann, die von dem Speicher (322) in Abhängigkeit von den im ersten Register gespeicherten Datenwort geliefert werden, und
f) daß der Multiplexer (314) zwischen das zweite Register (312) und das erste Register (316) geschaltet und so betreibbar ist, daß er sowohl den Befehl des nächsten Zyklus auswählt als auch den Befehl des nächsten Zyklus während des momentanen Zyklus zum ersten Register (316) überträgt.
2. Steuereinrichtung nach Anspruch 1, dadurch gekennzeichnet, daß jedem adressierbare Speicherplatz in dem Speicher ein Befehlspaar speichert.
3. Steuereinrichtung nach Anspruch 1 oder 2, bei welcher der in dem Speicher gespeicherte Befehl einen Teil von N-Bit für die nächste Adresse enthält, dadurch gekennzeichnet, daß der Speicher 2N-1 adressierbare Speicherplätze hat, daß die Adressierschaltung N-1 Bit des Teils fuhr die nächste Adresse eines im ersten Register gespeicherten Befehls benötigt, um einen Speicherplatz in dem Speicher zu adressieren, und daß die Auswähleinrichtung in Abhängigkeit von einem weiteren Bit des N-Bitteils für die nächste Adresse einen Befehl von einem in dem zweiten Register gespeicherten Paar auswählt.
4. Steuereinrichtung nach Anspruch 3, dadurch gekennzeichnet, daß jeder der in dem Speicher enthaltenen, einen Bedingungsverzeichnungsbetrieb anzeigenden Befehle weiterhin einen Bedingungsauswählwert enthält, der eine der mehreren Bedingungen angibt, und daß die Befehlsauswähleinrichtung ferner eine Einrichtung enthält, die in Abhängigkeit von dem Bedingungsauswählwert des im Befehlsdecodierer gehaltenen Befehlswertes den ausgewählten Befehl des Befehlswertpaares in den Befehlsdecodierer eingibt unabhängig vom Wert des vorbestimmten Bits des N-Bit-Adressenwertes des im Befehlsdecodierer gehaltenen Befehlswertes.
DE3851230T 1987-11-16 1988-11-03 Steuergerät für gespeicherte programme mit einer möglichkeit für bedingte abzweigung wie in einem videosignalverarbeitungssystem. Expired - Fee Related DE3851230T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/121,820 US4881194A (en) 1987-11-16 1987-11-16 Stored-program controller for equalizing conditional branch delays
PCT/US1988/003819 WO1989005011A2 (en) 1987-11-16 1988-11-03 Stored program controller with a conditional branch facility as for a video signal processor

Publications (2)

Publication Number Publication Date
DE3851230D1 DE3851230D1 (de) 1994-09-29
DE3851230T2 true DE3851230T2 (de) 1995-04-13

Family

ID=22399011

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3851230T Expired - Fee Related DE3851230T2 (de) 1987-11-16 1988-11-03 Steuergerät für gespeicherte programme mit einer möglichkeit für bedingte abzweigung wie in einem videosignalverarbeitungssystem.

Country Status (8)

Country Link
US (1) US4881194A (de)
EP (1) EP0393125B1 (de)
JP (1) JPH03501540A (de)
KR (1) KR970005454B1 (de)
AU (1) AU2818389A (de)
CA (1) CA1309185C (de)
DE (1) DE3851230T2 (de)
WO (1) WO1989005011A2 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151986A (en) * 1987-08-27 1992-09-29 Motorola, Inc. Microcomputer with on-board chip selects and programmable bus stretching
JPH01283635A (ja) * 1988-05-11 1989-11-15 Nec Corp バッファ制御回路
US5165025A (en) * 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
JPH02306341A (ja) * 1989-02-03 1990-12-19 Nec Corp マイクロプロセッサ
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
EP0522513A2 (de) * 1991-07-09 1993-01-13 Hughes Aircraft Company Hochgeschwindigkeitsparallelmicrokodeprogrammsteuerung
DE69326705T2 (de) * 1992-02-14 2000-04-27 Motorola, Inc. Verfahren und Anordnung zur Feststellung der Befehlsablauffolge in einem Datenverarbeitungssystem
US5581719A (en) * 1992-11-12 1996-12-03 Digital Equipment Corporation Multiple block line prediction
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5299034A (en) * 1976-02-17 1977-08-19 Nippon Telegr & Teleph Corp <Ntt> Control system for micro program
US4125861A (en) * 1977-08-18 1978-11-14 Bell Telephone Laboratories, Incorporated Video signal encoding
US4342078A (en) * 1979-05-21 1982-07-27 Motorola, Inc. Instruction register sequence decoder for microprogrammed data processor and method
JPS5748139A (en) * 1980-09-04 1982-03-19 Nec Corp Microprogram control device
US4396906A (en) * 1980-10-31 1983-08-02 Sri International Method and apparatus for digital Huffman encoding
US4689823A (en) * 1984-01-04 1987-08-25 Itek Corporation Digital image frame processor

Also Published As

Publication number Publication date
EP0393125A1 (de) 1990-10-24
KR890702114A (ko) 1989-12-22
WO1989005011A2 (en) 1989-06-01
CA1309185C (en) 1992-10-20
US4881194A (en) 1989-11-14
EP0393125B1 (de) 1994-08-24
JPH03501540A (ja) 1991-04-04
AU2818389A (en) 1989-06-14
DE3851230D1 (de) 1994-09-29
WO1989005011A3 (en) 1989-09-21
KR970005454B1 (ko) 1997-04-16

Similar Documents

Publication Publication Date Title
DE3850117T2 (de) Für einen videosignalprozessor geeignete pixelinterpolationsschaltung.
DE3884221T2 (de) Speichersteuereinheit als videosignalprozessor.
US4823201A (en) Processor for expanding a compressed video signal
US5047975A (en) Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
DE3851230T2 (de) Steuergerät für gespeicherte programme mit einer möglichkeit für bedingte abzweigung wie in einem videosignalverarbeitungssystem.
US5189636A (en) Dual mode combining circuitry
US4835607A (en) Method and apparatus for expanding compressed video data
DE3750791T2 (de) Sehr schnelle Transformationsvorrichtung.
DE69031865T2 (de) Ein SIMD-Prozessor als digitales Filter
DE69129723T2 (de) Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor
DE69030705T2 (de) Netzwerk zur Kommunikation mit dem übernächsten Nachbarn in Vektorprozessorsystemen und Verfahren
DE19543544C2 (de) Einrichtung zur zweidimensionalen diskreten Echtzeit-Cosinustransformation
DE69030706T2 (de) Schaltung zur kontinuierlichen Videosignalverarbeitung in einem synchronen Vektorprozessor
JP2960328B2 (ja) シストリックアーキテクチャ内に配置される「n+1」個の演算子にオペランドを供給するための装置
AU622879B2 (en) Pixel interpolation circuitry as for a video signal processor
AU625151B2 (en) Memory controller as for a video signal processor
DE69030712T2 (de) Befehlsgeneratorarchitektur für Videosignalprozessorsteuerung
AU626847B2 (en) Dual mode adder circuitry
AU622128B2 (en) Processor for expanding a compressed video signal
DE69030704T2 (de) Signal-Pipelining im synchronen Vektorprozessor
AU623874B2 (en) Stored program controller with a conditional branch facility as for a video signal processor
EP0928113A1 (de) Datenverarbeitungsverfahren und -vorrichtung
DE69032544T2 (de) Verfahren und Vorrichtung zur Verarbeitung eines Videosignals

Legal Events

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