-
HINTERGRUND DER ERFINDUNG
-
I. Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft digitale Signalverarbeitung. Insbesondere
betrifft die vorliegende Erfindung ein neues und verbessertes Verfahren
und eine Vorrichtung zum Durchführen
von schnellen Hadamard-Transformationen.
-
II. Beschreibung verwandter Techniken
-
Wellenformcodierprozeduren
transformieren einen Wellenformensatz in einen verbesserten Wellenformensatz.
Der verbesserte Wellenformensatz kann dann verwendet werden, um
verbesserte Wahrscheinlichkeit von Bitfehler PB verglichen
mit dem ursprünglichen
Satz bei Kommunikation vorzusehen. In dem verbesserten Wellenformensatz
werden die Signale so unähnlich
wie möglich.
Ein anderer Weg des Betrachtens dieses ist es, die Kreuzkorrelation
zwischen zwei Wellenformen i und j (benannt zij)
so klein wie möglich
zu machen.
-
Die
Kreuzkorrelation (z
ij) ist folgendermaßen definiert:
wobei
s
i(t) und s
j(t)
zwei Wellenformenfunktionen sind. In einen Wellenformensatz, welcher
aus bipolaren Pulsen (+1, –1)
besteht, kann die Definition der Kreuzkorrelation (z
ij)
folgendermaßen
vereinfacht werden:
-
Der
kleinste mögliche
Wert der Kreuzkorrelation tritt auf, wenn die Signale antikorreliert
sind (zj = –1); jedoch kann dies nur erreicht
werden, wenn die Anzahl von Wellenformen in dem Satz zwei ist und
die Wellenformen antipodisch bzw. entgegengesetzt sind. Im Allgemeinen
hat der beste erreichbare Wellenformensatz all die Kreuzkorrelationswerte
gleich null. Der Satz wird dann als orthogonal bezeichnet. Die beliebtesten Wellenformencodes,
welche für
Kommunikationszwecke verwendet werden, sind orthogonale Codes.
-
Ein
Verfahren, durch welches ein Datensatz in einen orthogonalen Datensatz
transformiert werden kann, ist im Weg einer Hadamard-Transformation.
Eine Hadamard-Transformation ist charakterisiert durch eine Hadamard-Matrix,
in welcher jede Zeile der Hadamard-Matrix orthogonal zu jeder anderen
Zeile der Matrix ist, das heißt
gemäß Gleichung
2, ist die Anzahl von Übereinstimmungen
gleich der Anzahl von Nicht-Übereinstimmungen
für jedes
Paar von Zeilen. Jede Zeile der Hadamard-Matrix kann als eine Walshsequenz
bezeichnet werden.
-
Eine
Hadamard-Matrix der Ordnung n kann rekursiv wie folgt definiert
werden:
wobei H
1 folgendermaßen definiert
ist:
H1 =
[1] (4)und
H'
i = –H
j. somit ist
-
-
Ebenso
wird es durch Anwendung von Gleichung 3 herausgefunden, dass H
4 folgendermaßen aussieht:
und H
8 ist:
-
Schnelle
Algorithmen wurden entwickelt, um die Effizienz der Performance
von Hadamard-Transformationen zu erhöhen. Diese Implementierungen
nutzen die Tatsache aus, dass Hadamard-Matrizen real, symmetrisch
und zeilenweise orthogonal sind. Weil die Hadamard-Matrizen nur ±1 Werte
enthalten, werden keine Multiplikationen in den Transformationsberechnungen
benötigt.
Ferner kann die Anzahl von Additionen und Subtraktionen, welche
benötigt
werden, von n
2 auf n·log
2n
verringert werden, und zwar aufgrund der Tatsache, dass eine Hadamard-Matrix
der Ordnung n(H
n) als ein Produkt von n
dünnbesetzten
Matrizen geschrieben werden kann, das heißt,
-
Man
beachte, dass die oberen n/2 Zeilen und die unteren n/2 Zeilen nur
zwei von Null verschiedene Ausdrücke
pro Zeile enthalten, die Transformation
kann durch log
2n-maliges
Anwenden von H
n auf u erreicht werden. Aufgrund
der Struktur von H
n werden nur n Additionen
und Subtraktionen benötigt,
und zwar jedes Mal, wenn H
n auf einen Vektor
angewandt wird, was eine Gesamtzahl von n·log
2(n)
Additionen und Subtraktionen ergibt.
-
US 3,956,619 beschreibt
eine Maschine zum Generieren von Sequenz geordneten Walshtransformationskoeffizienten
von einer Eingangsdatensequenz, welche eine geordnete Kaskade von
identisch konfigurierten Signalprozessormodulen enthält. Jedes
Modul enthält
zwei Sequenz geordnete Transformationsblöcke von Walshtransformationskoeffizienten,
und durch alternierendes Addieren und Subtrahieren von korrespondierenden
Elementen in diesen Blöcken
erzeugt es die Transformationskoeffizienten der nächst höheren Ordnung.
-
Das
Problem, welches mit der Implementierung von schneller Hadamard-Transformation verbunden ist,
wie oben stehend beschrieben, ist die Belastung von Speicherressourcen.
Zusätzlich
bietet sich das oben beschriebene Verfahren nicht selbst zur seriellen
Verarbeitung an. Dementsprechend gibt es einen Bedarf für ein verbessertes
Verfahren und eine Vorrichtung zum Durchführen von schnellen Hadamard-Transformationen,
welche die Belastung von Speicherressourcen verringern und sich
für serielle
Verarbeitung anbieten. Ein solches Verfahren ist der Gegenstand
der vorliegenden Erfindung.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
vorliegende Erfindung ist ein neues und verbessertes Verfahren und
eine Vorrichtung zum Durchführen
von schneller Hadamard-Transformation gemäß den folgenden Ansprüchen. Eine
Hadamard-Transformation der Ordnung 2 kann durch ein Element
durchgeführt
werden, welches zwei Eingangswerte a und b empfängt, und ansprechend darauf
zwei Werte (a + b) und (a – b)
ausgibt. Dieses Element kann in Hardware mit einem Addierer und
einem Subtrahierer, zwei Multiplexierern, und einem Speicherelement
realisiert werden.
-
Das
Element, welches oben stehend beschrieben wurde, kann durch Vorsehen
der Eingänge
seriell auf einen subtrahierenden Eingang des Subtrahierers, auf
einen summierenden Eingang des Addierers, und auf einen B Eingang
des ersten Multiplexierers erreicht werden. Die Ausgabe des Subtrahierers
wird zu dem A Eingang des ersten Multiplexierers geliefert, und
die Ausgabe des Addierers wird zu dem A Eingang des zweiten Multiplexierers
geliefert. Die Ausgabe des ersten Multiplexierers wird zu dem Eingang
des Speicherelements geliefert. Die Ausgabe des Speicherelements
wird dann mit dem summierenden Eingang des Subtrahierers, mit dem
zweiten summierenden Eingang des Addierers, und mit dem B Eingang
des zweiten Multiplexierers gekoppelt. Die Ausgabe wird dann seriell
zu dem Ausgang des zweiten Multiplexierers geliefert.
-
Nun
um ein Mittel zum Durchführen
einer Hadamard-Transformation der Ordnung 4 vorzusehen.
Das grundlegende Element, welches oben stehend beschrieben wurde,
wird in Serie mit einem anderen solchen Element, welches geringfügig modifiziert
wurde, platziert. Das zweite Element in der Serie wird dadurch modifiziert,
dass es ein zweites Speicherelement hat, welches in Serie mit dem
ersten Speicherelement platziert ist, und zwar derart, dass die
Ausgabe von dem ersten Multiplexierer zunächst in dem ersten Speicherelement
gespeichert werden würde;
dann würden
in dem nächsten
Taktzyklus die Daten, welche in dem ersten Speicherelement gespeichert
sind, zu dem zweiten Speicherelement versetzt werden, bevor sie
zu den summierenden Eingängen
des Subtrahierers und des Addierers und dem B Eingang des zweiten
Multiplexierers bei dem nächsten
Taktzyklus geliefert werden.
-
Durch
Erweiterung könnte
eine Hadamard-Transformation der Ordnung 8 durch Addieren
eines dritten modifizierten Elements vorgesehen werden, dieses Mal
mit vier Speicherelementen in Serie, und so weiter. Die Anzahl von
Speicherelementen des letzten Hadamard-Elements wird eine Anzahl
von Speicherelementen gleich zu der Hälfte der Ordnung der Hadamard-Ordnung sein. Es
ist wichtig zu bemerken, dass die Speicheranforderungen dieser Speicherelemente
nicht die Gleichen sind. Dies ist so, weil die Summe von zwei m
Bitnummern eine m + 1 Bitnummer ist. Somit ist es erforderlich,
dass die Speicherelemente jeder aufeinander folgender Elementstufen
eine Anzahl bzw. Grad von Genauigkeit halten, welche ein Bit größer ist
als die der Speicherelemente des vorhergehenden Elements.
-
Um
Einsparungen in dem Speicher vorzusehen, welcher notwendig ist,
um diese Operation auszuführen,
als eine weitere Verbesserung gegenüber den vorher beschriebenen
Mitteln, kann die Ordnung der Elemente umgedreht werden. Zum Beispiel
kann in dem Fall der Hadamard-Transformation der Ordnung 8 das erste
Element vier Speicherelemente haben, wobei das Speicherelement (m
+ 1) Bits weit ist, wobei m die Anzahl von Bits in der Eingabe ist.
Das nächste
Element wird zwei (m + 2) weite Speicherelemente haben und das letzte
Element in der Serie wird ein einziges (m + 3) weites Speicherelement
haben.
-
Es
ist deshalb ein Ziel der vorliegenden Erfindung, ein Mittel zum
Durchführen
von Hadamard-Transformationen unter Verwendung von vereinfachter
Hardware vorzusehen. Durch Verwendung von Einfach-Bit-Addierern
mit einer Trage-Ressource (Carry-Ressource), kann eine Hadamard-Transformation durchgeführt werden,
wobei die Eingaben zu dem Transformer mit einem Bit zu jedem Zeitpunkt
serialisiert werden.
-
Es
ist ein weiteres Ziel der vorliegenden Erfindung, ein Verfahren
und Mittel für
eine zusätzliche
Einsparung in dem Speicher vorzusehen, welche durch effizientes
Abschneiden (Truncation) von Werten erreicht wird, welche in den
oben stehend beschrieben Speicherelementen, gespeichert sind.
-
KURZE BESCHREIBUNG DER ZEICHUNGEN
-
Die
Merkmale, Ziele und Vorteile der vorliegenden Erfindung werden offensichtlicher
werden von der detaillierten Beschreibung, welche unten stehend
gegeben wird, wenn sie zusammen genommen wird mit den Zeichnungen,
in welchen gleiche Bezugszeichen Korrespondierendes durchgängig identifizieren,
und wobei folgendes gilt:
-
1 ist
ein Blockdiagramm einer Hadamard-Transformationsvorrichtung
zum Durchführen
der Hadamard-Transformation
der Ordnung 4;
-
2 ist
ein Blockdiagramm der Hadamard-Transformationsvorrichtung
zum Durchführen
einer Hadamard-Transformation
der Ordnung 64;
-
3 ist
ein Blockdiagramm einer verbesserten Implementierung der Hadamard-Transformationsvorrichtung
zum Durchführen
einer Hadamard-Transformation der Ordnung 64; und
-
4 ist
ein Blockdiagramm einer seriellen Eingangs-FHT-Stufe.
-
DETAILLIERTE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Die
vorliegende Erfindung ist ein Verfahren und eine Vorrichtung zum
Durchführen
einer schnellen Hadamard-Transformation (FHT = Fast Hadamard Transform).
In
1 ist ein exemplarisches Ausführungsbeispiel der vorliegenden
Erfindung zum Zweck der Durchführung
einer Hadamard-Transformation
der Ordnung
4 gezeigt. Wenn zum Beispiel ein Block von
vier digitalen Samples (a
1, a
2,
a
3, a
4) ein Eingangssymbol
bildet, führt
die in
3 gezeigte Vorrichtung eine FHT an dem Eingangssymbol
aus, um ein FHT codiertes Symbol gemäß Gleichung 11 unten stehend
zu liefern:
-
Es
sei erwähnt,
dass die Dimension von vier, welche in dem exemplarischen Ausführungsbeispiel
verwendet wird, zur exemplarischen Repräsentation ist, und dass das
Verfahren und die Vorrichtung der vorliegenden Erfindung ebenso
auf schnelle Hadamard-Transformationen (FHT) von allen definierten
Dimensionen angewandt werden können.
-
In
dem exemplarischen Ausführungsbeispiel
ist jedes der digitalen Samples (a1, a2, a3, und a4) 8 Bit Repräsentationen, obwohl jede andere
Bitlänge
ebenfalls auf die vorliegende Erfindung anwendbar ist. Das erste
Eingangssample a1 wird auf der Eingangssignalleitung
vorgesehen. Das Eingangs sample a1 wird auf dem
subtrahierenden Eingang des Subtrahierers 2 (ein Addierer,
welcher zur Subtraktion konfiguriert ist), den ersten Eingang des
Summierers 6, und den Eingang B des Multiplexierers 4 vorgesehen.
Der Multiplexierer 4 liefert zu seinem Ausgang entweder
das Signal auf der Eingangssignalleitung oder den Ausgang von dem
Subtrahierer 2. Während
des ersten Eingangszykluses liefert der Multiplexierer 4-Ausgang
das Signal auf der Eingangssignalleitung. Bei dem zweiten Eingangszyklus
liefert der Multiplexierer 4-Ausgang das Signal von dem Subtrahierer 2-Ausgang
zu seinem Ausgang, und alterniert auf diese Art und Weise für jeden
Eingangszyklus. Somit liefert der Multiplexierer 4 für den ersten
Eingangszyklus das Sample a1 an seinem Ausgang,
welches bei dem Speicherelement 10 empfangen und in diesem
gespeichert wird.
-
Bei
dem zweiten Eingangs- bzw. Eingabezyklus wird das nächste Eingangssample
a2 zu dem subtrahierenden Eingang des Subtrahierers 2,
den ersten Eingang des Summierers 6, und den Eingang B
des Multiplizierers 4 geliefert. Der gespeicherte Wert
im Speicherelement 10, a1, wird
zu dem addierenden Eingang des Subtrahierers 2, zu dem
zweiten Eingang des Summierers 6, und zu dem Eingang B
des Multiplexierers 8 geliefert. Ansprechend darauf liefert
der Subtrahierer 2 den Wert von (a1 – a2) an seinem Ausgang, welcher auch an den
Ausgang des Multiplexierers 4 präsentiert wird und in dem Speicherelement 10 gespeichert
wird. Der Summierer 6 liefert den Wert von (a1 +
a2) an seinem Ausgang. Der Multiplexierer 8 liefert
an seinem Ausgang entweder die Ausgabe von dem Summierer 6 oder
die Ausgabe von dem Speicherelement 10. Bei dem zweiten
Eingangszyklus liefert der Multiplexierer 8 die Ausgabe
von dem Summierer 6 an seinem Ausgang; bei dem dritten
Eingangszyklus liefert er die Ausgabe von dem Speicherelement 10 an
seinem Ausgang und alterniert zwischen dem Vorsehen dieser Signale
an seinen Ausgängen
bei jedem Eingangszyklus. Somit liefert der Multiplexierer 8 für den zweiten
Eingangszyklus an seinem Ausgang den Wert, welcher von dem Summierer 6 ausgegeben
wurde, (a1 + a2).
-
Die
Ausgabe des Multiplexierers 8, (a1 +
a2), wird zu dem subtrahierenden Eingang
des Subtrahierers 12, den ersten Eingang des Summierers 16,
und dem B Eingang des Multiplizierers 14 geliefert. Der
Multiplizierer 14 liefert als seine Ausgabe das Signal
von dem Ausgang des Multiplexierers 8 für die zweiten und dritten Eingangszyklen,
dann liefert er die Ausgabe von dem Summierer 12 für die vierten
und fünften
Eingangszyklen, und alternierend alle zwei Zyklen derart weiter.
Somit liefert der Multiplexierer 14 für den zweiten Eingangszyklus
die Signalausgabe von dem Multiplexierer 8, (a1 +
a2) zu dem Speicherelement 20,
wo sie gespeichert wird.
-
Während des
dritten Eingangszyklus wird das Sample a3 zu
dem subtrahierenden Eingang des Subtrahierers 2, den ersten
Eingang des Summierers 6, und den Eingang B des Multiplexierers 4 geliefert.
Das Speicherelement 10 liefert seinen gespeicherten Wert
(a1 – a2) zu dem addierenden Eingang des Subtrahierers 2,
zu dem zweiten Eingang des Summierers 6, und zu dem B Eingang
des Multiplexierers 8. Der Multiplexierer 4 liefert
den Wert von der Eingangssignalleitung, a3,
zu dem Speicherelement 10, wo er gespeichert wird. Der Multiplexierer 8 liefert
das Signal an seinem B Eingang (a1 – a2) an seinem Ausgang.
-
Der
Wert, welcher durch den Multiplexierer 8 ausgegeben wird,
(a1 – a2) wird zu dem subtrahierenden Eingang des
Subtrahierers 12, den ersten Eingang des Summierers 16,
und den B Eingang zu dem Multiplexierer 14 geliefert. Das
Speicherelement 40 transferiert seine Inhalte (a1 + a2) zu dem Speicherelement 22.
Der Multiplexierer 14 liefert das Ausgangssignal von dem
Multiplexierer 8, (a1 – a2) zu dem Speicherelement 20.
-
In
dem vierten Zyklus wird das nächste
Eingangssample a4 zu dem subtrahierenden
Eingang des Subtrahierers 2, den ersten Eingang des Summierers 6,
und den Eingang B des Multiplexierers 4 geliefert. Das Speicherelement 10 liefert
seinen gespeicherten Wert a3 zu dem addierenden
Eingang des Subtrahierers 2, zu dem zweiten Eingang des
Summierers 6, und zu dem B Eingang des Multiplexierers 8.
Der Summierer 2 liefert (a3 – a4) zu dem A Ein gang des Multiplexierers 4.
Der Multiplexierer 4 liefert die Ausgabe von dem Subtrahierer 2,
(a3 – a4) zu dem Speicherelement 10, wo
sie gespeichert wird. Der Summierer 6 liefert die Summe (a3 + a4) zu dem A
Eingang des Multiplexierers 8. Der Multiplexierer 8 liefert
die Signalausgabe von dem Summierer 6, (a3 +
a4) an seinem Ausgang.
-
Der
Wert, welcher durch den Multiplexierer 8 ausgegeben wird,
(a3 + a4), wird
zu dem subtrahierenden Eingang des Subtrahierers 12, den
ersten Eingang des Summierers 16, und den B Eingang zu
dem Multiplexierer 14 geliefert. Das Speicherelement 22 liefert
dann seine Inhalte (a1 + a2)
zu dem addierenden Eingang des Subtrahierers 12, den zweiten
Eingang des Summierers 16, und den B Eingang des Multiplexierers 18. Das
Speicherelement 20 transferiert seine Inhalte (a1 + a2) zu dem Speicherelement 22.
Der Summierer 12 liefert ansprechend darauf die Summe seiner
Eingänge
(a1 + a2) – (a3 + a4) zu dem A
Eingang des Multiplexierers 14. Der Multiplexierer 14 liefert
den Wert, welcher von dem Subtrahierer 12 ausgegeben wird,
(a1 + a2) – (a3 + a4) zu dem Speicherelement 20,
wo er gespeichert wird. Der Summierer 16 liefert dann die
Summe seiner zwei Eingänge
(a1 + a2) + (a3 + a4) zu dem A
Eingang des Multiplexierers 18. Der Multiplexierer 18 liefert
das Signal, welches durch den Summierer 16 ausgegeben wird,
für die
Eingangszyklen 4 und 5, und dann liefert er die
Ausgabe von dem Speicherelement 22 als Ausgabe für die Eingangszyklen 6 und 7,
und alterniert danach alle zwei Zyklen. Der Multiplexierer 18 liefert
die gewünschte
Summe (a1 + a2 +
a3 + a4) als die
erste Ausgabe der zweiten Stufe der FHT Vorrichtung.
-
In
dem fünften
Eingangszyklus wird das nächste
Eingangssample a5 zu dem subtrahierenden
Eingang des Subtrahierers 2, den ersten Eingang des Summierers 6,
und dem Eingang B des Multiplexierers 4 geliefert. Das
Speicherelement 10 liefert seinen gespeicherten Wert (a3 – a4) zu dem addierenden Eingang des Summierers 2,
zu dem zweiten Eingang des Summierers 6, und zu dem B Eingang
des Multiplexierers 8. Der Multiplexierer 4 liefert
den Wert an der Eingangssignalleitung a5 zu
dem Speicherelement 10, wo er ge speichert wird. Der Multiplexierer 8 liefert
das Signal, welches von dem Speicherelement 10 ausgegeben
wird, (a3 – a4) als
seine Ausgabe.
-
Der
Wert an der Ausgabe des Multiplexierers 8, (a3 – a4) wird zu dem subtrahierenden Eingang des Summierers 12,
den ersten Eingang des Summierers 16, und den B Eingang
zu dem Multiplexierer 14 geliefert. Das Speicherelement 22 liefert
seine Inhalte, (a1 – a2),
zu dem addierenden Eingang des Subtrahierers 12, den zweiten
Eingang des Subtrahierers 16, und den B Eingang des Multiplexierers 18.
Das Speicherelement 20 transferiert seine Inhalte (a1 + a2) – (a3 + a4) zu dem Speicherelement 22.
Der Subtrahierer 12 liefert (a1 – a2) – (a3 – a4) zu dem ersten Eingang des Multiplexierers 14,
welcher diesen Wert zu dem Speicherelement 20 liefert. Ebenso
liefert der Summierer 16 (a1 – a2) + (a3 – a4), oder (a1 – a2 + a3 – a4) zu dem ersten Eingang des Multiplexierers 18,
welcher diesen Wert an seinem Ausgang vorsieht.
-
In
dem sechsten Eingangszyklus wird das nächste Eingangssample a6 zu dem subtrahierenden Eingang des Subtrahierers 2,
den ersten Eingang des Summierers 6, und den Eingang B
des Multiplexierers 4 geliefert. Das Speicherelement 10 liefert
seinen gespeicherten Wert a5 zu dem addierenden
Eingang des Subtrahierers 2, zu dem zweiten Eingang des
Summierers 6, und zu dem B Eingang des Multiplexierers 8.
Der Subtrahierer 2 liefert (a5 – a6) zu dem A Eingang des Multiplexierers 4.
Der Multiplexierer 4 liefert den Wert an seinem A Eingang,
(a5 – a6) zu dem Speicherelement 10, wo
es gespeichert wird. Der Summierer 6 liefert (a5 + a6) zu dem A
Eingang des Multiplexierers 8. Der Multiplexierer 8 liefert
das Signal an seinem A Eingang, (a5 + a6), an seinem Ausgang.
-
Die
Ausgabe von dem Multiplexierer 8, (a5 +
a6) wird zu dem subtrahierenden Eingang
des Subtrahierers 12, dem ersten Eingang des Summierers 16,
und dem B Eingang zu dem Multiplexierer 14 geliefert. Das Speicherelement 22 liefert
dann seine Inhalte (a1 + a2) – (a3 + a4) zu dem addierenden
Eingang des Subtrahierers 12, dem zweiten Eingang des Summierers 16,
und dem B Eingang des Multiplizierers 18. Das Speicherelement 20 transferiert
seine Inhal te (a1 – a2) – (a3 – a4) zu dem Speicherelement 22. Der
Multiplexierer 14 liefert sein B Eingangssignal (a5 + a6) zu dem Speicherelement 20,
wo es gespeichert wird. Der Multiplexierer 18 liefert den
Wert des B Eingangssignals (a1 + a2) – (a3 + a4) = (a1 + a2 – a3 – a4) an seinem Ausgang.
-
In
dem siebten Eingangszyklus wird das nächste Eingangssample a7 zu dem subtrahierenden Eingang des Subtrahierers 2,
dem ersten Eingang des Summierers 6, und dem Eingang B
des Multiplexierers 4 geliefert. Das Speicherelement 10 liefert
seinen gespeicherten Wert, (a5 – a6), zu dem addierenden Eingang des Summierers 2,
zu dem zweiten Eingang des Summierers 6, und zu dem B Eingang
des Multiplexierers 8. Der Multiplexierer 4 liefert
den Wert an dem B Eingang, a7 , zu
dem Speicherelement 10, wo er gespeichert wird. Der Multiplexierer 8 liefert
das Signal an seinem B Eingang (a5 – a6) an seinem Ausgang.
-
Die
Ausgabe des Multiplexierers 8 (a5 – a6), wird zu dem subtrahierenden Eingang des
Subtrahierers 12, dem ersten Eingang des Summierers 16,
und dem B Eingang zu dem Multiplexierer 14 geliefert. Das
Speicherelement 22 liefert dann seine Inhalte, (a1 – a2) – (a3 – a4) zu dem addierenden Eingang des Subtrahierers 12,
dem zweiten Eingang des Summierers 16, und dem B Eingang
des Multiplexierers 18. Das Speicherelement 20 transferiert
seine Inhalte (a5 + a6),
zu dem Speicherelement 22. Der Multiplexierer 14 liefert
sein B Eingangssignal, (a5 – a6) zu dem Speicherelement 20, wo
es gespeichert wird. Der Multiplexierer 18 liefert den Wert
des B Eingangsignals, (a1 – a2) – (a3 – a4) = (a1 – a2 – a3 + a4), an seinem
Ausgang.
-
Man
beachte, dass die FHT der Eingangssequenz (a1,
a2, a3, a4), (a1 + a2 + a3 + a4 , a1 – a2 + a3 – a4, a1 + a2 – a3 – a4 , a1 +
a2 – a3 – a4) erfolgreich durch die Vorrichtung ausgegeben
wurde. Durch Eingeben der nächsten
in der Serie zu der Vorrichtung, a8, erscheint
das erste Element der FHT der Eingangssequenz (a5,
a6, a7, a8), welches a5 +
a6 + a7 + a8 ist, an dem Ausgang der Vorrichtung. Der
Prozess kann unendlich fortgeführt werden.
-
Das
grundlegende Element der FHT Vorrichtung ist in den gestrichelten
Linien von Block 24 gezeigt. Block 24 wird aus
einem Subtrahierer 12, einem Summierer 16 und
zwei Multiplexierern (Multiplexierer 14 und 18)
gebildet; dieses Untersystem wird als FHT Maschine bezeichnet. Man
beachte, dass der Subtrahierer ein Summierer mit einem invertierenden
Eingang ist. In Kombination mit den Speichereinrichtungen oder Speicherelementen
bilden sie eine vollständige
FHT Stufe. Zusätzliche
Stufen können
hinzugefügt
werden, und zwar durch Liefern einer Ausgabe einer vorhergehenden
Stufe zu einer addierten Stufe. Der einzige Unterschied zu einer
Stufe und ihrer vorhergehenden Stufe ist, dass die Anzahl von Speicherelementen
sich verdoppelt (ebenso muß sich
die Anzahl von Bits in einem gegebenen Speicherelement um eins erhöhen) und das
Timing, zu welchem die Speicherelemente die Schaltung wechseln,
nur halb so oft wie in der vorhergehenden Stufe.
-
In 2 ist
ein Blockdiagramm einer FHT Vorrichtung zum Durchführen einer
FHT der Ordnung 64 dargestellt. Die FHT Maschinen 30, 34, 38, 42, 46 und 50 sind
alle identisch mit der FHT Maschine, welche detailliert in Block 24 von 1 gezeigt
ist, und die Speichereinrichtungen 32, 38, 40, 44, 48 und 52 sind
eine Vielzahl von verbundenen Speicherelementen oder Datenverriegelungselementen,
wie solche, welche durch ein Schieberegister gebildet werden, auch
wie in 1 beschrieben. In dem exemplarischen Ausführungsbeispiel
bestehen die Daten, welche in die FHT Maschine 30 eingegeben
werden, aus acht Bit Zahlen, obwohl die vorliegende Erfindung auch
auf Daten von jeglicher Bitlänge
angewandt werden kann.
-
Weil
in dem exemplarischen Ausführungsbeispiel
der Eingangsdatenstrom aus 8 Bit/Sample-Daten besteht, muß das Speicherelement
in der Speichereinrichtung 32 dazu in der Lage sein, neun
Bits zu behalten, um die möglichen
Ausgänge
der FHT Maschine 30 ohne Abschneiden aufzunehmen, weil
die Summe von zwei n-Bit Zahlen eine (n + 1)-Bit Zahl ist. Ähnlich müssen die
Speicherelemente der Speichereinrichtung 36 dazu in der
Lage sein, zehn Bits zu speichern. Die Speicherelemente der Speichereinrichtung 40 müssen dazu
in der Lage sein, elf Bits zu speichern; diejenige der Spei chereinrichtung 44 müssen dazu
in der Lage sein, 12 Bits zu speichern; diejenige der Speichereinrichtung 48 müssen dazu
in der Lage sein, 13 Bits zu speichern, und die Speicherelemente
der Speichereinrichtung 52 müssen dazu in der Lage sein,
14 Bits zu speichern.
-
3 zeigt
ein verbessertes Ausführungsbeispiel
der vorliegenden Erfindung. Die in 3 gezeigte Vorrichtung
führt eine
schnelle Hadamard-Transformation
der Ordnung 64 aus. Die FHT Maschinen 90, 94, 98, 102, 106 und 110 sind
identisch in der Konstruktion mit der FHT Maschine 24,
welche detailliert in 1 gezeigt ist. Der einzige Unterschied,
welcher in dem Betrieb der FHT Maschinen in 3 auftritt,
im Unterschied zu denjenigen, welche in 2 gezeigt
sind, tritt in dem Schalten der Multiplexierer (nicht gezeigt) der
FHT Maschinen 90, 94, 98, 102, 106 und 110 auf.
Die Multiplexierer der ersten Stufe der FHT Maschine 90 schalten nur
alle 32 Eingangszyklen. Die Multiplexierer von FHT der zweiten Stufe
der FHT Maschine 94 schalten alle 16 Eingangszyklen. Die
Multiplexierer der letzten Stufe der FHT Maschine 110 schalten
jeden Eingangszyklus.
-
Der
signifikante Unterschied zwischen dem verbesserten Ausführungsbeispiel,
welches in
3 gezeigt ist, und dem in
2 gezeigten
Ausführungsbeispiel
ist die Einsparung in dem gesamten verwendeten Speicher. Unter Rückbezugnahme
auf das exemplarische Ausführungsbeispiel
zum Verarbeiten von Daten von Bitlänge acht, musste die erste
Speichereinrichtung dazu in der Lage sein, eine 9-Bit Zahl zu speichern, wohingegen
die Speichereinrichtungen der nächsten
Stufe eine 10-Bit Zahl speichern müssten. Deshalb werden in diesem
verbesserten Ausführungsbeispiel
die Stufen, in welchen die Speichereinrichtungen die geringste Anzahl
von Bits speichern müssen,
verwendet, um die größte Anzahl
von Werten zu speichern. Die Speichereinrichtung
92 speichert
zweiunddreißig
9-Bit Zahlen, die Einrichtung
96 sechzehn 10-Bit Zahlen,
die Einrichtung
100 acht 11-Bit Zahlen, die Einrichtung
104 vier
12-Bit Zahlen, die Einrichtung
108 zwei 13-Bit Zahlen und
die Einrichtung
112 eine 14-Bit Zahl. Die Anzahl von Bits
von Speicher, welcher unter Verwendung dieses verbesserten Ausführungsbeispiels gespart
wird, kann durch die folgende unten stehende Formel berechnet werden:
wobei
n die Ordnung der FHT ist, welche durchgeführt wird, und m die Anzahl
von Bits pro Eingang.
-
In 4 ist
eine alternative Implementierung der vorliegenden Erfindung für empfangene
Samples als ein serieller Bitstrom gezeigt. In dieser Implementierung
werden die Bits, welche die Eingangssamples beinhalten, zu der FHT
Vorrichtung seriell geliefert. Für
jedes Eingangssample werden die Bits des Samples an die FHT Maschine
geliefert, von geringstwertigen Bit (LSB = Least Significant Bit)
zu dem höchstwertigen
Bit (MSB = Most Significant Bit). Ein Eingangsbit wird zu dem ersten
subtrahierenden Eingang des Subtrahierers 120, einem B
Eingang des Multiplexierers 124, und dem ersten addierenden
Eingang des Addierers 128 geliefert. Zusätzlich werden
die Ausgangsdaten von dem Speicherelement 126 zu dem addierenden
Eingang des Subtrahierers 120 geliefert. Die letzte Eingabe
zu dem Subtrahierer 120, ein zweiter subtrahierender Eingang,
ist das Borrow-Bit bzw. das ausgeliehene Bit von der vorhergehenden
Operation, welches durch die Verzögerung 122 geliefert
wird. Verzögerungselemente 122 und 130 liefern
eine Verzögerung
gleich zu einer Einfach-Bit-Periode in der Dauer. Der Subtrahierer 120 subtrahiert
dann das verzögerte
Borrow-Bit und das derzeitige subtrahierende Eingangsbit von dem
addierenden Bit. Diese Operation liefert zwei Bits von Ausgangsdaten,
einschließlich
eines Borrow-Bits, welches zu der Verzögerung 122 geliefert
wird, und eines Differenzbits, welches zu dem A Eingang des Multiplexierers 124 geliefert
wird.
-
Der
Multiplexierer 124 wählt
die Daten auf einem seiner zwei Eingänge zum Liefern zu seinem Ausgang
aus. Die Schaltzyklen der Multiplexierer 124 und 132 sind
die Gleichen wie vorhergehend beschrieben, man beachte natürlich, dass
ein Eingangszyklus als die Zeitperiode definiert ist, welche benötigt wird,
um alle Bits zu liefern, welche ein Eingangssample beinhalten. Wie
vorhergehend erwähnt
wird das Eingangsbit zu dem ersten addierenden Eingang des Addierers 128 geliefert.
Die Ausgabe des Speicherelements 126 wird auch zu einem
zweiten addierenden Eingang des Addierers 128 geliefert.
Zusätzlich
wird ein verzögertes
Trage-Bit (Carry-Bit) von der vorhergehenden Summieroperation des
Addierers 128 durch die Verzögerung 130 zu dem
dritten addierenden Eingang des Addierers 128 geliefert.
Die Summe der drei Eingänge
(das verzögerte
Trage-, das Eingangsbit und das Ausgangsbit von dem Speicherelement)
werden summiert, um zwei Bits von Daten zu liefern. Das erste Bit,
das Tragebit, wird zu dem Verzögerungselement 130 geliefert,
und das Summenbit wird zu einem A Eingang des Multiplexierers 132 geliefert.
Der Multiplexierer 132 empfängt auch an seinem B Eingang
das Ausgangsbit des Speicherelements 126. Der Multiplexierer 132 wählt dann
die Daten an einem seiner zwei Eingänge aus, um sie an seinem Ausgang
als ein Bit von einem der FHT Koeffizienten gemäß der Schaltoperation wie oben
stehend beschrieben zu liefern.
-
Ein
schlussendliches Verfahren, welches alleine oder in Kombination
mit den oben erwähnten
Verbesserungen verwendet werden kann, ist die Art und Weise des
Abschneidens. Wenn die Daten in einer parallelen Art und Weise zu
der FHT Vorrichtung geliefert werden, kann Abschneiden erreicht
werden durch einfaches Vorsehen von nur einer vorbestimmten Anzahl
von höchstwertigen
Bits von Daten zu den Speicherelementen. In dem Fall, in welchem
die Daten, welche zu der FHT Vorrichtung geliefert werden, ein serieller
Strom sind, werden die Bits, welche die am geringstwertigsten Bits
zu einem Speicherelement liefern, in und evtl. aus dem ersten Speicherelement
verschoben, welches sich als ein seriell geladenes paralleles Ausgangsschieberegister
verhält.
Wenn nur die höchstwertigen
Bits in dem Speicher element bleiben, wird Abschneiden erreicht,
und diese Bits können
dann parallel zu dem nächsten
Speicherelement verschoben werden.