HINTERGRUND DER ERFINDUNG
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft ein Digitalsignal-Verarbeitungsverfahren, welches
Berechnungsvorgänge für Digitalsignale ausführt.
Beschreibung des Standes der Technik
-
Fig. 1 zeigt das in einem Beitrag mit dem Titel "A Real Time Video Signal
Processor Suitable for Motion Picture Coding Applications", IEEE, GLOBCOM '87,
Seite 453 beschriebenes Mehrfachprozessorsystem. In Fig. 1 werden
Eingangsdaten 1 durch eine Datenübertragungssteuerung 3 empfangen und danach werden
Daten 4 selektiv zu den Digitalsignalprozessoren 2 übertragen, d. h., DSP-1 bis
DSP-N in Block-1. Nach der Verarbeitung durch die entsprechenden DSPn in Block-
1 werden die resultierenden Daten 5 zu Block-2 übertragen und durch die
entsprechenden DSPn für den nächsten Verarbeitungsschritt verarbeitet.
-
Fig. 2(a) zeigt aufgeteilte Speicherbereiche der DSPn. Zur Vereinfachung der
Erläuterung ist hier ein Beispiel einer Parallelverarbeitung unter Verwendung von
drei DSPn 2 gezeigt, zu welchen Verarbeitungsbereiche A, B und C gleichförmig
zugeordnet sind.
-
In dem Inter-Vollbild-Bildkodierungssystem und ähnlichem ist es eine allgemeine
Konvention, den bedingten Bildpunkt-Ergänzungsvorgang zu verwenden, bei
welchem nur Teile mit wenigstens einer bestimmten Differenz zwischen dem
Eingangsvollbild und dem vorherigen Vollbild kodiert werden und die vorherigen
Vollbilddaten werden für die verbleibenden Teile verwendet. Dementsprechend
unterscheidet sich das für die Verarbeitung benötigte Berechnungsvolumen
abhängig von der Häufigkeit der gültigen Bildpunkte, obwohl die Anzahl von
Bildpunkten in dem Verarbeitungsbereich konstant ist. Das Volumen von erforderlicher
Berechnung oder Berechnungszeit ist proportional zu der Häufigkeit gültiger
Bildpunkte.
-
In dem Inter-Vollbild-Bildkodierungssystem oder ähnlichem, in dem angenommen
wird, dass die Anzahl gültiger Bildpunkte sich auf sämtliche DSPn verteilt, um eine
Verteilung EA, EB und EC zu erreichen, wie in Fig. 2(b) gezeigt, wird die für einen
Block der parallelen DSP-Anordnung benötigte Berechnungszeit bestimmt aus der
Verarbeitungszeit des DSP, welcher für den Bereich B mit der größten Menge von
Verarbeitungen M wirkt, und die verbleibenden DSPn, welche in den Bereichen A
und C früher fertig sind, haben Leerlaufzeit.
-
Bei der wie oben beschrieben angeordneten, konventionellen
Digitalsignal-Verarbeitungsvorrichtung wird ihre Gesamtverarbeitungszeit bestimmt aus der längsten
Verarbeitungszeit unter den DSPn, wenn die Informationsdichte, wie die Häufigkeit
gültiger Bildpunkte, innerhalb eines Vollbildes ungleichförmig ist und die Verteilung
der Information über der Zeit variiert, resultierend in einer verringerten
Verarbeitungs-Effizienz pro DSP-Einheit.
-
Fig. 3 ist eine Darstellung, welche beispielhaft die Anordnung einer weiteren
Digitalsignal-Verarbeitungsvorrichtung zeigt, welche in einem Beitrag mit dem Titel
"Realtime Video Signal Processor Module" in dem Tagungsband von ICASSP '87,
Seite 1961-1964, April 1987, Dallas, USA, offenbart ist. In der Figur ist mit 1 ein
Eingangsanschluss bezeichnet, 4 ist ein Eingangsbus zum Verteilen der
Eingangsdaten an dem Eingangsanschluss 1, 28a ist ein Rückkopplungsbus zum Verteilen
des Ergebnis der vorherigen Verarbeitung und 20 sind Signalverarbeitungsmodule,
die jedes einen Eingangsspeicher 21, eine Verarbeitungseinheit 22, einen
Ausgangsspeicher 23 und eine Zeitsteuerungseinheit 24 beinhalten. Durch 25 sind fest
verdrahtete OR-Schaltungen bezeichnet, durch welche Rückkopplungsdaten an
Ausgangsanschlüssen 30 auf dem Rückkopplungsbus 28a platziert werden, 26
sind fest verdrahtete OR-Schaltungen, durch welche Ausgangsdaten an
Ausgangsanschlüsse 29 über den Ausgangsbus 5a zu dem Ausgangsanschluss 5 geliefert
werden, 27 sind Eingangsanschlüsse für die Eingangsdaten zu dem
Signalverarbeitungsmodul 20 und 28 sind Eingangsanschlüsse für die Rückkopplungsdaten
zu dem Signalverarbeitungsmodul 20.
-
Fig. 4 ist ein Blockschaltbild, das noch detaillierter eines der
Signalverarbeitungsmodule in Fig. 3 zeigt. In der Figur ist mit 221 ein Adressgenerator (AGU A)
bezeichnet, 211 ist ein Eingangs-Doppelspeicher (MEM A), welcher Daten an dem
Eingangsanschluss 27 über den Eingangsbus 4 empfängt, 212 ist ein Eingangs-
Doppelspeicher (MEM B), welcher Daten auf dem Rückkopplungsbus 28a durch
den Eingangsanschluss 28 empfängt, 222 ist ein Adressgenerator (AGU B), 223 ist
ein X-Bus, 224 ist ein Y-Bus und 225 ist eine Pipeline-Arithmetikeinheit (PAU),
deren Eingangsanschluss EX1 an den X-Bus 223 angeschlossen ist, und ein
weiterer Eingangsanschluss EX2 ist an den Y-Bus 224 angeschlossen. Mit 226 ist
ein Datenspeicher [MEM P·Q)] bezeichnet, dessen Ausgang an den X-Bus
angeschlossen ist, 227 ist ein Adressgenerator [AGU P(Q)], dessen Ausgang an den Y-
Bus 224 und den Datenspeicher 226 angeschlossen ist, 228 ist ein Modusregister
(MDR), dessen Ausgang an den X-Bus 223 und den Y-Bus 224 angeschlossen ist,
und 241 ist ein Z-Bus, welcher an die Eingänge der Adressgeneratoren 221, 222
und 227, die Pipeline-Arithmetikeinheit 225 und den Datenspeicher 226
angeschlossen ist. Mit 242 ist ein Sequenzierer (SEQ) bezeichnet, 243 ist ein
Befehlsspeicher (IRAM), angeschlossen an den Ausgang des Sequenzierers 242, und 245
ist ein Dekodierer (DEC), angeschlossen an den Ausgang des Befehlsspeichers
243, wobei der Ausgang des Dekodierers 245 an den Z-Bus 241 und den
Ausgangsbus 231 angeschlossen ist. Der Ausgangsbus 231 ist an den Eingang des
Modusregisters 228 und den Z-Bus 241 angeschlossen. Mit 232 ist ein FIFO-
Speicher (MEM C) bezeichnet, angeschlossen an den Ausgangsbus 231, 233 ist
ein FIFO (MEM D), angeschlossen an den Ausgangsbus 231, 29 ist ein
Ausgangsanschluss des FIFO-Speichers 232 und 30 ist ein Ausgangsanschluss des FIFO-
Speichers 233.
-
Fig. 5 ist eine Darstellung, welche beispielhaft den Algorithmus eines typischen
Hochleistungskodierers für ein bewegtes Bild zeigt. In der Figur ist mit 250 ein
Eingangsanschluss für das Eingangsvideosignal bezeichnet, 251 ist ein Eingangs-
Vollbildpuffer mit wenigstens einer 1-Vollbild-Kapazität und mit einer gleichzeitigen
Lese-Schreib-Fähigkeit, 252 ist ein Inter-Vollbild-Subtrahierer zum Bewerten der
Differenz, 253 ist ein Block-Identifizierer, 254 ist ein Kodierer, 255 ist ein durch
den Kodierer 254 erzeugter Kodierungsparameter, 256 ist ein längenveränderlicher
Kodierer, 257 ist ein Videomultiplexer, 258 ist ein Sende-Pufferspeicher und 259
ist ein Ausgangsanschluss für die kodierten Daten. Zwischen dem
Eingangsanschluss 250 und dem Ausgangsanschluss 259 sind kaskadiert die oben erwähnten
funktionalen Blöcke 251-254 und 256-258 angeschlossen. Weiterhin ist mit 260
ein lokaler Dekodierer bezeichnet, welcher die Kodierungsparameter 255 empfängt,
261 ist ein Inter-Vollbild-Addierer, 262 ist ein Schleifenfilter, 263 ist ein
Kodierungs-Vollbildspeicher, 264 sind vorher kodierte Vollbilddaten, 265 ist ein
Bewegungs-Kompensierer, 266 sind gegenwärtige Vollbilddaten, welche von dem
Eingangs-Vollbildpuffer 251 in den Bewegungs-Kompensierer 265 eingespeist
werden, 267 sind Bewegungsvektordaten, 268 sind kompensierte, vorherige
Vollbilddaten, welche von dem Bewegungs-Kompensierer 265 in den Inter-Vollbild-
Subtrahierer 252 und den Inter-Vollbild-Addierer 261 eingespeist werden, 269 ist
ein Rückkopplungssignal und 270 ist eine Kodierungssteuerung, welche
Kodierungssteuerungsinformationen für den Videomultiplexer 257 bereitstellt, ein
Vorwärtssignal für den Eingangs-Vollbildpuffer 251, ein
Blockidentifizierungs-Steuerungssignal 273 für den Blockidentifizierer 253 und ein Kodierungssteuerungssignal
274 für den längenveränderlichen Kodierer 256.
-
Als nächstes wird die Wirkungsweise der konventionellen
Digitalsignal-Verarbeitungsvorrichtung in Verbindung mit Fig. 3 beschrieben. Diese Vorrichtung ist
vorgesehen zur Bewegtbildverarbeitung und basiert auf dem Parallelaufteilungs-
Verarbeitungssystem, bei welchem ein Vollbild in kleine Vollbilder aufgeteilt wird
und ein Signalverarbeitungsmodul 20 jedem der aufgeteilten Vollbildbereiche
zugeordnet ist.
-
Anfangs arbeitet jedes Signalverarbeitungsmodul 20 auf der autonomen Basis
durch Aufwenden einer Videovollbild-Zeit zum Holen eines aufgeteilten
Vollbildbereiches, welcher ihm zugeordnet ist, aus den Eingangsdaten, welche
vollbildweise in einer Rasterabtastung über den Eingangsbus 4 übertragen werden und
speichert die Daten in dem Eingangsspeicher 21. Nach Ablauf der Zeit eines
Videovollbildes führt die Verarbeitungseinheit 22 die vorgeschriebene
Signalverarbeitung für die Eingangsdaten und die Rückkopplungsdaten, gespeichert in dem
Eingangsspeicher 21 aus, und speichert das Ergebnis vorübergehend in dem
Ausgangsspeicher 23. Die Rückkopplungsdaten, welche durch den
Ausgangsanschluss 30 zu dem Ausgangsspeicher 23 ausgegeben werden, werden zur
Synchronisierung mit anderen Signalverarbeitungsmodulen 20 zeitgesteuert und zu
sämtlichen Rückkopplungsdaten durch die fest verdrahtete OR-Schaltung 25
zusammengefasst, welche auf dem Rückkopplungsbus 28a angeordnet ist. Ebenso
werden die aus dem Ausgangsspeicher 23 durch den Ausgangsanschluss 29
ausgegebenen Ausgangsdaten zur Synchronisierung mit den anderen
Signalverarbeitungsmodulen 20 zeitgesteuert und durch Zusammenfassen zu sämtlichen
Ausgangsdaten durch die fest verdrahtete OR-Schaltung 26 über den Ausgangsbus
5a zu dem Ausgangsanschluss 5 geliefert.
-
Einzeln durch die Signalverarbeitungsmodule 20 verarbeitete, aufgeteilte
Rahmenbereiche werden wieder zu einem Video-Vollbild zusammengefasst. Dadurch wird
eine Parallelverarbeitung von aufgeteilten Bereichen verwirklicht. Aus dem oben
beschriebenen Grund ist es für sämtliche Signalverarbeitungsmodule 20
erforderlich, dass ihre Verarbeitungen vollständig synchron miteinander ablaufen. Dazu
stellt die Zeitsteuerungseinheit 24 sämtlichen Sektionen des Systems die
Zeitsteuerung der Daten-Eingabe/Ausgabe und des Verarbeitungsbeginns synchron mit
der Videovollbild-Zeitsteuerung bereit, welches der Synchronisierungs-Bezugspunkt
ist.
-
Als Nächstes wird die Wirkungsweise eines Signalverarbeitungsmodules 20 in
Verbindung mit Fig. 4 kurz dargestellt. Aus einem rahmenweise durch den
Eingangsanschluss 27 synchron mit dem Video-Vollbild-Sync-Signal eingegebenen
Video-Vollbild werden Daten des zugeordneten Bereiches in dem
Eingangs-Doppelspeicher 211 gespeichert. Gleichzeitig werden aus den durch den
Eingangsanschluss 28 eingegebenen vorherigen Vollbilddaten der Teil des zugeordneten
Bereiches und seine peripheren Daten in dem Eingangs-Doppelspeicher 212
gespeichert.
-
Die Eingangs-Doppelspeicher 211 und 212 sind aus einer zweiseitigen
Speichervorrichtung mit dem gleichen Aufbau an beiden Seiten gebildet und diese wirkt so,
dass, während an einer Seite Daten geschrieben werden, die andere Seite mit dem
X-Bus 223 und dem Y-Bus 224 zum Lesen für den Kodierungsvorgang durch die
Pipeline-Arithmetikeinheit 225 verbunden ist. Die Lese/Schreib-Seiten der Eingangs-
Doppelspeicher 211 und 212 werden durch das oben erwähnte Video-Vollbild-
Sync-Signal umgeschaltet, so dass Eingangsdaten zugeordneter Bereiche an den
Eingangsanschlüssen 27 und 28 vollbildweise ununterbrochen eingegeben werden.
-
Die zu dem X-Bus 223 und dem Y-Bus 224 ausgelesenen Daten sind diejenigen,
die bei den Datenspeicheradressen gespeichert werden, welche für die Eingangs-
Doppelspeicher 211 und 212 durch die Adressgeneratoren 221 und 222
angegeben werden, die durch Signale gesteuert werden, welche durch den Dekodierer
245 durch Dekodieren eines 80 Bit langen Horizon-Typ-Mikrokodes bereitgestellt
werden, der entsprechend der Adresse des Befehlsspeichers 243 ausgelesen wird,
welche durch den Sequenzierer 242 angegeben wird. Die auf dem X-Bus 223 und
dem Y-Bus 224 platzierten Daten werden parallel in die Pipeline-Arithmetikeinheit
225 eingegeben, welche eine Reihe von Signalverarbeitungen einschließlich
Kodierung und lokaler Dekodierung implementiert und das Ergebnis zu dem Z-Bus 241
ausgibt. Unter diesen auf dem Z-Bus platzierten Verarbeitungsausgaben wird das
kodierte Ausgangssignal in dem FIFO-Speicher 232 gespeichert und das lokal
dekodierte Ausgangssignal wird durch den Ausgangsbus 231 in dem FIFO-Speicher
233 gespeichert.
-
Die FIFO-Speicher 232 und 233 sind Pufferspeicher mit FIFO-Aufbau. Aus den
Ausgangsdaten und lokal dekodierten Daten bestehende Rückkopplungsdaten
werden aus den Ausgangsanschlüssen 29 und 30 zu den
Lese-Steuerungszeitpunkten für den zugeordneten Bereich ausgelesen, erzeugt aus dem
Video-Vollbildsignal, und ein Teil der lokal dekodierten Video-Vollbild-Daten und der kodierten
Ausgangsdaten werden in Übereinstimmung mit der Abtastreihenfolge erzeugt.
-
Der Datenspeicher 226, welcher durch das Ausgangssignal des Adressgenerators
227 gesteuert wird, wird durch einen Arbeitsspeicher gesteuert, welcher für die
Verarbeitung der Pipeline-Arithmetikeinheit 225 erforderlich ist, und eine Tabelle,
welche Konstanten speichert. Das Modusregister 228 besteht aus einer
Registerdatei einschließlich Registern zum Laden von direkten Werten von dem Dekodierer
245.
-
Diese Digitalsignal-Verarbeitungsvorrichtung basiert grundlegend auf der
vorstehenden bereichsgeteilten Parallelverarbeitung und es ist vorgesehen, dass jedes
Signalverarbeitungsmodul 20 einen aufgeteilten Rahmenbereich auf einer
Echtzeitbasis unabhängig behandelt. Wenn die Digitalsignal-Verarbeitungsvorrichtung
vorgesehen ist für die Verwirklichung eines Kodierers, wie in Fig. 5 gezeigt,
können nur Teile ohne den längenveränderlichen Kodierer 256, den
Videomultiplexer 257, den Übertragungspuffer 258 und die Kodierungssteuerung 270
verwirklicht werden. Es ist insbesondere nicht geeignet für eine kontinuierliche
Verarbeitung in einem Video-Vollbild und ist begrenzt auf den
Inter-Vollbild-Kodierungsschleifenvorgang im Bereich von dem Eingangs-Vollbild-Puffer 251 zu dem
Blockidentifizierer 253, Kodierer 254, Lokal-Dekodierer 260, Kodierungs-Vollbild-
Speicher 263 und den Bewegungskompensierer 265, der für Daten hilfreich ist, die
vollständig innerhalb eines Vollbildes aufteilbar sind.
-
Da jedes Signalverarbeitungsmodul 20 die gleiche Verarbeitung für jedes Vollbild
implementiert, kann das in dem Befehlsspeicher 243 gespeicherte
Verarbeitungsprogramm ein einzelnes Programm sein. Wenn ein Vollbild in M Bereiche (M ist eine
ganze Zahl größer oder gleich 1) aufgeteilt ist, ergibt sich die Anzahl der
Verarbeitungszyklen Nc pro Bildpunkt, welche auf einer Echtzeitbasis durch ein
Signalverarbeitungsmodul 20 ausführbar ist, durch die folgende Berechnung
-
Nc = Mc·Tf/Mp·Np (Takte/Bildpunkt),
-
wobei Mc die Frequenz der Maschinenzyklen (Hz) ist, Tf ist die Vollbild-Periode (s),
Mp ist die Anzahl horizontaler Bildpunkte in dem zugewiesenen Bereich, und Np ist
die Anzahl vertikaler Bildpunkte in dem zugewiesenen Bereich.
-
Wenn ein Vollbild zum Beispiel in vier Bereiche aufgeteilt ist, von denen jeder einem
Signalverarbeitungsmodul 20 zugeordnet ist, wird in diesem Zusammenhang die
Anzahl von Verarbeitungszyklen Nc um das Vierfache erhöht und es wird für die
Videosignalverarbeitung, welche sehr schnell sein muss, möglich, dies auf einer
Echtzeitbasis mit einer erhöhten Anzahl relativ langsamer
Signalverarbeitungsmodule 20 zu handhaben.
-
Die wie oben beschrieben angeordnete konventionelle
Digitalsignal-Verarbeitungsvorrichtung weist die folgenden Probleme bei der Verarbeitung von Videosignalen
auf.
-
(a) Für die Verwirklichung einer sehr schnellen Verarbeitung muss ein Vollbild
in mehrere kleine Bereiche aufgeteilt sein, bestimmte
Signalverarbeitungsalgorithmen erlaubt jedoch keine unabhängigen Verarbeitungen für Bereiche und unterhalb
einer bestimmten minimalen Aufteilungsgröße. Daher kann eine
Echtzeitverarbeitung nicht durch Erhöhen der Parallelität verwirklicht werden.
-
(b) Wegen einer festen Verteilung der Belastung der Signalverarbeitungsmodule
muss die Verarbeitungszeit so eingestellt sein, dass sie mit der längsten
übereinstimmt, wenn jedes Signalverarbeitungsmodul unterschiedliche Verarbeitungszeiten
aufweist. Daher weist das System eine unnötig erhöhte Parallelität relativ zu der
Verarbeitungskapazität auf.
-
(c) Dateneingabe und Datenverarbeitung benötigen jeweils ein Vollbild Zeit und
Dateneingabe und Ausgabe benötigen jeweils einen Vollbild
Zeit-Vollbild-Pufferspeicher, resultierend in einer längeren Zeitverzögerung und einer erhöhten
Speicherkapazität. Daher weist das System eine signifikante Schleifenverzögerung in
der Rückkopplungssteuerung und ähnlichem auf, und es ist schwierig, zum Beispiel
die Kodierungssteuerung in Fig. 5 zu verwirklichen.
-
(d) Da das System für eine vollständige Parallelverarbeitung vorgesehen ist,
kann es nicht einen solchen Vorgang wie Abtasten der Gesamtheit eines gleichen
Vollbildes horizontal ausführen.
-
Fig. 6 ist ein Blockschaltbild des konventionellen
Digitalsignal-Verarbeitungssystems, offenbart in dem Tagungsband (Nr. S10-1) des jährlichen Kongresses
1986 der Kommunikations-Abteilung des The Institute of Electronics and
Communications Engineers of Japan. In der Figur ist mit 31 ein Doppelanschluss-
Intern-Datenspeicher bezeichnet (wird als 2P-RAM bezeichnet), welcher in der Lage
ist, zwei Datensätze gleichzeitig zu lesen und zu schreiben, 32 ist ein
Adressgenerator, welcher die Adresse der Lesedaten oder Schreibdaten berechnet, 33 ist
ein Datenbus, welcher für die interne Übertragung von Daten für die Berechnung
verwendet wird, 34 und 35 sind Selektoren, welche Daten in dem 2P-RAM 31
auswählen, 36 ist ein Register, welches durch den Auswähler 34 ausgewählte
Berechnungsdaten hält, 37 ist ein Register, welches durch den Auswähler 35
ausgewählte Berechnungsdaten hält, 38 ist ein Multiplizierer, 39 ist ein Register,
welches das Ausgangssignal des Multiplizierers 38 hält, 40 ist ein Auswähler,
welcher das Ausgangssignal des Registers 36 oder von Akkumulatoren (ACCO-
ACC3) 44 auswählt, 41 ist ein Auswähler, welcher das Ausgangssignal der
Register 39 oder 37 auswählt, 42 ist eine Arithmetik/Logik-Einheit, welche
Berechnungen für die Ausgangssignale der Auswähler 40 und 41 ausführt und 43 ist ein
Auswähler, welcher das Ausgangssignal der Arithmetik/Logik-Einheit 42 oder
Daten in einem externen Datenregister 46 auswählt. Die Akkumulatoren 44 werden
verwendet, um die Ausgangssignale der Arithmetik/Logik-Einheit 42 für kumulative
Berechnungen zu halten. Das externe Datenregister 46 ist vorgesehen zum Halten
der Daten von einem externen Datenspeicher 47. Mit 45 ist ein externes
Adressregister bezeichnet, welches die durch den Adressgenerator 32 bereitgestellten
Adressdaten hält und sie zu dem externen Datenspeicher 47 überträgt.
-
Als Nächstes wird die Wirkungsweise beschrieben. Dieses auf einem
Digitalsignalprozessor basierende Signalverarbeitungssystem führt ein Befehls-Holen und
Dekodieren für das vorgegebene Mikroprogramm, Datenlesen, Berechnung und
Berechnungsergebnis-Schreiben in einem Parallel-Pipelineverarbeitungsmodus aus.
Das Folgende beschreibt die Wirkungsweise der
3-Eingaben-1-Ausgabe-Berechnung.
-
Die Arithmetik/Logik-Einheit, der Multiplizierer, Adressgenerator, Datenspeicher und
Auswähler werden in dem Mikrobefehlsmodus gesteuert.
-
Arithmetikoperationen für zwei Eingänge, einschließlich Addition, Subtraktion,
Maximalbewertung, Minimalbewertung, etc. werden generisch durch a b
ausgedrückt und ein Multiplikationsvorgang für zwei Eingaben wird generisch
ausgedrückt durch a · b, wobei a und b unabhängige Daten sind.
-
Die arithmetischen Vorgänge und die Multiplikation werden zum Bilden von 3-
Eingaben-1-Ausgabe-Vorgängen zusammengefasst und sie sind durch die folgenden
Ausdrücke definiert.
-
Z1i = (ai bi) · ci (1)
-
Z2i = (ai · b1) ci (2)
-
wobei i = 1 bis N und ai, bi und ci Sätze unabhängiger Daten sind, welche in dem
2P-RAM 31 gespeichert sind.
-
Fig. 7 zeigt die Folge der Verarbeitung zum Implementieren des 3-Eingaben-
Vorganges der Form des Ausdruckes (1) durch das
Digitalsignal-Verarbeitungssystem, das beispielhaft in Fig. 6 gezeigt ist.
-
Der Daten-Adressgenerator 32 stellt die Anfangsadressen für die zwei Datensätze
A und B ein und wählt den einfachen inkrementalen Modus aus. Dann werden die
zwei Datensätze A und B durch die Auswähler 34 und 35 in die Register 36 und
37 geladen. Die Auswähler 40 und 41 wählen die Register 36 und 37 aus, so dass
die Arithmetik/Logik-Einheit 42 den arithmetischen Vorgang ai bi implementiert.
Der Auswähler 42 wählt die Arithmetik/Logik-Einheit 42 aus, um das
Verarbeitungsergebnis vorübergehend in einem der Akkumulatoren (ACCO-ACC3) 44 zu
halten und die resultierenden Daten werden über den Datenbus 33 und durch das
externe Register 46 gesendet und in dem externen Speicher 47 gespeichert,
dessen Adressierungsmodus der einfache inkrementale Modus ist, da er mit einer
der Adressen für den 2P-RAM 31 in dem Adressgenerator 32 verknüpft ist.
-
In dem nachfolgenden Schritt ST3 stellt der Datenadressgenerator 32 die
Anfangsadressen des Datensatzes C und des Datensatzes ai bi ein und ci-Daten werden
aus dem 2P-RAM 31 in das Register 36 ausgelesen. Der Auswähler 35 wählt den
Datenbus zum Laden der Daten von ai bi in dem externen Speicher 47 in das
Register 37. In diesem Fall muss, damit eine übereinstimmende Zeitsteuerung zum
Lesen des Datensatzes C und des Datensatzes ai bi vorhanden ist, der Schritt
ST4 zwei Zyklen nutzlosen Befehlslesens für den externen Speicher im voraus
aufwenden.
-
Die zwei Datensätze werden in dem Schritt ST5 einer Multiplikation durch den
Multiplizierer 38 unterworfen und das Ergebnis wird in dem Register 39
gespeichert. In dem nächsten Zyklus durchlaufen die resultierenden Daten die
Arithmetik/Logik-Einheit 42 und werden, nachdem sie vorübergehend in einem der
Akkumulatoren (ACCO-ACC3) 44 gehalten wurden, über den Datenbus 33 zu dem 2P-RAM
31 übertragen.
-
Diese Vorgänge werden parallel auf der Basis der Pipeline-Verarbeitung ausgeführt
und die Vorgänge vom Lesen des 2P-RAM 31 bis zum Speichern des
Verarbeitungsergebnisses im dem externen Speicher 47 für N Datenelemente-Sätze
benötigt N + 3 Maschinenzyklen im Fall eines arithmetischen Vorganges.
-
Die Schritte der Vorgänge sind in den folgenden Tabellen 1 und 2 aufgelistet.
Tabelle 1 ist für den Vorgang von ai bi und die Übertragung des Ergebnisses zu
dem externen Speicher 47 und Tabelle 2 ist vorgesehen zum Lesen des
resultierenden ai bi aus dem externen Speicher 47, den Vorgang von (ai bi) · ci, und die
Übertragung des Ergebnisses zu dem 2P-RAM. In beiden Tabellen stellt das Zeichen
"x" einen unbestimmten Wert dar. Das Speichern in dem externen Datenregister 46
vervollständigt im Maschinenzyklus N + 3 beide Tabellen und das externe
Datenregister 46 wird im Maschinenzyklus 0 (zwei Maschinenzyklen) in Tabelle 2 nutzlos
gelesen.
Tabelle 1
Tabelle 2
-
Als Nächstes wird nach zwei nutzlosen Lesezyklen des externen Speichers 47 für
Zeitsteuerungszwecke eine Multiplikation für N Stücke von Datensätzen ausgeführt
und die Ergebnisse werden in dem 2P-RAM 31 gespeichert. Dieser Vorgang
benötigt N + 3 Maschinenzyklen, welche zu den zwei Befehlszyklen für die Adress-
Initialisierung addiert werden, und insgesamt werden 2N + 10 Zyklen aufgewendet.
Ein Vorgang des Ausdruckes (2) beansprucht ebenfalls 2N + 10 Zyklen. Demnach
ist erkennbar, dass ein 3-Eingaben-1-Ausgabe-Vorgang für N Stücke von
Datensätzen unter Verwendung eines Prozessors mit der Fähigkeit von 2-Eingaben-
Vorgängen ausgeführt wird, er benötigt bis zu 2N Maschinenzyklen (vorausgesetzt,
dass N ausreichend groß ist).
-
Das Folgende beschreibt den kumulativen Vorgang für die Ergebnisse der
vorstehenden 2-Eingaben-1-Ausgabe-Berechnung.
-
Im Fall des Ausdruckes (3) werden das Multiplikationsergebnis für ai bi und ci
(Ausgang des Registers 39) und der kumulative Zwischenwert in die
Arithmetik/Logik-Einheit 42 eingetragen und das Ergebnis der Summierung wird durch den
Auswähler 43 zurück in den gleichen Akkumulator 44 eingegeben. Dadurch
benötigt der Vorgang unverändert 2N + 10 Zyklen.
-
In dem Fall des Ausdruckes (4) werden die Datensätze (ai · bi) ci, welche
vorübergehend in dem 2P-RAM 31 gespeichert wurden, sequentiell ausgelesen und
durch die Arithmetik/Logik-Einheit 42 summiert und daher benötigt die Verarbeitung
weitere N Zyklen, resultierend in insgesamt 3N + 10 Zyklen.
-
Das konventionelle Digitalsignal-Verarbeitungssystem ist ausgebildet, wie oben
beschrieben, und daher führt es für einen 3-Eingaben-1-Ausgabe-Vorgang von drei
unabhängigen Datensätzen zweimal einen 2-Eingaben-1-Ausgabe-Vorgang aus.
-
Zusätzlich wird die Verarbeitungszeit weiter ausgedehnt zur Adress-Steuerung, zur
Speicherübertragen und für andere Verarbeitungen.
-
Fig. 8 ist eine Darstellung, welche kurz den Bildkodierungssender zeigt, welcher
das konventionelle Bewegungs-Kompensations-Betriebsverfahren implementiert,
das offenbart ist in einem Beitrag mit dem Titel "Dynamic Multistage Vector
Quantization for Images", journal of The Institute of Electronics and
Communication Engineers of Japan, Band J68-B, Nr. 1, Seiten 68-76, Januar 1985. In der
Figur ist mit 51 ein Eingangssignal aus Bilddaten bezeichnet, welches aus einer
Mehrzahl von aufeinanderfolgenden Vollbildern auf der Zeitachse aufgebaut ist, 52
ist ein Bewegungskompensierer, welche ein Vorhersagesignal auf der Basis der
Neuanordnungsberechnung der Korrelation zwischen dem durch das Eingangssignal
51 dargestellten gegenwärtigen Vollbild und dem durch ein vorheriges
Vollbildsignal 53 dargestellten vorherigen Vollbild erzeugt, welches das vorherige, verringerte
Signal ist, 54 ist eine Bewegungsvektorinformation, bereitgestellt durch den
Bewegungskompensierer 52, welcher die Position eines Vorhersage-Signalblockes
anzeigt, 55 ist ein durch den Bewegungskompensierer 52 erzeugtes
Vorhersagesignal, 56 ist ein Kodierer, welcher die Differenz zwischen dem Eingangssignal 51
und dem Vorhersagesignal 56 kodiert, 57 ist ein Dekodierer, welcher das durch den
Kodierer 56 kodierte Signal dekodiert und 58 ist ein Vollbildspeicher, welcher durch
die Summierung des Signales von dem Dekodierer 57 und des Signales von dem
Bewegungskompensierer 52 wiedergegebene Daten speichert.
-
Die Leistung der vorstehenden Anordnung wird in Verbindung mit Fig. 9
beschrieben. Die Bewegungs-Kompensationsverarbeitung ist es, für das
Eingangssignal 51 den Betrag der Verzerrung zwischen einem 11-zu-12-Block zu berechnen,
der an einer bestimmten Position in dem in Fig. 9(A) gezeigten, gegenwärtigen
Vollbild positioniert ist, und M Teilen von Blöcken in dem Suchbereich HS des in
Fig. 9(B) gezeigten vorherigen Vollbildes, um die Position des Blockes y mit einer
minimalen Verzerrung relativ zu der Position des Eingabeblockes zu bewerten, d. h.,
den Bewegungsvektor V, und um das Signal des Minimal-Verzerrungsblockes als
ein Vorhersagesignal zu erkennen.
-
Die Anzahl von Bewegungsvektoren V bei der Suche innerhalb des Suchbereiches
S in dem gegebenen Vollbild wird mit M (eine ganze Zahl größer als 1)
angenommen. Der Betrag der Verzerrung der Position eines bestimmten Bewegungsvektors
V zwischen dem vorherigen Vollbild-Blöcken und dem gegenwärtigen Eingabeblock
wird als eine Summe von Absolutwerten von Differenzen wie folgt berechnet.
-
wobei Eingangsvektoren x = {x1, x2, ..., xk}, Suchobjektblöcke yi = {yi1, yi2, ...,
yik}, i = 1, 2, ..., M und M und K feste Werte sind. Der Bewegungsvektor V wird
wie folgt bewertet.
-
V = Vi {min di i = 1, 2, ..., M} (6)
-
Fig. 10 zeigt die Folge von Vorgängen zum Erfassen des Bewegungsvektors V.
Der Schritt ST11 berechnet eine Verzerrung d1 bei jedem der K Stücke der
Abtastpunkte auf der Basis des Ausdruckes (5) und der nächste Schritt ST12
vergleicht den di mit der minimalen Verzerrung D an der Position I, und, wenn di < D,
werden die Variablen ersetzt als D = di und I = i. Diese Vorgänge werden für die
Anzahl von Suchvektoren wiederholt, d. h., der Verarbeitungsablauf des
Ausdruckes (6), um die letzte minimale Verzerrung D und ihre Position I zu bestimmen.
-
Diese Vorgänge müssen innerhalb der Periode jedes aufeinanderfolgend
eingegebenen Vollbildes beendet werden, und daher ist ein
Hochgeschwindigkeits-Digitalsignal-Prozessor erforderlich.
-
Als ein Beispiel wird das in Fig. 6 gezeigte Digitalsignal-Verarbeitungssystem
verwendet, um den Bewegungskompensationsvorgang auszuführen. In diesem Fall
findet der Multiplikations-Summen-Vorgang K · M mal für jeden Eingangsblock statt
und die Anzahl von Maschinenzyklen ist die mit dem M-fachen der Bearbeitungen
einschließlich Vergleiche und Aktualisierung aufgewendete Gesamtzeit. Allgemein
ist die Anzahl von Zyklen zum Vergleich und Aktualisieren klein genug, verglichen
mit demjenigen des Multiplikations-Summen-Vorganges und das Volumen des
Bewegungskompensationsvorganges für einen Block ist im wesentlichen gleich
K · M Maschinenzyklen.
-
Da diese Vorgänge jedoch bestimmt werden von der Zeit entsprechend der Periode
von aufeinanderfolgend eingegebenen Vollbildern wird eine parallele Verarbeitung
für
die Masse von Multiplikations-Summen-Vorgängen benötigt, die in einer kurzen
Zeit auszuführen sind, abhängig von der Verarbeitungsvorgangs-Zykluszeit eines
bestimmten Digitalsignal-Prozessors.
-
Das konventionelle Bewegungs-Kompensationsschema wird implementiert, wie
oben beschrieben, und um die Betriebszeit für ein beträchtliches Volumen von
Abläufen sicherzustellen, wenn sie unter Verwendung eines Digitalsignalprozessors
ausgeführt werden, muss der Prozessor parallele Verarbeitungen aufweisen,
resultierend in einer gesteuerten Komplexität und Abmessung des
Hardwareaufbaus.
-
Das US-Patent 4,661,849, eingetragen für die PicTel Corporation, betrifft ein
Bildfolgen-Sendeverfahren, welches eine Abschätzung des Bewegungsversatzes
zwischen aufeinanderfolgenden Vollbildern einer Sequenz enthält. Jedes Bild ist in
nicht überlappende Blöcke aufgeteilt, wobei jeder Block eine Mehrzahl von
Bildelementen beinhaltet. Das Verfahren enthält dann eine aufeinanderfolgende
Auswahl von Anfangswerten eines Bewegungsvektorversatzes für jeden
aufeinanderfolgenden Block entsprechend einer Abschätztechnik des steilsten
Abstiegs. Danach werden aufeinanderfolgende Werte des Bewegungsversatzvektors
für einen Block entsprechend dem steilst absteigenden Ansatz bestimmt und der
Iterationsvorgang wird beendet, wenn ein Iterationsfehler gemessen wird, welcher
dem Steilst-Abstiegs-Verfahren zugeordnet ist, der geringer ist als ein
vorbestimmter Schwellwert. Ein adaptiver Ansatz wird verwendet, bei welchem der
Schrittgrößen-Parameter entsprechend einem Gradientenfehler inkrementiert wird, welcher
bei der Steilst-Abstiegs-Technik verwendet wird.
-
Eine wissenschaftliche Veröffentlichung von Yasuo Ariki und Toshiyuki Sakai, mit
dem Titel "Moving Picture Analysis Based on a Hierarchical Model Approach",
welche veröffentlicht wurde in "Systems-Computers-Controls", Band 12, Nr. 4,
Juli 1981, Washington, USA, Seite 37-45, betrifft ebenfalls ein effizientes
Verarbeitungsverfahren für ein bewegtes Bild. Entsprechend dieser Zitierung wird zur
effizienten Auswahl von Vollbildern mit signifikanten Änderungen ein kleines Bild
in mehrere Blöcke aufgeteilt und Korrelationen werden zwischen entsprechenden
Blöcken unterschiedlicher Vollbilder errechnet. Wenn ein Block mit einer Korrelation
unterhalb des Schwellwertes gefunden wird, wird dieses Vollbild ausgewählt.
Dieses Verfahren verwendet ein hierarchisches Strukturmodell durch Auswählen
von Vollbildern mit kleineren aufeinanderfolgenden Korrelationen. Der hierarchische
Aufbau besteht aus Merkmalspunkten, Grenzlinien und Regionen, welche es
ermöglichen sollen, den Merkmalspunkt und die Grenzlinie basierend auf einer
Vorhersage zu verfolgen oder das gesamte Objektmuster zu verfolgen.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die vorliegende Erfindung ist vorgesehen, um die vorstehenden Mängel im Stand
der Technik zu beseitigen.
-
Die Aufgabe dieser Erfindung ist es, ein bewegungskompensierendes
Verarbeitungsverfahren anzugeben, welches durch Aufbauen des Bewegungskompensierers
eines Bildkodierungssystems mit einer Digitalsignal-Verarbeitungsvorrichtung eine
geringere Anzahl von Parallelprozessoren erfordert, um dadurch die Einfachheit und
Kompaktheit des Hardwareaufbaus zu verbessern.
-
Erfindungsgemäß wird diese Aufgabe verwirklicht durch ein
bewegungskompensierendes Verarbeitungsverfahren, bei welchem ein gegenwärtig eingegebenes
Vollbild aus digitalen Bilddaten aus einer Mehrzahl von Rahmen besteht, die
aufeinanderfolgend eingegeben werden, aufgeteilt in eine Mehrzahl von Blöcken, und bei
dem Erfassen eines Blockes, welcher eine minimale Verzerrung bietet, resultierend
aus der Berechnung der Neuanordnung zwischen Mustern, basierend auf der
Kumulation von differentiellen Absolutwerten oder differentiellen Quadratwerten
von Bildpunkten im Block zwischen einem Block des gegenwärtig eingegebenen
Vollbildes und Blöcken der Anzahl M in einem vorherigen Vollbild, ein Maximum
von K Bildpunkten wird für die Muster-Neuanordnungsberechnung verwendet,
Zwischenprüfungen werden n-fach während der Neuanordnungs-Berechnung zu
Zeitpunkten ausgeführt, wenn die Anzahl von Referenzbildpunkten geringer als K
ist, ein Block wird bestimmt als außerhalb des Bereiches zum Vergleich zum Finden
eines minimalen verzerrten Blockes, wenn ein kumulativer Wert zu jedem Zeitpunkt
größer als ein Schwellwert ist, welcher für jeden Zwischenprüfungs-Zeitpunkt
voreingestellt wird, und ein Block mit einer minimalen Verzerrung wird erfasst
durch Berechnen aus Blöcken, deren kumulative Werte unterhalb der Schwellwerte
zu sämtlichen Zeitpunkten der Zwischenprüfungen sind, wobei M eine positive
ganze Zahl ist, K ist eine ganze Zahl größer oder gleich Eins und kleiner oder gleich
der Anzahl einer Gesamtanzahl von Bildpunkten in einem Block und n ist eine ganze
Zahl größer oder gleich Eins.
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Fig. 1 ist ein Blockschaltbild, welches ein
Mehrfachprozessorsystem einer konventionellen
Digitalsignal-Verarbeitungsvorrichtung zeigt;
-
Fig. 2 ist eine Darstellung zum Erläutern der zugeordneten
Bereiche der in Fig. 1 gezeigten Prozessoren;
-
Fig. 3 ist ein Blockschaltbild, welches die Anordnung einer
weiteren konventionellen
Digitalsignal-Verarbeitungsvorrichtung zeigt;
-
Fig. 4 ist ein Blockschaltbild, welches detailliert die Anordnung
des in Fig. 3 gezeigten Signalverarbeitungsmodules zeigt;
-
Fig. 5 ist ein Blockschaltbild, welches den Algorithmus für einen
hocheffizienten Kodierer für ein bewegtes Bild zeigt;
-
Fig. 6 ist ein Blockschaltbild, welches die Anordnung einer
dritten, konventionellen
Digitalsignal-Verarbeitungsvorrichtung zeigt;
-
Fig. 7 ist ein Flussdiagramm, welches die Verarbeitung von 3-
Eingaben-Arithmetikvorgängen unter Verwendung der in
Fig. 6 gezeigten Digitalsignal-Verarbeitungsvorrichtung
zeigt;
-
Fig. 8 ist ein Blockschaltbild, welches kurz die Anordnung des
Bildkodierungssenders zeigt, welcher das konventionelle
Bewegungs-Kompensationsverfahren ausführt;
-
Fig. 9 ist eine Darstellung, die zum Erläutern des konventionellen
Bewegungskompensationsverfahrens verwendet wird;
-
Fig. 10 ist ein Flussdiagramm, welches den Vorgang zum Erfassen
eines Bewegungsvektors in dem konventionellen
Bewegungskompensationsverfahren zeigt;
-
Fig. 11 ist ein Blockschaltbild, welches die
Digitalsignal-Verarbeitungsvorrichtung basierend auf der ersten Ausführungsform
dieser Erfindung zeigt;
-
Fig. 12 ist eine Darstellung zum Erläutern der Bereichszuordnung
für die in Fig. 11 gezeigten Prozessoren;
-
Fig. 13 ist ein Blockschaltbild, welches die Anordnung der durch
Verbinden einer Mehrzahl von Digitalsignalprozessoren
(DSP-Blöcken) in Kaskaden gebildete
Digitalsignal-Verarbeitungsvorrichtung, gezeigt in Fig. 11, zeigt;
-
Fig. 14 ist eine Darstellung, welche das Konzept der Verarbeitung
jedes in Fig. 13 gezeigten DSP-Blockes zeigt;
-
Fig. 15 ist ein Blockschaltbild, welches die
Digitalsignal-Verarbeitungsvorrichtung basierend auf der zweiten
Ausführungsform dieser Erfindung zeigt;
-
Fig. 16 ist ein Blockschaltbild, welches den inneren Aufbau des in
Fig. 15 gezeigten Signalprozessors zeigt;
-
Fig. 17 ist eine Darstellung zum Erläutern des Konzeptes des
Steuerungsvorganges der in Fig. 15 gezeigten
Digitalsignal-Verarbeitungsvorrichtung;
-
Fig. 18 ist eine Darstellung zum Erläutern der Beziehung zwischen
Parameterdaten und Verarbeitungsblockdaten in der in
Fig. 15 gezeigten Digitalsignal-Verarbeitungsvorrichtung;
-
Fig. 19 ist eine Darstellung, welche die Entsprechung zwischen
Datenblöcken und einem Vollbild zeigt;
-
Fig. 20 ist ein Blockschaltbild der Anordnung, in welchem eine
Mehrzahl von Digitalsignalprozessoren in der in Fig. 15
gezeigten Digitalsignal-Verarbeitungsvorrichtung enthalten
ist;
-
Fig. 21 ist ein Blockschaltbild, welches die
Digitalsignalverarbeitungsvorrichtung basierend auf einer weiteren
Ausführungsform der Erfindung zeigt;
-
Fig. 22 ist ein Flussdiagramm, welches den Verarbeitungsvorgang
der in Fig. 21 gezeigten
Digitalsignal-Verarbeitungsvorrichtung zeigt;
-
Fig. 23 ist ein Flussdiagramm, welches eine Ausführungsform des
erfinderischen
Bewegungskompensations-Betriebsverfahrens unter Verwendung einer
Digitalsignal-Verarbeitungsvorrichtung zeigt;
-
Fig. 24 ist eine zum Erläutern des Verfahrens der Zwischenprüfung
der Berechnung von Verzerrungen in dem erfinderischen
Bewegungskompensationsverfahren verwendete
Darstellung; und
-
Fig. 25 ist eine Darstellung, welche die Anordnung von Bildpunkt-
Abtastungen und Abtastpunkten in einem Block
entsprechend dem Zwischenprüfungsverfahren für die
Verzerrungsberechnung zeigt.
DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Besondere Ausführungsformen der vorliegenden Erfindung werden jetzt anhand der
Zeichnungen beschrieben.
-
Fig. 11 zeigt als eine Ausführungsform dieser Erfindung ein Beispiel des
Bildkodierers der Digitalsignal-Verarbeitungsvorrichtung. In der Figur werden
Eingangsdaten 11 in erste bis dritte Eingangsspeicher 6 eingetragen. Eine
Aufgabensteuerung 7 schätzt die Anzahl gültiger Bildpunkte auf der Basis der Inhalte des
Eingangsspeichers 6 ab, bestimmt die Verteilung der Kodierungsverarbeitungen aus
einem ersten, zweiten und dritten DSP 2 und gibt Steuerungssignale als Adress-
Steuerungssignale 8 zu den DSPn 2 aus. Nach Empfang der
Adress-Steuerungssignale 8 geben die ersten, zweiten und dritten DSPn 2 Adressen 9 zu
entsprechend den ersten, zweiten und dritten Eingangsspeichern aus, um zur Verarbeitung
zugeordnete Daten 10 zu holen und die Kodierungsvorgänge basierend auf dem
Voreinstellungsprogramm zu implementieren. Nach Beendigung der Verarbeitungen
speichern die ersten, zweiten und dritten DSPn 2 die verarbeiteten Daten in einem
Ausgangsspeicher 11, welcher nach Lesen der gesamten Daten des DSP-Blockes
die verarbeiteten Daten zu dem nächsten DSP-Block sendet.
-
In diesem Fall wird jeder DSP 2 durch die Aufgabensteuerung 7 gesteuert, so dass
sämtlichen DSP 2 gleiche Anzahlen gültiger Bildpunkte zugeordnet sind, und daher
wird die Bildkodierungs-Verarbeitungszeit so gesteuert, dass die Differenz der
Verarbeitungszeiten zwischen den DSPn 2 minimal ist. Insbesondere im Fall der
Kodierung eines Bildes mit Anzahlen gültiger Bildpunkte, wie in Fig. 12(b) gezeigt,
wird ein Bereich A mit einer relativ kleinen Anzahl gültiger Bildpunkte zu A'
vergrößert, und ein Bereich C mit einer relativ großen Anzahl von gültigen Bildpunkten
wird ebenfalls zu C' vergrößert und ein Bereich B mit einer größeren Anzahl von
gültigen Bildpunkten wird auf B' verringert, wie in Fig. 12(a) gezeigt, durch die
Aufgabensteuerung 7. Die Aufgabensteuerung 7 gibt die Adress-Steuerungssignale
8 entsprechend der Zuordnungsverteilung zu ersten, zweiten und dritten DSPn 2
aus.
-
Zum Beispiel als Reaktion auf die Ausgabe des Adress-Steuerungssignales 8 zum
Kodieren der Bilddaten des Bereiches A für den ersten DSP 2 erzeugt er die
Adresse 9 für den Bereich A' in dem ersten Eingangsspeicher 6 zum Holen der Daten und
implementiert den Bildkodierungsvorgang durch Folgen des vorgeschriebenen
Programms. Ebenso werden die zweiten und dritten DSPn 2 angewiesen, die
Bildkodierungsvorgänge für die Bereich B' und C' auszuführen. Demnach sind für
die ersten, zweiten und dritten DSPn 2 die Anzahlen gültiger Bildpunkte EA', EB'
und EC' zum Kodieren im wesentlichen angeglichen, d. h., die gleiche Menge zu
verarbeitender Bilddaten, wie in Fig. 12(b) gezeigt. Als Ergebnis wird die
maximale Menge der Verarbeitung M', welche durch die erfinderische Vorrichtung zu
bearbeiten ist, ausreichend geringer als das M von der konventionellen Vorrichtung
und die für jeden DSP-Block benötigte Verarbeitungszeit wird verringert.
-
Fig. 13 zeigt den Inter-Vollbild-Kodierer, aufgebaut aus einer seriellen Verbindung
von DSP-Blöcken in drei Stufen. Jeder DSP-Block führt die in Fig. 14 gezeigte
Verarbeitung aus. Der erste DSP-Block 12 beginnt mit den Eingangsdaten 1 und
implementiert nach Erzeugen eines Differentialsignales die
Gültig/Ungültig-Beurteilung, bewertet die Verteilung der Anzahl von gültigen Bildpunkten in den
Bilddaten und sendet die Information zu der Aufgabensteuerung 7. Basierend auf der
Information gibt die Aufgabensteuerung 7 Adress-Steuerungssignale 8 zum
Vorschreiben dieser Adressanpassung aus, dass die DSPn in dem zweiten DSP-Block
13 gleiche Zuordnungen von Daten aufweisen. Jeder DSP in dem zweiten DSP-
Block implementiert die Verarbeitung durch Anpassen der Leseadressen, wie oben
beschrieben. Der dritte DSP-Block 14 ist so ausgebildet, dass er identisch arbeitet.
-
Obwohl in der vorstehenden Ausführungsform die
DSP-Verarbeitungs-Zuordnungsbereiche auf der Basis der gültigen Bildpunktverteilung unter Bereichen in Bilddaten
gesteuert werden, ist die vorliegende Erfindung nicht auf dieses Schema
beschränkt, sondern eine Rückkopplungs-DSP-Zuordnungssteuerung, basierend auf
der allgemeinen Mengenverteilung der gesendeten Information, ist zum Beispiel
ebenfalls möglich.
-
Eine zweite Ausführungsform dieser Erfindung wird anhand der Zeichnungen
beschrieben. Fig. 15 zeigt ein Beispiel des Aufbaus einer
Digitalsignal-Verarbeitungsvorrichtung der zweiten Ausführungsform dieser Erfindung. In der Figur ist
301 ein Datenfluss-Steuerungsabschnitt (D F C), welcher als eine
Steuerungseinrichtung wirkt; 302 sind Steuerungsparameterdaten, ausgegeben von dem
Datenfluss-Steuerungsabschnitt 301; 303 ist ein gemeinsamer Speicher (C M), welcher
Rückkopplungsdaten speichert, eine große Datenmenge und eine Tabelle etc. 304
ist eine Aufgabentabelle (T B), welche einen Verarbeitungszustand jedes
Signalprozessorelementes (P E) 318 speichert; 305 ist ein gemeinsamer Bus (C-BUS),
welcher die Funktion als Status-Kommunikationseinrichtung hat, bestehend aus
wenigstens einem an den gemeinsamen Speicher 303, die Aufgabentabelle 304
und jedes Signalprozessorelement 318 angeschlossenen Bus; 306 ist ein Video-
Vollbild-Snychronisierungssignal (F p), welches den Anfangspunkt eines
Videovollbildes, das zu dem Datenfluss-Steuerungsabschnitt 301 zu liefern ist, im Fall der
Eingabe von Videosignalen, etc. unterscheidet; 307 sind Rückkopplungsdaten (F
b), welche den Datenfluss-Steuerungsabschnitt 301 über den Belegtzustand
informieren, die Datenmenge eines sendenden Puffers, etc. und Beenden einer
Vollbild-Datenverarbeitung, ausgegeben von einem später beschriebenen
Ausgangs-Steuerungsabschnitt 308; 308 ist ein Ausgangs-Steuerungsabschnitt (O C),
versehen mit einem Pufferspeicher zum Ausgeben von Daten mit einer bestimmten
konstanten Geschwindigkeit beim Wiederherstellen verarbeiteter Blöcke, die von
einer Mehrzahl von Signalprozessorelementen (P E) 318 zum Beispiel in der
Abtastreihenfolge in einem Video-Vollbild ausgegeben werden; 309 ist ein
Eingangsanschluss für Analogsignale; 310 ist ein A/D-Wandler; 311 sind digitalisierte
Eingangsdaten; 312 ist ein Parameterspeicher (P M) aus
Doppelanschluss-Speichern; 313 ist ein Eingangs-Vollbild-Puffer, bestehend aus
Doppelanschluss-Speichern zum Wirken als Blockformatierungseinrichtung durch vorübergehendes
Speichern von Eingangsdaten 311; 314 ist ein den Parameterspeicher 312 an die
Signalprozessorelemente 318 anschließender Bus; 315 ist ein den
Eingangs-Vollbild-Puffer an die Signalprozessorelemente 318 anschließender Bus, um Daten in
einer Blockeinheit zu liefern; 316 ist ein an den gemeinsamen Bus 305
angeschlossener Eingangs/Ausgangs-Anschluss des gemeinsamen Busses; 317 ist ein
Unterbrechungs-Steuerungsanschluss zum Senden/Empfangen von
Zeitsteuerungssignalen von dem Datenfluss-Steuerungsabschnitt 301; 318 sind einzelne
Signalverarbeitungselemente (P E) und diese Signalverarbeitungselemente sind versehen
mit einer Software, welche als eine Anfangseinrichtung wirkt und diese
Signalverarbeitungselemente sind untereinander verbunden durch die Busse 314 und 315,
und das Signalverarbeitungselement 318 der letzten Stufe und der
Ausgabe-Steuerungsabschnitt 308 sind ebenfalls mit den Bussen 314 und 315 verbunden; 319 ist
ein Ausgangsanschluss, durch welchen Daten mit einer bestimmten konstanten
Geschwindigkeit und Zeitsteuerung von dem Ausgabe-Steuerungsabschnitt 308
ausgegeben werden; 320 ist ein Mehrfachprozessormodul mit dem
Parameterspeicher 312, dem Eingangs-Vollbild-Puffer 313 und einer Mehrzahl von
Signalprozessoren 318, welche durch die Busse 314 und 315 in Reihe miteinander
verbunden sind.
-
Der Datenfluss-Steuerungsabschnitt 301 weist eine Beurteilungseinrichtung auf,
welche die Aufgabentabelle 304 mit einem bestimmten, konstanten Zyklus abtastet
und die Verarbeitungsbedingungen der einzelnen Signalprozessorelemente 318
beurteilt. Der Datenfluss-Steuerungsabschnitt 301 weist ebenfalls eine
Steuerungseinrichtung auf, welche basierend auf dem Ergebnis der Beurteilungseinrichtung
entscheidet, ob jedes Signalverarbeitungsmodul den nächsten
Signalverarbeitungsblock verarbeiten kann, und wenn die Verarbeitung als möglich gefunden wird, die
Verarbeitung durch Senden eines Unterbrechungssignales zu dem Unterbrechungs-
Steuerungsanschluss 317 in Gang setzt, und wenn die Verarbeitung als unmöglich
gefunden wird, die Übertragung des Signalverarbeitungsblockes zu einem anderen
Signalverarbeitungsmodul anweist, welches den Block verarbeiten kann. Wenn eine
Parallelverarbeitung mit einem konstanten Zyklus, in welchem die Aufgabentabelle
304 abgetastet wird, ausgeführt ist, ist die Abtastperiode die Anzahl der
Parallelitäten des Eingangszyklus des Signalverarbeitungsblockes und wenn eine
Reihenverarbeitung ausgeführt wurde, ist die Abtastperiode 1/n des
Eingangszyklus; somit kann durch die Synchronisierung mit dem Eingangsdaten-Vollbild
(zum Beispiel einem Video-Vollbild) die Übereinstimmung mit der Echtzeit
unterstützt werden.
-
Fig. 16 zeigt ein Beispiel des inneren Aufbaus des Signalprozessorelementes 318,
wie in Fig. 15 gezeigt. In der Figur ist 330 ein Anschluss, an welchen der
Eingangs/Ausgangs-Anschluss des gemeinsamen Busses 316 anzuschließen ist; 331
ist ein Anschluss, an welchen der Unterbrechungs-Steuerungsanschluss 317
anzuschließen ist; 332 ist ein Anschluss, an welchen die Busse 314 und 315
anzuschließen sind; 333 ist vergleichbar ein Anschluss, an welchen die Busse 314
und 315 zwischen den benachbarten Signalprozessoren anzuschließen sind; 334
ist ein Externbus-Steuerungsabschnitt (BUS-CONT) mit der Funktion als eine
Wettbewerbs-Steuerungseinrichtung zum Steuern des Ausführens/Unterbrechens
des gemeinsamen Busses 305 durch den Bus 316; 335 ist ein Bus zum Laden
eines beschreibbaren Steuerungsspeichers (W C S) 336, welcher ein
Signalverarbeitungsprogramm speichert, von dem Externbus-Steuerungsabschnitt 334 zu
einem Anfangszeitpunkt; 337 ist eine BUSREQ, welche den Anschluss des
gemeinsamen Busses 305 an den Externbus-Steuerungsabschnitt 334 erfordert; 338 ist
ein BUSACK, welcher die Erlaubnis für den BUSREQ 337 bezeichnet; 339 sind
Befehlskodierungen, welche entsprechend dem Signalverarbeitungsprogramm
aufeinanderfolgend aus dem beschreibbaren Steuerungsspeicher 336 ausgelesen
werden; 340 ist ein Digitalsignalprozessor (D S P), welcher eine Datenverarbeitung
ausführt; 341 ist ein INTACK, welches einen Unterbrechungs-Steuerungsabschnitt
(INTER-CONT) 345 vom Empfang einer Unterbrechung von dem
Digitalsignalprozessor 340 informiert; 342 ist im Gegensatz dazu eine INTREQ, welche den
Digitalsignalprozessor 340 von der Notwendigkeit einer Unterbrechung informiert;
-
343 ist ein Bus zum Anschließen eines internen Busses 344 an den gemeinsamen
Bus 305 durch den Externbus-Steuerungsabschnitt 334, und der interne Bus 344
ist direkt an den Digitalsignalprozessor 340 angeschlossen; 345 ist ein
Unterbrechungs-Steuerungsabschnitt (INTR-CONT), welcher ein Unterbrechungssignal
von dem Datenfluss-Steuerungsabschnitt 301 verarbeitet; 346 ist ein Bus, welcher
den Parameter eines verarbeiteten Datenblockes durch den internen Bus 344 in
einen Doppelanschluss-Speicher 349 schreibt; 347 ist vergleichbar ein Bus,
welcher einen verarbeiteten Block in den Doppelanschluss-Speicher 349 schreibt;
348 ist ein Bus, welcher einen Arbeitsspeicher in dem Doppelanschluss-Speicher
349 und den internen Bus 344 verbindet; 349 ist ein Doppelanschluss-Speicher,
der mit einem Parameterspeicher vorgesehen ist, einem Datenspeicher und einem
Arbeitsspeicher, welche Daten durch den Anschluss 333 und die Busse 314 und
315 zu dem benachbarten Signalprozessorelement 318 ausgeben.
-
Fig. 17 erläutert den internen Ablauf der in Fig. 15 gezeigten Digitalsignal-
Verarbeitungsvorrichtung und den gleichen Teilen wie denjenigen in Fig. 15 sind
die gleichen Bezugszeichen zugeordnet; auf deren Erläuterung wird daher
verzichtet.
-
In der Figur ist 351 ein Block, welcher einen analytischen Vorgang eines
Parameters innerhalb des Signalprozessorelementes 318 zeigt; 352, 353, 354 sind
Blöcke, welche die Wirkungsweise einzelner Signalverarbeitungs-Unterroutinen A,
B und C entsprechend dem Parameter von jeder von diesen zeigen; 355 ist ein
Block, welcher die Inhalte eines Parameters zeigt, der in dem Doppelanschluss-
Speicher 349 gespeichert ist; 356 ist ein Block, welcher die Inhalte D von in dem
Doppelanschluss-Speicher 349 gespeicherten, verarbeiteten Blockdaten zeigt.
-
Fig. 18 erläutert ein Beispiel der Beziehung zwischen den Parameterdaten und
Verarbeitungsblockdaten, bis einem Datenblock aufeinanderfolgend eine Reihe von
Funktionsverarbeitungen zugeordnet ist und ein Ausgangsergebnis erhalten wird
durch Reihen- und Parallel-Verarbeitung von Blockeinheiten, welche in der in Fig.
15 gezeigten Digitalsignal-Verarbeitungsvorrichtung ausgeführt werden. In der
Figur ist 360 eine Blockadresse (B A D), welche die Position eines Eingangsblockes
in einem Vollbild zeigt; 361 ist eine Verarbeitungsnummer (PN), welche die Art
einer dem Block zuzuordnenden Verarbeitung zeigt; 362 ist ein Flag (PFLG),
welches das Ergebnis der Verarbeitung unterscheidet; 363 ist ein Datenblock, in
welchem zum Beispiel acht Teilblöcke zusammengefasst sind, um einen Block zu
bilden.
-
Fig. 19 zeigt ein Beispiel der Korrespondenz zwischen dem in Fig. 18 gezeigten
Datenblock 363 und einem Video-Vollbild, wenn ein Bildkodierungsvorgang in
diesem System ausgeführt wird. In der Figur ist 365 ein Video-Vollbild; 366 ist ein
Datenblock, wenn ein Bild in 16 Zeilen · 16 Bildpunkte aufgeteilt ist; 367 ist ein
Teilblock, welcher erhalten wird, wenn der Block weiterhin in 8 Blöcke aus 4 Zeilen
· 4 Bildpunkten aufgeteilt ist.
-
Eine Erläuterung der Wirkungsweise basierend auf Fig. 15 ist im Folgenden
gegeben. Durch einen A/D-Wandler 310 digitalisierte Eingangsdaten 311 werden
in einem Eingangs-Vollbildpuffer 313 gespeichert, der in einer Rasterform synchron
mit einem Video-Vollbild-Synchronisierungssignal 6 abgetastet wird. In dem
Eingangs-Vollbildpuffer 313 gespeicherte Eingangsdaten 311 werden durch den
Datenfluss-Steuerungsabschnitt 301 blockweise zu den Anfangs-Parameterdaten
302 addiert und die Parameterdaten 302 werden in dem Parameter-Speicher 312
gespeichert. Dieser Parameterspeicher 312 und der Eingangs-Vollbildpuffer 313
bestehen aus Doppelanschluss-Speichern und Schreiben/Lesen ist zwischen den
zwei unabhängigen Anschlüssen gleichzeitig möglich.
-
Datenblöcke werden aus dem Eingangs-Vollbildpuffer 313 gelesen und der
Parameter wird in einer Datenblockeinheit von dem Parameterspeicher 312 gelesen.
Datenblöcke und Parameter werden durch die Busse 314 und 315 zu dem
Signalprozessorelement 318 gesendet, wo sie der ersten Verarbeitung einer Reihe von
funktionalen Verarbeitungen in einer Blockeinheit unterworfen werden. Als
Nächstes werden die Ergebnisse und die neu geschriebenen Parameter in den
Doppelanschluss-Speicher 349 in dem Signalprozessorelement 318 geschrieben. Es ist die
Grundfunktion eines Prozessormodules 320, Prozesse aufeinanderfolgend zwischen
den benachbarten Signalprozessorelementen 318 auszuführen und eine Pipeline-
Verarbeitung für jede Blockeinheit auszuführen.
-
Wenn eine Verarbeitung für jede Blockeinheit ausgeführt ist, wenn
Rückkopplungsdaten wie die kodierten, vorherigen Vollbilddaten einbezogen sind, werden
Rückkopplungsdaten in den gemeinsamen Speicher 303 eingegeben, welcher an den
gemeinsamen Bus 305 angeschlossen ist, und gespeichert. Die Verarbeitung eines
neuen Video-Vollbildes wird durch solch eine Verarbeitung ausgeführt, dass der
andere Signalprozessor 318 als der eine, welcher Daten durch den gemeinsamen
Bus 305 geschrieben hat, den gemeinsamen Speicher 303 anspricht. Wenn das
Schreiben der Rückkopplungsdaten des vorherigen Vollbildes nicht in der richtigen
Position in dem gemeinsamen Speicher 303 beendet ist, soll die Ausführungszeit
der Verarbeitung festgelegt werden.
-
Wenn die Verarbeitung einer Einheit (Blockverarbeitung) beendet ist, speichert
jedes Signalprozessorelement 318 den die Beendigung der gegenwärtigen
Verarbeitung zeigenden Status in der Aufgabentabelle 304 und wartet auf die nächste
Verarbeitung. Der Datenfluss-Steuerungsabschnitt 301 tastet die Aufgabentabelle
304 ab, und wenn die Verarbeitung des Signalprozessorelementes 318 der
vorherigen Stufe beendet ist, sendet er ein Unterbrechungssignal zu dem
Signalprozessorelement 318 und beginnt mit der nächsten Verarbeitung. Durch Wiederholen dieses
Vorganges wird die Ausführung der Ablaufsteuerung jedes
Signalprozessorelementes 318 ausgeführt.
-
Um eine parallele Verarbeitung in einer Blockeinheit für jedes Prozessormodul 320
auszuführen, wird die Datenverarbeitungsbedingung in dem Eingangs-Vollbildpuffer
318 jedes Prozessormodules 320 mit der Statusinformation des Anfangsstufen-
Signalprozessors 318 erfasst und individuelle Blockdaten werden durch eine
einwandfreie Lastverteilung verteilt und in jedes Mehrfachprozessormodul 320
eingegeben.
-
Diese Ergebnisse werden durch die Steuerungsparameterdaten der Anfangsstufe
gezeigt und das Signalprozessorelement 318 unterscheidet die Verarbeitung für
den Block durch Entschlüsseln der obigen Ergebnisse und führt eine einwandfreie
Verarbeitung aus. Unter diesen Verarbeitungen sind zum Beispiel
Funktionsprozessoren wie ein Blockidentifizierer 253, ein Kodierer 254, ein örtlicher Dekodierer
260, ein Inter-Vollbild-Subtrahierer 252, ein Bewegungskompensierer 265, ein
Inter-Vollbild-Addierer 261, ein längenveränderlicher Kodierer 246 und neben
diesen ist eine Verarbeitung, welche nur eine Lastverteilung wie eine Verarbeitung
der Übertragung von Blockdaten ausführt, enthalten.
-
In dem Datenfluss-Steuerungsabschnitt 301 ist es möglich, einen willkürlichen
Signalprozessor 318 zu veranlassen, eine willkürliche Verarbeitung durch Steuern
des ersten Stufenparameters auszuführen; um somit zu einer solchen
Leistungsfähigkeit wie oben erwähnt beizutragen, kann die Belastung so auf die
Signalprozessorelemente 318 verteilt werden, dass sie so effizient wie möglich arbeiten.
-
Der Ausgabe-Steuerungsabschnitt 308 bildet die verarbeiteten Blöcke neu, welche
zu zufälligen Zeiten zum Beispiel in einer Abtastreihenfolge eines
Eingangs-Videovollbildes ausgegeben werden, und erzeugt ein resultierendes Ausgangssignal für
einen Ausgangsanschluss 319 und erzeugt ebenfalls Rückkopplungsdaten 307 um
dem Datenfluss-Steuerungsabschnitt 301 diese Daten mitzuteilen.
-
Der Ausgabe-Steuerungsabschnitt 308 übernimmt die Belastung zum Beispiel eines
Video-Multiplexabschnittes 257 und eines Sendepuffers 258, gezeigt in Fig. 5,
und er gibt ein Rückkopplungssignal 269 von dem Sendepuffer 258 zu einem
Kodierungs-Steuerungsabschnitt 270 aus, welcher die Belastung des in Fig. 15
gezeigten Datenfluss-Steuerungsabschnittes übernimmt.
-
Der Datenfluss-Steuerungsabschnitt 301 übernimmt die Belastung der Funktionen
der oben erwähnten Lastverteilung und des Kodierungs-Steuerungsabschnittes
270, wie in Fig. 5 gezeigt und findet das Blockidentifizierungs-Steuerungssignal
273 und das Kodierungs-Steuerungssignal 274 und multiplext sie in den
Steuerungsparameterdaten für die Ausführung der gesamten Merkmals-Steuerung. In
Fig. 16 beginnt die Verarbeitung eines einzelnen Signalprozessorelementes 318
durch die Unterbrechung durch den Datenfluss-Steuerungsabschnitt 301 und die
Inhalte des Parameterspeichers 312 werden durch einen internen Bus 344 darin
eingegeben. Auf der Basis des Unterscheidungsergebnisses des Inhaltes wird die
Verarbeitung einer Einheit von Blockdaten durch einen Digitalsignalprozessor 340
ausgeführt.
-
Das Ergebnis und die neu geschriebenen Parameter werden in einen
Doppelanschluss-Speicher 349 geschrieben und der Status wird durch einen Externbus-
Steuerungsabschnitt 334 in der Aufgabentabelle 304 gesetzt; somit ist die
Vorbereitung für die nächste Verarbeitung beendet. Ein
Unterbrechungs-Steuerungsabschnitt 345 passt die Unterbrechung von dem Datenfluss-Steuerungsabschnitt
301 an den Digitalsignalprozessor 340 an. Der Parameter und die Daten, die in den
Doppelanschluss-Speicher 349 geschrieben sind, werden durch ein benachbartes
Signalprozessorelement 318 gelesen, welches an einen Anschluss 333
angeschlossen ist, und die Verarbeitung der nächsten Stufe wird vorgegeben.
-
Fig. 17 zeigt den Ablauf dieser durch den Datenfluss-Steuerungsabschnitt 301
ausgeführten Verarbeitung und diese zeigt die Beziehung zwischen der Steuerung
von Schreiben/Beziehen auf die Rückkopplungsdaten in den gemeinsamen Speicher
303 und die Steuerung des Status-Schreibens in der Aufgabentabelle 304 durch
den Datenfluss-Steuerungsabschnitt 301 durch den gemeinsamen Bus 305 und die
Verarbeitungs-Anfangssteuerung in dem Signalprozessorelement 318 durch einen
Parameter-Analysierer 351.
-
Fig. 18 zeigt das Neuschreiben der Inhalte der Steuerungs-Parameterdaten 302,
welche entsprechend Eingangs-Blockdaten 363 addiert werden, und den Ablauf
dieser Verarbeitungen. Eine Blockadresse, welche zum Beispiel die Position in
einem Vollbild oder eine zeitsequentielle Reihenfolge eines Blockes zeigt, und ein
Flag 362, welches sich auf die Art der nächsten Verarbeitung und die Inhalte der
nächsten Verarbeitung bezieht, sind in den Steuerungs-Parameterdaten 302
enthalten. Die Blockadresse 360 wird für die Unterscheidung einer besonderen
Verarbeitung in einem bestimmten Fall verwendet, zum Beispiel bei einem Endpunkt in
einem Bild oder für die Neuanordnung von Daten in dem
Ausgabe-Steuerungsabschnitt 308, wenn eine Verarbeitung beendet ist. Das Flag 362 zeigt zum
Beispiel die Ergebnisse, etc. der Kodierungs-Steuerungsinformation 271, eines
Blockidentifizierungs-Steuerungssignales 273, eines Kodierungs-Steuerungssignales
274 und eines Blockidentifizierers 253, wie in Fig. 5 gezeigt. Eingangs-Blockdaten
363 werden gesetzt, um die in einer Einheitenverarbeitung gehandhabten
Minimalgröße zu haben. Der in Fig. 5 gezeigte Bewegungskompensierer 265 weist einen
Block mit einer Größe 16 · 16 auf und nach dem Blockidentifizierer 253 werden
Blöcke mit einer Größe von 4 · 4 gehandhabt. In solch einem Fall, wie oben
erwähnt, in welchem sich die Blockgröße für jede Einheitenverarbeitung
unterscheidet, werden Blockgrößen angeordnet, um Übereinstimmungen zwischen einer
maximalen Blockgröße und einer in ihr enthaltenen Teilblockgröße aufzuweisen. In
diesem Fall werden acht Teile aus 4 · 4 Blöcken zusammengefasst, um einen 16
· 16 Block zu bilden. Wenn die Kodierung eines Bildes ausgeführt ist, entspricht
dieser Block einem kleinen Bildelement, gebildet durch Aufteilen eines
gewöhnlichen Vollbildes in kleine, quadratische Bildelemente.
-
Fig. 19 zeigt ein Beispiel, in welchem ein Video-Vollbild 365 in einem Block 366
und Teilblöcke 367 aufgeteilt ist.
-
In der obigen Ausführungsform ist ein Signalprozessorelement 318, welches einen
einzelnen Digitalsignalprozessor 340 aufweist, gezeigt, wenn aber eine höhere
Verarbeitungsgeschwindigkeit bevorzugt wird, kann ein hierarchischer Aufbau,
kombiniert mit einer Mehrzahl von Digitalsignalprozessoren verwendet werden. Der
Aufbau des Signalprozessorelementes 318 in dem Fall der hierarchischen Struktur
ist in Fig. 20 gezeigt. In diesem Fall sind in dem Signalprozessor 318 ein örtlicher
gemeinsamer Speicher 371 und eine örtliche Aufgabentabelle 372 vorgesehen, da
die Belastung für den Datenfluss-Steuerungsabschnitt 301 zunimmt, um die
optimale Lastverteilung innerhalb des Signalprozessors örtlich auszuführen. Der
Datenfluss des Digitalsignalprozessors 340, welcher an den örtlichen,
gemeinsamen Bus 373 angeschlossen ist, ist der gleiche wie der in Fig. 15 gezeigte, mit
der Ausnahme, dass der Vorgang innerhalb des Signalprozessors 318 ausgeführt
wird.
-
In der obigen Ausführungsform wird ein serieller/paralleler Aufbau angewendet,
aber in einigen Fällen ist ein vollständig paralleler oder vollständig serieller Aufbau
entsprechend dem Zweck einer Signalverarbeitung effektiv und eine
Echtzeitverarbeitung ist möglich.
-
Die andere Ausführungsform dieser Erfindung wird anhand von Fig. 21 erläutert.
In Fig. 21 sind 420, 421 und 422 Adressgeneratoren für Auslesedaten; 423 ist
ein Adressgenerator zum Schreiben von Daten; 424, 425 und 426 sind
Datenspeicher und durch den Adressgenerator 423 erzeugte Adressdaten werden in
diese Speicher eingegeben; 427, 428 und 429 sind Datenbusse, welche
Auslesedaten von den Datenspeichern 424, 425 und 226 übertragen; 430, 431 und 432
sind Register zum Halten von Daten, welche von den Datenbussen 427, 428 und
429 übertragen wurden; 433 ist ein Register zum Halten der Ausgaben des
Registers 432; 434 ist ein Auswähler zum Auswählen des Ausgangssignales des
Registers 430 oder desjenigen des Registers 433; 435 ist ein Auswähler zum
Auswählen des Ausgangssignales des Registers 431 oder desjenigen des Registers
441; der Auswähler 434 und der Auswähler 435 bilden eine erste
Auswählergruppe; 436 ist ein Auswähler zum Auswählen des Ausgangssignales des
Registers 430 oder des Ausgangssignales eines Registers 439; 437 ist ein Auswähler
zum Auswählen des Ausgangssignales des Registers 431 oder des
Ausgangssignales des Registers 433; der Auswähler 436 und der Auswähler 437 bilden eine
zweite Auswählergruppe; 438 ist ein Operator, welcher durch Eingeben der
Ausgangssignale der Auswähler 434 und 435 wirkt; 440 ist eine Multiplizierer, welcher
eine Multiplikation durch Eingeben der Ausgangsignale der Auswähler 436 und 437
ausführt; das Register 439 ist das Eine zum Halten des Ausgangssignales des
Operators 438; ein Register 441 ist das Eine zum Halten des Ausgangssignales
Multiplizierers 440; 442 ist ein Auswähler, welcher das Eingangssignal von dem
Register 439 oder das Eingangssignal von dem Register 441 auswählt und es
ausgibt; 443 ist ein Addierer, welcher das Ausgangssignal des
Ausgangsauswählers 442 und das Ausgangssignal eines Akkumulators 444 addiert und zu dem
Akkumulator 444 ausgibt; 445 ist ein Datenbus zum Übertragen der
Ausgangsdaten des Akkumulators 444 und des Ausgangs-Auswählers 442; 446 ist eine
Schnittstellenschaltung, welche ein Ausgeben/Eingeben von Daten in/aus externen
Schaltungen ausführt; 451-453, 461-463, 471-473 bezeichnen
Signalleitungen, welche die Ausgangssignale von Datenspeichern 424, 425 und 426 zu
Datenbussen 427, 428 und 429 ausgeben.
-
Das Folgende ist die Erläuterung der Wirkungsweise. In Fig. 21 wird
angenommen, dass Datenreihen mit N Elementen, A = (ai i = 1 bis N), B = (bi i = 1 bis
N), C = (ci i = 1 bis N), vorher jeweils in dem Datenspeicher 424, dem
Datenspeicher 425 und dem Datenspeicher 426 gespeichert wurden.
-
Unter den obigen Bedingungen wird der Vorgang, wenn der Vorgang der drei
Eingaben und einer Ausgabe ausgeführt ist, unten gezeigt. Der
Verarbeitungsvorgang ist in Fig. 22 gezeigt.
-
Am Anfang werden in dem Schritt ST31 die oberen Adressen der drei Reihen von
Eingangsdaten und eines Ausgangsergebnisspeichers zuerst durch
Adressgeneratoren 420, 421 und 422 gesetzt. Danach wird angenommen, dass die
Adressgeneratoren einfache Inkrementierungen ausführen.
-
Der Datenspeicher 424 korrespondiert mit dem Adressgenerator 420; der
Datenspeicher 425 korrespondiert mit dem Adressgenerator 421; der Datenspeicher 426
korrespondiert mit dem Adressgenerator 422. Die einzelnen Datenspeicher 424,
425 und 426 lesen Daten basierend auf den Adressen der Adressgeneratoren 420,
421 und 422 aus.
-
Daten werden in drei Datenbusse 427, 428 und 429 (X-BUS, Y-BUS, Z-BUS)
entsprechend von den Datenspeichern 424, 425 und 426 eingegeben, so dass für
das Ausgeben von jedem diesen Datenspeicher 424, 425 und 426 zu einem
bestimmten Datenbus nur ein Bus von dreien effektiv zu steuern ist und die
anderen zwei werden in dem Zustand einer hohen Impedanz gesteuert. In diesem Fall ist
die Ausgabe von Datenbussen beschränkt auf denjenigen, welcher wirksam ist.
Wenn zum Beispiel die A-Datenreihe in das Register 430 einzugeben ist, wird die
A-Datenreihe zu der Signalleitung 451 ausgegeben und die Signalleitungen 461 und
471, welche Daten von den anderen Datenspeichern 425 und 426 zu dem
Datenbus 427 ausgeben, sind in dem Zustand einer hohen Impedanz. Das Gleiche ergibt
sich für die anderen Datenbusse.
-
Jede dieser Datenreihen wird jeweils in den Registern 430, 431 und 432 gesetzt.
Drei Datenbusse 427, 428 und 429 können Daten aus den drei Datenspeichern
424, 425 und 426 auswählen, so dass 3³ Arten von Datensatzkombinationen zu
den Registern 430, 431 und 432 geliefert werden können.
-
Zwei Ausdrücke, wie unten gezeigt, sind auf dem Wege von drei
Eingabevorgängen definiert und das Verarbeitungsverfahren ist dann im Folgenden gezeigt:
-
(ai bi) · ci (7)
-
(ai · bi) ci (8)
-
wobei (x y) einen arithmetischen und logischen Vorgang zum Finden von
Ergebnissen oder Werten von Addition, Subtraktion, Maximalwerten oder Minimalwerten
für zwei Eingangsdaten wie x, y ausdrückt und (x · y) eine Multiplikation
ausdrückt. Die Erläuterung des Verarbeitungsablaufes des Ausdruckes (7) ist in der
Tabelle 3 gegeben. Das Zeichen von "X" in der Tabelle stellt eine Unbekannte dar.
Tabelle 3
-
In einem Schritt ST32 wählt ein Auswähler 434 die Seite eines Registers 430 und
ein Auswähler 431 wählt die Seite eines Registers 435 aus. Durch die Verwendung
dieser zwei ausgewählten Daten (ai und bi) wird der Vorgang (ai bi) mit einem
Operator 438 ausgeführt und das Ergebnis wird in einem Register 439 gespeichert.
Dieser Wert wird in dem nächsten Schritt von dem Register 439 ausgegeben.
-
Die Daten ci in dem Register 432 werden durch das Register 433 um einen Schritt
verzögert. In dem nächsten Schritt wählt ein Auswähler 436 die Seite des
Registers 439 aus und ein Auswähler 437 wählt die Seite eines Registers 433 aus.
Durch die Verwendung dieser zwei Daten wird (ai bi) mit ci mit dem
Multiplizierer 440 multipliziert und das Ergebnis (ai bi) · ci wird in einem Register 441
gespeichert. Dieser Wert wird von dem Register 441 in den nächsten Schritt
ausgegeben. Durch einen Ausgabe-Auswähler 442, der das Register 441 auswählt,
werden die Daten (ai bi) · ci zu einem der Datenspeicher 424, 425 und 426
durch einen Datenbus 445 basierend auf der durch den Adressgenerator 423
gezeigten Adresse gesendet.
-
Bei dieser Erfindung wird das Auslesen von Daten, die Ausführung des Vorganges
und das Schreiben von Daten fortlaufend durch eine Pipeline-Verarbeitung
ausgeführt, so dass die Steuerung jedes Abschnittes parallel ausgeführt werden kann.
Daher ist, wenn die Drei-Eingaben-Eine-Ausgabe-Operation für eine Datenreihe mit
N Elementen ausgeführt ist, von dem Zeitpunkt an, wenn das erste Datum
ausgelesen ist, bis zu dem Zeitpunkt, wenn das Verarbeitungsergebnis des letzten Datums
in einen Speicher geschrieben ist, eine Periode von (N + 3) zu Zyklen erforderlich.
-
Die Erläuterung des Verarbeitungsablaufes des Ausdruckes (8) ist in Tabelle 4
gegeben. Die Markierung "x" in der Tabelle 4 stellt eine Unbekannte dar.
Tabelle 4
-
Der Vorgang, in welchem drei Eingabedaten zu den Registern 430, 431 und 432
ausgelesen werden, ist der gleiche wie in dem Fall des Ausdruckes (7). Wenn der
Vorgang des Ausdruckes (8) ausgeführt wird, wählt der Auswähler 436 die Seite
des Registers 430 und der Auswähler 437 wählt die Seite des Registers 431 und
die Operation (ai · bi) wird durch den Multiplizierer 440 ausgeführt und das
Ergebnis wird in dem Register 441 gesetzt.
-
In dem nächsten Schritt wählt der Auswähler 434 die Seite des Registers 433 aus
und der Auswähler 435 wählt die Seite des Registers 441 aus und die Operation
(ai · bi) ci wird durch den Operator 438 ausgeführt und das Ergebnis wird in
dem Register 439 gesetzt. In dem nächsten Schritt wird durch Auswählen der
Seite des Registers 439 durch den Auswähler 442 das Auswahlergebnis in einen
der Datenspeicher 424 bis 426 geschrieben.
-
Somit ist der Fall des Ablaufes bei dem Ausdruck (8) der Gleiche wie im Fall des
Ausdruckes (7), die gesamte Verarbeitungszeit benötigt daher (N + 3) Zyklen.
-
In dem Fall des Vorganges von zwei Eingaben und einer Ausgabe kann der Wert (ai
bi) erhalten werden durch den im Folgenden gezeigten Ablauf: Der Auswähler
434 wählt die Seite des Registers 430 aus und der Auswähler 435 wählt die Seite
des Registers 431 aus und nachdem der Vorgang durch den Operator 438
ausgeführt ist, wird die Seite des Registers 39 in dem nächsten Schritt durch den
Auswähler 442 ausgewählt. Der Wert von (ai · bi) kann erhalten werden durch die im
Folgenden gezeigte Prozedur: Der Auswähler 436 wählt die Seite des Registers
430 aus, und der Auswähler 437 wählt die Seite des Registers 431 aus und nach
der Ausführung des Vorganges mit dem Multiplizierer 440 wählt der Auswähler
442 die Seite des Registers 441 in dem nächsten Schritt aus.
-
Die Verarbeitungsgeschwindigkeit im Fall von drei Eingaben, einer Ausgabe ist (2N
+ 10/N + 7) mal derjeniges des Standes der Technik, das ist etwa die Hälfte,
wenn N eine große Zahl ist.
-
Wenn ein kumulativer Wert in dem drei Eingaben-eine Ausgabe-Vorgang gefunden
wird, wird ein kumulativer Wert bis zu einem Punkt auf dem Weg oder ein
Anfangswert in dem Akkumulator 444 gespeichert und jedes der nachfolgenden
Verarbeitungsergebnisse wird mit dem Addierer 443 zu dem kumulativen Wert in
dem Akkumulator 444 addiert und das addierte Ergebnis wird wiederum in dem
Akkumulator 444 gespeichert. Diese Verarbeitungen werden wiederholt ausgeführt.
Verarbeitungszyklen werden daher in Folge des kumulativen Vorganges nicht
erhöht.
-
Fig. 23 zeigt ein Flussdiagramm zum Verwirklichen eines Verfahrens zum
bewegungskompensierenden Vorgang, welcher eine Ausführungsform dieser Erfindung
betrifft. Fig. 24 ist eine Zeichnung für die Erläuterung eines
Zwischenprüfungsverfahrens in dem Verzerrungsmengenvorgang dieser Erfindung. Fig. 25 ist eine
Anordnungsdarstellung einer Bildpunktabtastung an einem Abtastungspunkt in
einem Block bei dem Zwischenprüfungsverfahren zum Verzerrungsvorgang in dieser
Erfindung.
-
Vor dem Verarbeitungsvorgang soll in dem ersten Block aus M Stücken aus
möglichen Blöcken zur Suche in den vorherigen Vollbilddaten die Verzerrungsmenge
sämtlicher Bildpunkte in dem Block gemessen werden; die Verzerrungsmenge ist in
diesem Fall durch die minimale Verzerrung bestimmt. Für die Verzerrungsmenge
wird eine differentielle Absolutwertsumme angenommen. Bei dem
Verzerrungsmengenvorgang bei dem und nach dem zweiten Block ist die Berechnung von
differentiellen Absolutwerten sämtlicher Bildpunkte nicht erforderlich, aber bei
einem Zwischenprüfungspunkt, wenn die Zwischen-Verzerrungsmenge einen
bestimmten Wert überschreitet, wird erkannt, dass die schließliche
Verzerrungsmenge des Blockes nicht geringer als die minimale Verzerrung D sein kann und der
Verzerrungsmengenvorgang wird für den verbleibenden Teil angehalten.
-
Ein Block, welcher die minimale Verzerrung ergibt, wird durch Berechnung des
Grades der Annäherung zwischen den Mustern durch Verwendung der Differenz
und der Umsetzung von Bildpunkten in den entsprechenden M Blöcken erfasst,
welche aus dem gegenwärtigen Eingangs-Vollbild und dem vorherigen Eingangs-
Vollbild ausgewählt werden (M ist eine positive ganze Zahl). Die Anzahl von für die
Berechnung des Grades der Annäherung verwendeten Bildpunkten ist maximal K (K
ist eine ganze Zahl größer oder gleich Eins und kleiner oder gleich der
Gesamtanzahl der Bildpunkt ein einem Block). Während der Berechnung des Grades der
Annäherung zu dem Zeitpunkt, wenn die Anzahl von Bildpunkten in der Referenz
geringer als K ist, werden Zwischenprüfungen vier mal ausgeführt und ein
Zwischenprüfungspunkt kann bei jedem 1/4 Abtastpunkt vorgesehen sein. Fig. 25
zeigt Beispiele der für den Verzerrungsmengenvorgang verwendeten Abtastpunkte.
Die Markierung O drückt einen ersten zeitlichen Abtastpunkt für den
Verzerrungsmengenvorgang aus; die Markierung x drückt einen zweiten Abtastzeitpunkt für
den Verzerrungsmengenvorgang aus; die Markierung Δ drückt einen dritten
Abtastzeitpunkt für den Verzerrungsmengenvorgang aus; die Markierung O drückt
einen vierten Abtastzeitpunkt für den Verzerrungsmengenvorgang aus.
-
In Fig. 24 wird, wenn die Gesamtanzahl von Abtastpunkten als K angenommen
wird, Schwellwerte an ersten, zweiten und dritten Zwischenprüfungspunkten als
d1', d2' und d3' ausgedrückt werden,
-
d1' = D/4 + th1 (9-1)
-
d2' = D/2 + th2 (9-2)
-
d3' = 3D/4 + th3 (9-3)
-
gesetzt, wobei th1, th2, th3 unabhängig gesetzt werden können. Die
Verzerrungsmenge an den ersten, zweiten und dritten Zwischenprüfungspunkten werden
ausgedrückt als di1, di2 und di3.
-
In diesem Fall drückt di 1 den Wert für die Verzerrungsmenge zum ersten Zeitpunkt
in Fig. 25 aus; di2 drückt einen kumulativen Wert, di1 + der Verzerrungsmenge
zum zweiten Zeitpunkt aus; di3 drückt einen kumulativen Wert, di2 + der
Verzerrungsmenge zum dritten Zeitpunkt aus. Daher wird der kumulative Wert, in
welchem die Verzerrungsmenge zum vierten Zeitpunkt akkumuliert ist, die
Verzerrungsmenge, in welchem sämtliche Abtastpunkte enthalten sind.
-
Auf der Basis einer Verzerrungsmengenbeurteilung an einem
Zwischenprüfungspunkt wird, wenn ein Block so gewertet wird, dass er eine große
Verzerrungsmenge aufweist, die Prüfung des Blockes abgebrochen, bevor der Block den letzten
Prüfpunkt erreicht, um nutzlose Verarbeitungsvorgänge zu sparen. Mit anderen
Worten, wenn eine Verzerrungsmenge di 1, welche durch eine
Verzerrungsberechnung bei 1/4K Abtastpunkt in einem Schritt ST41 als di 1 > d 1' durch die
Beurteilung in dem nächsten Schritt St42 gefunden wird, wird der Block gelöscht, wenn
nicht, wird der Vorgang mit dem nächsten Schritt ST43 fortgesetzt und der
Vorgang der Verzerrungsmenge di2 wird mit der Verzerrungsberechnung bei dem 1/2K
Abtastpunkt ausgeführt. Wenn in der Beurteilung in dem nächsten Schritt ST44
festgestellt wird, dass di2 > d2' ist, wird der Block gelöscht und wenn nicht, wird
der Vorgang in dem Schritt ST45 fortgesetzt. Der Vorgang der Verzerrungsmenge
di3 wird mit der Berechnung an dem 3/4K Abtastpunkt ausgeführt, und wenn
durch die Beurteilung in dem nächsten Schritt ST46 festgestellt wird, dass di3 >
d3' ist, wird dieser Block gelöscht, wenn nicht, wird der Vorgang in dem Schritt
ST47 fortgesetzt und die Verzerrungsmenge di an dem K Abtastpunkt wird zum
Ausführen eines Vergleiches und Ersatz berechnet.
-
Wie oben gezeigt, wird, wenn die Verarbeitung bis zu dem letzten Schritt
ausgeführt wird, das gleiche Ergebnis erhalten, wie das bei dem konventionellen
Verfahren erhaltene, bei welchem sämtliche Bildpunkte für einen Verzerrungsvorgang
verwendet werden. Wenn die Verzerrungsmenge di in diesem Fall geringer als die
minimale Verzerrung D ist, wird der Wert der minimalen Verzerrung D durch di
ersetzt und der Bewegungsvektorindex wird mit dem Index i erneuert. Der letzte
Minimalwert der Verzerrung D und der Vektorindex I, welcher die Bewegung zum
Geben von D zeigt, kann erhalten werden durch Wiederholen solcher
Verarbeitungsvorgänge, wie oben erwähnt, mit der Anzahl der Häufigkeit entsprechend der
Anzahl der Suchvektoren, bis die Verarbeitung bis zu dem M-ten Block
fortgeschritten ist.
-
In der obigen Ausführungsform ist das Beispiel, in welchem eine differentielle
Absolutwertsumme für den Verzerrungsmengenvorgang verwendet wird, gezeigt,
es kann aber ebenfalls eine differentielle Quadratwertsumme verwendet werden.
-
In der obigen Ausführungsform wird eine Erläuterung für den Fall eines
Bewegungskompensationsvorganges vorgenommen, die Ausführung eines inneren
Produktvektor-Quantisierungsvorganges ist ebenfalls möglich und die gleiche Wirkung kann
erhalten werden. Wenn ein Operationsergebnis mit einem Schwellwert an einem
Zwischenprüfungspunkt verglichen wird, ist die Beziehung in der Höhe
entgegengesetzt dem was in der obigen Ausführungsform erwähnt wurde.