DE3632639C2 - Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung - Google Patents

Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung

Info

Publication number
DE3632639C2
DE3632639C2 DE3632639A DE3632639A DE3632639C2 DE 3632639 C2 DE3632639 C2 DE 3632639C2 DE 3632639 A DE3632639 A DE 3632639A DE 3632639 A DE3632639 A DE 3632639A DE 3632639 C2 DE3632639 C2 DE 3632639C2
Authority
DE
Germany
Prior art keywords
processing
data
memory
output
sequence
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
DE3632639A
Other languages
English (en)
Other versions
DE3632639A1 (de
Inventor
Ercole Giuliano
Giogio Musso
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.)
Elsag Bailey SpA
Original Assignee
Elsag Bailey SpA
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 Elsag Bailey SpA filed Critical Elsag Bailey SpA
Publication of DE3632639A1 publication Critical patent/DE3632639A1/de
Application granted granted Critical
Publication of DE3632639C2 publication Critical patent/DE3632639C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution

Landscapes

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

Description

Die Erfindung betrifft eine Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten nach dem Oberbegriff des Anspruchs 1.
Bei derartigen Einrichtungen, die beispielsweise auf wissenschaftlichen, industriellem, medizinischem oder militärischem Gebiet angewandt werden, sind zwei Techniken zum Verarbeiten von Informationen, die von externen Sensoren (insbesondere visuelle Einrichtungen, jedoch auch akustische Sensoren usw.) erhalten wurden, bekannt, wobei nach einer Methode "ge­ streute" Daten zu konventionellen Bildern verarbeitet werden, während nach der anderen Methode die eingehenden Daten bereits die Form eines Bildes der Außenwelt darstellen und das Verarbeiten im Extrahieren und Analysieren von Daten besteht, die in dem Bild selbst enthalten sind.
In beiden Fällen basiert viel der Bildumwandlungstechnik auf Faltungsalgorithmen, die abgesehen von ihren extrem brauchba­ ren mathematischen Eigenschaften derart lange Verarbeitungszeiten benötigen, daß die Verarbeitung auf Standardcomputern unpraktisch ist.
Insbesondere in der Industrie erfordern beispielsweise Beobachtungssysteme durch Roboter ein extrem hohes Bildverarbei­ tungspotential, insbesondere in den frühen Stadien zum Herausfil­ tern von Zwischenraumfolgen und zum Verbessern des Kontrastes oder zum Feststellen von Bildcharakteristika, die für eine weitere Verarbeitung auf höherer Stufe erforderlich sind. Die Ausgangsda­ ten, die üblicherweise durch eine elektronische Netzhaut, die etwa 200 000 Wandler oder mehr aufweist, geliefert werden, werden mit MHz-Frequenzen abgetastet und müssen sämtlich getrennt verarbeitet werden.
Von allen Methoden, die auf Algorithmen basieren, sind die am meisten verwendeten die digitalen Techniken, die eine diskrete Bildumwandlung erfordern. Das Bild selbst kann definiert sein durch eine zweidimensionale folge von Helligkeitswerten und ge­ dacht werden als Ergebnis des Teilens einer Fotographie (quadra­ tisch aus Einfachkeitsgründen) in ein Mosaik von N.N-Quadraten (Pixels) von gleicher Größe, wobei jedem dieser Quadrate ein Grauwert zugeordnet ist.
In dem Gebiet, in dem die Einrichtung gemäß der Erfindung insbesondere angewendet wird, ist Filtern von primärer Bedeutung, insbesondere zur "Kantenextraktion", das insbesondere bei Verar­ beitungssystemen eine wesentliche Funktion darstellt, bei denen Objekte von einem gegebenen Hintergrund zu unterscheiden und nachfolgend zu identifizieren sind.
Ein diskretes Bild liefert in der Tat alle Informationen, die einem "künstlichen Sichtsystem" im Außenraum zugänglich sind, wobei jedoch diese Information nur zur praktischen Verwendung ge­ führt werden kann, wenn sie in eine effizientere Form als eine bloße Folge von verschiedenen Pixelhelligkeitswerten konvertiert wird. "Kantenextraktion" ist beispielsweise ein Bildumwandlungs­ vorgang, der viel von den strukturellen Bilddaten bewahrt, wodurch das nachfolgende Verarbeiten erleichtert wird.
Das Ergebnis eines "Kantenextraktions"-Verfahrens besteht aus einer Gruppe von Linien, die an Helligkeitsänderungsstellen auf dem Bild lokalisiert sind. Die Effektivität derartiger Linien liegt darin, daß sie mit den Eigenschaften des zu betrachtenden Objekts nahe verbunden ist, das heißt, daß offensichtlich Hellig­ keitsänderungen häufig an den Kanten des Objektes lokalisiert sind.
Eine Faltung ist nur eine "Kantenextraktions"-Operation. Nachfolgende Operationen in dem Verfahren hängen von dem Typ der verwendeten Folge ab.
Nachfolgend wird kurz zusammengefaßt, was bereits von diesem Faltungsvorgang bekannt ist.
Wenn X eine Folge ist, die ein Bild darstellt, sind die Elemente dieser Folge x(l, m), wobei die Variablen l und m (ganze Zahlen zwischen 0 und N-1) die Stelle (Zeile oder Spalte) des einzelnen Elementes angeben, so daß die Folge als Matrix von N Zeilen und N Spalten betrachtet werden kann, deren Elemente ent­ sprechend den relativen Pixels angeordnet sind, aus denen sie er­ halten wurden.
Im Falle einer Faltung erzeugt eine anfängliche Folge X eine neue Folge Y, wobei jedes Element hiervon eine gewichtete Summe der Elemente der anfänglichen Folge darstellt. Faltung hängt daher ab von der Wichtungsfolge K, die verwendet wird. Faltung wird folgendermaßen ausgedrückt
Y = K.X
Allgemein ist das Element in der resultierenden Folge Y:
Faltung wird gewöhnlich interpretiert als Herausfiltern von Zwischenraumfolgen.
Damit verläßliche Resultate auch bei Anwesenheit von Rau­ schen erhalten werden, müssen Filtermatrizen zur "Kantenextrak­ tion" in vielen Fällen von relativ ausgedehnter Größe sein. Ein Vergrößern der Größe der K-Folge vergrößert jedoch die Anzahl der damit verbundenen Verarbeitungsoperationen. Das Berechnen jedes Elementes in einer Folge, die aus der Faltung einer zweidimensio­ nalen Folge (die die üblichen Charakteristika aufweist) resul­ tiert, umfaßt:
  • 1. Kenntnis der Elemente nR.nc in der Folge zum Verarbei­ ten;
  • 2. Multiplizieren jedes Elementes mit einem geeigneten "Ge­ wicht" (die Anzahl der Produkte ist daher gleich nR.nc);
  • 3. Addieren der resultierenden Produkte (beim Addieren von Zahlenpaaren ist die Anzahl der Additionen gleich (Anzahl der zu addierenden Produkte) - 1 = (nR.nc) - 1 ≃ nR.nc).
