-
Diese Erfindung betrifft digitale
Signalverarbeitungseinrichtungen, insbesondere digitale
Signalverarbeitungseinrichtungen, deren Betrieb durch vom
Anwender zur Verfügung gestellte Befehlsfolgen gesteuert
werden kann.
-
Bis vor kurzem wurde der größte Teil der Bearbeitung von
analogen Signalen direkt an diesen Signalen unter
Verwendung einer analogen Schaltungsanordnung durchgeführt.
Somit wurde die gewünschte Verarbeitungsfunktion, wie z. B.
das Filtern oder Gleichrichten, durch Kombinationen von
elektronischen Komponenten, wie z. B. von Widerständen,
Kondensatoren, Spulen und Dioden vorgesehen, wobei die
Werte und die Verbindungen so festgelegt sind, daß diese
auf das Signal zur Erzielung des gewünschten Ergebnisses
einwirken. Die geeigneten Werte und die
Schaltungsanordnungen werden im allgemeinen durch
Berechnung unter Verwendung der mathematischen Modelle der
Wirkungen der Komponenten erhalten.
-
Mit dem Aufkommen preiswerter digitaler
Schaltungskomponenten wurde ein alternativer Lösungsweg
gangbar. Bei diesem wird das analoge Signal zuerst
abgetastet und die Größe jedes Abtastwertes numerisch
codiert (Analog/Digital-Umwandlung). Daraufhin wird jeder
numerische Wert arithmetisch entsprechend dem
mathematischen Modell bearbeitet, das die gewünschte
Signalverarbeitungsfunktion beschreibt. Die Folge von
numerischen Ergebnissen der arithmetischen Operationen kann
wieder in eine Folge von Signalabtastwerten entsprechender
Größe rückgewandelt werden (Digital/Analog-Umwandlung), die
dann ein Signal ausbilden, das dem entspricht, welches sich
durch Anlegen des ursprünglichen analogen Eingangssignals
an eine durch das mathematische Modell definierte, echte
Schaltung ergeben würde.
-
Durch Anwendung einer solchen digitalen Signalverarbeitung
ergeben sich verschiedene Vorteile. Die erhaltene
Verarbeitungsfunktion entspricht genau der gewünschten,
wobei keine Störungen infolge von Toleranzen der
Baukomponentenwerte auftreten; somit liefern verschiedene
Exemplare der gleichen Signalverarbeitungseinrichtung
identische Ergebnisse.
-
Die Funktionen, die erhalten werden können, schließen viele
ein, die, obwohl mathematisch definierbar, entweder unter
Verwendung von reellen elektrischen Komponenten gar nicht
oder nur mit erheblichen Schwierigkeiten und Kosten erzeugt
werden können. Da die erforderlichen arithmetischen
Operationen in Form eines Programmes von Befehlen definiert
werden können, kann die gleiche übliche Hardware durch
geeignete Wahl der Befehlsfolge dazu gebracht werden, viele
verschiedene Signalverarbeitungsfunktionen durchzuführen.
-
Bekannte digitale Signalverarbeitungseinrichtungen nehmen
üblicherweise die Form eines konventionellen (Mikro-)
Computers an, der auf einem einzigen IC-Chip einen Speicher
zum Speichern der erforderlichen Befehlsfolge und der
erforderlichen Daten, eine Rechenschaltung, Eingangs- und
Ausgangsschaltungen sowie eine Steuerschaltung zum
Koordinieren der Operationen der
Signalverarbeitungseinrichtung in Übereinstimmung mit dem
Befehlsprogramm aufweist. Um eine ausreichend hohe
Operationsgeschwindigkeit für typische
Signalverarbeitungsanwendungen (wie z. B.
Sprachfernübertragungssystemen) zu erhalten, wird
gewöhnlich ein spezieller zusätzlicher Schaltkreis
eingeschlossen: So kann eine Multiplikation mit Hilfe von
Multiplizierern in Form von Hardware ausgeführt werden, so
können das Programm, die Daten und irgendwelche
Koeffizienten, die vom Programm zum Bearbeiten der Daten
verwendet werden, in ihren eigenen individuellen Speichern
abgespeichert werden, und so können Busse oder
Kommunikationswege zur Vermeidung von Engpässen bei der
Datenübertragung zwischen verschiedenen
Schaltkreiselementen verdoppelt werden. Außerdem werden
häufig das Programm und die Koeffizienten in
Festwertspeichern, die einen Teil des IC-Chip bilden,
abgespeichert, wobei ihre Werte während der Herstellung
fest in den Schaltkreisaufbau aufgenommen
(maskenprogrammiert) werden.
-
Obwohl ein derartiger Lösungsweg für gewisse Anwendungen
(wie z. B. für Sprachfernübertragungen) zufriedenstellend
ist, schließt dieser gewisse Beschränkungen ein. So ist
insbesondere die Maskenprogrammierung nur für große
Produktionsmengen wirtschaftlich und die Anzahl der
Binärzeichen, die einen Datenwert bilden, ist
typischerweise nicht größer als 16, was eine logische
Begrenzung der Auflösung und der Genauigkeit der digitalen
Verarbeitungsfunktion zur Folge hat.
-
Eine digitale Signalverarbeitungseinrichtung
(Signalprozessor) entsprechend den Merkmalen des
Oberbegriffes des unabhängigen Vorrichtungsanspruches ist
in der
EP-A-00 75 623 beschrieben.
-
Gemäß einem Aspekt dieser Erfindung wird ein digitaler
Signalprozessor vorgesehen, der Verarbeitungselemente,
welche eine Eingangsschnittstelle, eine
Ausgangsschnittstelle, einen Datenspeicher und eine
Recheneinheit einschließen; ein Kreuzschienenschaltnetzwerk
zum selektiven Verbinden der vorgenannten Elemente
miteinander; und eine Steuerschaltung, die auf jeden einer
Vielzahl vorbestimmter Befehle ansprechen kann, um das
Kreuzschienennetzwerk für eine Verbindung der Elemente in
entsprechenden vorbestimmten Weisen zu steuern, aufweist
und dadurch gekennzeichnet ist, daß der Datenspeicher ein
Datenspeicher mit seriellem Zugriff und mit mindestens zwei
Datenkanälen ist, daß die Recheneinheit einen
Multiplizierer zum Multiplizieren zumindest dreier seriell
durch entsprechende Koeffizienten dargestellter Variablen
und zum Summieren der Produkte sowie eine Vorrichtung
umfaßt, die einen Überlauf in dem Ausgangssignal des
Multiplizierers feststellt und vorbestimmte Sättigungswerte
für das Ausgangssignal ersetzt, daß zumindest zwei
Schieberegister in beiden Richtungen mit dem
Kreuzschienennetzwerk gekoppelt sind; und daß die
Steuerschaltung auf eine ausgewählte Folge von der
Steuerschaltung zugeführten Befehlen ansprechen kann, um zu
bewirken, daß die Verarbeitungselemente durch das
Kreuzschienennetzwerk in einer gewählten Reihenfolge
miteinander verbunden werden, die ausgewählt wird, um eine
gewünschte Signalverarbeitungsfunktion zu bewirken.
-
Der Prozessor verwendet serielle arithmetische Techniken,
was lange Wortlängen und zugehörige hohe Auflösung
ermöglicht. Der im hohen Maße parallele Charakter der
Schaltkreisanordnung ermöglicht es, daß die arithmetischen
Schaltungen intensiv in Betrieb gehalten werden, und die
Bereitstellung eines individuellen (seriellen) Datenweges
für jedes Schaltkreiselement verhindert Engpässe bei der
Datenübertragung.
-
Die oben angeführte Anordnung ermöglicht die Realisierung
eines beschränkten Bereiches von
Signalverarbeitungsfunktionen. Der Einschluß zusätzlicher
Elemente, wie z. B. eines Akkumulators, eines weiteren
Schieberegisters (mit unabhängig adressierbaren
Herausschiebe- und Hineinschiebepositionen) und eines
anderen spezialisierten Registers steigert die Vielfalt der
Funktionen, die ausgeführt werden können.
-
Ein digitaler Signalprozessor gemäß dieser Erfindung, der
als ein programmierbares Digitalfilter Verwendung findet,
wird nachfolgend beispielhaft mit Bezug auf die
beiliegenden Zeichnungen beschrieben, bei denen:
-
Fig. 1 ein schematisches Blockdiagramm ist, das den
Prozessor in Kombination mit einem typischen
externen Schaltkreis zeigt;
-
Fig. 2 ein vereinfachtes schematisches Blockdiagramm
ist, das die wesentlichen Schaltkreiselemente des
Prozessors verdeutlicht;
-
Fig. 3 ein schematisches Diagramm des
Kreuzschienennetzwerkes der Fig. 2 ist;
-
Fig. 4 ein schematisches Diagramm ist, das einen
besonderen Betriebsmodus des
Kreuzschienennetzwerkes verdeutlicht;
-
Fig. 5a und 5b schematische Diagramme sind, die eine
biquadratische Filterfunktion und deren
Realisierung mit dem Prozessor veranschaulichen;
-
Fig. 6a und 6b schematische Diagramme sind, die eine
Allpol-Filter- und Glättungsfunktion und deren
Realisierung mit dem Prozessor verdeutlichen; und
-
Fig. 7 ein schematisches Blockdiagramm der
Substitutionsschaltung der Fig. 2 ist.
-
Der zu beschreibende digitale Signalprozessor soll neben
anderen Zwecken als ein Universalfilter verwendet werden,
d. h. die gleichen Komponenten können zur Realisierung
einer Vielzahl von unterschiedlichen Filterfunktionen
verwendet werden, wobei die von der Schaltung vorgesehene
genaue Filtercharakteristik in jedem Fall von einer Folge
von Befehlen abhängig ist, die vom Anwender ausgewählt
wird. Typischerweise würde die Schaltung unter Verwendung
von LSI-Schaltkreistechniken realisiert werden.
-
Betrachtet man die Fig. 1, so ist der Signalprozessor 10 in
Kombination mit einem externen Speicher 12 dargestellt, der
ein Direktzugriffsspeicher (RAM) und/oder ein
(programmierbarer) Festwertspeicher (ROM oder PROM) sein
kann. Der Prozessor 10 steht mit dem Speicher über einen
11-Bit-Adreßbus 14 in Verbindung, der Signale überträgt,
die die im Speicher 12 vorgesehenen Adressen der die
Operation des Prozessors 10 steuernden Befehle und der
während einer solchen Operation verwendeten Koeffizienten
spezifizieren. Der Wert des Befehls oder des Koeffizienten
an der spezifizierten Adresse wird vom Speicher 12 längs
eines allgemein mit dem Bezugszeichen 16 gekennzeichneten
8-Bit-Datenbusses dem Prozessor 10 zugeführt.
-
Zu verarbeitende Signale (die bereits mittels eines
konventionellen Analog/Digital-Wandlers 18 in eine digitale
Form überführt wurden) werden dem Prozessor 10 längs einer
seriellen Eingangsleitung 20 zugeführt, wobei
Datenübertragungen längs dieser Leitung mittels
Quittungsbetrieb-Signalen auf einer "Daten-bereit"-Leitung
22 und einer "Daten-Anforderungs"-Leitung 24 koordiniert
werden. Verarbeitete Signale werden vom Prozessor 10 längs
einer seriellen Ausgangsleitung 26 abgegeben (z. B. zu
einem Digital/Analog-Wandler 28), wobei die
Datenübertragungen gleichfalls durch Signale auf
zugehörigen "Daten-bereit"- und "Daten-Anforderungs"-
Leitungen 30 und 32 gesteuert werden. Die Zeitsteuerung
sowohl der Eingangs- als auch der Ausgangssignale wird mit
dem Betrieb der Wandler 18 und 28 mittels eines externen
Eingangs/Ausgangs-Taktsignals synchronisiert, das von einer
Datentaktschaltung 34 über eine Leitung 36 zugeführt wird.
-
Die Zeitsteuerung der Operationen im Prozessor 10 selbst
wird durch ein anderes Taktsignal synchronisiert, das von
einer Systemtaktschaltung 40 über eine Leitung 38 zugeführt
wird. Die Initialisierung des Prozessorschaltkreises wird
durch ein Signal ausgelöst, das über eine Rücksetzleitung
42 angelegt wird. Typischerweise wird dies in bekannter Art
und Weise vorgenommen, wenn dem Prozessor (über nicht
gezeigte Verbindungen) Leistung zugeführt wird, und zwar
mit einem Signal, das von den Stromzufuhrleitungen
abgeleitet wird.
-
Die übrigen Verbindungen zum Prozessor 10 können verwendet
werden oder nicht, und zwar abhängig von der speziellen
Schaltung, in der der Prozessor verwendet wird. Ein Merker
(Flag)-Eingang 44 kann überprüft werden, um auf ein durch
einen externen Schaltkreis angelegtes Signal zu reagieren;
ein "Nächster-Befehl"-Ausgang 46 wird aktiviert, um
anzuzeigen, falls der Prozessor 10 bereit ist, mit der
Ausführung des nächsten Befehls der im Speicher 12
abgespeicherten Befehlsfolge zu beginnen - dies könnte zur
Steuerung einer externen Speicherauswahlschaltung verwendet
werden; ein "Daten-verfügbar"-Ausgang 48 wird aktiviert, um
anzuzeigen, daß von einem externen Schaltkreis zu
verwendende Daten auf dem Datenbus 16 verfügbar sind; und
Vorzeichen- und Überlauf-Ausgänge 50 und 52 werden
aktiviert, um in konventioneller Weise das Ergebnis der
arithmetischen Operationen im Prozessor 10 anzuzeigen.
-
Der Prozessor 10 muß offensichtlich die erforderlichen
Verarbeitungsschritte für jeden eingegebenen
Signalabtastwert abschließen, ehe der nächste Abtastwert
verfügbar ist. In der Praxis würde normalerweise etwas
freie Zeit zwischen dem Ende der Verarbeitung eines
Abtastwertes und dem Auftreten des nächsten Abtastwertes
zur Verfügung stehen. Während dieser freien Zeit aktiviert
der Prozessor 10 einen Leerlauf-Ausgang 54, um anzuzeigen,
daß er nicht aktiv arbeitet und somit den Adreßbus 14 und
den Datenbus 16 nicht verwendet. Ein externer Schaltkreis
kann, falls erforderlich, auf dieses Signal durch
Aktivieren eines Halte-Eingangs 56 reagieren, wodurch die
Operation bzw. der Betrieb des Prozessors 10 eingestellt
und der externen Schaltung die eigene Verwendung des
Adreßbusses 14 und des Datenbusses 16 ermöglicht wird. Dies
könnte z. B. im Fall einer Sprachsynthese durchgeführt
werden, bei der es erwünscht ist, die vom Prozessor 10
verwendeten und im Speicher 12 abgespeicherten
Koeffizienten zwischen den Verarbeitungsfolgen für
aufeinanderfolgende Eingangs-Abtastwerte zu ändern.
-
Der Aufbau und der Betrieb des Signalprozessors 10 wird
nachfolgend mit Bezug auf die Fig. 2 detaillierter
beschrieben, die ein geringfügig vereinfachtes
Blockdiagramm des Prozessorschaltkreises darstellt.
-
Bezieht man sich auf Fig. 2, so wird der Betrieb des
Prozessors 10 mit Hilfe einer Steuer- und
Zeitgeberschaltung 100 koordiniert. Diese umfaßt eine
Steuerschaltung 102, die das Systemtaktsignal über die
Leitung 38 empfängt, einen Programmzähler 104, der die
Speicheradreßsignale auf dem Adreßbus 14 erzeugt, einen
Befehlspuffer 106, der die Daten empfängt, die Befehle auf
dem Datenbus 16 repräsentieren, und einen Befehlsdecodierer
108. Dieser Decodierer, der einen Festwertspeicher
aufweisen kann, der mit den erforderlichen Steuersignalen
programmiert ist, die jedem möglichen Befehl entsprechen,
führt die Steuersignale einen Kreuzschienenschaltnetzwerk
110 zu, das durch selektives Verbinden der verschiedenen
Schaltkreisblöcke oder -elemente des Prozessors 10
entsprechend der speziellen Kombination der Steuersignale
reagiert. Das Kreuzschienennetzwerk 110 weist elf Eingänge
und elf Ausgänge auf und stellt im wesentlichen eine
Multiplexschaltung zum Koppeln irgendeines Eingangs mit
irgendeinem Ausgang dar. Somit hat das Netzwerk
einhunderteinundzwanzig Schalter, die in Form einer
Elfmal-Elf-Matrix angeordnet sind, und eine jedem Schalter
zugeordnete Speicherzelle zur Steuerung des Ein/Aus-
Zustandes dieses Schalters (siehe Fig. 3). Der
Befehlsdecodierer 108 liefert ein 4-Bit-Steuerwort für
jeden der elf Ausgänge, das bestimmt, welcher der elf
Eingänge mit diesem Ausgang gekoppelt werden soll, indem
der geeignete der elf Schalter für diesen Ausgang
geschlossen wird. Für die Betriebsgeschwindigkeit wird für
jeden Schalter eine doppelte Speicherzelle vorgesehen, so
daß der Satz von Steuerwörtern, der durch den nächsten
Befehl definiert wird, sequentiell in einen Satz von Zellen
geladen werden kann, während die anderen Zellen die
Schalter für den Aufbau der Verbindungen steuern, die durch
den momentanen Befehl spezifiziert sind. Wird ein
Taktsignal von der Steuerschaltung 102 an das
Kreuzschienennetzwerk 110 angelegt, so kann das neue
Verbindungsmuster für den nächsten Befehl sofort den
Schaltern zugeführt werden, um die erforderlichen
Verbindungen herzustellen. Somit liefert das
Kreuzschienennetzwerk die geeigneten Signale als
Eingangssignale an die im Prozessor 10 vorgesehenen
Berechnungseinheiten und führt die resultierenden
Ausgangssignale verschiedenen, nachfolgend beschriebenen
Speichern und Registern zu, wie dies durch jeden auf dem
Datenbus 16 empfangenen Befehl vorgeschrieben ist.
-
Eine der Berechnungseinheiten stellt einen Multiplizierer
112 dar, der drei Eingangssignale X&sub0;, X&sub1; und X&sub2; sowie drei
Koeffizienten α, β und γ empfängt und das Dreifachprodukt
-
erzeugt.
-
Die Koeffizienten α, β und γ werden vom Speicher 12 über
den Datenbus 16 und die Koeffizientenpuffer 114 erhalten.
Da jeder Befehl vom Speicher 12 erhalten und in den
Befehlspuffer 106 eingegeben wird, werden die
entsprechenden Koeffizienten in die Koeffizientenpuffer 114
geladen. Wird ein neues Verbindungsmuster mit Hilfe des
Kreuzschienennetzwerkes 110 in Erwiderung auf den oben
beschriebenen Befehl erzeugt, so werden die in den Puffern
114 gehaltenen Werte gleichzeitig an den Multiplizierer 112
angelegt. Für einen bestimmten Wert des vom Speicher 12
erhaltenen γ-Koeffizienten wird jedoch der tatsächliche γ-
Wert statt dessen von einem Multiplikanden-Register 116
erhalten, das wiederum mit Werten von anderen Schaltungen
im Prozessor 10 über das Kreuzschienennetzwerk 110 geladen
wird. Dies ermöglicht die Realisierung derartiger
Funktionen wie z. B. adaptives Filtern, Korrelieren,
Modulieren und Quadrieren.
-
Ferner kann unter Steuerung des Befehlsdecodierers 108 und
des Vorzeichens der "Quellen"-Daten (die im Befehl als
solche identifiziert sind) jeder der vom
Kreuzschienennetzwerk 110 dem Multiplizierer 112
zugeführten Werte X&sub0;, X&sub1; und X&sub2; selektiv maskiert (d. h.
durch Null ersetzt) oder invertiert werden, was die
Realisierung von Vollweg- und Einweggleichrichtung und
eines vorzeichenabhängigen Verstärkungsfaktors ermöglicht.
-
Der Multiplizierer 112 stellt eine Serien/Parallel-
Schaltung dar, bei der die Multiplikationen ausgeführt
werden, indem die Werte X&sub0;, X&sub1; und X&sub2; seriell (Bit um Bit)
zugeführt werden, alle Bits der Koeffizienten jedoch
parallel verfügbar sind. Diese Operationen können z. B. auf
der als Booth'scher Algorithmus bekannten Technik beruhen.
-
Das Ausgangssignal R vom Multiplizierer 112 wird seriell
einer Substitutionsschaltung 118 zugeführt, die, wie
nachfolgend beschrieben wird, das Ergebnis selektiv in
Abhängigkeit von dem Befehl, der ausgeführt wird, dem
Vorzeichen des Wertes, der als "Quellen"-Datenwert
identifiziert ist, dem Vorzeichen des Ergebnisses R und in
Abhängigkeit davon ändert, ob das Ergebnis R einen Überlauf
erzeugt hat. Dies ermöglicht, daß Überläufe korrigiert
(durch Substitution des maximal zulässigen Wertes, wodurch
ein Sättigungseffekt vorgesehen wird) werden können. Dies
kann z. B. dazu verwendet werden, eine Mittenbeschneidung
und Spitzenwertgleichrichtung vorzusehen.
-
Der Ausgang von der Substitutionsschaltung 118 weist zwei
Signale auf: den Endwert V, der durch Ausführen des Befehls
erzeugt wird, und ein Rückkopplungssignal F. Diese Signale
werden mit Hilfe des Kreuzschienennetzwerkes 110 für die
Speicherung und Verwendung während der Ausführung der
folgenden Befehle geleitet. Für jeden Befehl erzeugt die
Substitutionsschaltung 118 diese Ausgangssignale seriell,
während der Multiplizierer 112 die betreffenden Signale bei
der Ausführung des folgende Befehls empfängt. Somit kann
der Signalwert V einer anderen Schaltung zum zeitweiligen
Speichern zugeführt oder zum Multiplizierer 112 zur
sofortigen Verwendung in dem Befehl zurückgeführt werden,
der dem folgt, der ihn erzeugt hat.
-
Die andere Einheit zur Durchführung einer Berechnung ist
ein Akkumulator 120. Vom Kreuzschienennetzwerk 110
ankommende Daten können entweder addiert werden oder die
vorliegenden Inhalte des Akkumulators 120 ersetzten. Eine
Schiebefunktion am Ausgang des Akkumulators ermöglicht, daß
der Wert durch eine Zweierpotenz (z. B. zwischen 1/64 und
256) skaliert wird, während die Inhalte dem
Kreuzschienennetzwerk 110 zugeführt werden.
-
Zwischenwerte bei den Signalverarbeitungsfunktionen sowie
während der Ausführung der nachfolgenden Befehle
erforderliche Ausgangswerte können in einem der beiden
Zwischenregister 122 und 124, in eine Registerdatei 126
oder in einem Datenspeicher 128 abgespeichert werden.
-
Die Zwischenregister 122 und 124 stellen im wesentlichen
32-Bit Schieberegister dar, deren Inhalte seriell zum
Kreuzschienennetzwerk 110 für jeden Befehl mit einem
Taktsignal ausgelesen werden, während Daten von der
zugehörigen Ausgangsklemme des Netzwerks 110 eingelesen
werden. Falls die Inhalte jedes Registers für einen
speziellen Befehl nicht erforderlich sind, kann das
Kreuzschienennetzwerk geschaltet werden, um die Inhalte
dieses Registers in dieses zurücklaufen zu lassen (siehe
Fig. 4).
-
Die Registerdatei 126 kann vier Werte gleichzeitig
speichern und stellt ebenso eine Form eines
Schieberegisters dar. Jedoch weist es insoweit die
zusätzliche Fähigkeit auf, daß der auszulesende spezielle
Wert der vier Werte und der spezielle Wert, der durch den
ankommenden neuen Datenwert während der Ausführung eines
Befehls ersetzt wird, unter Steuerung diese Befehls
unabhängig ausgewählt werden können. Demzufolge ruft im
Gegensatz zu einem normalen Schieberegister das Auslesen
eines Wertes nicht dessen Verlust hervor und der gleiche
Wert kann mehrmals zur Verwendung bei mehreren
unterschiedlichen Befehlen ausgelesen werden. In der Praxis
kann die Registerdatei unter Verwendung eines RAM
realisiert werden, auf das seriell Bit um Bit Zugriff
ausgeübt werden kann.
-
Abhängig von dem Umfang der mit dem Prozessor 10 zu
realisierenden Funktionen kann die Registerdatei 126 eine
größere Kapazität als vier Werte oder eine geringere
Kapazität aufweisen. Als Grenzwert könnte diese nur einen
einzigen Wert speichern, wobei diese dann einfach ein
drittes Zwischenregister, wie die Register 122 und 124,
ausbilden würde. Jedoch ist die Fähigkeit des Speicherns
mehrerer unterschiedlicher und unabhängig zugänglicher
Werte von Vorteil.
-
Der Datenspeicher 128 schließt ein 2 Kilobit RAM ein, das
so organisiert ist, daß es eine Verzögerung variabler Länge
vorsieht, ehe die Daten, die einem seiner beiden Eingänge
zugeführt werden, an dem entsprechenden Ausgang erscheinen.
Das RAM ist in Form von zwei 32·32
Speicherzellengruppierungen organisiert und die Verzögerung
kann in Zuwachsraten von 32 Bit variiert werden, so daß das
RAM einem Zweikanalschieberegister mit einer Länge
entspricht, die ein Vielfaches von 32 Bit ist. Die vom
Speicher 128 vorgesehene Verzögerung wird durch den
Befehlsdecodierer 108 in Erwiderung auf spezielle Befehle
vom Speicher 12 gesteuert.
-
Obwohl diese serielle Anordnung die Verwendung des
Prozessors auf Verarbeitungsalgorithmen beschränkt, die zu
einem seriellen Speicherzugriff kompatibel sind, weist
diese den Vorteil der Vereinfachung der Steuerung der
Speicherschaltung auf. Im einzelnen sind die Anzahl der
Wörter im Speicher 128 zu irgendeinem Zeitpunkt und ihre
Länge unwichtig. Der einzige wichtige Parameter stellt die
erforderliche Verzögerung dar, die als eine Anzahl von Bits
ausgedrückt wird.
-
Der Hauptzweck des Speichers 128 besteht in der Speicherung
der Werte von Paaren der Zustandsvariablen, die
Filterfunktionen zweiter Ordnung zugeordnet sind. Die
Anzahl an Werten, die aufgenommen werden kann, hängt von
der gewählten Wortlänge ab (die wiederum die Auflösung der
Signalverarbeitung bestimmt); für eine 20-Bit-Wortlänge
können bis zu 51 Wertepaare gespeichert werden, wohingegen
bei einer 32-Bit-Länge nur maximal 32 Paare gespeichert
werden können.
-
Mehr Details über den Aufbau und die Arbeitsweise eines
Schaltkreises, der zur Verwendung in dem Multiplizierer 112
und dem Speicher 128 geeignet ist, sind z. B. in der
Veröffentlichung "A bit serial VLSI architectural
methodology for signal processing" von Richard F. Lyon,
erhältlich von Xerox Palo Alto Research Center, 3333 Coyote
Hill Road, Palo Alto, Kalifornien, USA und den darin
angeführten Referenzen zu finden.
-
Die seriellen Eingangs- und Ausgangsleitungen 20 und 26 und
ihre zugehörigen Steuer- und Taktleitungen 22, 24, 30, 32
und 36 stehen mit seriellen Eingangs- und
Ausgangsschnittstellen 130 und 132 in Verbindung. Diese
sehen in konventioneller Weise eine Pufferung zwischen dem
Betrieb der Wandler 18 und 28 und dem Betrieb des internen
Schaltkreises des Prozessors 10 vor. Sie können jeweils
zwei serielle Puffer aufweisen, so daß sie synchron mit dem
Datentakt 34 Daten zu den Wandlern 18 und 28 hinführen oder
von diesen wegführen können und gleichzeitig Daten über das
Kreuzschienennetzwerk 110 synchron mit dem Systemtakt 40
zur Verfügung stellen oder empfangen können.
-
Zusätzlich zu den Verbindungen zu den verschiedenen anderen
Schaltkreiselementen des in Fig. 2 gezeigten Prozessors 10
weist das Kreuzschienennetzwerk 110 auch Eingänge 134 und
136 auf, die konstante Signale zur Verfügung stellen, die
die Werte 0 bzw. -1 repräsentieren.
-
Beim Betrieb werden die Befehle im Speicher 12 für jeden
empfangenen Eingangsabtastwert der Reihe nach ausgeführt.
Jeder Befehl bewirkt die Erstellung eines speziellen
Musters von Verbindungen zwischen den Schaltkreiselementen,
wie oben beschrieben, wobei die somit ausgewählten Muster
und ihre Reihenfolge die vom Prozessor 10 ausgeführte
Signalverarbeitungsfunktion definieren.
-
Jeder Befehl weist einen zugehörigen Haupt- oder "Quellen"-
Eingangswert für die durch diesen Befehl ausgeführte
Funktion auf. Der tatsächliche, innerhalb des Prozessors
vorliegende Ausgangspunkt der Quellendaten ändert sich in
Abhängigkeit von der zu realisierenden Funktion. Somit
würde bei einer Kaskadenfilterfunktion der Quellendatenwert
für den ersten Befehl in der Befehlsfolge der
Eingangsabtastwert von der Eingangsschnittstelle 130 sein,
während der Quellendatenwert für jeden folgenden Befehl das
Ergebnis V des vorhergehenden Befehls sein würde. Bei einem
Aufbau, der parallel mehrere biquadratische
Filterfunktionen aufweist, würde andererseits der
Eingangsabtastwert zuerst in die Registerdatei 126 kopiert
und dann wiederholt als Quellendateiwert für jeden Befehl
verwendet werden.
-
Bei jedem Schritt in der Befehlsfolge können die
Quellendaten so gewählt werden, daß sie das Ergebnis V des
vorhergehenden Befehlsschrittes, die Inhalte des
Akkumulators 120, einen ausgewählten Wert von der
Registerdatei 126, die Inhalte eines der Zwischenregister
122 und 124, die Inhalte jedes Kanals des Datenspeichers
128 mit seriellem Zugriff oder die den momentanen
Abtastwert, der über die Eingangsschnittstelle 130
eingegeben wird, einschließen. Die Werte X&sub0;, X&sub1; und X&sub2; und
in manchen Fällen die Quellendaten werden implizit durch
den speziellen Befehl, der ausgeführt wird, ausgewählt.
-
Jeder Befehl kann auch den Akkumulator 120 so steuern, daß
dieser keine Aktionen unternimmt, mit Ausnahme des Haltens
seiner momentanen Inhalte; auf Null zurückgesetzt wird; den
Ergebniswert V zu seinen momentanen Inhalten hinzuaddiert;
den Wert V anstelle seiner momentanen Inhalte lädt; einen
ausgewählten Wert von der Registerdatei 126 zu seinen
momentanen Inhalten hinzuaddiert; einen ausgewählten Wert
von der Registerdatei 126 anstelle seiner momentanen
Inhalte lädt; den momentanen Eingangsabtastwert von der
Schnittstelle 130 anstelle seiner momentanen Inhalte lädt;
oder die Summe aus diesem Abtastwert und dem Ergebnis V vom
vorhergehenden Befehlsschritt anstelle seiner momentanen
Inhalte lädt.
-
Irgendein ausgewählter Speicherplatz in der Registerdatei
126 kann belegt werden mit: dem momentanen Ergebnis V; den
Inhalten des Akkumulators 120; den Inhalten irgendeines
ausgewählten Speicherplatzes in der Registerdatei 126
selbst; den Inhalten eines der beiden Zwischenregister 122
und 124 oder eines der beiden Kanäle im Datenspeicher 128;
oder dem momentanen Eingangsabtastwert von der
Schnittstelle 130. Das Multiplikanden-Register 116 kann
gleichfalls mit irgendeinem dieser Werte geladen werden
oder seine momentanen Inhalte beibehalten.
-
Die Ausgangsschnittstelle 132 kann mit einem
Ausgangsabtastwert, der irgendeinen dieser gleichen Werte
aufweist, und zwar mit Ausnahme des Eingangsabtastwertes,
versorgt werden oder auch inaktiv bleiben.
-
Es ist ersichtlich, daß diese Optionen es ermöglichen, eine
breite Vielfalt von Signalverarbeitungsfunktionen durch
geeignete Wahl der Verbindungsmuster und ihrer Reihenfolge
zu realisieren. Als Beispiel werden zwei spezielle
Filterfunktionen beschrieben, um die Arbeitsweise des
Prozessors 10 zu verdeutlichen.
-
Das erste Beispiel betrifft eine biquadratische
Filterfunktion, die als Baustein für viele Filter,
einschließlich Hochpaß-, Tiefpaß- und Bandpaßfilter
verwendet wird und schematisch in Fig. 5a unter Verwendung
einer Standardsignalverarbeitungsschreibweise dargestellt
ist. Dies kann mit Hilfe des Prozessors 10 mit einem
iterativen Befehlszyklus realisiert werden, der zwei
Befehle enthält, von denen der erste Zwischenergebnisse von
vorhergehenden Iterationen verwendet.
-
Während des ersten Befehls stellt das Kreuzschienennetzwerk
110 die folgenden Verbindungen her, um mit der Berechnung
eines neuen Wertes zu beginnen und um auch den in der
vorhergehenden Iteration berechneten Abtastwert aus zugeben.
Eingang Ausgang
-
Somit wird der Eingangsabtastwert mit γ&sub1; multipliziert,
das Zwischenergebnis von der vorhergehenden Iteration (das
in dem Datenspeicher 128 gehalten wird) mit α&sub1;
multipliziert und das Zwischenergebnis von der Iteration
vor dieser (auch im Datenspeicher 128) mit β&sub1;
multipliziert, wobei α&sub1;, β&sub1; und γ&sub1; vom Speicher 12 zur
Verfügung gestellt wurden. Gleichzeitig werden diese
früheren Zwischenergebnisse in die Zwischenregister 122 und
124 zur Verwendung während des zweiten Schrittes der
Iteration kopiert.
-
Bei diesem zweiten Schritt wird der aktuelle
Ausgangsabtastwert berechnet, wobei das
Kreuzschienennetzwerk 110 die folgenden Verbindungen
tätigt:
Eingang Ausgang
-
Das Zwischenergebnis V vom ersten Befehl wird sowohl mit β&sub2;
multipliziert als auch dem Datenspeicher 128 zur Verwendung
bei der nächsten Iteration zugeführt; das Zwischenergebnis
von der vorhergehenden Iteration wird mit α&sub2; multipliziert
und ebenso zum Datenspeicher 129 zurückgeführt; und das
Zwischenergebnis der Iteration vor dieser wird mit γ&sub2;
multipliziert.
-
Das neue Ergebnis vom Multiplizierer 112 wird der
Substitutionsschaltung 118 zugeführt, von der es als Wert V
während des ersten Befehls der folgenden Iteration der
Ausgangsschnittstelle 132 zugeführt wird.
-
Der erste Befehl jeder Iteration realisiert praktisch die
Pole der Filterkennlinie, während der zweite die Nullen der
Kennlinie realisiert (siehe Fig. 5b) Die tatsächlichen
Filterwerte, wie z. B. die Bandbreite und die
Mittenfrequenz des Durchlaßbereichs werden durch die Werte
der Koeffizienten α, β und γ bestimmt, die bei jedem
Befehl verwendet werden. Der γ-Koeffizient wird in diesem
Fall einfach als Skalierungs- oder Verstärkungsfaktor
verwendet. Die Werte α und β für den ersten Befehl würden
gemäß folgenden Gleichungen
-
und für den zweiten Befehl gemäß den folgenden Gleichungen
-
berechnet.
-
In beiden Fällen gilt R= 2πf/Fs und r=e-π·b/Fs,
wobei f die gewünschte Mittenfrequenz;
-
Fs die Frequenz, mit der das Eingangssignal vom
Wandler 18 abgetastet wird; und
-
b die gewünschte Bandbreite ist.
-
Das zweite Beispiel stellt ein Allpol-Bandpaßfilter dar,
dem ein Gleichrichter und eine Glättungsschaltung, wie in
Fig. 6a gezeigt ist, folgt. Dies erfordert drei Befehle für
deren Realisierung, wobei der erste bewirkt, daß das
Kreuzschienennetzwerk die folgenden Verbindungen erstellt:
Eingang Ausgang Egal
-
Der erste Zwischenwert wird berechnet aus dem
Eingangsabtastwert, den beiden entsprechenden
vorhergehenden Zwischenwerten (in dem Datenspeicher 128
gehalten) und den Koeffizienten α&sub1;, β&sub1; und γ&sub1; für diesen
Befehl, wie für das obige erste Beispiel. Gleichzeitig wird
das Ergebnis von der vorhergehenden Iteration der
Ausgangsschnittstelle 132 zugeführt und ebenso dem
Datenspeicher 128 zur zeitweiligen Speicherung. Der
entsprechende Zwischenwert von der vorhergehenden Iteration
wird (vorläufig) zu dem Zwischenregister 122 als
vorbereitende Maßnahme bewegt, um diesen in den
Datenspeicher 128 zur Verwendung bei diesem ersten Befehl
in der folgenden Iteration zurückzustellen.
-
Der zweite Befehl stellt ein Verbindungsmuster her, das dem
ersten sehr ähnlich ist:
Eingang Ausgang
-
Die Hauptunterschiede bestehen darin, daß X&sub0; nun das
Zwischenergebnis vom ersten Befehl ist, und daß der
Datenspeicher 128 das vorhergehende erste Zwischenergebnis
empfängt, das bereit zur Verwendung bei dem ersten Befehl
der nächsten Iteration ist, während das Register 122 das
neue Zwischenergebnis empfängt, und zwar ebenso für die
nachfolgende Übertragung zum Datenspeicher 128.
-
Der dritte Befehl vollendet die Iteration und errichtet
ebenso die erforderlichen Verbindungen im
Kreuzschienennetzwerk 110 wobei der Befehlsdecodierer 108
den Multiplizierer 112 veranlaßt, daß an seinem X&sub2;-Eingang
empfangene Signal (das Zwischenergebnis des zweiten
Befehls) selektiv zu invertieren, um den Absolutwert zu
erzeugen, was die Gleichrichterfunktion realisiert. Die
Verbindungen sind folgende:
Eingang Ausgang ABS
-
Das Endergebnis wird der Ausgangsschnittstelle 132
zugeführt und im Datenspeicher 128 während des ersten
Befehls der nächsten Iteration gespeichert. Der γ&sub3;-
Koeffizient für den X&sub0;-Eingang wird für den dritten Befehl
auf 0 (Null) gesetzt, da das X&sub0;-Eingangssignal während
dieses Befehls nicht erforderlich ist.
-
Die Werte der drei Koeffizienten werden für die drei
Befehle geeignet gewählt, um die gewünschten
Filterkenndaten zu erzeugen. Für die ersten beiden Befehle
werden sie von der erforderlichen Filterfrequenz, dem
erforderlichen Verstärkungsfaktor und der erforderlichen
Bandbreite wie für den ersten (Pole) Befehl der
biquadratischen Filterfunktion abgeleitet. Für den dritten
Befehl ist α&sub3; gleich -r, während β&sub3; der erforderliche
Verstärkungsfaktor der Tiefpaßfilter (Glättungs)-Stufe ist.
-
Falls die Realisierung einer Quadrierfunktion in der
Endstufe des zweiten Beispiels als Alternative zu einer
Vollweggleichrichtung erwünscht ist, kann das
Multiplikanden-Register 116 verwendet werden. Der zweite
Befehl würde modifiziert werden, um dieses Register (der M-
Ausgang des Kreuzschienennetzwerkes 110) vom Datenspeicher
128 (D-Eingang des Netzwerkes 110) zu laden. Somit würden
für den dritten Befehl das Zwischenregister 122 (B) und das
Multiplikanden-Register 116 die gleichen verzögerten
Zwischenwerte von dem zweiten Befehl der vorhergehenden
Iteration enthalten. Bei dem dritten Befehl würde der X&sub0;-
Eingang des Multiplizierers 112 so gekoppelt werden, daß
die Inhalte des Zwischenregisters 122 (B) empfangen werden;
der γ&sub3;-Wert würde der spezielle Wert sein, der das
Substituieren bzw. Ersetzen der Inhalte des Multiplikanden-
Registers 116 durch den γ-Koeffizienten bewirkt; und β&sub3;
würde auf 0 gesetzt werden, um die Wirkung des X&sub2;-Einganges
zu unterdrücken. Somit würden die gleichen Werte in dem
Zwischenregister 122 und dem Multiplikanden-Register 116
miteinander multipliziert werden, was das Quadrat ihrer
Inhalte ergeben würde. Es sollte bemerkt werden, daß diese
Modifikation dazu führen würde, daß das Ausgangssignal von
der Iteration um die Dauer einer Iteration im Vergleich zu
dem nicht modifizierten Verfahren verzögert würde.
-
Die obigen Beispiele gehen davon aus, daß die Verzögerung
im Datenspeicher geeignet festgesetzt wurde. Im ersten Fall
würde diese Verzögerung eine Befehlsperiode ausmachen,
während im zweiten Beispiel diese zwei Befehlsperioden
ausmachen würde.
-
Die meisten der Schaltkreiselemente, die in Fig. 2 gezeigt
und vorstehend beschrieben wurden, beruhen auf bekannten
Techniken und Konstruktionen für logische Schaltungen, so
daß diese rasch von einem Durchschnittsfachmann erstellt
werden können. Sie Substitutionsschaltung 118 hingegen
weist eine spezielle Konstruktion auf und wird deshalb mit
Bezug auf Fig. 7 detaillierter beschrieben.
-
Betrachtet man Fig. 7, so wird das Ergebnis vom
Multiplizierer 112 einem Eingang eines Vier-zu-Eins-
Multiplexers 180 zugeführt, der eine Sättigungsfunktion
bereitstellt. Die anderen Eingänge zu diesem Multiplexer
stellen konstante Signale dar, die +1, -1 und 0
repräsentieren. Der Steuereingang des Multiplexers 180 wird
durch Ausgangssignale von einem ROM 182 angesteuert, das
als Eingangssignale empfängt: den Teil des Befehls vom
Speicher 12, der die durch diesen Befehl zu realisierende
Funktion definiert (d. h. den Teil, der auch das
Kreuzschienennetzwerk 110 steuert); Signale, die das
Vorzeichen des Wertes anzeigen, der als "Quellen"-Datenwert
zugeführt wird; das Vorzeichen des vom Multiplizierer 112
(Leitung 50) erzeugten Ergebnisses; und das Überlaufsignal
(Leitung 52). Das ROM 182 wird mit Steuersignalen geladen,
die jeder möglichen Kombination von Vorzeichen- und
Überlaufmerkern für jeden Befehl entsprechen und dem
Sättigungs-Multiplexer 180 und zwei weiteren Multiplexern
184 und 186 zugeführt werden, um auszuwählen, welches ihrer
Eingangssignale zu ihren Ausgängen gekoppelt wird. Somit
hat jedes spezielle Muster von Merker (Flag)-Signalen, das
dem ROM 182 für jeden möglichen Befehl zugeführt wird, eine
bestimmte entsprechende Auswahl der Eingänge der
Multiplexer 180, 184 und 186 zur Folge. Die Steuersignale
vom ROM 182 werden den Multiplexern 180, 184 und 186 über
entsprechende Signal- bzw. Zwischenspeicher 188, 190 und
192 zugeführt.
-
Der (Vier-zu-Eins-) Multiplexer 184, der das
Rückkopplungssignal F erzeugt, empfängt an seinen Eingängen
den Ausgang des Multiplexers 180 und drei konstante
Signale, die +¼, -¼ und 0 darstellen. Der (Sechs-zu-Eins-)
Multiplexer 186, der sein Ausgangssignal einem seriellen
Addierer 194 zuführt, empfängt an seinen Eingängen die
Inhalte der Zwischenregister 122 und 124, die Inhalte der
Registerdatei 126, die komplementierten Inhalte des
Zwischenregisters 124, die Inhalte der Zwischenregister 122
und 124, die gemäß C+2B oder C-2B abhängig von einem
Steuersignal auf einer Leitung 196 vom ROM 182 kombiniert
sind, und ein konstantes Signal, das 0 darstellt.
-
Der serielle Addierer kombiniert das Ausgangssignal vom
Addier-Multiplexer 186 mit dem des Sättigungs-Multiplexers
180, um den aktuellen Wert zu erzeugen, der das Ergebnis
der Ausführung eines Befehls durch den Prozessor 10 bildet.
Dieser Wert wird dem Kreuzschienennetzwerk 110 nach
Ausführung des Befehls zugeführt, während der
Multiplizierer 112 sein Ergebnis abgibt und die neuen Daten
für den nächsten Befehl empfängt.
-
Der Hauptzweck der Substitutionsschaltung 118 besteht in
der Korrektur von Überläufen durch Substituieren von
Sättigungswerten +1 oder -1, wie es angemessen ist. Ist
somit der Überlauf-Merker gelöscht (kein Überlauf), so wird
das Ergebnis des Multiplizierers durch den Sättigungs-
Multiplexer 180 ausgewählt und vom Addier-Multiplexer 186
wird 0 ausgewählt, so daß der Addierer 194 das Ergebnis des
Multiplizierers ungeändert zuführt. Falls der Überlauf-
Merker jedoch gesetzt ist, setzt der Sättigungs-Multiplexer
180 +1 oder -1 an die Stelle des Ergebnisses des
Multiplizierers, und zwar entsprechend dem Vorzeichen des
Ergebnisses und dieser Wert wird dafür vom Addierer 194
ausgegeben. In jedem Fall wählt der Rückkopplungs-
Multiplexer 184 das Ausgangssignal des Sättigungs-
Multiplexers 180 aus.
-
Ein anderes Beispiel für die Verwendung der
Substitutionsschaltung 118 stellt die Realisierung einer
Nulldurchgangserfassung dar. Die Arbeitsweise der Schaltung
wird in der folgenden Tabelle zusammengefaßt:
Quelle Vorzeichen Ergebnis Vorzeichen Überlauf Multiplexer
-
Solange die Vorzeichen der Quelle und des Ergebnisses
gleich sind, wird kein Ausgangssignal erzeugt, jedoch ein
kleiner Wert mit dem gleichen Vorzeichen zurückgeführt und
mit dem nächsten Eingangsabtastwert summiert. Falls sich
die Vorzeichen der Quelle und des Ergebnisses unterscheiden
(was einen Nulldurchgang anzeigt), so wählt der Sättigungs-
Multiplexer 180 +1 oder -1 aus, um somit ein Ausgangssignal
auszugeben, das entsprechend dem Vorzeichen des
Quellensignals ausgewählt ist. Somit läuft eine ins
Positive gehende Änderung auf einen positiven Impuls als
Ausgangssignal hinaus, während eine ins Negative gehende
Änderung einen negativen Impuls zur Folge hat.
-
Falls die Realisierung einer biquadratischen Filterfunktion
mit Nullen bei Z=+1 und -1, wofür α=0 und β=+1 ist,
erforderlich ist, kann die Substitutionsschaltung 118 zur
Verringerung der Anzahl an Befehlen von zwei auf einen
verwendet werden. Nachdem der Multiplizierer 112 die
Berechnung für die Pole der Filterkennlinie (siehe ersten
Befehl beim oben erwähnten ersten Beispiel) durchgeführt
hat, würde der Addier-Multiplexer 186 vom ROM 182 so
gesteuert, daß er das Signal vom Zwischenregister 124 (C)
auswählt, wobei dieses zu dem Ergebnis des Multiplizierers
(über den Multiplexer 180) mit Hilfe des seriellen
Addierers 194 hinzuaddiert würde, um sofort den endgültigen
Ausgangswert zu erzeugen, der die beiden Nullen
einschließt. Gleichzeitig würde der Rückkopplungs-
Multiplexer 184 so gesteuert werden, daß er das Ergebnis
des Multiplizierers selbst (über den Multiplexer 180) zur
Rückführung zum Datenspeicher 128 zur Verwendung bei der
folgenden Iteration auswählt.
-
Viele unterschiedliche Anwendungen des Prozessors 10 unter
Verwendung verschiedener Kombinationen von
Verbindungsmustern werden dem Durchschnittsfachmann auf dem
Gebiet der digitalen Signalverarbeitung einfallen, und zwar
angesichts der erheblichen Betriebsflexibilität, die er
vorsieht; z. B. rekursive Filter (sowohl in Parallel- wie
auch Kaskadenform), Kettenfilter mit oder ohne Abgriffe,
Filter mit endlicher Impulsantwort und Dezimatoren.
Außerdem können Modifikationen und Weiterentwicklungen
durchgeführt werden; so können z. B. die verschiedenen
Register und Speicher Wortlängen aufweisen, die für den
erforderlichen Auflösungsgrad ausgewählt sind, oder
variable Wortlängen aufweisen, wobei die Länge in
irgendeinem bestimmten Fall durch Befehle im Speicher 12
spezifiziert wird. Im letztgenannten Fall würde ein Paar
Schieberegister mit variabler Länge in Reihe mit dem RAM im
Datenspeicher 128 geschaltet sein, um zusätzliche wählbare
Verzögerungen in Schritten von 4 Bit von 0 bis 28 Bit
vorzusehen, so daß das Wort in Zuwachsraten von 4 Bit
eingestellt werden kann.