-
Die vorliegende Erfindung betrifft
einen Prozessor zum Durchführen
einer schnellen Walsh-Transformation ("FWT"),
beispielsweise eine Schaltungsstruktur auf einem Silizium-Chip.
-
Eine Walsh-Transformation ist eine
mathematische Operation, die eine Menge aus M = 2N Zahlen in vorbestimmten
Mengen von Kombinationen durch Addieren oder Subtrahieren derselben
in eine andere Menge von M Zahlen umwandelt. Jede Menge von Kombinationen
umfasst im wesentlichen eine Aufsummierung aller M ursprünglichen
Zahlen, wobei jedoch ihre Vorzeichen jeweils gemäß einem entsprechenden vorbestimmten
Muster gewählt
werden. Es können
M unterschiedliche Mengen von Kombinationen, die M vorbestimmten
Vorzeichenmustern entsprechen, berechnet werden, welche die wünschenswerte
Eigenschaft besitzen, orthogonal zu sein, d.h., dass ein Vergleich
irgendeines Vorzeichenmusters mit irgendeinem anderen Vorzeichen gleiche
Vorzeichen in genau der Hälfte
der Stellen und ungleiche Vorzeichen in der anderen Hälfte zeigt.
-
Die gegenseitige Orthogonalität der Vorzeichenmuster
ermöglicht
es, die Berechnung von M Kombinationen aus M Werten in eine Berechnung von
N·(M/2)
Summen und N·(M/2)
Differenzen zu zerlegen, was eine signifikante Verminderung der Anzahl
der Additionen und Subtraktionen von M2 auf M·N darstellt. Eine effiziente
Struktur zum Ausführen dieser
Kombinationen wird unten genauer beschrieben.
-
Die vorliegende Erfindung ist insbesondere in
zellulären
Codemultiplex-Funktelefonkommunikationssystemen
mit Mehrfachzugriff ("CDMA") nützlich, wie
etwa dem verbesserten, auf in der Reihenfolge der Signalstärke aufeinanderfolgenden
Signalsubtraktionen mehrerer CDMA-Signale gründenden CDMA-Demodulationsschema,
das in der nicht vorveröffentlichten
WO92/11716 (=
DE69128927
T2 ) beschrieben ist. Eine Ausführungsform der vorliegenden
Erfindung, welche einhundertachtundzwanzig serielle sechzehn-Bit-Werte verarbeitet,
ist insbesondere in einem derartigen System nützlich.
-
Die Kapazitätsgrenzen und andere Aspekte von
CDMA-Kommunikationssystemen werden von Gilhousen et al. in dem Aufsatz "On the Capacity of
a Cellular CDMA System" in
IEEE Transactions on Vehicular Technology, Band 40, S. 303-312 (Mai
1991) erörtert.
Wie in der oben angegebenen WO92/11716 der Anmelderin weiter ausgeführt, ermöglicht es
CDMA, dass Kommunikationssignale von einer Mehrzahl von Nutzern
sich sowohl in der Zeit als auch in der Frequenz überlappen.
Im Prinzip wird jeder zu übertragende
Informationsdatenstrom einem durch einen Pseudozufallszahlengenerator
erzeugten Datenstrom erheblich höherer
Bit-Rate aufgeprägt.
Der Informationsdatenstrom und der Datenstrom mit einer hohen Bit-Rate
werden durch Multiplikation der beiden Bit-Ströme miteinander erzeugt, was "Codieren" oder "Aufspreizen des Spektrums
des Informationsdatenstroms" genannt
wird. Jedem Informationsdatenstrom oder "Kanal" wird ein nur einmal vergebener und
insofern "einzigartiger" (der der Fach welt
geläufigere
Ausdruck lautet "unique") Aufspreizungs-Code
zugeteilt, der aus vielerlei Gründen
vorteilhafterweise ein Blockfehlerkorrekturcode ist.
-
Eine Anzahl codierter Informationssignale wird
auf Funkfrequenzträgerwellen übertragen
und gemeinsam durch Empfänger
als zusammengesetzte Signale empfangen. Jedes der codierten Signale überlappt
sich sowohl mit allen anderen codierten Signalen als auch mit zum
Rauschen gehörenden
Signalen sowohl in der Frequenz als auch in der Zeit. Durch Korrelieren
eines empfangenen zusammengesetzten Signals mit einem der nur einmal
vergebenen "einzigartigen" Codes kann die entsprechende
Information unter Nutzung des vorliegenden FWT-Prozessors abgetrennt
und decodiert werden.
-
Aus der
US-A-4 839 844 ist
eine Schaltung zum Bilden einer Walsh-Transformierten bekannt, bei der
M Eingangswerte auf paarweise Eingänge von eine Stufe bildenden
M/2 Butterfly-Schaltungen gegeben werden. In der nächstfolgenden
Stufe werden die Ausgangssignale der Butterfly-Schaltungen zu Vierergruppen
zusammengefasst, und in jeder Vierergruppe erfolgt eine Summen-
und Differenzbildung aus den gradzahligen bzw. ungradzahligen Ausgängen der
vorhergehenden Stufe. In der dann folgenden Stufe werden die Ausgangssignale
der vorausgehenden Stufe zu Achtergruppen zusammengefasst und ähnlich verarbeitet
wie die vorausgehende Vierergruppe. Realisiert wird dieser Signalfluss
mit Hilfe eines Pufferspeichers und einer Orthogonal-Transformiereinrichtung,
wobei Letztere Daten aus dem Zwischenspeicher ausliest und sie mit
einem vorbestimmten Drehfaktor multipliziert. In einer konkreten
Ausführungsform
(
4 der US '844) enthält die Transformier-Einrichtung vier
Register zur Aufnahme zweier miteinander zu verknüpfender, imaginärer Eingangswerte.
Diese in den vier Register enthaltende Werte werden durch Addieren
bzw. Subtrahieren miteinander verknüpft, die Ergebnisse werden
in den Pufferspeicher zurückgegeben.
Im Zuge der Verarbeitung werden diese Ergebniswerte dann später wieder
aus dem Pufferspeicher gelesen und der Transformiereinrichtung zugeleitet.
-
Aus der
US-A-3 956 619 ist eine Einrichtung zum
Erzeugen einer Walsh-Transformierten
bekannt, bei dem aus den Eingangswerten zunächst eine Folge von Transformationskoeffizienten
gebildet wird. Die Transformiereinrichtung ist modulartig aufgebaut, wobei
das erste Modul jeweils Paare aus zwei Eingangssignalen subtraktiv
und additiv miteinander verknüpft,
das nächste
Modul Gruppen von jeweils vier Eingangssignalen additiv und subtraktiv
miteinander verknüpft,
das dann folgende Modul jeweils Gruppen von acht Eingangssignalen,
d.h. acht Ausgangssignalen der vorausgehenden Modul-Stufe, miteinander
verknüpft,
usw.
-
Aus Kloken, K.L. [u.a.]: Efficient
FFT Implementation on an IEEE Floating-Point Digital Signal Processor.
In: International Conference on Acoustics, Speech and Signal Processing,
ICASSP-89, Vol.2. New York: IEEE, 1989, Seiten 1302-1305 ist ein
Prozessor zur Ausführung
eines FFT-Algorithmus bekannt. Bei dem Prozessor handelt es sich
um einen Gleitkomma-Prozessor, der innerhalb eines Befehlszyklus
bis zu drei Gleitkommaergebnisse liefern kann. Außer der
FFT kann z.B. auch noch die WHT (Walsh-Hadamard-Transformation)
gebildet werden, indem eine sukzessive Zerlegung in kleinere Transformationen
gleichen Typs erfolgt. Diese kleineren Transformationen werden dann
in mehreren Stufen durch eine Folge von "Butterfly"-Anordnungen errechnet.
-
Der Erfindung liegt die Aufgabe zugrunde,
einen Prozessor zum Erzeugen einer Walsh-Transformierten zu schaffen,
der sich durch eine einfache Struktur und eine vergleichsweise geringe
Anzahl von Bauteilen auszeichnet.
-
Gelöst wird diese Aufgabe durch
die in Anspruch 1 angegebene Erfindung. Vorteilhafte Ausgestaltungen
und Weiterbildung ergeben sich aus den abhängigen Ansprüchen.
-
In einer Ausführungsform sieht die vorliegende
Erfindung einen Prozessor zum Erzeugen einer Walsh-Transformation
durch im wesentlichen gleichzeitiges Berechnen von M Kombinationen
aus M Eingangswerten vor, wobei M = 2N gilt und die Eingangswerte
binäre
Werte in Zweierkomplementdarstellung sind. Der Prozessor weist N
elektrisch in Reihe geschaltete Stufen auf, wobei jede Stufe ein Kreuznetzwerk
(dem einschlägigen
Fachmann auch als "criss-crossnetwork" bekannt) von in
einem vorbestimmten Muster mit einem Satz von M/2 Schmetterlingsflügel-Schaltungen
oder "Butterfly"-Schaltungen elektrisch
verbundenen Leitern aufweist, wobei jede Butterfly-Schaltung eine
Einrichtung zum Berechnen einer Summe und einer Differenz aus zwei entsprechenden,
durch ihr Kreuznetzwerk vorgelegten Werten aufweist, und die Summe
und die Differenz entsprechenden Leitern des Kreuznetzwerks der
nächsten
Stufe vorlegt. Die Eingangswerte werden dem Kreuznetzwerk der ersten
Stufe seriell und mit dem niedrigstwertigen Bit zuerst vorgelegt,
wobei die Walsh-Transformation der Eingangswerte durch die Butterfly-Schaltungen
der N-ten Stufe seriell und im wesentlichen synchron dazu erzeugt
wird.
-
Bezüglich eines Aspektes der Erfindung
umfasst die Recheneinrichtung einen seriellen Addieren und einen
seriellen Subtrahieren,, und der serielle Addieren enthält eine
Einrichtung zum Speichern des durch den Addierer festgestellten Übertragsbits,
und der serielle Subtrahieren enthält eine Einrichtung zum Speichern
eines durch den Subtrahieren festgestellten Übertragsbits.
-
Bezüglich eines anderen Aspektes
der Erfindung weist die Recheneinrichtung einen kombinierten seriellen
Addieren/Subtrahierer auf, der eine Einrichtung zum Speichern eines
Addieren-Übertragsbits
und eine Einrichtung zum Speichern eines Subtrahieren-Übertragsbits
enthält.
-
Die Merkmale und Vorzüge der vorliegenden Erfindung
werden durch Kenntnisnahme der folgenden ausführlichen Beschreibung in Verbindung
mit der Zeichnung erkennbar:
-
1A veranschaulicht
eine schnelle Walsh-Transformation mit M Punkten;
-
1B veranschaulicht
eine schnelle Walsh-Transformation mit acht Punkten;
-
2 ist
ein Blockschaltbild eines seriellen Addierers, der beim Ausführen einer
schnellen Walsh-Transformation benutzt werden kann;
-
2A ist
ein Blockschaltbild für
einen seriellen Subtrahierer, der beim Ausführen einer schnellen Walsh-Transformation
verwendet werden kann.
-
3 ist
ein Blockschaltbild für
einen kombinierten seriellen Addieren/Subtrahierer;
-
3A ist
ein Schaltbild eines Zwei-Wege-Schalters, der in dem kombinierten
seriellen Addieren/Subtrahieren verwendet werden kann;
-
4 veranschaulicht
ein Kreuznetzwerk für eine
schnelle Walsh-Transformation mit sechzehn Punkten.
-
Wenngleich die folgende Beschreibung
in den Zusammenhang mit zellulären
Kommunikationssystemen gestellt wird, welche tragbare oder mobile Funkte lefone
und/oder persönliche
Kommunikationsnetzwerke involvieren, ist es für den Fachmann unmittelbar
einsehbar, dass die vorliegende Erfindung auch im Zusammenhang mit
anderen Anwendungen eingesetzt werden kann.
-
Auf der FWT und der inversen FWT
beruhende Vorrichtungen in zellulären Kommunikationssystemen
sowie einschlägige
Erwägungen
dazu sind in der vorstehend zitierten WO92/11716 enthalten. Der vorliegende
FWT-Prozessor kann als der in jener Druckschrift beschriebene Blockdecoder
eingesetzt werden. Wie untenstehend genauer beschrieben, verarbeitet
eine erfindungsgemäße Vorrichtung
in effizienter Weise M binäre,
seriell mit dem niedrigstwertigsten Bit ("LSB")
zuerst vorgelegte Eingangswerte auf M entsprechenden Leitern oder
Eingängen.
-
Wie in der vorstehend zitierten WO92/11716 beschrieben,
verwenden überlegene
Verfahren zum Spreizen des Spektrums eines Informationssignals eine
Codierung mit Fehlerkorrektur. Wenn ein einzelnes Informations-Bit
bei einem Spreizverhältnis
R in eine Pseudozufallssequenz von R Bits expandiert wird, wird
die Bandbreite gespreizt, ohne dass ein Gewinn durch Codierung mit
Fehlerkorrektur auftritt; diese Technik kann "einfaches Spreizen" genannt werden. Andererseits liefert
das Spreizen eines Blocks von P Informations-Bits mit P > 1 auf eine Pseudozufallssequenz
von P·R
Bits innerhalb des gleichen Spreizfaktors einen Gewinn durch Codieren mit
Fehlerkorrektur.
-
Diese letztgenannte Methode wird "intelligentes Spreizen" genannt, welches
entweder orthogonales oder bi-orthogonales Blockcodieren des zu übertragenden
Informationssignals verwendet. Beim orthogonalen Blockcodieren werden
P zu übertragende
Bits in eines von M = 2P verfügbaren
orthogonalen 2P-Bit-Codeworten konvertiert. Mengen von orthogonalen
Codeworten können,
wie in der WO92/11716 beschrieben, konstruiert werden.
-
Das Decodieren verwendet die Korrelation eines
empfangenen Signals mit allen Mitgliedern aus der Menge orthogonalen
Codeworte, und der Index des die größte Korrelation ergebenden
Codewortes bringt die gewünschte
Information hervor. Wenn beispielsweise die Korrelation eines Signals
mit sechzehn 16- Bit-Codeworten,
die von 0 bis 15 indexiert sind, mit dem zehnten Codewort die größte Korrelation
liefert, ist die gewünschte
Signalinformation das 4-Bit-Binärwort 1010
(d.h. zehn in Binärdarstellung). Ein
derartiger Code wird auch als ein orthogonaler [16,4]-Blockcode
bezeichnet und weist ein Spreizverhältnis R von 16/4 = 4 auf.
-
Falls die komplementären Codeworte
ebenfalls verwendet werden (d.h. die Codeworte, in denen alle Bits
invertiert sind), kann ein weiteres Informations-Bit pro Codewort transportiert werden.
Daher werden fünf
Bits durch Übertragen
eines Codewortes aus sechzehn Codeworten und ihrer sechzehn Komplemente
bei insgesamt zweiunddreißig
Codeworten übertragen.
Dieser Typ der Codierung ist als bi-orthogonale Codierung bekannt.
Für höhere Spreizverhältnisse
kann ein [128,8] bi-orthogonaler Blockcode verwendet werden, der
ein Spreizverhältnis
von 16:1 auf weist. Tatsächlich
können
bi-orthogonale [256,9], [512,10],..., [32768,16],... Blockcodes
verwendet werden.
-
Darüber hinaus kann ein Verschlüsselungs-Code
durch Modulo-Zwei-Addition zu dem Blockcode hinzugefügt werden,
um sicherzustellen, dass die Codierung für jedes Signal unterschiedlich ist.
Der Verschlüsselungs-Code
kann sich sogar zufallsartig von Block zu Block ändern. Die Modulo-Zwei-Addition
eines Verschlüsselungs-Codes
entspricht der Anwendung einer Achsendrehung in einem Galois-Feld.
Der Verschlüsselungs-Code
kann beim Empfänger
durch Modulo-Zwei-Addition des korrekten Verschlüsselungs-Codes entschlüsselt werden,
um die Achsen wieder mit den Codeworten zur Deckung zu bringen.
-
Bezeichnenderweise kann ein zusammengesetztes
Eingangssignal durch die FWT mit allen orthogonalen Blockcodeworten
in einer Menge gleichzeitig effektiv korreliert werden. Im Falle
eines [128,7]-Codes werden beispielsweise einhundertachtundzwanzig
Abtastpunkte eines zusammengesetzten Eingangssignals in ein Walsh-Spektrum
mit 128 Punkten transformiert, in welchem jeder Spektralpunkt den
Wert der Korrelation des zusammengesetzten Signals mit einem entsprechenden
Codewort darstellt. Die Werte des Walsh-Spektrums stellen den Grad der Korrelation
zwischen dem empfangenen zu sammengesetzten Signal mit 128 Punkten
und jedem der einhundertachtundzwanzig orthogonalen Codeworte dar.
Der Maximalwert im Walsh-Spektrum identifiziert das richtige Codewort,
dessen Index sieben Informations-Bits transportiert (orthogonale
Codierung). Falls das Vorzeichen ebenfalls identifiziert werden
kann, werden insgesamt acht Bits transportiert (bi-orthogonale Codierung).
Die Werte der anderen Spektralkomponenten gehen auf Rauschen und die
in dem zusammengesetzten Signal anzutreffenden andersartig verschlüsselten
Signale zurück.
-
In realen CDMA-Kommunikationssystemen kann
Orthogonalität
nur dann aufrechterhalten werden, wenn der relative (Zeit-)Abgleich
zwischen Vorzeichenmustern streng aufrechterhalten wird; in beweglichen
Kommunikationssystemen, wie etwa zellulären Systemen, kann der Zeitabgleich
schwierig zu erzielen sein, wie in der WO92/11716 beschrieben ist.
Wenn die Orthogonalität
des Codes nicht garantiert werden kann, können rauschbasierte Signale
erzeugt werden; im Vergleich mit den Energien der ursprünglich codierten
Signale ist die Energie der Rauschsignale aber für gewöhnlich klein.
-
Nichtsdestoweniger ist es infolge
der gegenseitigen Orthogonalität
der Vorzeichenmuster möglich,
die Berechnung von M Kombinationen von M Werten in eine Berechnung
von N·(M/2)
Summen und N·(M/2)
Differenzen zu zerlegen, was eine signifikante Verminderung von
M2 auf M·N
Additionen und Subtraktionen darstellt. Eine derartige Zerlegung wird
für eine
allgemeine FWT mit M Punkten durch ein in 1A dargestelltes Netzwerk 10 veranschaulicht.
Die FWT weist eine Struktur auf, die an die schnelle Fourier-Transformation
erinnert, und beide Algorithmen sind wohlbekannt.
-
Wie in 1A dargestellt,
werden M Eingangswerte S0 bis SM_1 mit M ≥ 16
in einer ein erstes Kreuznetzwerk 11-1 und einen ersten
Satz 12-1 von Butterfly-Schaltungen aufweisenden ersten
Stufe in Paaren kombiniert. Jede Butterfly-Schaltung berechnet die
Summe und die Differenz eines entsprechenden Paares von Eingangswerten;
wie untenstehend beschrieben, können
Paare von seriellen Addierern und seriellen Subtrahierern oder kombinierte
serielle Addierer/Subtrahierer verwendet werden, um diese Berechnungen
auszufüh ren.
Die Anzahl der Butterfly-Schaltungen oder Paare von Addieren und
Subtrahieren, die in der ersten und jeder nachfolgenden Stufe verwendet
werden, beträgt
M/2; beispielsweise werden vierundsechzig Paare oder kombinierte
serielle Addieren/ Subtrahieren in jeder Stufe verwendet, wenn M=128
gilt.
-
Die M Zwischenwerte 1I0 bis 1IM_1, die von der ersten Stufe erzeugt werden,
werden in einer ein zweites Kreuznetzwerk 11-2 und einen
zweiten Satz 12-2 von Butterfly-Schaltungen, die beide
vorzugsweise mit den jeweils entsprechenden der ersten Stufe identisch
sind, aufweisenden zweiten Stufe kombiniert. Die M Zwischenwerte 2I0 bis 2IM_1, welche durch die
zweite Stufe hergestellt werden, werden in einer ein drittes Kreuznetzwerk
und einen Satz Butterfly-Schaltungen, welche vorzugsweise mit denen
in der ersten und der zweiten Stufe identisch sind, aufweisenden
dritten Stufe kombiniert usw., bis zur letzten, N-ten Stufe, welche
ein N-tes Kreuznetzwerk 11-N und einen N-ten Satz 12-N von
Butterfly-Schaltungen aufweist. Die Ausgänge der letzten Stufe der Butterfly-Schaltungen
sind die Walsh-Spektralkomponenten Wo bis WM_1. Für
einhundertachtundzwanzig Eingangswerte würde ein FWT-Prozessor, wie veranschaulicht,
sieben Stufen aufweisen.
-
Die Eingangs-, Zwischen- und Ausgangswerte
können
durch eine beliebige Numerierungskonvention identifiziert werden;
die Verbindungen zwischen den aufeinanderfolgenden Stufen von Butterfly-Operationen
sind jedoch kritisch bezüglich
der korrekten Berechnung der FWT. Unter einer geeigneten Konvention,
wie sie in 1A veranschaulicht
ist, werden Eingänge,
die um die Hälfte
der Gesamtanzahl M der Eingangs werte differierende Indexwerte aufweisen,
kombiniert. Als ein spezifisches Beispiel zeigt 1B ein FWT-Netzwerk für M=8, in welchem Eingänge, die
sich im Indexwert um vier unterscheiden (d.h. S0 und
S4, S1 und S5; S2 und S6 sowie S3 und S7), in der ersten Stufe aus einem Kreuznetzwerk 11-1' und einem ersten
Satz 12-1' von Butterfly-Schaltungen
kombiniert werden.
-
Die Ergebnisse der durch den ersten
Satz 12-1 von Butterfly-Schaltungen implementierten Summen-
und Differenzen-Berechnungen, welche als 1I0 bis 1IM_1 (als erste "Zwischenergebnisse") bezeichnet werden können, werden
in der folgenden Reihenfolge für
die Eingabe in die zweite Stufe von Butterfly-Schaltungen eingerichtet:
1I0 = S0 +
SM/2
1I1 =
S0 – SM/2
1I2 = S1 + S1+M/2
1I3 = S1 – S1+M/2
1I4 =
S2 + S2+M/2
usw.
-
Unter Verwendung dieser Konvention
wird die Selektion von Paaren von ersten Zwischenwerten durch das
zweite Kreuznetzwerk zur Kombination durch die zweite Stufe in zweite
Zwischenwerte nach genau derselben Regel ausgeführt, d.h. durch einen Indexwertunterschied
von M/2 getrennte Zwischenpaare werden in die Summen-Differenzen-Schaltungen
oder Butterfly-Schaltungen der zweiten Stufe eingespeist. Bei dem
in 1B dargestellten
Netzwerk werden daher 1I0 und 1I4 durch den zweiten
Satz 12-2' von
Buterfly-Schaltungen in 2I0 und 2I1 kombiniert; 1I1 und 1I5 werden in 2I2 und 2I3 kombiniert; 1I2 und 1I6 werden in 2I4 und 2I5 kombiniert;
und 1I3 sowie 1I7 werden in 2I6 und 2I7 kombiniert. Dieselbe Regel wird für die dritte
und jede nachfolgende Stufe verwendet; bei dem in 1B veranschaulichten Beispiel-Netzwerk
umfasst die dritte Stufe ein drittes Kreuznetzwerk 11-3' und einen dritten
Satz 12-3' von
Butterfly-Schaltungen
und erzeugt die Ausgänge
W0 bis W7.
-
In Übereinstimmung mit einem Aspekt
der vorliegenden Erfindung sind Paare von seriellen Additions-Schaltungen
und seriellen Subtraktions-Schaltungen in den Butterfly-Schaltungen
zum Berechnen der notwendigen Summen und Differenzen vorgesehen,
und diese Schaltungen verarbeiten seriell, mit dem LSB zuerst, vorgelegte
Binärwerte
in Zweierkomplementdarstellung. 2 zeigt
einen geeigneten seriellen Addierer 120 mit einer Anzahl
herkömmlicher
NAND-Gatter 122-128, Negatoren 130-136 und
Schalter, der gleichzeitig zwei an beiden seriellen Eingängen A,
B vorgelegte Bits und ein an einem Übertrags-Eingang C vorgelegtes Übertragsbit
entgegennimmt. Wie in 2 angezeigt,
wirkt der Eingang B als ein Steuersignal für einen Schalter SW-1 und der
Eingang C wirkt als ein Steuersignal für einen Schalter SW-2. Wenn
eines der Steuersignale aktiv (d.h. logisch HIGH oder "1") ist, wird der entsprechende Schalter,
der bevorzugterweise als ein Feldeffekt-Transistor ("FET") implementiert werden kann,
in die in der Fig. angezeigte "1"-Stellung gebracht.
Der Addieren 120 gibt vorteilhafterweise die Ein-Bit-Summe
der Eingänge
A, B und C auf dem Ausgang D und ein neues Übertragsbit auf den Übertrags-Ausgang E im wesentlichen
ohne Verzögerung aus.
-
Das auf dem Übertrags-Ausgang E dargebotene
neue Übertragsbit
wird durch einen Schalter SW-3, der ein zwischen jedem Wort (das,
wie oben beschrieben, 16 Bit lang sein kann) zur Initialisierung des Übertragsbits
betätigter
FET sein kann, geleitet und zeitweise in einem Speicherelement gespeichert,
das vorteilhaft ein dynamisches Logik-Netzwerk M mit einem Paar
von Negatoren 134, 136 und einem Trio von Schaltern
SW-4, SW-5 und SW-6, die ebenso FETs sein können und die durch ein geeignetes,
an einem CLOCK-Eingang vorgelegtes und mit den an den Eingängen A,
B vorgelegten Bits synchronisierten digitalen Taktsignal gesteuert
werden, aufweist. Das Übertrags-Speicherelement
kann ebenso durch andere Vorrichtungen implementiert werden, wie
etwa eine geeignete Zwischenspeicher-Schaltung, ein Flip-Flop oder
eine andere Speicherzelle. Für
Signale, die schnell genug sind, d.h. kürzer als wenige Zehntel von
Nanosekunden, wird das Speichernetzwerk M vorzugsweise als dynamische
Logik realisiert, die die aus einer einer Siliziumstruktur inhärent innewohnenden
Kapazität
herrührenden
Ausbreitungsverzögerung
benutzt. Der Betrieb des seriellen Addierers 120 läuft wie
folgt ab.
-
Um den Inhalt des Übertrags-Speichernetzwerks
M zu initialisieren, werden die Schalter SW-3 bis SW-5 unmittelbar
vor dem Vorliegen gültiger niedrigstwertiger
Bits auf den Eingängen
A, B durch die Steuersignale CARRY S/R und CLOCK in Stellungen gebracht,
die zu den in 2 dargestellten Stellungen
entgegengesetzt sind. Bei einem System, in welchem Eingangs-Bits
mit einer Rate von dreizehn Megahertz (13 MHz) vorgelegt werden,
können die
Schalter SW-3 bis SW-5 (der Schalter SW-6 braucht zu diesem Zeitpunkt
nicht betätigt
zu werden) innerhalb von fünfundzwanzig
Nanosekunden (d.h. einem Drittel einer Bit-Periode) vor den gültigen LSBs betätigt werden.
Sobald gültige
LSBs an den Eingängen
A, B vorgelegt sind, begeben sich die Schalter SW-3 bis SW-5 zurück in die
in 2 gezeigten Stellungen.
Somit wird der Initialisierungswert-Eingang F in das Übertrags-Speichernetzwerk
M geladen und dem Übertrags-Eingang
C zu der gleichen Zeit vorgelegt, zu der die gültigen LSBs den Eingängen A,
B vorgelegt werden.
-
Nach dem Abwarten einer geeigneten
Zeitspanne zur Bildung der gültigen
Summen- und Übertragsbits
an den Ausgängen
D, E, beispielsweise ungefähr
fünfzig
Nanosekunden oder zwei Drittel einer Bit-Periode, werden die Schalter
SW-4 bis SW-6 durch das CLOCK-Signal in zu den in 2 gezeigten Stellungen entgegengesetzte
Stellungen betätigt, um
das neue Übertragsbit
in das Übertrags-Speichernetzwerk
M zu laden. Danach werden diese Schalter in die dargestellten Stellungen
zurückverbracht,
sobald die auf das niedrigstwertigste Bit folgenden Bits an den
Eingängen
A, B vorgelegt werden, um das neue Übertragsbit an dem Übertrags-Eingang
C vorzulegen. Diese Reihenfolge von Operationen wird bis zur Bildung
von gültigen
Summen- und Übertrags-Ausgängen aus
den an den Eingängen
A, B vorgelegten höchstwertigen
Bits fortgesetzt. Ungefähr
im letzten Drittel der Bit-Periode betätigen die CARRY S/R- und CLOCK-Signale
die Schalter SW-3 bis SW-5, um den Übertragswert wie oben beschrieben
zu initialisieren, wodurch das durch die Summe der höchstwertigen
Bits gebildete Übertragsbit
verworfen wird. Danach ist der Addieren zur Vorlage der nächsten Eingabeworte
bereit.
-
Die Schalter SW-3 bis SW-6 können zu
geringfügig
unterschiedlichen Zeiten betätigt
werden, insoweit dies notwendig ist, um einen einwandfreien Betrieb
der Schaltung sicherzustellen, können
aber den noch durch einen gemeinsamen Zeitsteuer-Signalgenerator
angesteuert werden. Derartige relative Verzögerungen können leicht durch Vorsehen
von verlustbehafteten Polysilizium-Pfaden zum Verbinden der Steuersignale
oder durch unterschiedliche Betätigungs-Schwellenwerte
für die
Schalter implementiert werden.
-
Der Inhalt des Übertrags-Speichers wird normalerweise
zum Beginn einer seriellen Additionssequenz auf "0" initialisiert,
aber bei einem anderen Aspekt der Erfindung kann das Übertragsbit
auf "1" initialisiert werden,
um die Im plementation eines seriellen Subtrahierers wie untenstehend
beschrieben zu vereinfachen.
-
Ein serieller Subtrahieren zum Berechnen von
A-B kann leicht unter Verwendung eines seriellen Addierers der in 2 gezeigten Art und einer
geeigneten Einrichtung zum Negieren der am Eingang B vorgelegten
Werte gebildet werden. Somit würde
der serielle Addierer den Ausdruck A+(-B) berechnen. Das Negieren
eines Wertes in Zweierkomplementdarstellung beinhaltet jedoch das
Umkehren des Bit-Musters, beispielsweise durch Hindurchführen durch
einen Negator, und die Addition des Wertes Eins, was einen weiteren
seriellen Addieren erfordert. In einigen Anwendungen kann der mit
dem Vorsehen von Einrichtungen zum Negieren eines Wertes verbundene
Komplexitätszuwachs
sehr nachteilig sein.
-
Gemäß einem anderen Aspekt der
Erfindung ist ein in 2A dargestellter
Subtrahierer 138 vorgesehen, in welchem, anstatt dass der
Eingangswert B zu negiert wird, der Eingangswert B einfach durch einen
Inverter 140 umgekehrt (mit dem Ergebnis A + B, was um
Eins kleiner als der gewünschte
Wert A-B ist] und einem seriellen Addieren 120 vorgelegt wird, in
welchem das Übertragsbit
mittels der CARRY S/R- und Initialiserungseingänge F auf den Wert EINS anstelle
von NULL (Kompensation für
das Defizit] initialisiert wird.
-
Darüber hinaus ermöglicht die Ähnlichkeit der
Architektur der Addieren Schaltung und der Subtrahierer-Schaltung
ihre vorteilhafte Kombination, wenn beide mit den gleichen Eingängen arbeiten müssen. Eine
derartige vorteilhafte Kombination ist ein kombiniertes, serielles
Addieren/Subtrahieren-Netzwerk 160, welches in 3 dargestellt ist und welches
die signifikanten Vorzüge
verminderter Schaltungsfläche
und Komplexität
genießt.
-
Wie bei dem in 3 dargestellten seriellen Addierer umfasst
der kombinierte serielle Addieren/Subtrahierer 160 eine
Anzahl herkömmlicher NAND-Gatter 162-176,
Negatoren 178-190 sowie Schalter, und er akzeptiert
gleichzeitig zwei an beiden seriellen Eingängen A', B' vorgelegte
Bits sowie Übertragsbits
für die
Addierer- und Subtrahieren-Teile des Netzwerks 160, die
entsprechend an den Übertrags-Eingängen CA' und CS' vorgelegt werden. Wie
in 3 angezeigt, wirken
der A'-Eingang und sein
durch den Negator 178 hergestelltes Komplement A' als
Steuersignale für
einen Schalter SW-1', der
entweder den B'-Wert
oder sein durch den Negator 180 gebildetes Komplement B' mit einem Leiter G' verbindet. Wenn A' aktiv (d.h. logisch "HIGH" oder "1") ist, wird der Schalter SW-1' in die gezeigte "1"-Stellung gebracht, welche B' mit
dem Leiter G' verbindet;
wenn A' auf HIGH-Pegel liegt, wird der Schalter
SW-1' in die "0"-Stellung gebracht, welche B' mit dem Leiter G' verbindet. Daher
wird die Ein-Bit-Summe von A' und
B' am Leiter G' vorgelegt; die Summe
und ihr durch den Negator 182 gebildetes Komplement wird,
wie untenstehend näher
erläutert, an
einen Addieren-Ausgangsanschluß DA' gemäß dem Zustand
eines Zwei-Stellungs-, Zwei-Wege-Schalters SW-2' bzw. an einen Subtrahieren-Ausgangsanschluß DS' gemäß dem Zustand
eines Zwei-Stellungs-, Zwei-Wege-Schalters SW-3' geliefert.
-
Die Schalter SW-1', SW-2' und SW-3' werden durch Dual-Steuersignale gesteuert
und verbinden in beiderlei Richtungen; beispielsweise verbindet der
Schalter SW-1' in
einer Richtung, beispielsweise zu der "1"-Stellung,
wenn A' = 1 und A' = 0 gilt, und in der anderen Richtung,
beispielsweise in der "0"-Stellung, wenn A' = 0 und A' = 1 gilt. Derartige
Schalter können
vorteilhafterweise auf Silizium durch Anordnungen von vier Transistoren,
wie in 3A gezeigt, hergestellt
werden. Die Transistoren 1-4, die Feldeffekt-Transistoren sein können, sind
in zwei parallel verbundenen Paaren entgegengesetzten Typs verbunden
(d.h. P-Typ FETs 1, 3 sowie N-Typ FETs 2, 4), welche parallelgeschaltet
und an ihren Gate-Anschlüssen
jeweils entsprechend durch die Signale A' bzw. A' gesteuert werden.
Beim Betrieb wird durch A' = 0 P-FET 1 eingeschaltet
und N-FET 4 ausgeschaltet, und durch A' = 1 wird N-FET 2 eingeschaltet
sowie P-FET 3 abgeschaltet. Somit liefern die FETs 1, 2 einen
Pfad niedriger Impedanz zwischen den Anschlüssen X und Z und einen Pfad
hoher Impedanz zwischen den Anschlüssen Y und Z. Unter der Bedingung A' = 1 sowie A' = 0 schalten die FETs 3, 4 durch und
die FETs 1, 2 werden hochohmig, wodurch ein Pfad niedriger Impedanz
zwischen den Anschlüssen Y
und Z und ein Pfad hoher Impedanz zwischen den Anschlüssen X und
Z ermöglicht
wird.
-
Die vorstehende Anordnung ermöglicht einen
sicheren Betrieb der Schalter: Ob der Schalter seinen Zustand ändert, beispielsweise
ob der Transistor durchschaltet, würde von den Spannungspegeln
des Steuersignals und des geschalteten Signals abhängen, wenn
lediglich ein Typ von Transistoren verwendet würde. Es ist selbstverständlich einsehbar,
dass andere Bauteile verwendet werden könnten, um ein Gesamtschaltverhalten
zu erzielen, das im wesentlichen ähnlich zu dem der dargestellten
Anordnung ist. Darüber
hinaus kann die in 3A dargestellte
Anordnung für
alle Schalter in dem Prozessor ohne weiteres verwendet werden, falls
gewünscht.
-
Die Zustände der Schalter SW-2', SW-3' werden durch ein
die NAND-Gatter 162-176, die Negatoren 184-190 sowie
vier Schalter SW-4' bis
SW-7', welche durch
ein geeignetes, an einem BIT-CLOCK-Eingang in der oben in Verbindung
mit dem seriellen Addieren 121 beschrieben Art und Weise
vorgelegtes digitales Taktsignal gesteuert werden, bestimmt. Die
Negatoren 184, 186 wirken wie das Netzwerk M in
dem vorstehend beschriebenen seriellen Addieren 120 als
eine Zwischenspeicherung für
den Addieren-Übertragswert,
und die Negatoren 188, 190 wirken in einer ähnlichen
Art und Weise als eine Zwischenspeicherung für den Subtrahieren-Übertragswert.
-
In ähnlicher Weise wirken die Schalter
SW-4' bis SW-7' in einer zu der
vorstehend in Verbindung mit den Schaltern SW-4 bis SW-6 in dem
seriellen Addierer 120 beschriebenen im wesentlichen ähnlichen
Art und Weise, obgleich es in dem Netzwerk 160 kein Gegenstück zu dem
Schalter SW-3 gibt. Um den Inhalt der Übertrags-Speicherungen zu initialisieren,
wird an dem WORD CLOCK-Eingang ein logischer LOW-Pegel vorgelegt,
und die Schalter SW-4' bis
SW-7' werden unmittelbar
vor der Vorlage des niedrigstwertigsten Bits an den Eingängen A', B' durch das Steuersignal
BIT CLOCK in Stellungen entgegengesetzt zu jenen, die in 3 dargestellt sind, gelegt.
Sobald gültige
LSBs an den Eingängen A', B' vorgelegt werden,
nimmt der WORD CLOCK-Ein gang einen HIGH-Pegel an (und verbleibt
im hochpegeligen Zustand während
der Vorlage der Eingangsworte), und die Schalter SW-4' bis SW-7' bewegen sich in
die in 3 dargestellten
Zustände zurück. Daher übersteuert
der WORD CLOCK-Eingang die durch die Gatter 162-168 sowie 170-176 erstellten Übertragswerte,
wobei der Übertragswert des
Addierers und der Übertragswert
des Subtrahierers jeweils entsprechend Null bzw. auf Eins initialisiert
wird, und wobei jene Werte den Übertrags-Eingängen CA', CS' zur gleichen Zeit
vorgelegt werden, zu der die gültigen
LSBs den Eingängen
A', B' vorgelegt werden.
-
Nach dem Abwarten einer geeigneten
Zeitspanne für
die Bildung der gültigen
Summen-, Differenz- und Übertragsbits
an den Ausgängen
DA', DS', EA' sowie ES' werden die Schalter
SW-4' bis SW-7' durch das BIT CLOCK-Signal
in Stellungen, die entgegengesetzt zu den in 3 dargestellten sind, gebracht, um die
neuen Übertragsbits
in die Übertrags-Speichernetzwerke
zu laden. Jene Schalter werden dann in die dargestellten Stellungen
zurückverbracht,
sobald die Bits mit der zweitniedrigsten Wertigkeit an den Eingängen A', B' vorgelegt werden, um
die neuen Übertragsbits
an den Übertrags-Eingängen CA', CS' vorzulegen. Diese
Reihenfolge von Operationen wird bis zur Bildung gültigen Summen- und Übertrags-Ausgängen aus
den an den Eingängen
A', B' vorgelegten höchstwertigsten
Bits fortgesetzt. In ungefähr
dem letzten Drittel dieser Bit-Periode betätigen die WORD CLOCK- und BIT
CLOCK-Signale die Schalter SW-4' bis
SW-7', um die Übertragswerte
wie obenstehend zu initialisieren, wodurch die durch die Summe und
die Differenz der höchstwertigsten
Bits gebildeten Übertragsbits
verworfen werden. Der kombinierte Addieren/Subtrahieren ist dann
für die
Vorlage der nächsten
Eingabeworte bereit. Es ist ebenfalls verständlich, dass die Schalter SW-4' bis SW-7', wie obenstehend
beschrieben, bei geringfügig
unterschiedlichen Zeiten betätigt werden
können.
-
Beim Gebrauch der in 3 veranschaulichten Struktur wird, mit
einer minimalen Schaltungsfläche
und im wesentlichen ohne Verzögerung,
die Ein-Bit-Summe
von A', B' und CA' an dem Ausgangsanschluß DA' und die Ein-Bit-Summe von A', B' sowie CS' an dem Ausgangsanschluß DS' gebildet. Die Notwendigkeit
eines Speichers zwischen den Stufen des FWT-Prozessors wird durch
das Fehlen von Verzögerungen
vermieden.
-
Neben den Paaren von Addier-/Subtrahier-Schaltungen
oder dem kombinierten Addieren/Subtrahierer in den Sätzen von
Butterfly-Schaltungen können
Schaltungsimpiementationen des FWT Kreuzverdrahtungs-Netzwerke zwischen
jedem Satz von Butterfly-Schaltungen nutzen, um die korrekte Wertepaar-Auswahl
zu erreichen. Abhängig von
der gewählten
Numerierungskonvention für
die Eingabewerte wird der FWT-Prozessor entsprechende Kreuznetzwerke
erfordern; jedoch werden alle Netzwerke von gleichwertiger Komplexität sein.
Ein die in den 1A und 1B veranschaulichte Konvention
verwendender FWT-Prozessor kann die Kreuznetzwerke 11-1, 11-2 usw.
verwenden, die in jeder Stufe identisch sind, wodurch die Herstellung
des FWT-Prozessors
in einer integrierten Schaltung durch einen herkömmlichen graphischen Step-and-Repeat-Prozess
erleichtert wird.
-
Um einen geringen Energieumsatz zu
erzielen, und auch aus anderen Gründen, wird der FWT-Prozessor
vorzugsweise in der als CMOS (Complementary Metal-Oxide-Silicon)
bekannten Technologie hergestellt; insbesondere kann eine Version
der CMOS-Technologie, die mindestens zwei metallische oder leitfähig verbindende
Schichten ermöglicht,
zu bevorzugen sein. Der FWT-Prozessor kann jedoch auch durch andere,
für die
Implementation von digitaler Logik geeignete Halbleiterprozesse aufgebaut
werden. Da derartige Technologien allgemein bekannt sind, werden
sie hier nicht im Detail beschrieben.
-
In der CMOS-Technologie können die
beiden metallischen oder leitfähigen
Schichten bevorzugterweise mit einer dazwischengeschobenen Schicht aus
isolierendem Material, wie etwa Siliziumdioxid oder Polyamid, überlappt
werden, um die Kreuznetzwerke, die die Sätze von Butterfly-Schaltungen
verbinden, zu bilden. 4 zeigt
ein Beispiel eines ersten Kreuznetzwerks 11-1'' für ein FWT-Netzwerk 10'' für 16 Punkte. Die Eingangswerte
S0 bis S15, die an der linken Seite von 4 vorgelegt werden, werden durch die
Konfiguration der Leiter zur Vorlage vor den ersten Satz von Butterfly-Schaltungen 12-1'' wie vorstehend beschrieben umgeordnet
oder ausgewählt. Das
dargestellte Kreuznetzwerk könnte
effizient vervielfacht und für
die anderen drei Kreuznetzwerke in dem FWT-Prozessor 10'' verwendet werden.
-
In dem dargestellten Beispiel können die
Leiter für
die Eingangswerte S0 bis S7 in
einer Schicht angeordnet und die Leiter für die Eingangswerte S8 bis S15 in der
zweiten Schicht angeordnet werden. Die Geometrie der Leiter muss
nicht notwendigerweise, wie veranschaulicht, linear sein, vorgesetzt,
dass die gewünschte
Umordnung der Eingangswerte aufrecht erhalten wird, und dass die
Haupterwägung beim
Anordnen der Leiter in den Schichten das Vermeiden von Brücken ist.
Wie vorstehend beschrieben, kann eine nützliche Anzahl von Punkten
für ein CDMA-System
einhundertachtundzwanzig betragen; derart viele können jedoch
nicht in einem Diagramm klar dargestellt werden.
-
Die Addition zweier Worte mit je
L Bits kann ein Wort mit (L+1) Bits erzeugen; daher sind Schritte zum
Verhindern von Überlauf
ratsam. Beispielsweise könnte
einiger Freiraum bei der ursprünglichen
Wortlänge
des Eingangs erlaubt werden, d.h. die Wortlänge des Eingangs könnte größer sein
als der maximale Eingangswert. Ein alternativer Schritt, der gegangen
werden könnte,
besteht darin, gelegentlich ein LSB bei den Rechnungen fallen zu
lassen.
-
Bevorzugte Addieren/Subtrahieren
sowie Addieren/Subtrahieren-Schaltungen, wie diejenigen, welche
in den 2, 2A und 3 gezeigt sind, erzeugen ihre Ausgangs-Bits
im wesentlichen sofort; ein Merkmal, das gemäß der Erfindung auf folgende Weise
ausgenutzt wird. Wie in 1A gezeigt,
werden beispielsweise die Ausgänge
des ersten Satzes 12-1 von Butterfly-Schaltungen in dem
zweiten Satz 12-2 von Butterfly-Schaltungen kombiniert,
welcher, wie vorstehend beschrieben, ein identischer Satz serieller
Schaltungen sein kann, welcher erfordert, dass die Eingänge mit
dem LSB zuerst vorgelegt werden. Da die für die Butterfly-Schaltungen
der zweiten Stufe benötigten
LSBs ohne Verzögerung
aus der ersten Stufe austreten, ist kein Zwischenregister oder anderer
Speicher zwischen den Stufen erforderlich.
-
Darüber hinaus treten die transformierten Ausgänge WO-WM-1
aus den Butterfly-Schaltungen der letzten Stufe seriell in Gleichschritt
mit den seriell vorgelegten Eingangswerten, d.h. synchron und im wesentlichen
ohne Verzögerung
aus, außer
derjenigen, die durch die logischen Ausbreitungsverzögerungen
der Schaltungselemente herrührt.
Daher wird eine vollständige
FWT in der Zeit ausgeführt,
die benötigt
wird, die Eingangswerte seriell in den FWT-Prozessor zu laden und die Ausgangswerte von
dem FWT-Prozessor zu empfangen. Im Fall einer 16-Bit-Wortlänge und
einer seriellen Taktrate von 16 MHz wird eine vollständige Transformation
im wesentlichen in einer Mikrosekunde ausgeführt.
-
In einer Ausführungsform der vorliegenden Erfindung,
die in den in der WO92/11716 beschriebenen CDMA-Kommunikationssystemen
nützlich
ist, würden
einhundertachtundzwanzig zu transformierende Eingangswerte So bis
S
127in das Kreuznetzwerk der ersten Stufe
als serielle 16-Bit-Worte mit dem LSB zuerst eintreten. Die 16-Bit-Worte
würden in
einem 8-Bit- (oder höchstens
9-Bit-)Format in Zweierkomplementdarstellung vorgelegt werden, wobei
die niedrigstwertigen Stellen besetzt sind und die höchstwertigen
Stellen das Vorzeichen-Bit angeben (d.h. der Dezimalwert -3 wird
durch
anstatt durch
dargestellt). Wie vorstehend
beschrieben, vermeidet diese Formatierung Überlauf oder Unterlauf durch die
sieben Stufen des FWT-Prozessors hindurch (da 128 = 2
7 gilt).
-
Das erste Kreuznetzwerk ordnet die
Eingangswerte um und verbindet sie mit dem ersten Satz von Butterfly-Schaltungen
für die
Summen- und Differenz-Berechnungen
der ersten Stufe. Wie vorstehend beschrieben, kann der Satz von
Butterfly-Schaltungen, wie in den 2 und 2A dargestellt, sowohl vierundsechzig
serielle Addieren und vierundsechzig serielle Subtrahieren als auch,
wie in 3 dargestellt,
vierundsechzig kombinierte serielle Addierer/Subtrahierer aufweisen.
Die resultierenden einhundertachtundzwanzig Summen und Differenzen
gehen aus dem ersten Satz von Butterfly-Schaltungen als die ersten
seriellen 16-Bit-Zwischenworte 1I0 bis 1I127 hervor
und sind mit dem Kreuznetzwerk der zweiten Stufe verbunden, das
in seiner Form identisch mit demjenigen des ersten Kreuznetzwerks
ist.
-
Die umgeordneten Ausgänge aus
dem zweiten Kreuznetzwerk werden den Eingängen des zweiten Satzes von
Butterfly-Schaltungen für
die Summen- und Differenz-Berechnungen der zweiten Stufe zugeleitet,
welche bezüglich
ihrer Form identisch mit dem ersten Satz sind. Die resultierenden
einhundertachtundzwanzig Summen und Differenzen gehen als zweite
serielle 16-Bit-Zwischenworte 2I0 bis 2I127 hervor
und werden mit dem Kreuznetzwerk der dritten Stufe verbunden, das
bezüglich
seiner Form identisch mit dem ersten und dem zweiten Kreuznetzwerk
ist, usw., bis zu einer Gesamtanzahl von sieben Stufen zur Vervollständigung
der Transformation, welche als Spektralkomponenten W0 bis
W12
7 ausgegeben
wird.