Für Anwendungszwecke muß dies soweit wie möglich verein­ facht werden, das heißt die Anzahl von erforderlichen Operationen für jedes Resultat reduziert werden.
Wenn die Verarbeitungsfolge K separabel ist, ist der ges­ amte Vorgang beträchtlich einfacher. Separierbarkeit von K bedeu­ tet:
k(s,t) = f(s).g(t),
wobei f(s) und g(t) Elemente von zwei eindimensionalen Folgen von Elementen nR bzw. nc sind. Wenn Separierbarkeit existiert, ergibt sich:
wobei
ist. Die Rechnung kann daher in zwei aufeinanderfolgende Faltungen umfassend eine zweidimensionale und eine eindimensionale Verar­ beitungsfolge zurückgeführt werden.
W ist eine zweidimensionale Folge von Zwischenwerten, die auf X durch eine erste eindimensionale Zeilenfaltung erhalten wird (so genannt, da die Berechnung von w(l,m) nur Werte von x(l,m-i) um­ faßt, die sich in der gleichen Zeile befinden). Aus diesen Zwi­ schenwerten wird die endgültige Folge Y erhalten durch eine zweite eindimensionale Faltung, und zwar diesmal eine Spartenfaltung (so genannt, da nur Werte in der gleichen Spalte involviert sind).
Eine eindimensionale Zeilen- (Spalten-) Faltung läßt sich als spezieller Faltungsfall mit einer zweidimensionalen Verarbei­ tungsfolge mit nR= l (nc = l) betrachten.
Folgende Erweiterung kann daher vorgenommen werden:
g(j) → gR(0, j)
f(i) → fc(i, 0)
(R oder c zeigen an, daß diese zweidimensionalen Folgen nur Ele­ mente verschieden von Null längs einer Zeile oder einer Spalte besitzen können).
Die erwähnte Abtrennungsbedingung wird zu einem speziellen Fall
K = Fc.GR
Für die Gesamtberechnung kann daher die folgende Gleichung verwendet werden:
Y = Fc.(GR.X) = Fc.W mit W = GR.X
Die erste eindimensionale Faltung, bei der W aus der Aus­ gangsfolge X berechnet wird, erfordert l.nc Operationen pro Ele­ ment (der Ausdruck "Operation" bedeutet Erfassen eines Wertes der zu verarbeitenden Folge, Multiplizieren von diesem mit einem ent­ sprechenden Term der Verarbeitungsfolge und Addieren des Pro­ duktes). Die zweite Faltung, bei der die Folge Y aus der Folge W erhalten wird, erfordert nR.l Operationen pro Element.
Dies bedeutet, daß die endgültige Folge berechnet wird durch nR + nc Operationen pro Element, was eine beträchtliche Re­ duzierung verglichen mit direkter Verarbeitung darstellt, die nR.nc Operationen erfordern würde. Je größer nR und nc sind, desto größer ist die Reduzierung.
Zudem ergibt sich eine Vereinfachung der Berechnung durch Ersetzen einer zweidimensionalen Faltung durch zwei getrennte eindimensionale Faltungen, die jeweils nur nR oder nc Terme be­ sitzt.
Die zu leistende Menge an Verarbeitung ist ein allgemeines Problem im Falle der direkten numerischen Verarbeitung von dis­ kreten Bildfolgeelementen aufgrund der großen Anzahl der auftre­ tenden Elemente. Beispielsweise im Falle eines Bildes mit 512.512 Pixels und einer getrennten zweidimensionalen Verarbeitungsfolge von 32.32 Elementen, würde die Anzahl von durchzuführenden Opera­ tionen über 3.107 sein, wobei die Hälfte hiervon Multiplikationen sind.
Während der frühen Verarbeitungsstufen ist das Original­ bild häufig unter Verwendung von Faltungen verschiedener Größen und/oder Funktionen durchzuführen, um Charakteristika von spe­ ziellem Interesse zu Tage zu fördern. Bei Verwendung derartiger Algorithmen auf Standardcomputern kann die Verarbeitungszeit leicht einige Zehntelsekunden bis zu einigen Minuten betragen in Abhängigkeit von der Komplexität der Verarbeitungsoperation. Dies ist offensichtlich selbst für Algorithmus simulierende Stufen nicht akzeptabel und insbesondere unter realen Betriebsbedingun­ gen, die allgemein sehr schnelle Verarbeitungszeiten erfordern, die in der Größenordnung von wenigen Millisekunden pro erhaltenem Videobild liegen.
Zum Kombinieren von Bildumwandlungspräzision und Hochge­ schwindigkeitsverarbeitung sind daher zweidimensionale Masken in der Industrie auf solche beschränkt, die ohne bemerkbare prakti­ sche Begrenzungen getrennt werden können. Eine zweidimensionale Faltung wird daher durch Multiplizieren von zwei aufeinanderfolg­ enden eindimensionalen Faltungen in zwei senkrechten Bildrichtun­ gen berechnet.
Die Effektivität einer geeigneten Einrichtung zum Durch­ führen des Faltens, das auf einem Computer in der gleichen Weise wie auf einer standardisierten Periphereinheit durchgeführt werden kann, ist daher offensichtlich. Bei einer spezialisierten Einheit kann daher eine geeignete Strukturierung zum beträchtlichen Redu­ zieren der Gesamtverarbeitungszeit ausgewählt werden.
Aus US 4489 393 ist eine Einrichtung der eingangs genannten Art bekannt, die eine Arithmetikeinheit aufweist, die eine Anzahl von miteinander verbundenen Verarbeitungszellen mit teilweise gemeinsamen Eingängen aufweist und ausgebildet ist, um Faltungen mit separablen Variablen durchzuführen. Allerdings ist die dabei erhaltene Verarbeitungsgeschwindigkeit noch nicht optimal.
Aus DE 34 36 276 A1 ist eine Einrichtung zur Hochgeschwindigkeits­ verarbeitung von Bilddaten durch Faltung mit mehreren gleichartigen Verarbeitungsmodulen bekannt, die zur Anpassung an konkrete zu realisierende Operationen beliebig kombinierbar und in ihren Koeffizienten (Gewichtsfaktoren) variierbar und als hochintegrierte Schaltung realisierbar ist. Auch hier ist die Verarbeitungsgeschwindigkeit noch ungenügend.
Aufgabe der Erfindung ist es daher eine Einrichtung nach dem Oberbegriff des Anspruchs 1 zu schaffen, die eine erhöhte Verarbeitungsgeschwindigkeit ermöglicht.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des Anspruchs 1 gelöst.
Weitere Ausgestaltungen der Erfindung sind der nachfol­ genden Beschreibung und den Ansprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand der in den beige­ fügten Abbildungen dargestellten Ausführungsbeispiele näher er­ läutert.
Fig. 1 zeigt ein Blockdiagramm einer ersten Ausfüh­ rungsform der erfindungsgemäßen Einrichtung.
Fig. 2 zeigt ein detailliertes Blockdiagramm einer ersten Ausführungsform einer Arithmetikeinheit von Fig. 1.
Fig. 2a zeigt eine Zeitgraphik einer Anzahl von Signalen in dem Diagramm von Fig. 2.
Fig. 3 zeigt ein detailliertes Blockdiagramm einer zweiten Ausführungsform der Arithmetikeinheit von Fig. 1.
Fig. 4 zeigt ein Gesamtblockdiagramm der Arithmetik­ einheit von Fig. 1.
Fig. 5 zeigt eine Anzahl von Betriebssteuerworten für die erfindungsgemäße Einrichtung.
Fig. 6 zeigt ein detailliertes Blockdiagramm einer Aus­ führungsform des Speichers von Fig. 1.
Bei der in Fig. 1 dargestellten erfindungsgemäßen Vor­ richtung handelt es sich um die in dem Block (angedeutet durch gestrichelte Linien und nachfolgend als Faltungsblock bezeichnet), der eine Arithmetikeinheit 2, einen Speicherblock 3 und einen In­ terface- und Steuerblock 4 umfaßt, der den Betrieb von Block 1, der vollkommen synchron ist, beherrscht und durch einen 8 MHz-Takt getaktet wird. Einheit 2 und Blöcke 3 und 4 sind über eine lokale Leitung 5 hinsichtlich des Datenflusses in beiden Richtungen mit­ einander verbunden, während die Einheit 2 ferner mit der Leitung 5 über einen Block 6 zum Approximieren der Endresultate in einer Datenflußrichtung verbunden ist, deren Funktionieren nachfolgend im einzelnen beschrieben wird. Der Interface-Block 4 ist mit einem Steuerblock 36 in zwei Datenflußrichtungen verbunden, der seiner­ seits mit einer Leitung 7 in zwei Datenflußrichtungen verbunden ist, mit der ein Hauptrechner 8, beispielsweise ein VAX 11/780, hergestellt durch Digital Equipment Corporation, verbunden ist.
Mit der Leitung 7 ist ferner ein externer Bildabtastblock 9, beispielsweise eine Telekamera, verbunden.
Die Arbeitsweise des Faltungsblocks 1 besteht darin, die kodierten Instruktionen, die in jedem einzelnen Fall durch den Rechner 8 geliefert werden, auszuführen. Anders ausgedrückt, es besteht keine feste Vorgabe, der Betrieb des Blocks 1 ist ent­ sprechend den Anforderungen durch den Operator wählbar.
Ein typischer Ablauf zum Durchführen einer eindimensiona­ len Faltung besteht aus folgenden Schritten:
1) Transferieren der Folge zum Verarbeiten (Originalbild­ daten) vom Rechner 8 zum Block 1 (Speicher 3).
2) Übertragen der Verarbeitungsfolge und Parameter vom Rechner 8 zum Block 1 (lokaler Speicher der Einheit 2).
3) Verarbeiten über die Arithmetikeinheit 2 durch Entnahme von Daten vom Speicherblock 3, Nähern der Ergebnisse auf 8 Bits und erneutes Laden des Speicherblocks 3.
4) Übertragen der resultierenden Folge (resultierendes Bild) vom Block 1 zum Rechner 8.
Eindimensionale Faltungen können (zum Erzielen von zwei­ dimensionalen Faltungen) durch Wiederholen der Schritte 2 und 3 wiederholt werden. Die Schritte 3 und 4 können auch durch einen alternativen Verarbeitungsmodus 3' ersetzt werden:
3') Verarbeitung (einer eindimensionalen Faltung) während der Übertragung von Ergebnissen zum Rechner 8.
Sämtliche Übertragungen zu und vom Rechner 8 und Fal­ tungsblock 1 werden in DMA mit "handshake"-Logik durchgeführt.
Jede Übertragung ist mit einem individuellen Code verbun­ den, der durch den Rechner 8 erzeugt wird, um es dem Block 1 zu ermöglichen zu identifizieren, welche Übertragung durchgeführt wird, das heißt 1), 2), 3), 4) oder 3'). Der mit dem Transfer 1) verbundene Code veranlaßt Block 1, das Eingangsdatum in den Da­ tenspeicherblock 3 zu schreiben. Für diese Übertragung existiert eine spezifische Ordnung, in der die Werte der zu verarbeitenden Folge zu übermitteln sind, das heißt längs jeder Zeile von links nach rechts (zunehmender Spaltenindex) und Zeile für Zeile von oben nach unten (zunehmender Zeilenindex). Eine derartige Anord­ nung führt zu einer leichten Rekonstruktion der Koordinaten rela­ tiv zu jedem empfangenen Wert, welche Koordinaten durch Block 1 verwendet werden zur Bildung eines unterschiedlichen Adressenco­ des, wie er zur Speicherung erforderlich ist.
Übertragung 2), die durch den damit verbundenen Code identifiziert ist, besteht in der Übertragung von einigen zehn Worten.
Diese Worte, die in geeigneten Registern (14 in Fig. 2) gespeichert sind, definieren die Berechnung einer eindimensionalen Faltung unter Verwendung der in Schritt 1) übermittelten Daten. Das heißt, daß zusammen mit diesen Worten Block 1 mit den Elemen­ ten der zu verarbeitenden Folge (8, 16, 24 oder 32 Werte, 8 Bit Komplement 2) und einem Paar von "Parametern", die andere notwen­ dige Informationen beinhalten, etwa ob die Faltung eine Zeilen- oder Spaltenfaltung ist, gefüttert wird. Ein Schlußcodewort in dieser Übertragung läßt die Faltung entsprechend den vorher emp­ fangenen Instruktionen beginnen. In dem speziell in Rede stehenden Fall besteht das Verarbeiten im Addieren der Produkte der Elemente der zu verarbeitenden Folge mit Elementen der Verarbeitungsfolge Zeile für Zeile oder Spalte für Spalte. Jedes resultierende Fol­ genelement wird ohne Zwischenapproximation berechnet; die resul­ tierenden (20 Bit) Werte werden durch eine 8-Bit-Zahl Komplement 2 approximiert.
In Stufe 3) wird Block 1 gegenüber dem Rechner 8 während der Verarbeitungszeit isoliert und ersetzt den Inhalt des Spei­ chers 3, der anfänglich aus der zu verarbeitenden Folge besteht, durch die Folge, die aus der Faltung resultiert. Die Elemente der Verarbeitungsfolge und Parameter bleiben ungeändert und können zum nachfolgenden Verarbeiten verwendet oder erneut definiert werden.
Übertragung 4) ist ähnlich zu Schritt 1), nur in entge­ gengesetzter Richtung. Dieses Lesen ändert nicht den Inhalt des Datenspeichers 3.
Faltungsblock 1 wird durch einen Aufruf vom Block 36 ak­ tiviert als Teil eines Programms, das von dem Hauptrechner 8 aus­ geführt wird. Block 36 bewirkt das erforderliche Codifizieren und überführen.
Bei der Anordnung von Fig. 1 mit einem Hauptrechner VAX 11/780 ist das resultierende Bild zur Verwendung in wenigen Se­ kunden erhältlich. Eine derart große Vergrößerung der Gesamtzeit verglichen mit der Verarbeitungszeit beruht fast gänzlich auf der zeit, die für die Übertragung der Bildfolgen zwischen Rechner 8 und Faltungsblock 1 benötigt wird. Jedoch können auch diese Zeiten auf Bruchteile einer Sekunde reduziert werden durch Optimieren der Übertragungsvorgänge und Verwendung von schnelleren Interface­ blocks 36.
Nachstehend wird im einzelnen die Betriebsweise des Fal­ tungsblocks 1 und der Arithmetikeinheit 2 zum Durchführen einer eindimensionalen digitalen Faltung erläutert.
Die durchzuführende Rechnung ist die Faltung einer zu verarbeitenden Folge X (von N.N Elementen) mit einer Verarbei­ tungsfolge bestehend aus h(-q), . . ., h(-1), h(0), h(1), . . ., h(p). Diesen Elemente (n = q + p + 1 = 8, 16, 24 oder 32) sind durch "Koeffizienten" indiziert. Die Rechnung kann eine Zeilen- oder Spaltenfaltung sein, das heißt:
W = HR.X oder W = Hc.X
Die Gesamtrechnung wird Element für Element durchgeführt, das heißt die verschiedenen Werte der resultierenden Folge werden einzeln berechnet. (Zur Vereinfachung bedeutet "Datum" ein Element der zu verarbeitenden Folge X und "Resultat" ein Element der re­ sultierenden Folge W). Die Gleichung für das allgemeine resultie­ rende Element w(l,m) ist:
oder
Die obigen Gleichungen zeigen die Operationen an, die zur Berechnung eines Resultats erforderlich sind, das heißt Addieren der Produkte von n Daten, jeweils multipliziert mit einem geeig­ neten Koeffizienten.
Während der Berechnung sind die Daten im Speicher 3 ent­ halten, wohingegen die Multiplikation und Addition in der Arithmethik­ einheit 2 durchgeführt werden, in der die n Koeffizienten direkt gespeichert sind.
Wenn ein Resultat berechnet ist, wird ein weiteres durch entsprechendes Addieren der Produkte der gleichen Koeffizienten für eine andere Gruppe von n Daten berechnet. Wenn weiterhin, wie in den vorstehenden Gleichungen ausgedrückt, eine Koeffizienten­ folge vorgegeben worden ist, liegt die einzige Differenz zwischen Zeilen- und Spaltenfaltung in der Gruppe von n Daten.
Da keine vorgegebene Ordnung existiert, in der die ver­ schiedenen Resultate zu berechnen sind, besteht eine übliche sy­ stematische Methode darin, die Resultate aufeinanderfolgend in durchgehenden Zeilen zu berechnen: Zeilen bzw. Spalten für Zeilen- bzw. Spaltenfaltungen.
Im Falle einer Zeilenfaltung beispielsweise erfordert die Berechnung von w(l0, m0) das Lesen von n Daten x(l0, m0-p), . . ., x(l0, m0+q) aus Speicher 3. Das Berechnen von w(l0, m0+1) erfordert das Lesen von x(l0, m0+1-p), . . ., x(l0, m0+1+q). Von diesen wurden die ersten n-1 bereits für die vorhergehenden Berechnungen gelesen und nur das letzte ist "neu".
Wenn jedes Datum zum Berechnen von n Ergebnissen verwendet wird, die aufeinanderfolgend berechnet werden, wie die erforder­ lichen Daten bekannt werden, braucht jedes Datum nur einmal aus dem Speicher 3 gelesen und zur nachfolgenden Verwendung direkt in der Arithmetikeinheit 2 gespeichert zu werden. In dem obigen Falle wird die Speicherung von vorher gelesenen Daten nur auf die "letzten" n-1 Daten angewendet, was eine beträchtliche Vereinfa­ chung des Datenlesens und der Struktur der Arithmetikeinheit 2 liefert.
Das gleiche Prinzip ist bei einer Spaltenfaltung anzuwen­ den, in welchem Falle Daten aufeinanderfolgend vom Speicher 3 in Spalten gelesen werden, wobei keinerlei Änderungen bezüglich der Arithmetikeinheit 2 erforderlich sind.
Anders ausgedrückt wird das Falten einer zweidimensionalen Folge x von N.N Elementen mit einer Folge von n Elementen h(i) auf N getrennte Faltungen von zwei eindimensionalen Folgen zer­ legt: die Verarbeitungsfolge und jedesmal eine verschiedene Zeile (Zeile oder Spalte) in der zweidimensionalen Folge, um jedesmal eine entsprechende Zeile von Resultaten, das heißt Elementen der Folge W zu erhalten, die folgende Form besitzen:
Hierbei handelt es sich um eine vereinfachte Gleichung, die sowohl für Zeilen- als auch für Spaltenfaltungen gültig ist, wobei die Elemente w(k) und x(k-i), zweidimensionale Folgenele­ mente, verwendet werden, um den (gemeinsamen) Index zu implizie­ ren, der die gerade Zeile identifiziert, auf die in der durchge­ führten Berechnung Bezug genommen wird.
Nunmehr sei der Fall einer Faltung mit einer "kausalen" Verarbeitungsfolge von n Elementen betrachtet (das heißt mit Koeffizientenindizes zwischen q = 0 und p = n-1):
Die Arithmetikeinheit 2, die auf die Verarbeitungsfolge (H) "programmiert" ist, fragt am Eingang die Elemente der Folge (X) aufeinanderfolgend zum Verarbeiten ab und liefert aufeinan­ derfolgend am Ausgang die Elemente der verarbeiteten Folge (W).
Bei der in Fig. 2 dargestellten Ausführungsform besitzt daher die Arithmetikeinheit 2 "n" identischen Stufen 11 bestehend aus halbsystolischen Zellen, das heißt die synchron mit einem gemeinsamen Dateneingang 50 und einem Ausgang 49 für jede Stufe 11, der mit einem Addiereingang der nächsten Stufe 11 verbunden ist, arbeiten. Jede der Zellen 11 umfaßt einen Hochgeschwindig­ keits-8×8-Bit-Multiplizierer 12 zum Multiplizieren des Datums vom Eingang 50 mit dem Faltungskoeffizienten h(i), der durch einen lokalen RAM-Speicher 14 geliefert wird, der durch den Rechner 8 geladen wird. Der Ausgang des Multiplizierers 12 wird auf einen 20-Bit-Addierer 13 gegeben, der diesen zu dem Datum addiert, das am Ausgang 49 der vorhergehenden Stufe 11 ansteht. Der Ausgang des Addierers 13 wird auf ein Register 15 gegeben, dessen Ausgang den Ausgang 49 der Stufe 11 bildet.
Während sowohl Multiplizierer 12 als auch Addierer 13 aus Kombinationslogikblöcken bestehen, deren Ausgang von den Ein­ gangsdaten abhängt, erfordert der Betrieb jedes Registers 15 ein Schreibsteuersignal. An jeder Anstiegsflanke des Schreibsteuer­ signals speichert jedes Register 15 das Datum an seinem Eingang zu dieser bestimmten Zeit, transferiert es zum Ausgang und hält es stabil (unabhängig von irgendwelchen Änderungen am Eingang), bis die nächste Anstiegsflanke empfangen wird. Das in Fig. 2a darge­ stellte Taktsignal (c) ist dasjenige für das Register 15 in Fig. 2. (a) stellt in Fig. 2a einen zeitlichen Graphen des Wertes am Eingang 50 der Einheit 2 in Fig. 2 und (b) einen zeitlichen Gra­ phen des Wertes am Ausgang 51 dar.
Jedes der Daten, die aufeinanderfolgend zum Eingang 50 der Arithmetikeinheit 2 gesandt werden, bleibt während eines Zyklus (die Periode zwischen zwei aufeinanderfolgenden Anstiegskanten des Taktsignals) konstant, um die Berechnung eines neuen Resultats zu ermöglichen, das auf den Ausgang 51 der Einheit 2 in dem nach­ folgenden Zyklus gegeben wird. Die Bildung von Resultaten ist leicht angesichts des repetierenden Aufbaus herleitbar (die erste Zelle 11 in Fig. 2 kann zum Zwecke der Gleichförmigkeit einen Ad­ dierer 13 aufweisen, von dem ein Eingang (49) auf Null gesetzt ist).
Im Falle von n Koeffizienten wird jedes Element durch n Stufen (Fig. 2) in n Zyklen berechnet. Wenn
w(k) = h(n-1).x(k-n+1) + h(n+2).x(k-n+2) + . . .
+ h(1).x(k-1) + h(0).x(k)
berechnet werden soll, wird in der ersten Stufe 11 in dem Zyklus begonnen, bei dem x(k-n+1) mit einem Produkt h(n-1).x(k-n+1), . . . am Eingang des Multiplizierers 12 vorhanden ist.
Zyklus für Zyklus wird durch die Stufen 11 eine Summe ge­ bildet, bei der ein Element jedesmal zu dem Teilresultat an dem Ausgang des Registers 15 der vorhergehenden Stufe 11 addiert wird, bis in dem Zyklus, in dem x(k) am Eingang des Multiplizierers 12 vorhanden ist, die letzte Stufe 11 den letzten Summanden h(0).x(k) addiert und das vollständige Resultat w(k) auf den Ausgang 51 der Arithmetikeinheit 2 in dem nächsten Zyklus gibt.
Ein spezifisches Merkmal des in Fig. 2 dargestellten Auf­ baus besteht darin, daß die Operationen, die aufeinanderfolgend in jedem Zyklus durchgeführt werden, eine Multiplikation und eine Addition sind. Diese aus zwei Operationen bestehende Folge ist unabhängig von der Anzahl der Stufen, das heißt keine weiteren nachfolgenden Operationen sind erforderlich, wieviele Stufen n auch involviert sind.
Dies ist wichtig in bezug auf die Zeit zur Durchführung der aufeinanderfolgenden Operationen in jedem Zyklus (wegen der Komponentenverzögerung), da hierdurch die minimale Zeitperiode zum Betrieb des Faltungsblocks bestimmt wird, welche Zeit zweifelsohne soweit wie möglich zu minimalisieren ist.
Zieht man das Ausgangsregister 15 der letzten Stufe 11 in Betracht, wird die aktuelle Folge, die am Ausgang 51 der Einheit 2 in Fig. 2 verfügbar ist, um einen Zyklus in bezug auf die Folge X am Eingang 50 verzögert (wie durch die Graphen (a) und (b) von Fig. 2a gezeigt ist). Das Ausgangsregister 15 ist in der Tat ein "Pipeline"-Register, das heißt daß es im Gegensatz zu den anderen nicht für den Prozeß erforderlich ist, sondern verwendet wird, um in aufeinanderfolgenden Zyklen die Operationen, die in der letzten Stufe 11 der Einheit 2 durchgeführt werden, von denjenigen zu trennen, die durch den stromabwärtigen Block durchgeführt werden.
Pipeline-Register stellen praktisch ein Muß zwischen Blöcken dar, jedoch können sie auch innerhalb des Blocks selbst verwendet wer­ den. Beispielsweise kann bei der Einheit 2 von Fig. 2 ein Pipeli­ ne-Niveau bestehend aus einem zusätzlichen Register in jeder Stufe 11 zwischen Multiplizierer 12 und Addierer 13 eingefügt werden. In diesem Falle wird die Taktzeitgrenze nach unten durch die längste Verzögerungszeit eines Multiplizierers 12 und eines Addierers 13 begrenzt, mit dem Resultat, daß die Ausgangsfolge um zwei Zyklen in bezug auf die Eingangsfolge X verzögert ist.
Bevorzugterweise umfaßt die Arithmetikeinheit 2 in Fig. 2 einen Modul mit elf Stufen 11, was bedeutet, daß er Faltungen be­ rechnen kann, die Verarbeitungsfolgen von n ≦ 8 Elementen umfas­ sen.
In Fällen, die mehr als 8 Koeffizienten umfassen, ist eine entsprechende Anzahl von identischen Modulen in Kaskadenverbindung vorgesehen (angesichts des repetiven Aufbaus der Struktur von Fig. 2). Im Falle von n ≦ 16 beispielsweise sind zwei Module 53 (Fig. 4) erforderlich, die miteinander in der in Fig. 4 dargestellten Weise verbunden sind. Der Eingang 50 ist der Eingang gemeinsam für die acht Multiplizierer 12 jedes Moduls 53; P ist der Eingang des Addierers 13 der ersten Stufe 11 und 51 ist der Ausgang des Re­ gisters 15 in der achten Stufe 11.
Wenn die Anzahl der Koeffizienten ansteigt, steigt die Zahl der Stufen 11, die in der Einheit 2 erforderlich sind, eben­ falls, während die Verarbeitungszeit unverändert bleibt.
Wenn eine Zeitperiode 125 ns und eine Folge von 256 K Elementen vorgegeben ist, wird eine Verarbeitungsoperation (die etwa so viele Zyklen wie Elemente in der zu verarbeitenden Folge erfordert) in etwa 35 ms durchgeführt.
Abgesehen von der vorhergehenden Lösung kann erfindungs­ gemäß auch bei mehr als acht Koeffizienten (mit einem entspre­ chenden Anstieg der Verarbeitungszeit) ein Modul 53 unter Verwen­ dung von Multiplizierern 12 und Addierern 13 eingesetzt werden. Bei der in Fig. 3 dargestellten Struktur der Einheit 2, die Wie­ derholungskomponenten umfaßt, sind nur die erste und letzte Stufe 11' einer achtstufigen Kette dargestellt, die alle ϑ Zyklen (ϑ = 1, 2, 3, 4) ein Resultat einer Faltung mit einer Verarbeitungs­ folge von ϑ.8 Koeffizienten berechnet.
Jede Stufe 11' besitzt einen Multiplizierer 12, der ein Datum 50 an einem Eingang und am anderen Eingang einen Koeffi­ zienten ausgewählt aus einer Gruppe, in diesem Falle von vier Koeffizienten abgespeichert in einer RAM-Speichergruppe 14' emp­ fängt. Der Ausgang des Multiplizierers 12 wird auf einen Addierer 13 gegeben, der an seinem anderen Eingang von einer vorhergehenden Stufe 11' den Ausgang eines von vier Registern einer Gruppe 15' empfängt und seinerseits den Ausgang zu seiner eigenen Gruppe 15' datenstromabwärts sendet. Ein Eingang des Addierers 13 der ersten Stufe 11' ist mit dem Ausgang eines Abtasters (Schalter) 33 ver­ bunden, der an einem Eingang ein Signal p und an seinen anderen Eingängen den Ausgang eines zusätzlichen Registers 34 empfängt, dessen Eingang den Ausgang eines der Register D24, D16, D8 der Gruppe 15' der achten Stufe 11' mit Ausnahme des Registers Dout in Gruppe 15', das den Ausgang 51 füttert, empfängt. Der Schalter 33 dient zur wiederholten Durchführung (in diesem Falle viermal) von Faltungen mit Folgen von 8, 16, 24 oder 32 Elementen. Wie nach­ stehend im einzelnen ausgeführt wird, ermöglicht dies das Durch­ führen von Faltungen mit Folgen in einer größeren Anzahl als die Stufen 11' der Arithmetikeinheit 2 infolge sequentieller Durch­ führung der Faltung und mit einem dadurch hervorgerufenen pro­ portionalen Anstieg in der benötigten Verarbeitungszeit.
Die Arbeitsweise der Einheit 2 von Fig. 3 wird unter der Annahme von 32 Koeffizienten beschrieben. Wie in der 32-stufigen Struktur von Fig. 2 weist die Struktur von Fig. 3 insgesamt 31 Register (D31, . . ., D1), die Partialsummen enthalten, und ein Re­ gister (Dout) auf, das das Endresultat enthält. Der Inhalt jedes dieser Register wird durch jedes neue Eingangsdatum geändert. Bei der in Fig. 2 dargestellten Struktur wird dies in einer Taktpe­ riode durchgeführt, wohingegen bei der Struktur von Fig. 3 vier aufeinanderfolgende Perioden (als "Schritte" bezeichnet, die einen "Zyklus" bilden) erforderlich sind, wobei am Ende der vier Perio­ den ein neues Resultat in das Register Dout gegeben wird.
Der Schrittbetrieb wird durchgeführt durch Ansteuern "in Spalten" sowohl der Speichergruppen 14' als auch der Vier- Re­ gister-Gruppen 15'. Im ersten Schritt jedes Zyklus werden die Multiplizierer 12 mit Koeffizienten h(31), . . ., h(24) versorgt, die Register D31, . . ., D24 werden angesteuert und der Schalter 33 gesetzt, um Eingang P an dem ersten Addierer 13 zu legen. (Eingang P ist erforderlich zum Kaskadenverbinden einer Anzahl von Modulen 53. Bei einem einzigen Modul 53, wie im vorliegenden Falle, kann Eingang P auf Null gesetzt werden. Eingang P wird in der Tat auch verwendet zum Approximieren der Resultate, wie später im einzelnen beschrieben wird.) Am Ende des ersten Schritts befinden sich neue Werte in den Registern D31, . . ., D24.
Ähnliches geschieht für die anderen "Spalten" (23, . . ., 16; 15, . . ., 8; 7, . . ., 0) in den folgenden Schritten. In den folgenden Schritten wird die Einstellung des Schalters 33 geändert damit der erste Addierer 13 mit dem Ausgang des Registers 34 auf der Rückkopplungsverbindung von den Registern in der letzten Stufe 11' versorgt wird. Daß Register 34 trägt den Wert, der in dem Re­ gister der letzten Stufe, das in dem vorhergehenden Schritt ange­ steuert war, enthalten ist, vorwärts.
Eine Folge von 24 Koeffizienten wird in nur drei Schritten berechnet: Der erste, bei dem der Schalter 33 den Eingang P wählt, steuert Spalte 23, . . ., 16 an; der zweite steuert Spalte 15, 8 an; und der dritte und letzte (nach welchem Register Dout gela­ den wird) steuert Spalte 7, . . ., 0 an.
Zwei Schritte sind bei 16 Koeffizienten ausreichend, wo­ hingegen 8 Koeffizienten kein wiederholtes Verarbeiten erfordern.
Die Arithmetikeinheit 2, die für vier Wiederholungs­ schritte ausgelegt ist, arbeitet in Relation zu den stromauf- und stromabwärtigen Stufen in der gleichen Weise wie eine Standardar­ ithmetikeinheit (ohne Wiederholung) mit ϑ.8 Stufen mit einem (augenscheinlichen) Arbeitszyklus von ϑ Taktperioden. Dies bedeu­ tet beispielsweise, daß zwei der beiden Einheiten 2 kaskadenförmig miteinander verbunden werden können, wie in Fig. 4 dargestellt ist, wobei jede unabhängig wiederholt, um Faltungen in nur zwei Schritten vorzunehmen, die Folgen von 32 Koeffizienten haben.
Zum Maximieren der Auflösungskapazität der Arithmetikein­ heit 2 wird keine Approximation der Multiplikationen oder Addi­ tionen durchgeführt.
Im Falle von Multiplikationen wird das Produkt von zwei 8-Bit-Faktoren Komplement 2 in 15 Bits angegeben (um zwei Vorzei­ chenbits zu erhalten, wird der Fall, daß beide Faktoren -128, das heißt binär 10 000 000 sind, ausgeschlossen).
Im Falle von Additionen, die das Aufsummieren bis zu einem Maximum von 32 Produkten umfassen, werden 20-Bit-Zwischenresultate erzeugt, um einen Überlauf selbst im schlechtestmöglichen Falle zu vermeiden.
Für allgemeine Anwendungen der Einheit 2 werden exakte Zwischenrechnungen empfohlen. Jedoch im Falle eines Resultates einer Faltung in Form eines 20-Bit-Wortes würde dieses unverwend­ bar sein, weshalb Vorkehrungen zum programmierbaren Approximieren von Block 6 getroffen sind.
Wenn Einheit 2 und Speicher 3 dazu eingerichtet sind, mit 8-Bit-Daten zu arbeiten, erfordert eine zweidimensionale Faltung Zwischenapproximation der Resultate der ersten eindimensionalen Faltung.
Der Approximationsblock 6, der ausschließlich aus Kombi­ nationslogik besteht, wählt eine Gruppe von 8 Bit in irgendeiner Position aus dem 20-Bit-Wort der Einheit 2 aus.
Der Wert der m letzten signifikanten Bits unterhalb der 8 ausgewählten Bits (m ist programmierbar, wie nachstehend näher beschrieben wird) wird gerundet, um die in der Einheit 2 durchge­ führte Addition in Gang zu setzen, das heißt angenommen "p" sei ein 20-Bit-Wort: 00 . . . 010 . . . 00, in dem das einzige Bit gleich 1 in der Position m-ma ist, gezählt von dem letzten signifikanten Bit. Wenn weiterhin die Zahl, die durch die verbleibenden 20-m signi­ fikantesten Bits repräsentiert wird, nicht in 8 Bits repräsentiert werden kann (d. h. wenn die 13-m signifikantesten Bits nicht alle gleich sind), gibt der Ausgang des Approximationsblockes 6 nicht die 8 ausgewählten Bits, sondern den Maximalwert, der in 8 Bits repräsentierbar ist, zusammen mit dem Vorzeichen der Anfangsziffer an (+127, wenn positiv, -128, wenn negativ). Anders ausgedrückt es wird sogenannte Sättigungslogik verwendet.
Erfindungsgemäß ist ferner ein Approximieren der Resultate einer eindimensionalen Faltung auf 16 anstelle von 8 Bits vorge­ sehen. Dies wird erreicht durch Übertragen des Resultates direkt zum Rechner 8 (unter "Verlangsamen" der Geschwindigkeit der Ein­ heit 2 zur Anpassung an die Übertragungsgeschwindigkeit). In die­ sem Fall besteht die Grenze in der Länge des zwischen dem Fal­ tungsblocks 1 und Block 36 übertragenen Wortes.
Bei diesem Verfahrensablauf bleibt der Inhalt des Spei­ chers 3 ungeändert.
An dieser Stelle können die beiden Parameter, die durch den Rechner 8 zum Faltungsblock 1 übermittelt werden, exakt defi­ niert sein.
Der erste Parameter relativ zu den Koeffizienten gibt ei­ nen Wert q (Anzahl der nichtkausalen Elemente in der Verarbei­ tungsfolge; 0 ≦ q ≦ 31 erfordert 5 Bits) und die Anzahl der Koef­ fizienten in der Verarbeitungsfolge (über einen 2-Bit-Code) an.
Der zweite (Verarbeitungs)-Parameter gibt an, ob eine Zeilen- oder Spaltenfaltung erforderlich ist (1-Bit-Code) und de­ finiert einen Wert m (zum Programmieren der Approximationsstufe 6; 0 = m = 12 erfordert 4 Bits; die Schaltung führt eine Erweiterung des Vorzeichens im Falle von m = 13, 14, 15 durch). Dieser Para­ meter enthält ein letztes signifikantes Bit zur Auswahl der Ver­ arbeitungsfolge, indem die Koeffizienten von zwei unabhängigen Folgen (zu jeder von denen ein Parameter des ersten Typs korre­ spondiert) gleichzeitig in der Einheit zwei gespeichert werden kann.
Bei dieser Übertragung empfängt der Faltungsblock 1 auch die Elemente der Verarbeitungsfolge(n), die in entsprechende Po­ sitionen in Speicher 14, der Einheit 2 gespeichert werden (Fig. 3 zeigt die Positionen für nur eine Folge). Zu diesem Zweck wird jeder Koeffizient zusammen mit einem Index i+q (0 ≦ i+q ≦ n-1 ≦ 31 erfordert 5 Bits) und einem Bit, das die Verarbeitungsfolge an­ zeigt, zu dem er gehört, übermittelt. Die übermittelten Worte sind in Fig. 5 dargestellt, in der (a), (b), (c) und (d) die Worte entsprechend dem Koeffizientenparameter, dem Verarbeitungsparame­ ter, dem Koeffizienten und Verarbeitungsbeginn andeuten, wobei zu­ sätzlich zu den vorhergehend erwähnten Symbolen:
s = 0 oder = 1 die Koeffizientenfolge anzeigt, während
nc = 00 für eine 8-Koeffizientenfolge,
= 01 für eine 16-, = 10 für eine 24-, = 11 für eine 32-Koeffi­ zientenfolge und
d = 0 für eine Zeilenfaltung,
= 1 für eine Spaltenfolge ist.
Da verschiedene Worte durch den Code, der durch die beiden signifikantesten Bits gebildet wird, identifiziert werden, können Parameter und Koeffizienten in irgendeiner Abfolge überführt wer­ den. Schließlich kann eine Übertragung eine Anzahl von Steuersig­ nalen zum Verarbeitungsbeginn (einer eindimensionalen Faltung) zum Programmieren der Verarbeitung einer trennbaren zweidimensionalen Faltung enthalten.
Speicher 3 kann eine Gesamtbildfolge (beispielsweise 512.512 8-Bit-Daten) enthalten und wird durch den Rechner 8 mit der Folge zum Verarbeiten geladen.
Während der Verarbeitung durch Einheit 2 sind die Daten zum Verarbeiten sequentiell in Zeilen Zyklus für Zyklus aus dem Speicher 3 zu lesen und die Resultate (approximiert zu 8 Bits) in der gleichen Weise einzulesen.
Bei Verwendung nur eines Speichers mit einer Gesamtkapa­ zität gleich der Anzahl der Elemente in einer Folge werden die Resultate anstelle der anfänglichen Daten gespeichert (es sei denn, daß eine Anzahl von Speichermodulen 3 vorgesehen ist, wie gestrichelt in Fig. 1 angedeutet ist).
Dies stört jedoch in keiner Weise die Verarbeitung, da jedes Datum nur einmal gelesen wird und das in eine bestimmte Po­ sition abzuspeichernde Resultat nur erhältlich ist, nachdem das Datum, das in dieser Position enthalten war, bereits ausgelesen ist. Das einzige damit verbundene Problem ist daher nicht so sehr die Verwendung der Speicherplätze als vielmehr die Geschwindig­ keit, die erforderlich ist, da für jeden Zyklus einen Lese- und einen Schreibvorgang durchzuführen ist.
Da die Daten entsprechend einer bekannten Folge (in diesem speziellen Falle aufeinanderfolgend in Zeilen oder Spalten) ge­ speichert oder gelesen werden müssen, ermöglichen es spezielle Speicheranordnungen, Daten mit größerer Geschwindigkeit auszutau­ schen, als es nur ein Speicher erlaubt. Wie in Fig. 6 dargestellt ist, setzt sich der Speicherblock 3 aus vier identischen Banken A, B, C und D zusammen, die jeweils bestehen aus:
  • - einem RAM mit 64 kByte;
  • - einem Register 80 zum zeitweiligen Speichern jedes Datums, das in der speziellen Bank gelesen wurde;
  • - einem Paar von Registern 81 und 82, die abwechselnd zum zeit­ weiligen Speichern jedes Datums aktiviert werden, das in die spezielle Bank zu schreiben ist.
Ferner sind an sich bekannte Steuerkreise (nicht darge­ stellt), die gemeinsam für alle vier Banken verwendet werden, vor­ gesehen.
Eine Speicherbank ist charakterisiert durch Kapazität und Zugriffszeit. Die Kapazität jedes der vier Banken beträgt 64 kByte, welcher Wert abhängig ist von der Anzahl der verwendeten RAM-Einrichtungen (von 8 K-Worten von 8 Bit).
Die Zugriffszeit (150-200 ns) ist die Zeit, die benötigt wird, um einen Lesevorgang durchzuführen (um ein gegebenes Datum zugänglich zu machen) oder einen Schreibvorgang (zum Abspeichern eines gegebenen Datums).
Die in Rede stehende Anordnung erlaubt nicht die Durch­ führung eines Lese- oder Schreibvorgangs innerhalb einer Zeitperiode (125 ms), jeder Vorgang wird in zwei aufeinanderfolgenden Perioden (d. h. 250 ns) durchgeführt. Aufgrund des Parallelbetriebs der vier Banken wird jedoch die entsprechende Zugriffszeit viermal weniger.
Mit Hilfe der Register ist daher der Speicher 3 als Ganzes fähig, ein Datum pro Zyklus zu lesen und zu schreiben, wie es durch die Arithmetikeinheit 2, wenn diese bei maximaler Geschwin­ digkeit arbeitet, erforderlich ist.
Die verarbeiteten Daten sind Elemente zweidimensionaler Folgen, die als solche durch ein Paar von Koordinaten indiziert sind. Jedes Datum wird zusammen mit einem Adressencode gespei­ chert, wobei jede Folge ihre eigene alleinige Koordinatenadres­ senkombination besitzt. Während des Verarbeitens wird das Resultat w(l, m) in die gleiche Position geschrieben, in der x(l, m) ge­ speichert war.
Wenn beispielsweise eine einzelne Speicherbank mit 256 k vorhanden ist, kann das durch die Koordinaten (i, j) indizierte Datum in der Position gespeichert werden, die durch folgenden Adressencode indiziert ist:
α0(i,j) = (i.512) + j
Wenn 0 ≦ i, j ≦ 511, ergibt dies 0 ≦ α0(i, j) ≦ (256.1024)-1.
Wenn vier Banken mit 64 k vorhanden sind, muß jedoch jedes Datum einem gegebenen Speicher zugeordnet werden, so daß aufein­ anderfolgende Daten in Zeilen und Spalten, die gleichzeitig gele­ sen oder geschrieben werden in verschiedenen Banken sind.
Das durch die Koordinaten (i, j) indizierte Datum wird in die Bank A, B, C oder D entsprechend nachfolgender Bedingung ge­ schrieben:
(i+j)mod.4 = 0, 1, 2 oder 3
Dieses Datum besitzt daher folgenden Adressencode:
α(i, j) = (i.128) + (j/4),
wobei 0 ≦ i,j ≦ 511 mit 0 ≦ (i,j) ≦ α (64.1024)-1 ist, wobei der Rest einer ganzzahligen Division vernachlässigt wird.
Jedes der Eingangsregister 81 und 82 jeder Bank ermöglicht daher Zugang zu der lokalen Leitung 5 alle vier Zyklen für einen Schreibvorgang. Entsprechendes gilt für die Ausgangsregister 80, aufgrund der Steuerlogik wird ein zyklischer Zugriff zu den Vide­ odaten (Speicherlesen) ermöglicht. In diesem Falle werden die Da­ ten in Zeilen oder Spalten abhängig von dem durch den Operator ausgewählten Programm gelesen.
Im Einzelnen wird nun das Verarbeiten einer Zeile von Da­ ten unter Bezugnahme auf den Betrieb des Speicherblocks 3 be­ schrieben, wobei angenommen wird, daß die Einheit 2 einen Ver­ arbeitungsvorgang pro Taktperiode durchführt, d. h. einen Verar­ beitungsvorgang mit einer 8-Koeffizientenfolge und einem einzigen Modul oder einer mehrfachen Länge mit mehreren Modulen (Fig. 4).
Innerhalb des Speichers 3 führen die RAM's alternierende Lese- und Schreibvorgänge aus. Zunächst seien die Lesevorgänge betrachtet, d. h. die Ausgangsdaten.
Vervollständigung eines Lesevorgangs durch die RAM's wird markiert durch die Anstiegsflanke des Schreibsteuersignals des Ausgangsregisters 80. Nachfolgend zum Lesen werden vier Daten, eines für jede Bank in die entsprechenden Ausgangsregister 80 je­ der Bank geschrieben. Diese Daten werden dann sequentiell auf den Ausgang des Speichers 3 während der nächsten vier Taktperioden gegeben, wodurch die Ausgänge des Registers 80 einer zu einer Zeit betriebsbereit sind.
Das nächste Datenlesen wird durch die RAM's zwei Taktzyk­ len später durchgeführt. Folglich werden am Ende des vierten Zy­ klus nachfolgend zu einem Lesevorgang, in welchem Zyklus die Da­ ten, die im Ausgangsregister 80 gespeichert sind, verwendet wer­ den, die zum Ausgang des Speichers 3 in den nächsten vier Zyklen zu gebenden Daten in das Register 80 eingelesen. Zwischen zwei aufeinanderfolgenden Lesevorgängen werden daher zwei Taktperioden belassen, die verfügbar sind, so daß die RAM's vier Resultate schreiben können.
Um mit dem Beispiel der Verarbeitung einer ersten Zeile fortzufahren, wobei nur der Spaltenindex 0 ≦K ≦ 127 angegeben ist, sei angenommen, daß nur ein Eingangsregister pro Bank existiert, das erste Datum w(4K) in das Register der Bank A geschrieben wird und Daten w(4K+1), w(4K+2), w(4K+3), die in den folgenden Zyklen empfangen werden, in die entsprechenden Register der Banken B, C und D geschrieben werden. An dieser Stelle ist es möglich, diese Werte gleichzeitig in die RAM's zu schreiben, vorausgesetzt, daß diese Werte in der Periode zwischen zwei Lesevorgängen verfügbar sind, was nicht immer der Fall ist. Diese vier Daten sind nur si­ multan stabil während einer Taktperiode, in der Tat wird, nachdem w(4K+3), das letzte in der Gruppe von vier Daten, in das Register der Bank D geschrieben wurde, w(4K+4) empfangen, das in das Re­ gister der Bank A anstelle von w(4K) geschrieben werden muß. Dies alleine würde jedoch den Schreibvorgang aufgrund des RAM-Aufbaus nicht beeinträchtigen.
Der Schreibvorgang, der notwendigerweise zwischen zwei Lesevorgängen durchgeführt werden muß, sollte daher immer Werte von aufeinanderfolgenden, obwohl nicht strikt gruppenbezogenen Koordinaten, aufweisen, was eine entsprechend komplexe Steuerlogik zum Erzeugen der Adressen der vier RAM-Banken erfordert.
Im vorliegenden Falle jedoch besteht die Lösung in einer Verdoppelung der Eingangsregister (81 und 82), die zusätzlich zur Vereinfachung des Aufbaus einen Hochgeschwindigkeitszugriff lie­ fern.
Durch Verdoppelung der Register 81 und 82 brauchen die dem Eingang des Speichers 3 (noch immer unter Bezugnahme auf die erste Zeile) angelegten Werte nur aufeinanderfolgend in Register ge­ schrieben werden: 82 von Bank A, 82 von Bank B, 82 von Bank C, 82 von Bank D, 81 von Bank A, 81 von Bank B, 81 von Bank C, 81 von Bank D, und so weiter, wieder beim ersten beginnend. Im Intervall zwischen zwei Lesevorgängen enthalten daher die Register 82 oder 81 (alternierend) der vier Banken eine Gruppe von vier Werten, die abgesehen davon, daß sie während des Schreibvorgangs stabil blei­ ben (was die Verarbeitung derselben erleichtert.), kompatibel mit dem RAM-Blockleseadressiersystem sind.
Zum Lesen und/oder Schreiben von Daten in eine allgemeine Zeile (Spalte) i werden die vier Register in jeder Gruppe (vier Ausgangsregister 80, vier Eingangsregister 81 und vier Eingangs­ register 82) in folgender Reihenfolge verwendet:
A, B, C, D wenn (i)mod.4 = 0
B, C, D, A wenn (i)mod.4 = 1
C, D, A, B wenn (i)mod.4 = 2
D, A, B, C wenn (i)mod.4 = 3
Wie mit der Arthmetikeinheit 2 können eine Anzahl von identischen Speicherblocks 3 miteinander (in diesem Falle "paral­ lel") verbunden sein, um Resultate einer Faltung ohne Verlust der Ausgangsdaten zu speichern. Wenn beispielsweise zwei Speicherb­ locks 3 vorhanden sind, werden diese während der Verarbeitung al­ ternierend Lese- und Schreibvorgänge durchführen, wie sie in Bezug auf den einen Speicherblock 3 beschrieben wurden, in welchem Fall nur eine Steuerlogik erforderlich ist, um die Adressen und Steuersignale zu erzeugen.
Während der Verarbeitung, bei der keine Wiederholung in der Arithmetikeinheit 2 erforderlich ist, führt der Speicher 3 einen Lese- und einen Schreibvorgang für jede Position in einer Gesamtheit von 35 ms durch. Dies ist nur möglich für Operationen, die aufeinanderfolgende Daten in Zeilen oder Spalten berücksich­ tigen. Die Ordnung, in der Daten für eine Zeilenschaltung gelesen werden, ist jedoch die gleiche wie zum Übetragen dieser Daten zum Rechner, wobei in diesem Falle kein Schreiben erforderlich ist. Das gleiche gilt, wenn Daten in der entgegengesetzten Richtung übertragen werden, in welchem Falle der Speicher 3 nur dazu dient, Schreibvorgänge durchzuführen.
In jeder Speicherbank wird der Betrieb der RAM's und Re­ gister synchronisiert mittels einer teilweise separaten Steuerlo­ gik, so daß die RAM's einen Vorgang in zwei Zyklen durchführen, während die Register 80, 81 und 82 einen Vorgang pro Zyklus durchführen.
Diese Trennung kann dazu ausgenutzt werden, daß die RAM's und Register nur Lese- oder nur Schreibvorgänge mit einer Ge­ schwindigkeit von 4 Lese- oder 4 Schreibvorgängen jede 250 ns durchführen.
Im Falle von Lesevorgängen vollführen RAM's aufeinander­ folgende Nurlesevorgänge, wobei die Daten wie gewöhnlich in Aus­ gangsregister 80 am Ende jedes Vorgangs gelesen werden. Diese Ausgangsregister 80, die in diesem Fall mittels eines 16 MHz-Tak­ tes gesteuert werden, geben ein Datum alle 62,5 ns ab, das daher die äquivalente Zugriffszeit des Speichers 3 ist.
Ähnlich ist der Schreibvorgang zum Gewinnen des Bildsig­ nals direkt von der Telekamera 9, wie in Fig. 1 gestrichelt ange­ deutet ist, vorgesehen, wobei der Faltungsblock nur auf Einheit 2, Approximationskreis 6, Speicherblock 3 und Steuerkreis 4 begrenzt ist. Ein Standardfernsehbild ist zusammengesetzt aus etwa 600 Zeilen mit einem Breite/Höhe-Verhältnis von 4/3. Wenn das Analog­ signal jeder Zeile in 52 µs übermittelt wird, muß dieses Signal 800 mal, d. h. alle 65 ns, abgetastet werden, um den gleichen Ab­ tastzyklus sowohl für Zeilen als auch für Spalten aufrechtzuer­ halten. Zum Abspeichern von Daten bei dieser Geschwindigkeit ist die Verwendung von doppelten Eingangsregistern der RAM's erford­ erlich.
Bei Verwendung doppelter Eingangsregister (und Eingeben von Daten in Zyklen wie üblich) wird, während ein Satz von Re­ gistern (beispielsweise Eingangsregister 81) den RAM mit einer stabilen Gruppe von vier Daten zum Speichern versorgt, der andere Satz (Eingangsregister 82) temporär mit den eingehenden Daten ge­ laden, die den RAM's während des nächsten Vorgangs eingegeben werden.
Die Vorteile eines Faltungsblocks 1 gemäß der Erfindung sind aus dem Vorstehenden klar ersichtlich. Insbesondere ist er sehr vielseitig sowohl in Bezug auf verbesserte Schaltkreise für den Arithmetikkreis 2 in Bezug auf Erfordernisse eines Realzeit­ betriebs als auch in Bezug auf Programmieren zum Ausdehnen des Anwendungsgebiets.
Weiterhin liefert Block 1 einen direkten, zielgerichteten Betrieb mit Makroinstruktionen bezüglich Filtergröße, Koeffi­ zienten, Endresultatformat und die Folge von zwei eindimensionalen Faltungen, die zur Vornahme zweidimensionaler Faltungen erforder­ lich sind.
Innerhalb bestimmter Grenzen können verschiedene sequen­ tielle eindimensionale Faltungen im Wiederholungsmodus durchge­ führt werden, um äquivalente Größenfilter von sogar mehr als 32 Koeffizienten zu erhalten. Die Präzision von Block 1 gemäß der Erfindung ist daher geeignet für allgemeinere Bildaufnahme- und Verarbeitungsanwendungen.
Die Möglichkeit des Zurückführens von Teilresultaten ver­ bessert beträchtlich die Vielseitigkeit der Arithmetikeinheit 2. Verschiedene Konfigurationen können ausgewählt werden zwischen zwei Extrema, wobei N Module kaskadenartig verbunden sind zum Er­ halten von 8N Koeffizienten in einer Hochgeschwindigkeitsfaltung, oder ein einzelner Modul wird verwendet für einen Faltungsblock, der N-mal langsamer ist.
Die gleichförmige, sich wiederholende Ausbildung der Struktur der Einheit 2 durch Ausbildung verschiedener identischer Stufen 11 ist eine wesentliche Charakteristik, die es ermöglicht, ihn in VLSI-Integrationstechnik auszuführen. In der Tat kann die Herstellung eines teuren VLSI-Schaltkreises nur von Vorteil sein, wenn dieser als Elementarmodul für verschiedene parallele Struk­ turen verwendet werden kann.
Die Ausbildung eines Systems, das nur den Faltungsblock 1 mit direktem Datenzugriff von der Telekamera 9 aufweist, liefert sogar eine noch vielseitigere Anwendung, indem die Telekamera 9 von dem Hauptrechner 8 abgetrennt werden kann.

Claims (13)

1. Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bild­ daten mit separablen Variablen durch ein- oder zweidimensionale Faltung mit
  • - wenigstens einer Arithmetikeinheit (2), die eine Anzahl von miteinander verbundenen, im wesentlichen identischen Verarbeitungszellen (11, 11') mit wenigstens teilweise gemeinsamen Eingängen (50) aufweist, und
  • - einer Speichereinrichtung (3), die wenigstens die der Fal­ tung zu unterwerfenden Daten speichert,
  • - wobei jede der Zellen (11, 11') Mittel (14, 14') zum Spei­ chern der Koeffizienten der Verarbeitungsoperation und einen Multipli­ zierer (12) umfaßt, der mit den zu verarbeitenden Daten und den Koeffi­ zienten für die Verarbeitungsoperation versorgt wird und dessen Resulta­ te auf einen Addierer (13) gegeben werden, der ferner mit dem Ausgang einer vorhergehenden Zelle (11, 11') gespeist wird, wobei der Ausgang des Addierers (13) auf ein Speicherregister (15, 15') gegeben wird, des­ sen Ausgang (49) den Ausgang der Zelle (11, 11') bildet, dadurch gekennzeichnet, daß
  • - die Arithmetikeinheit (2) eine Anzahl von Zellen (11') auf­ weist, von denen jede eine zweite Anzahl von Speichermitteln (14') für die Koeffizienten des Verarbeitungsvorgangs und Register (15') zum Spei­ chern des Ausgangs des entsprechenden Addierers (13) besitzt, wobei das Speichermittel (14') und die Register (15') "in Spalten" in jeder Verar­ beitungsstufe angesteuert werden, und
  • - die Arithmetikeinheit (2) ferner einen Abtaster (33) auf­ weist, der wahlweise den Eingang des Addierers (13) der ersten Zelle (11') an einen externen Eingang (P) oder die Ausgänge der Register (15') der letzten Zelle (11') derart verbindet, daß eine wiederholte Verarbei­ tung mit einer Anzahl von Stufen gleich der der zweiten Anzahl ermög­ licht wird, wobei in jeder Stufe auf den Abtaster (33) der Ausgang des Registers (15') der letzten Zelle (11'), die in der vorhergehenden Stufe angesteuert wurde, übertragen wird.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die Speichereinrichtung (3) eine Anzahl von Speicherbanken (A, B, C, D) umfaßt, die parallel untereinander verbunden sind.
3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß jede der Banken (A, B, C, D) einen RAM-Speicher, ein erstes Register (80) zum zeitweiligen Speichern jedes Datums, das in dem Speicher gele­ sen wird, und wenigstens ein zweites Register (81, 82) zum zeitweiligen Speichern jedes Datums, das in den Speicher gelangt, umfassen.
4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß jede der Banken (A, B, C, D) zwei zweite Register (81, 82), die alterna­ tiv aktivierbar sind, umfaßt.
5. Einrichtung nach einem der Ansprüche 1 bis 4, dadurch ge­ kennzeichnet, daß die von der Arithmetikeinheit (2) erhaltenen Resultate in der Speichereinrichtung (3) anstelle der Ausgangsdaten für die Verar­ beitung speicherbar sind.
6. Einrichtung nach einem der Ansprüche 1 bis 5, dadurch ge­ kennzeichnet, daß Mittel (6) zum Approximieren der Endresultate von der Arithmetikeinheit (2) vorgesehen sind.
7. Einrichtung nach Anspruch 6, dadurch gekennzeichnet, daß die Approximiereinrichtung (6) Kombinationslogikelemente umfaßt und aus­ gebildet ist, um von einem von der Einheit (2) erhaltenen Wort eine be­ schränktere Gruppe von Bits in irgendeiner Position auszuwählen.
8. Einrichtung nach einem der Ansprüche 1 bis 7, dadurch ge­ kennzeichnet, daß Mittel (4) zum Steuern der Verarbeitungsstufen der Einrichtung (1) und zur Interface-Verbindung mit einem externen Rechner (8) vorgesehen sind.
9. Einrichtung nach einem der Ansprüche 1 bis 8, dadurch ge­ kennzeichnet, daß die Operationen zur Durchführung der Faltung zum Zwecke der "Kantenextraktion" bei Bildern dienen.
10. Einrichtung nach einem der Ansprüche 1 bis 9, dadurch ge­ kennzeichnet, daß die Daten erhalten werden durch Einrichtungen zum Be­ trachten der Umgebung.
11. Einrichtung nach Anspruch 10, dadurch gekennzeichnet, daß eine Telekamera (9) vorgesehen ist.
12. Einrichtung nach einem der Ansprüche 1 bis 11, dadurch ge­ kennzeichnet, daß die Bilddaten von einem Rechner (8) außerhalb der Ein­ richtung (1) aufgenommen werden.
13. Einrichtung nach Anspruch 11, dadurch gekennzeichnet, daß die Daten von der Telekamera (9) direkt zu dem Speicher (3) übermittelt werden.
DE3632639A 1985-09-27 1986-09-25 Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung Expired - Fee Related DE3632639C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT67826/85A IT1182575B (it) 1985-09-27 1985-09-27 Sistema per realizzare elaborazioni convolutive veloci su informazioni rappresentative di immagini

Publications (2)

Publication Number Publication Date
DE3632639A1 DE3632639A1 (de) 1987-04-02
DE3632639C2 true DE3632639C2 (de) 1999-08-05

Family

ID=11305580

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3632639A Expired - Fee Related DE3632639C2 (de) 1985-09-27 1986-09-25 Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung

Country Status (5)

Country Link
US (1) US4907182A (de)
DE (1) DE3632639C2 (de)
FR (1) FR2588142A1 (de)
GB (1) GB2180968B (de)
IT (1) IT1182575B (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
US5239628A (en) * 1985-11-13 1993-08-24 Sony Corporation System for asynchronously generating data block processing start signal upon the occurrence of processing end signal block start signal
CA1283738C (en) * 1985-11-13 1991-04-30 Atsushi Hasebe Data processor
FR2625577A1 (fr) * 1987-12-30 1989-07-07 Trt Telecom Radio Electr Dispositif de correlation comportant n entrees et ensemble de tels dispositifs
US5138695A (en) * 1989-10-10 1992-08-11 Hnc, Inc. Systolic array image processing system
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
GB8925720D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5001661A (en) * 1990-01-23 1991-03-19 Motorola, Inc. Data processor with combined adaptive LMS and general multiplication functions
US5031132A (en) * 1990-02-27 1991-07-09 Analogic Corporation Circuit for convolving a set of digital data
US5511015A (en) * 1993-11-30 1996-04-23 Loral Vought Systems Corporation Double-accumulator implementation of the convolution function
KR970049860A (ko) * 1995-12-30 1997-07-29 이대원 컨벌류션 계산 장치
AUPO648397A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
AUPO647997A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6674536B2 (en) 1997-04-30 2004-01-06 Canon Kabushiki Kaisha Multi-instruction stream processor
US6707463B1 (en) 1997-04-30 2004-03-16 Canon Kabushiki Kaisha Data normalization technique
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
US6289138B1 (en) 1997-04-30 2001-09-11 Canon Kabushiki Kaisha General image processor
US6272257B1 (en) 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US8130229B2 (en) 2009-11-17 2012-03-06 Analog Devices, Inc. Methods and apparatus for image processing at pixel rate
EP3035204B1 (de) 2014-12-19 2018-08-15 Intel Corporation Speichervorrichtung und Verfahren zur Durchführung von Faltungsoperationen
CN108073549B (zh) * 2016-11-14 2021-04-27 耐能股份有限公司 卷积运算装置及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
DE3436276A1 (de) * 1983-10-05 1985-05-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V., 8000 München Einrichtung zur digitalen verarbeitung von grauwertbildern mit lokalen operatoren, schritthaltend mit der bildabtastung durch eine fernsehkamera

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3748451A (en) * 1970-08-21 1973-07-24 Control Data Corp General purpose matrix processor with convolution capabilities
US4025769A (en) * 1975-07-07 1977-05-24 The Singer Company Apparatus for convoluting complex functions expressed as fourier series
US4330833A (en) * 1978-05-26 1982-05-18 Vicom Systems, Inc. Method and apparatus for improved digital image processing
US4541048A (en) * 1978-10-06 1985-09-10 Hughes Aircraft Company Modular programmable signal processor
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
NL8002787A (nl) * 1980-05-14 1981-12-16 Philips Nv Multiprocessor-rekenmachinesysteem voor het uitvoeren van een recursief algorithme.
DE3279288D1 (en) * 1981-08-18 1989-01-19 Nat Res Dev Integrated data processing circuits
US4507726A (en) * 1982-01-26 1985-03-26 Hughes Aircraft Company Array processor architecture utilizing modular elemental processors
EP0104290B1 (de) * 1982-09-29 1987-12-16 I.R.C.A.M. Institut De Recherche Et De Coordination Acoustique/Musique Digitalprozessor für Echtzeitsignale
US4627026A (en) * 1982-10-21 1986-12-02 I.R.C.A.M. (Institut De Recherche Et De Coordination Accoustique/Misique Digital real-time signal processor
US4580215A (en) * 1983-03-08 1986-04-01 Itt Corporation Associative array with five arithmetic paths
GB2144245B (en) * 1983-07-28 1987-07-29 Secr Defence A digital data processor for matrix/matrix multiplication
GB8326690D0 (en) * 1983-10-05 1983-11-09 Secr Defence Digital data processor
US4698751A (en) * 1984-07-13 1987-10-06 Ford Aerospace & Communications Corporation Systolic array for solving cyclic loop dependent algorithms
US4694416A (en) * 1985-02-25 1987-09-15 General Electric Company VLSI programmable digital signal processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
DE3436276A1 (de) * 1983-10-05 1985-05-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V., 8000 München Einrichtung zur digitalen verarbeitung von grauwertbildern mit lokalen operatoren, schritthaltend mit der bildabtastung durch eine fernsehkamera

Also Published As

Publication number Publication date
IT1182575B (it) 1987-10-05
GB2180968B (en) 1989-10-25
GB8623083D0 (en) 1986-10-29
FR2588142A1 (fr) 1987-04-03
GB2180968A (en) 1987-04-08
DE3632639A1 (de) 1987-04-02
US4907182A (en) 1990-03-06
IT8567826A0 (it) 1985-09-27
FR2588142B1 (de) 1994-08-19

Similar Documents

Publication Publication Date Title
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
DE2625973C3 (de) Verfahren und Anordnung zur redundanzvermindernden Transformation von Bildern
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE602004006516T2 (de) Parallel-verarbeitungs-array
DE3209073C2 (de) Anordnung zum Umsetzen der Zahl von Abtastlinien
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE2729912A1 (de) Digitale signalverarbeitungsanordnung
DE3811145C2 (de)
EP0418412A1 (de) Schaltungsanordnung zur Produktsummenberechnung
EP1262060A1 (de) Verfahren und vorrichtung zum auslesen von bilddaten eines teilbereichs eines bildes
DE2451235A1 (de) Schaltungsanordnung fuer ein digitales filter
DE3814471A1 (de) Adaptive m-til-signalwert-erzeugungseinrichtung
EP0598112B1 (de) Verfahren und anordnung zum bilden der summe einer kette von produkten
DE4210086A1 (de) Zweidimensionale schieberegisteranordnung zur bildverdichtung von bildelementdaten
DE3538913A1 (de) Vorrichtung und verfahren zum verarbeiten einer matrix von datenelementen
DE19637369C2 (de) Digitaler Signalprozessor mit Multipliziereinrichtung und -Verfahren
EP0346750B1 (de) Anordnung zur DPCM-Codierung mit hoher Datenrate
DE3436276C2 (de)
DE3340078A1 (de) Prozessor-zelle zur verwendung in einer aus derartigen zellen gebildeten anordnung
DE3634691A1 (de) Differenzpulscodemodulator sowie dessen verwendung als demodulator
DE2508141A1 (de) Verfahren zur transformation von reellen zahlen
DE3447929C1 (de) Verfahren zur digitalen Korrelation und Korrelationsprozessor
EP0207435A2 (de) Schaltungsanordnung zum Verarbeiten von Bilddaten
EP0195283A2 (de) Schaltungsanordnung zur Segmentation eines Binärbildes
DE3138833A1 (de) Anordnung zum durchfuehren einer mathematischen operation und einige anwendungen dieser anordnung

Legal Events

Date Code Title Description
8127 New person/name/address of the applicant

Owner name: ELSAG BAILEY S.P.A., GENUA/GENOVA, IT

8128 New person/name/address of the agent

Representative=s name: SPARING, K., DIPL.-ING. ROEHL, W., DIPL.-PHYS. DR.

8110 Request for examination paragraph 44
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee