PatentDe  


Dokumentenidentifikation DE60013443T2 01.09.2005
EP-Veröffentlichungsnummer 0001192714
Titel SIGNALANGEPASSTES FILTER MIT REDUZIERTEM LEISTUNGSVERBRAUCH UNTER VERWENDUNG VON VORBERECHNUNGEN
Anmelder Ericsson Inc., Plano, Tex., US
Erfinder LEVISON, Jacob, S-211 48 Malmo, SE;
DENT, W., Paul, Pittsboro, US
Vertreter HOFFMANN & EITLE, 81925 München
DE-Aktenzeichen 60013443
Vertragsstaaten AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, LI, MC, PT, SE
Sprache des Dokument EN
EP-Anmeldetag 09.06.2000
EP-Aktenzeichen 009397605
WO-Anmeldetag 09.06.2000
PCT-Aktenzeichen PCT/US00/15964
WO-Veröffentlichungsnummer 0001003294
WO-Veröffentlichungsdatum 11.01.2001
EP-Offenlegungsdatum 03.04.2002
EP date of grant 01.09.2004
Veröffentlichungstag im Patentblatt 01.09.2005
IPC-Hauptklasse H03H 17/02

Beschreibung[de]

Diese Patentanmeldung bezieht sich auf die WO-A-99/24916 mit dem Titel „Efficient Korrelation Over a Sliding Window", veröffentlicht am 5. Mai 1999.

Diese Patentanmeldung bezieht sich auf die WO-A-00/31659 mit dem Titel „Reduced Power Matched Filter", veröffentlicht am 2. Juni 2000, welche den Stand der Technik gemäß Art. 54(3) darstellt, welche sich ebenfalls auf die oben angegebene WO-A-99/24916 bezieht.

GEBIET DER ERFINDUNG

Die vorliegende Erfindung bezieht sich im allgemeinen auf angepasste Filter für digital kodierte Signale und genauer auf ein angepasstes Filter, welches eine Vorberechnung verwendet, um einen Leistungsverbrauch in Funkempfängern von Kode Division Multiple Access (CDMA) Signalen zu reduzieren.

HINTERGRUND DER ERFINDUNG

Die Zellular-Telefonindustrie machte in den Vereinigten Staaten sagenhafte Schritte bei kommerziellen Betrieben, als auch dem Rest der Welt. Das Wachstum in Ballungsgebieten hat Annahmen weit überschritten und überflügelt rasch die Systemkapazität. Wenn dieser Trend fortfährt, werden die Wirkungen dieses industriellen Wachstums bald sogar die kleinsten Märkte erreichen. Es werden innovative Lösungen erfordert, um diese anwachsenden Kapazitätsbedürfnisse zu befriedigen, als auch einen hohen Qualitätsservice aufrechtzuerhalten und ansteigende Preise zu vermeiden.

Überall in der Welt war ein wichtiger Schritt bei zellularen Systemen der Wechsel von analoger zu digitaler Übertragung. Gleich signifikant ist die Wahl eines wirksamen digitalen Übertragungsschemas zum Implementieren der zellularen Technologie nächster Generation. Ferner wird verbreitet angenommen, dass die erste Generation von persönlichen Kommunikationsnetzwerken (Personal Kommunication Networks PCNs), welche günstige, taschengroße Drahtlostelefone verwendet, welche komfortabel getragen werden können, und verwendet werden um Anrufe im Haus, Büro, auf der Straße, im Auto, usw. zu tätigen oder zu empfangen, beispielsweise durch Zellularträger bereitgestellt wird, welche die digitale zellulare Systeminfrastruktur und zellularen Frequenzen der nächsten Generation verwenden. Das von diesen neuen Systemen verlangte Schlüsselmerkmal ist eine erhöhte Verkehrskapazität.

Derzeit wird ein Kanalzugriff unter Verwendung von Frequency Division Multiple Access (FDMA), Time Division Multiple Access (TDMA) und Kode Division Multiple Access (CDMA) Verfahren erreicht. In FDMA-Systemen ist ein Kommunikationskanal ein einzelnes Funkfrequenzband, in welchem eine Signalübertragungsleistung konzentriert ist. Eine Interferenz mit Nachbarkanälen wird durch die Verwendung von Bandpassfiltern begrenzt, welche nur Signalenergie innerhalb der spezifizierten Frequenzbänder des Filters hindurchlassen. Somit wird durch jeden Kanal, welchem eine unterschiedliche Frequenz zugewiesen wird, eine Systemkapazität durch die erhältlichen Frequenzen, als auch durch Beschränkungen, welche auf eine Kanalwiederverwendung beruhen, beschränkt.

In TDMA-Systemen besteht ein Kanal aus einem Zeitschlitz in einem periodischen Zug von Zeitintervallen über dieselbe Frequenz. Jede Periode an Zeitschlitzen wird ein Rahmen genannt. Eine vorgegebene Signalenergie wird auf einen dieser Zeitschlitze beschränkt. Eine Nachbarkanal-Interferenz wird durch die Verwendung von einem Zeittor oder einem anderen Synchronisationselement beschränkt, welches nur Signalenergie hindurchlässt, welche zur richtigen Zeit empfangen wird. Somit wird das Interferenzproblem von unterschiedlichen relativen Signalstärkepegeln reduziert.

Eine Kapazität in einem TDMA-System wird durch Komprimierung des Übertragungssignals in einem kürzeren Zeitschlitz erhöht. Als Ergebnis muss die Information bei einer entsprechend schnelleren Burstrate übertragen werden, welches die Größe an belegtem Spektrum proportional erhöht.

Mit FDMA- oder TDMA-Systemen oder hybriden FDMA/TDMA-Systemen ist es das Ziel sicherzustellen, dass zwei potentiell interferierende Signale nicht zur selben Zeit dieselbe Frequenz belegen. Im Gegensatz dazu erlauben CDMA-Systeme, dass sich Signale sowohl in der Zeit als auch in der Frequenz überlappen. Somit nutzen alle CDMA-Signale dasselbe Frequenzspektrum. Sowohl in der Frequenz- als auch in der Zeitdomäne überlappen sich die Mehrfachzugriffsignale. Unterschiedliche Aspekte von CDMA-Kommunikationen sind beispielsweise beschrieben in „On the Capacity of a Cellular CDMA System" von Gilhousen, Jacobs, Viterbi, Weaver und Wheatley, IEEE Trans. On Vehicular Technologe, Mai 1991.

In einem typischen CDMA-System wird der zu übertragende Informationsdatenstrom auf einen Datenstrom mit viel höherer Bitrate aufgeprägt, welcher von einem Pseudozufall-Rauschkode (PNcode)-Generator erzeugt wird. Der Informationsdatenstrom und der Kodedatenstrom mit höherer Bitrate werden typischerweise zusammen vervielfacht. Diese Kombination des Informationsdatenstroms mit niedrigerer Bitrate mit dem Kodedatenstrom mit höherer Bitrate wird Kodierung oder Spreizung des Informationsdatenstromsignals genannt. Jeder Informationsdatenstrom oder Kanal wird einem eindeutigen Spreizkode zugewiesen. Eine Vielzahl von kodierten Informationssignalen wird auf Funkfrequenzträgerwellen übertragen und an einem Empfänger gemeinsam als ein zusammengesetztes Signal empfangen. Jedes der kodierten Signale überlappt alle der anderen kodierten Signale, als auch rauschbezogene Signale, sowohl in der Frequenz als auch in der Zeit. Durch Korrelieren des zusammengesetzten Signals mit einem der eindeutigen Spreizkodes wird das entsprechende Informationssignal isoliert und dekodiert.

Es gibt eine Anzahl an Vorteilen im Zusammenhang mit CDMA-Kommunikationstechniken. Es wird hochgerechnet, dass die Kapazitätsbeschränkungen der CDMA basierten Zellularsysteme bis zum zwanzigfachen derer von bestehenden analogen Technologien sind, und zwar als Ergebnis der Breitband-CDMA Systemeigenschaften, wie z.B. ein verbesserter Kodierungsgewinn/eine verbesserte Modulationsdichte, Sprachaktivierungsausblendung, Sektorisierung und Wiederverwendung desselben Spektrums in jeder Zelle. CDMA ist so gut wie unempfindlich auf eine Mehrfachpfad-Interferenz und beseitigt Schwund und atmosphärische Störung, um eine Leistung in geschlossenen Siedlungen zu verbessern. Eine CDMA-Übertragung von Sprache durch einen Enkoder mit hoher Bitrate stellt eine überlegene realistische Sprachqualität sicher. CDMA stellt ebenfalls variable Datenraten bereit, welches es ermöglicht, dass viele unterschiedliche Stufen an Sprachqualität angeboten werden können. Das verwürfelte Signalformat von CDMA beseitigt Nebensprechen und macht es sehr schwierig und kostenintensiv, Gespräche zu belauschen oder nachzufolgen, welches eine größere Privatsphäre für Gesprächsteilnehmer und eine größere Immunität gegen Sendezeitbetrug sicherstellt. In Kommunikationssystemen, welche dem CDMA- oder „Spreizspektrum"-Konzept folgen, wird das Frequenzspektrum eines Informationsdatenstroms unter Verwendung eines Kodes gespreizt, welcher mit dem der Datensignale unkorreliert ist. Die Kodes sind ebenfalls für jeden Benutzer eindeutig. Dies ist der Grund dafür, warum ein Empfänger, welcher Kenntnis über den Kode des zugedachten Übertragers hat, in der Lage ist, das gewünschte Signal auszuwählen.

Es gibt mehrere unterschiedliche Techniken zum Spreizen eines Signals. Zwei der gängigsten sind eine Direktsequenz (Direct-Sequence DS) und ein Frequenzspringen (Frequency-Hopping FH), beide gehören zum Stand der Technik. Bezüglich der DS-Technik wird das Datensignal durch einen unkorrelierten Pseudozufallskode vervielfacht (d.h., der zuvor beschriebene PN-Kode). Der PN-Kode ist eine Sequenz an Chips (Bits), welche einen Wert von –1 und 1 (polar) oder 0 und 1 (nicht polar) einnehmen und Eigenschaften wie Rauschen hat. Ein Weg zum Erzeugen eines PN-Kodes ist der mittels mindestens eines Schieberegisters. Wenn die Länge eines solchen Schieberegisters N ist, wird die Periode TDS durch die Gleichung TDS = 2N–1 vorgegeben.

Bei einem Empfänger in einem CDMA-System wird das empfangene Signal wieder durch denselben (synchronisierten) PN-Kode vervielfacht. Da der Kode aus +1en und –1en (polar) besteht, entfernt dieser Betrieb den Kode von dem Signal und das ursprüngliche Datensignal bleibt über. Mit anderen Worten ist der Entspreizungsbetrieb derselbe wie der Spreizungsbetrieb.

Bezugnehmend auf 1 ist ein schematisches Schaubild eines Korrelators 10 aus dem Stand der Technik gezeigt, welcher verwendet wird, um Korrelationen zwischen den letzten M Signalabtastungen und einem M Bit-Kodewort zu berechnen. Eine M-Element Verzögerungsleitung 11 speichert empfangene Signalabtastungen und verschiebt sie sequentiell durch jede der M Stufen. Daraus folgend enthalten die Verzögerungsleitungs-Speicherelemente die letzten empfangenen M-Signalabtastungswerte. Nachdem jede neue Signalabtastung hineingeschoben ist und jede alte Signalabtastung hinausgeschoben ist, werden die M Signalabtastungswerte aus der Verzögerungsleitung in M Vorzeichenänderer 13 ausgelesen, wo die M Signalabtastungswerte mit +1 oder –1 multipliziert werden, und zwar gemäß den Bits b1... bM eines vorbestimmten Kodes, welcher in einem Kodespeicher 12 gespeichert ist, mit welchem eine Korrelation zu berechnen ist. Die Vorzeichen geänderten Werte werden dann in einem Addierer 14 summiert, um ein Korrelationsergebnis zu erzeugen.

Im allgemeinen enthält die Verarbeitung zum Korrelieren eines M-Elementvektors A = (a1, a2 ... aM) mit einem M-Elementvektor B = (b1, b2 ... bM) ein Ausbilden des Skalarproduktes A×B = a1 × b1 + a2 × b2 + ... aM × bM. Wenn die Elemente eines der Vektoren (beispielsweise B) nur binäre Werte (arithmetisch +1 oder –1) enthalten, vereinfachen sich die Produkte, wie z.B. a1 × b1 zu ± a1, jedoch ist die Verarbeitung zum Addieren der M Werte ±a1, ±a2,... ±aM immer noch ein wesentlicher Aufwand, wenn sie für jeden neuen Wert von einem empfangenen „a" durchzuführen ist.

Der Stand der Technik enthält viele Variationen des in 1 gezeigten Korrelators 10. Beispielsweise können Signalabtastungen Einzelbit (single-bit) oder „hart beschränkte" (hard-limited)-Werte nur von +1 oder –1, anstelle von Mehrfachbit (multi-bit)-Werten sein. Die verwendeten Vorzeichenänderer 13 sind dann typisch einfache XOR-Gatter. In diesem Fall kann der Addierer 14 zunächst Paare von Einzelbit-Werten addieren, um M/2 Zweibit-Werte zu erlangen; M/4 Zwei-Bitaddierer addieren dann Zweibit-Werte um M/4 Dreibit-Werte zu erlangen, usw. Ein solcher Aufbau, welcher als ein „Addierbaum" bekannt ist, ist einfacher, wenn die Eingangswerte Einzelbit, anstelle von Mehrfachbit-Werten sind.

Für Einzelbit-Wert Signalabtastungen kann der Addierer durch einen Hoch/Runterzähler ersetzt werden, welcher die M-Werte abtastet und hochzählt, wenn auf ein +1 getroffen wird, und herunterzählt, wenn ein –1 getroffen wird. Genauso kann für Mehrfachbit-Wert Signalabtastungen ein ParallelAddierbaum durch einen sequentiellen Addierer ersetzt werden, welcher jeden der M-Werte der Reihe nach von dem Verzögerungsleitungsspeicher aus extrahiert und ihn zu einem Akkumulator addiert. Im letzten Fall muss die verwendete Logik M-mal schneller als im Falle des Paralleladdierers arbeiten. Darausfolgend gibt es ein Abwiegen zwischen der Gesamtgeschwindigkeit des Korrelators und der Komplexität der Logik. Nichtsdestotrotz ist es bei jeder der oben beschriebenen Korrelatorvariationen nach dem Stand der Technik notwendig, M Werte erneut zusammenzufassen, nachdem jede neue Signalabtastung empfangen ist. Dies kann dazu führen, dass eine hohe Menge an Leistung verbraucht wird, insbesondere wenn die Leistungsversorgung eine tragbare Versorgung, wie beispielsweise eine Batterie, ist.

Bezugnehmend auf 2 ist ein schematisches Schaubild eines weiteren Korrelators 20 nach dem Stand der Technik gezeigt, dieser hat einen Adresszähler 21, eine Umschaltmatrix 22, eine Vielzahl von Speichern 23, eine entsprechende Vielzahl an Vorzeichenänderer 24 und einen Addierbaum 25. Jede neue Signalabtastung S(i) wird in eine erste Stufe 22a der Umschaltmatrix 22 eingegeben, welche durch den Adresszähler 21 gesteuert wird, den Eingangswert der Signalabtastung auf den nächsten erhältlichen Speicher der Speicher 23 zu lenken, welcher der Speicher sein wird, welcher zuletzt „n" Abtastungen zuvor verwendet wurde, um Abtastung S(i-n) zu speichern. Abtastung S(i-n) wird somit durch die neue Abtastung S(i) überschrieben. Der Grund der Umschaltmatrix 22 liegt darin, die Eingangsabtastungsleitungen nur mit dem Speicher zu verbinden, welcher durch den Adresszähler 21 ausgewählt wird, um die Kapazitätsladung auf den Eingangsleitungen zu reduzieren, und dadurch den Leistungsverbrauch beim Betrieb bei einer hohen Abtastungsrate zu reduzieren. Die erste Stufe 22a der Umschaltmatrix 22 wird durch ein erstes Bit des Adresszählers 21 gesteuert, um den Eingangswert entweder auf einen ersten Schalter der Schalter von der zweiten Stufe 22b oder auf einen zweiten Schalter der Schalter der zweiten Stufe 22b zu lenken. Ein zweites Bit des Adresszählers 21 betreibt die Schalter der zweiten Stufe, um den Eingangswert an einen der vier Schalter der dritten Stufe 22c zu lenken, und sofort, bis eine Endstufe an Schaltern 22d den Eingangswert an einen eindeutigen Speicher der Speicher 23 lenkt. Das erste Adresszählerbit, welches verwendet wird um Schalter 22a zu steuern, ist vorzugsweise das sich am schnellsten ändernde Adresszählerbit, während die zahlreicheren Schalter in der Endstufe an Schaltern 22d vorzugsweise durch das sich am langsamsten variierende Bit des Adresszählers 21 gesteuert werden, wodurch der Leistungsverbrauch in Verbindung mit den bistabilen Schaltern (toggling switches) minimiert wird. Durch dieses Mittel speichert der Speicher 23 die letzten „n"-Eingangsabtastungswerte, wobei „n" in diesem Beispiel eine Zweierpotenz ist. Natürlich kann „n" ebenfalls kleiner als eine Zweierpotenz sein, und der Adresszähler 21 kann so angeordnet sein, um von 0 auf n-1 zu zählen und sich dann auf 0 zurückzusetzen. Da nur ein Speicherwert an jedem Abtastungstakt-Augenblick modifiziert wird, ist der Leistungsverbrauch dieser Anordnung viel niedriger als beim Verschieben der Eingangswerte durch ein „n"-stufiges Schieberegister, bei welchem sich alle „n"-Werte bei jedem Abtastungstakt-Augenblick ändern würden, wie z.B. in dem Korrelator 10 von 1. Der Unterschied ist, dass in dem Fall des Schieberegisters das erste Register immer die neueste Signalabtastung S(i) enthält. Bei dem Korrelator 20 von 2 vertauscht (rotates) sich jedoch der Speicher, welcher die letzte Signalabtastung S(i) enthält, zyklisch, wenn „i" zunimmt, wird jedoch nichtsdestotrotz durch den Wert des Adresszählers 21 angezeigt.

Die zu berechnende Korrelation wird vorgegeben durch die Gleichung Cn * S(i) + C(n-1) * S(i-1) + C(n-2) * S(i-2)... + C(1) * S(i-n+1)... (1) wobei (C1, C2, C3... C(n)) ein n-Bit Kode ist, wobei jedes Kodebit einen Wert von +1 oder –1 hat. Multiplikationen mit +1 oder –1 werden einfach durchgeführt, indem entweder das Vorzeichen (für –1) geändert wird, oder nicht (für +1) geändert wird, und zwar unter Verwendung des Vorzeichenänderer 24, welcher durch das jeweilige Kodebit gesteuert wird. Die Kodebits werden durch einen Kode-Generator (nicht gezeigt) zugeführt, welcher den Kode so vertauschen muss, dass Cn an den Multiplizierer in dem Vorzeichenänderer 24 angelegt wird, welcher mit dem Speicher 23 verbunden ist, welcher die letzte Signalabtastung S(i) enthält, welche durch den Adresszähler 21 angezeigt wird. Da der Kode Einzelbitwerte enthält, ist es vorteilhaft den Kode zu vertauschen, anstelle die Inhalte der Speicher 23 zu vertauschen, welche Mehrfachbit-Signalabtastungen halten.

Die Vorzeichen-geänderten Ausgaben des Vorzeichenänderer 24 werden in dem Addierbaum 25 addiert, welcher Paare auf einmal addiert. Die Anzahl an Stufen des Addierbaums 25, welche benötigt werden, um die letzte Korrelationswertausgabe zu erzeugen, ist dieselbe Anzahl wie die Anzahl an Schalterstufen 22a...22d, welche benötigt werden um einen eindeutigen Speicher an Speichern 23 zu adressieren (d.h. LOG2 (n) Stufen). Somit enthält ein 64 Bit Korrelator vierundsechzig Speicher 23, 6 Stufen an Eingabelenkschaltern 22 und 6 Stufen von einem Addierbaum 25, somit insgesamt 32 + 16 + 8 + 4 + 2 + 1 = 63 Addierer.

Obwohl die Eingabe-Lenkanordnung in dem Korrelator 20 von 2 wesentliche Leistungseinsparungen verglichen mit einem Schieberegister gibt, ist die Anzahl an Additionen pro berechnetem Korrelationswert immer noch gleich 63. Das heißt, dass die Anzahl an Additionen durch die Verwendung des Korrelators 20 von 2 nicht reduziert wurde. Somit kann, genauso wie bei dem Korrelator 10 von 1, die Anzahl an in dem Korrelator 20 von 2 benötigten Additionen zu einer hohen verbrauchten Leistungsgröße führen, insbesondere wenn die Leistungsversorgung eine tragbare Versorgung ist, wie beispielsweise eine Batterie.

Angesichts des vorhergehenden ist es wünschenswert ein angepasstes Filter bereitzustellen, welches Berechnungen minimiert, um somit einen Leistungsverbrauch zu reduzieren.

Die WO-A1-0031659 offenbart ein angepasstes Filter zur Verwendung in einem Funktelefonempfänger, welcher Code Division Multiple Access (CDMA) Signale empfängt. Das angepasste Filter erzeugt Vorkombinationen von Eingangswerten, um die Anzahl von Multiplikations- und Additionsbetrieben wesentlich zu reduzieren, verglichen mit herkömmlichen angepassten Filtern, welche benötigt werden um einen Korrelationswert zu erzeugen. Die reduzierten Anzahlen an benötigten Betrieben, einher mit einer reduzierten Anzahl an Verzögerungselementen, welche benötigt werden um CDMA-Signale zu entspreizen, reduzieren den gesamten Leistungsverbrauch des angepassten Filters. Das angepasste Filter enthält ein Vorkombinationsmittel, eine Vielzahl von Auswahlmitteln, Additionsmitteln und Verzögerungsmitteln.

ZUSAMMENFASSUNG DER ERFINDUNG

Gemäß der vorliegenden Erfindung, wie in den anliegenden Ansprüchen bestimmt, wird eine Technik zum Korrelieren einer Sequenz an Signalabtastungswerten mit einem vorbestimmten digitalen Kode bereitgestellt, um Korrelationswerte für Verschiebungen in der Sequenz an Signalabtastungswerten relativ zu dem vorbestimmten digitalen Kode zu erzeugen. In einer Ausführungsform wird die Technik realisiert durch Kombinieren von Untergruppen der Signalabtastungswerte in der Sequenz, um Sätze von Vorkombinationen zu bilden, und dann durch Auswählen einer Vorkombination von jedem Satz an Vorkombinationen, um eine Vielzahl an ausgewählten Vorkombinationen bereitzustellen. Die Vielzahl an ausgewählten Vorkombinationen wird dann addiert oder subtrahiert, um einen Korrelationswert entsprechend einer Verschiebung in der Sequenz an Signalabtastungswerten zu erzeugen.

Der vorbestimmte digitale Kode ist üblicherweise ein Segment von einem Direktsequenz-Spreizspektrum-Spreizkode. Der vorbestimmte digitale Kode kann ein realer Kode sein, und die Signalabtastungswerte können reale Werte sein. Alternativ kann der vorbestimmte digitale Kode einen realen Kode und einen imaginären Kode enthalten, und die Signalabtastungswerte können komplexe Werte sein.

Gemäß anderer Aspekte der vorliegenden Erfindung werden die Sätze an Vorkombinationen aus Summen und Differenzen von Paaren der Signalabtastungswerte ausgebildet. Die Sätze an Vorkombinationen können aus Summen und Differenzen von Paaren von realen oder Paaren von imaginären Signalabtastungswerten gebildet werden. In einem solchen Fall werden die Sätze an Vorkombinationen vorzugsweise aus einer Summe und einer Differenz des Realteils von einem Signalabtastungswert und dem Imaginärteil von einem anderen Signalabtastungswert gebildet.

Gemäß weiterer Aspekte der vorliegenden Erfindung werden die Sätze an Vorkombinationen aus allen möglichen Kombinationen von Summen und Differenzen einer vorgegebenen Anzahl der Signalabtastungswerte gebildet. In einem solchen Fall wird nur eine Vorzeichenpolarität mit einem der Signalabtastungswerte vorteilhaft verwendet, wodurch die Anzahl an Vorkombinationen, welche in jedem Satz an Vorkombinationen gebildet werden, halbiert wird.

Gemäß eines ferner weiteren Aspektes der vorliegenden Erfindung werden Paare an Vorkombinationen vorteilhafterweise aus einem ältesten Satz an Vorkombinationen kombiniert, um den Beitrag eines ältesten Wertes der Signalabtastungswerte in dem ältesten Satz an Vorkombinationen zu löschen, das Ergebnis wird dann mit einem neuesten Signalabtastungswert kombiniert, um einen aktualisierten Satz an Vorkombinationen zu erzeugen. Vorzugsweise wird der aktualisierte Satz an Vorkombinationen jedes Mal dann erzeugt, wenn ein neuer Signalabtastungswert empfangen wird, und der aktualisierte Satz an Vorkombinationen überschreibt den ältesten Satz an Vorkombinationen in der Speichervorrichtung. Der älteste Satz an Vorkombinationen ist der Satz an Vorkombinationen, welcher von dem ältesten Signalabtastungswert abhängt, dessen Beitrag noch nicht gelöscht wurde.

Gemäß eines ferner weiteren Aspektes der vorliegenden Erfindung werden die Sätze an Vorkombinationen vorzugsweise gespeichert, nachdem sie ausgebildet sind. Die Sätze an Vorkombinationen werden üblicherweise in einer Speichervorrichtung gespeichert, welche vorzugsweise ein Ringpuffer ist. Die Speichervorrichtung enthält vorzugsweise einen Leitschaltbaum zum Leiten eines Satzes an Vorkombinationen an einen vorgesehenen Satz an Speicherelementen. Ein solcher Leitschaltbaum ist vorzugsweise ein Binärbaum, welcher eine Anzahl an Stufen enthält, die gleich dem Logarithmus der Basis 2 der Anzahl an Speicherorten für Sätze an Vorkombinationen ist. Eine Stufe des binären Leitschaltbaums, welche eine kleinere Anzahl an Schaltelementen hat, schaltet vorzugsweise einen Leitweg häufiger als eine Stufe, welche eine größere Anzahl an Schaltelementen hat. Vorzugsweise speichert die Speichervorrichtung die Sätze an Vorkombinationen in einer Reihenfolge, welche relativ zu der zeitsequentiellen Reihenfolge ihrer Ausbildung Bit-verkehrt ist.

Gemäß ferner weiteren Aspekten der vorliegenden Erfindung wird die Auswahl der Vorkombinationen vorzugsweise durch eine entsprechende Untergruppe an Bits des vorbestimmten digitalen Kodes gesteuert, und jede ausgewählte Vorkombination wird dann vorzugsweise addiert oder subtrahiert, und zwar gemäß der Polarität von einem der Bits der entsprechenden Untergruppe an Bits. Jede ausgewählte Vorkombination wird vorzugsweise multipliziert mit einem entsprechend vorausgewählten Bit aus dem vorbestimmten digitalen Kode, um die Polarität von jeder ausgewählten Vorkombination zu ändern oder zu bestätigen.

Gemäß ferner weiterer Aspekte der vorliegenden Erfindung enthält der vorbestimmte digitale Kode eine erste Anzahl an Kodesymbolen, und die Sätze an Vorkombinationen werden aus einer Untergruppe ausgebildet, welche eine zweite Anzahl an Signalabtastungswerte enthält, welche nicht in die erste Anzahl teilbar ist. Die vorliegende Erfindung kann dann als ein angepasstes Filter realisiert werden, welches einen Korrelator zum Korrelieren mit einem vorbestimmten Kode einer Länge, welche durch die zweite Anzahl teilbar ist, enthält.

KURZE BESCHREIBUNG DER ZEICHNUNG

Um ein vollständigeres Verständnis der vorliegenden Erfindung zu erleichtern, wird nun Bezug genommen auf die beiliegenden Zeichnungen. Diese Zeichnungen sollten nicht als die vorliegende Erfindung beschränkend angesehen werden, sondern dienen nur zur Erläuterung.

1 ist ein schematisches Schaubild eines ersten Korrelators aus dem Stand der Technik, welcher keine Vorkombinationen berechnet.

2 ist ein schematisches Schaubild eines zweiten Korrelators aus dem Stand der Technik, welcher keine Vorkombinationen berechnet.

3 ist ein schematisches Schaubild eines Korrelators, welcher eine Summe und eine Differenz gemäß der vorliegenden Erfindung vorberechnet.

4 zeigt einen Trellis-Aufbau zum Aktualisieren von 8 Vorkombinationen aus vier Abtastungen gemäß der vorliegenden Erfindung.

5 ist ein schematisches Schaubild eines Teils eines 64-Bit Korrelators, welcher Vorkombinationen von vier Abtastungen gemäß der vorliegenden Erfindung verwendet.

6 ist ein schematisches Schaubild eines Kodeplaners zum Korrelieren mit vier Kodes gemäß der vorliegenden Erfindung.

7 ist ein schematisches Schaubild eines 64-Bit Korrelators, welcher einen 63-Bit Korrelator verwendet, welcher 21 Sätze an 3-Abtastung Vorkombinationen gemäß der vorliegenden Erfindung einsetzt.

8 zeigt einen Trellis-Aufbau zum Aktualisieren von 3-Abtastung Vorkombinationen gemäß der vorliegenden Erfindung.

9 zeigt einen Trellis-Aufbau zum Aktualisieren eines komplexen Korrelators, welcher Vorkombinationen von Paaren von Real- oder Imaginärabtastungen gemäß der vorliegenden Erfindung verwendet.

GENAUE BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM

Bezugnehmend auf 3 ist ein Korrelator 100 zum Korrelieren von Signalabtastungen mit einem Kodewort durch Vorberechnen einer Summe und einer Differenz gemäß der vorliegenden Erfindung gezeigt. Der Korrelator 100 enthält einen Vorkombinierer 101, ein Paar an konzentrischen Ringen an Speichern 102, einen Satz an Auswahlschaltern 103, einen 32-Eingang Addierbaum 104, einen Kodegenerator 105, einen 6-Bit Adresszähler 106 und einen Multiplizierer 107. Genauso wie bei 2 wird eine 64-Bit Korrelation für den Korrelator 100 von 3 angenommen, und die 64 Speicher 12 in 2 sind nun als das Paar an konzentrischen Ringen von Speichern 102 in 3 dargestellt. Das Paar an konzentrischen Ringen an Speichern 102 hat 32 Speicherpufferelemente in jedem Ring, was insgesamt 64 macht. Der 6-Bit Adresszähler 106 teilt einen Abtastungstakt durch 64, jedoch werden nur die höchstwertigsten 5 Bits verwendet, um die zwei konzentrischen Ringe 102 an 32 Speichern zu adressieren, so dass sich die Speicher, welche adressiert sind, nur bei jedem abwechselnden Abtastungstakt ändern.

Eingangssignalabtastungen werden dem Vorkombinierer 101 zugeführt. Die Zweckbestimmung des Vorkombinierers 101 liegt darin, die Summe und die Differenz von Paaren an Eingangsabtastungen auszubilden. Beispielsweise kann Ausdruck (1) von oben für die gewünschte Korrelation in die folgende Form neu arrangiert werden: Cn * ((S(i) + Cn * C(n-1) * S(i-1) )

+ C(n-2) * (S(i-2) + C(n-2) * C(n-3) * S(i-3))

+ C(n-4) * (S(i-4) + C(n-4) * C(n-5) * S(n-5))

...

...

...

+ C(2) * (S(i-n+2)) + C(2) * C(1) * S(i-n+1))... (2)

Nun ist jeder Ausdruck, wie z.B. S(i-2) + C(n-2) * C(n-3) * S(n-3) entweder eine Summe S(i-2) + S(i-3) oder eine Differenz S(i-2) – S(i-3) in Abhängigkeit davon, ob C(n-2) * C(n-3) gleich +1 oder –1 ist. Der +1 Wert liegt an, wenn Kode-Bits C(n-2) und C(n-3) von derselben Polarität sind, andererseits liegt der –1 Wert an. Darausfolgend wird, wenn sowohl die Summe als auch die Differenz bereits vorberechnet sind, die Differenz ausgewählt, wenn die zwei aufeinanderfolgenden Kode-Bits unterschiedlich sind, andererseits wird die Summe i von Eingangsabtastungen ausgewählt, und der andere Ring speichert die Differenzen.

Der Satz an Auswahlschaltern 103, von welchen nur einer, nämlich Schalter Nr. „k" aus Gründen der Darstellung gezeigt ist, wählt entweder einen Speicher im Innenring oder einen Speicher im Außenring, und zwar in Abhängigkeit von der Modulo-2 Summe von zwei Bits b(k,1) und b(k,2) aus, welche zwei aufeinanderfolgende ausgewählte Kode-Bits sind, welche durch den Kodegenerator 105 zugeführt werden. Die Bezeichnung (b(k,j) wird für die ausgewählten Kode-Bits der Kode-Bits C verwendet, um anzuzeigen, dass die Zuordnung zwischen Bits „b" und Bits C keine konstante Zuordnung ist, sondern sich abwechselnd ändert, da die Kode-Bits gegen die gespeicherten Werte vertauscht werden müssen. Jede Summe oder Differenz, welche durch die Auswahlschalter 103 ausgewählt wird, wird in einem dazugehörigen Multiplizierer 107 gemäß des Wertes von b(k,1) im Vorzeichen geändert. Die 32 Vorzeichengeänderten Summen oder Differenzen werden dann in dem 32-Eingang Addierbaum 104 addiert, um den Korrelationswert zu bilden. Der 32-Eingang Addierbaum 104 addiert Werte in Paare, so wie es auch der Addierbaum 13 von 2 tut, enthält nun jedoch nur 16 + 8 + 4 + 2 + 1 = 31 Addierer, oder ungefähr die halbe Anzahl, verglichen mit dem von 2. Die Anzahl an Additionen zum Bilden des Korrelationsergebnisses hat sich somit halbiert, wodurch darausfolgend der Leistungsverbrauch in dem Addierbaum 104 halbiert wird.

Wenn der Ausdruck (2) für die Korrelation in Termen von Summen und Differenzen für den nächsten Abtastungsakt nach Empfang von S(i+1) umgeschrieben wird, erhalten wir Cn * (S(i+1) + C(n) * C(n-1) * S(i))

+ C(n-2) * (S(i-1) + C(n-2) * C(n-3) * S(i-2))

...

...

...

+ C2 * (S(i-n+3) + C2 * C1 * S(i-n+2))... (3)
welcher wie bereits gesehen werden kann, verglichen mit Ausdruck (2), von der Summe und Differenz von einem unterschiedlichen Paar an Werten S(i+1) und S(i) abhängt. Eine Lösung liegt darin, eine Kopieranordnung zu verwenden, um das Korrelationsergebnis für ungerade Abtastungstaktzyklen, verglichen mit geraden Abtastungstaktzyklen, zu berechnen. Da jeder zur halben Zeit verwendet werden würde, würde der Leistungsverbrauch von jedem ein Viertel dessen von 2 sein, und die Gesamtleistung würde die halbe derer von 2 sein, wie beabsichtigt. Jedoch würde sich die Anzahl an Speichern verdoppeln, welches den Substratbereich für eine integrierte Chipanordnung vergrößern wird. Um eine Verdoppelung zu vermeiden, schreiben wir anstelle dessen den Ausdruck (3) für die nächste Korrelation um als: C(n-1) * (S(i) + C(n-1) * C(n-2) * S(i-1))

+ C(n-3) * (S(i-2) + C(n-3) * C(n-4) * S(i-3))

...

...

...

+ C3 * (S(i-n+4) + C3 * C2 * S(i-n+3))

+ C1 * (S(i-n+2) + C1 * Cn * S(i+1))... (4)
welcher, wie nun gesehen werden kann, von den Summen und Differenzen derselben Paare von einem Wert zwischen der letzten Abtastung S(i+1) und der zweitältesten Abtastung S(i-n+2) abhängt. Dies kann berechnet werden, ohne sich an alte Abtastungswerte, als auch Summen und Differenzen zu erinnern, wie folgt.

Angenommen ein Summenspeicher A hält einen alten Summenwert S(i-n+2) + S(i-n+1), während ein Differenzspeicher B einen alten Wert S(i-n+2) – S(i-n+1) hält.

Der zweitälteste Abtastungswert S(i-n+2) kann daher wiederhergestellt werden als: (A+B)/2, wobei S(i-n+1) aufgehoben werden wird. Daher wird der Vorkombinierer 101 so angeordnet, die ältesten Summen- und Differenzwerte A und B mit der letzten Abtastung S(i+1) zu kombinieren gemäß: Neuer A-Wert = S(i+1) + (A+B)/2 = S(i+1) + S(i-n+2) (5a) und Neuer B-Wert = S(i+1) – (A+B)/2 = S(i+1) – S(i-n+2) (5b)

Indem die Werte b(k,2) und b(k,1) so gewählt werden, dass sie geeignete Auswahlen der Kode-Bits C(i) sind, wird der korrekte Korrelationswert aus den alten Summen und Differenzen und der durch Gleichungen (5) vorgegebenen neuen Summe und Differenz berechnet.

Am nächsten Abtast-Augenblick erscheint S(i+2), und der Vorkombinierer 101 führt denselben Betrieb wieder gemäß Gleichung (5) durch, ohne die Adressspeicher A und B zu ändern, wodurch nun erlangt wird: Neuer A-Wert = S(i+2) + (A+B)/2 = S(i+2) + S(i+1) (6a) und Neuer B-Wert = S(i+2) – (A+B)/2 = S(i+2) – S(i+1) (6b) da der Beitrag von S(i-n+2) nun aufgehoben ist. Wieder wird die korrekte Auswahl durch den Kodegenerator 105 an Bits b (k, 2) und b (k, 1) aus den Kode-Bits C (i) das korrekte Korrelationsergebnis bereitstellen. Nachdem der Vorkombinierer 101 Gleichungen (6) berechnet hat, sind die gespeicherten Summen und Differenzen wieder so, wie zur Verwendung von Gleichung (2) vorgeschrieben, mit dem Wert von „i", welcher durch 2 erhöht wurde, und der Adresszähler 106 adressiert nun das nächste Paar an Summen-/Differenzspeicher A, B im Ringpuffer 102. Somit kann der Korrelator 100 sowohl die geraden als auch ungeraden Korrelationswerte basierend auf im wesentlichen dieselben gespeicherten Summen und Differenzen durch die Verwendung des Vorkombinierers 101 berechnen, um eine gespeicherte Summe und Differenz A, B einmal unter Verwendung von Gleichung (5) zum Berechnen einer ungeraden Korrelation zu ändern, und dieselben Speicher A, B wieder unter Verwendung von Gleichung (6) zu ändern, bevor der Adresszähler 106 die Adresse von A und B voreilt, und zwar vor Berechnung des nächsten geraden Korrelationswertes. Da Gleichungen (5) und (6) grundlegend dieselben sind, führt der Vorkombinierer 101 exakt denselben Betrieb für sowohl gerade als auch ungerade Korrelationen durch, welches ein vereinfachenderes Merkmal der vorliegenden Erfindung ist. Darüber hinaus führt der Kodegenerator 105 dieselben 64 Ausgabebitwerte für alle geraden Korrelationen zu, und zwar einfach durch Vertauschen der Ausgaben um eine Position für jede neue gerade Korrelation, und zwar abwechselnd mit dem Zuführen weiterer 64 Ausgabebitwerte für ungerade Korrelationen, welche ebenfalls immer dieselben sind, jedoch nur zwischen aufeinanderfolgenden ungeraden Korrelationen vertauscht sind.

Das Prinzip kann erweitert werden, um mehr Vorkombinationen von einer größeren Anzahl an Eingangsabtastungen zu berechnen. Beispielsweise gibt es 16 mögliche Kombinationen an vier Eingangsabtastungen, von denen 8 gerade die negativen der anderen 8 sind. Daher reicht es aus, 8 Vorkombinationen von 4 Eingangsabtastungen zu berechnen und zu speichern. In diesem Fall ist die Anzahl an benötigten Vorkombinationen doppelt so hoch wie die Anzahl an ursprünglichen Abtastungen, welches das Doppelte der Ringpuffergröße benötigt, welcher ein 16×8 Puffer für einen 64-Bit Korrelator sein würde. Ein Ausdrücken der 64-Bit Korrelation als die Summe von 16 Vorkombinationen, wobei eine von jeder Gruppe von 8 ausgewählt ist, ermöglicht eine zu berechnende Korrelation unter Verwendung von nur 8 + 4 + 2 + 1 = 15 Additionen. Die gewünschte Korrelation wird ausgedrückt als: Cn * (S(i) + Cn * C(n-1) * S(i-1) + Cn * C(n-2)

* S(i-2) + Cn * C(n-3) * S(i-3))

+ C(n-4) * (S(i-4) + C(n-4) * C(n-5) * S(i-5) + C(n-

4) * C(n-6) * S(i-6) + C(n-4) * C(n-7) * S(i-7))

...

...

...

+ C4 * (S(i-n+4) + C4 * C3 * S(i-n+3) + C4 * C2

* S(i-n+2) + C4 * C1 * S(i-n+1)) (7)

Terme von Ausdruck (7) wie zum Beispiel (S(i) + Cn * C(n-1) * S(i-1) + Cn * C(n-2) * S(i-2) + Cn * C(n-3) * S(i-3)) sind einfach eine der acht Kombinationen: S(i) + S(i-1) + S(i-2) + S(i-3) S(i) + S(i-1) + S(i-2) – S(i-3) S(i) + S(i-1) – S(i-2) + S(i-3) S(i) + S(i-1) – S(i-2) – S(i-3) S(i) – S(i-1) + S(i-2) + S(i-3) S(i) – S(i-1) + S(i-2) – S(i-3) S(i) – S(i-1) – S(i-2) + S(i-3) S(i) – S(i-1) – S(i-2) – S(i-3) gemäß der Polaritäten der drei Koeffizienten Cn * C(n-1); Cn * C(n-2); und Cn * C(n-3).

Wenn die unmittelbar folgende Korrelation nach Empfang von Abtastung S(i+1) auf dieselbe Weise berechnet wurde, würde es einer der acht Vorkombinationen benötigen: S(i+1) + S(i) + S(i-1) + S(i-2) S(i+1) + S(i) + S(i-1) – S(i-2) S(i+1) + S(i) – S(i-1) + S(i-2) S(i+1) + S(i) – S(i-1) – S(i-2) S(i+1) – S(i) + S(i-1) + S(i-2) S(i+1) – S(i) + S(i-1) – S(i-2) S(i+1) – S(i) – S(i-1) + S(i-2) S(i+1) – S(i) – S(i-1) – S(i-2) welche nicht dieselben wie die ersten acht Kombinationen sind. Genauso benötigen die nächsten zwei Korrelationen ebenfalls unterschiedliche Vorkombinationen, und dieselben Vorkombinationen, mit Ausnahme für eine neue 8, welche die älteste 8 ersetzt, werden nur bei jeder vierten Korrelation verwendet. Dies kann natürlich durch vier Kopien derselben Hardware implementiert werden, welche mit einem aufeinanderfolgenden Staffeler (successive stagger) von einer-Abtastung arbeitet. Jede würde 8 Vorkombinationen von vier Werten berechnen, welches nur 10 Additionen erfordert, wenn diese in der Gray-Kode Reihenfolge gemacht werden, welche in der oben angegebenen Familienanmeldung U.S. Patentanmeldung No. 08/967,444 offenbart ist. Dann werden 15 Additionen benötigt, um 16 ausgewählte Vorkombinationen der gespeicherten Vorkombinationen zu kombinieren, um eine Korrelation zu vollenden, welches insgesamt 15 Additionen macht. Jeder der vier Korrelatoren arbeitet bei einem Viertel der Zeit. Die nächste Anzahl an Additionen pro Korrelation, nämlich 25, ist nur etwas geringer als die 34, welche erforderlich sind, um Paare von zwei Abtastungswerten gemäß des in 3 beschriebenen Korrelators 100 vorzukombinieren, es erfordert jedoch das 8-fache der Anzahl an Ringpuffer-Speicherelementen. Es ist daher wünschenswert, eine Vorrichtung zu verwenden, welche äquivalent zu der ist, welche in dem Korrelator 100 verwendet wird, welcher in 3 beschrieben ist, um ein Verdoppeln der Hardware, um sich um gerade und ungerade Korrelationen zu kümmern, zu vermeiden; in diesem Fall um es zu vermeiden, dass vierfache der Hardware zu benötigen. Eine solche Vorrichtung sollte es erlauben, dass vier aufeinanderfolgende Korrelationen in Termen derselben 15 Sätze an 8 Vorkombinationen derselben Abtastungswert-Quadrupel ausgedrückt werden, wobei nur ein neuer Satz von 8 jedes Mal berechnet wird.

Bezugnehmend auf 4 ist ein Trellis-Aufbau 200 zum Aktualisieren von 8 Vorkombinationen von vier Abtastungen unter Verwendung von Addierern 201 und einem Schmetterlingskreis 202 gezeigt. Der Trellis-Aufbau 200 erlaubt es, dass vier aufeinanderfolgende Korrelationen in Termen derselben 15 Sätze an 8 Vorkombinationen derselben Abtastungswert-Quadrupel ausgedrückt werden, wobei nur ein neuer Satz von 8 jedes Mal berechnet wird. Der neue Satz an acht Kombinationen wird aus dem Satz von 8 Kombinationen berechnet, welcher den ältesten Abtastungswert plus eine neue Abtastung enthält, wie in dem Trellis-Aufbau 200 von 4 gezeigt. Der Satz an ältesten Vorkombinationen wird in 4 mit A ... H gekennzeichnet, wobei ihre Gleichungen in Termen der vier ältesten Abtastungen S(i-n+4); S(i-n+3); S(i-n+2) und S(i-n+1) vorgegeben sind.

Um den Beitrag der ältesten Abtastung S(i-n+1) zu entfernen, kombinieren Addierer 201 jene Paare an Werten, welche sich im Vorzeichen ihrer S(i-n+1) Bestandteile unterscheiden. Beispielsweise A + B = 2(S(i-n+4) + S(i-n+3) + S(i-n+2))

Aufgrund des Faktors von 2 muss das geringwertigste Bit (LSB) gleich Null sein, und wird einfach verworfen, um (A+B)/2 bereitzustellen. Dann berechnet ein Schmetterlingskreis 202 die Summe und die Differenz zwischen der neuen Abtastung S(i+1) und (A+B)/2, um neue Werte A ... H zu gewinnen, wie durch die Gleichungen unten von 4 angegeben. Eine sich kreuzende Trellis-Verbindung wird verwendet, um sicherzustellen, dass die neuen Werte in Positionen entsprechend derselben Vorzeichenmuster wie zuvor gespeichert werden. Somit werden beispielsweise die alten Werte von C und D kombiniert, um nicht die neuen Werte für C und D, sondern neue Werte für B und G zu gewinnen. Wenn der gesamte Betrieb in diesem Trellis-Aufbau 200 von 4 parallel unter Verwendung von vier Addierern 201 und vier Schmetterlingsschaltungen 202 durchgeführt wird, werden die neuen Werte alle zur selben Zeit berechnet und können die alten Werte überschreiben, ohne dass Gefahr gelaufen wird, dass ein alter Wert überschrieben wird, welcher immer noch benötigt wird. Alternativ müssen, wenn ein Addierer 201 und eine Schmetterlingsschaltung 202 sequentiell vier Mal verwendet werden, die neuen Werte A ... H in einem alternativen Satz von 8 Speichern geschrieben werden, um ein frühzeitiges Überschreiben der alten A ... H zu vermeiden. Der Trellis-Aufbau 200 von 4 kann mit neuen Eingangsabtastungen S(i), S(i+1), S(i+2) und S(i+3) wiederholt werden, um die für die aufeinanderfolgenden Korrelationen benötigen Vorkombinationen bereitzustellen, in welchen S(i), S(i+1), S(i+2) und S(i+3) aufeinanderfolgend empfangen werden. Dann wird der Adresszähler inkrementiert., um den nächsten Satz an 8 Speichern A ... H in dem 16×8 Ringpuffer zu adressieren, und zwar vor einer Berechnung der Korrelation für eine neueste Abtastung S(i+4) in derselben Weise, wobei die zuvor verwendeten 8 Speicher A ... H nun Vorkombinationen von S(i+3), S(i+2), S(i+1) und S(i) enthalten, welche Kombinationen der vier zuvor ältesten Abtastungen ersetzen.

Bezugnehmend auf 5 ist ein Teil eines 64-Bit Korrelators 300 gezeigt, welcher Vorkombinationen von vier Abtastungswerten verwendet. Der Korrelator 300 enthält einen Vorkombinierer 301, einen Schaltbaum 302, einen Ringpuffer 303, eine Vielzahl von 8-Wege Selektoren 304, eine entsprechende Vielzahl von Vorzeichenänderer 305, einen Addierbaum 306, einen Kodeplaner 307 und einen Adresszähler 308. Der Vorkombinierer 301 arbeitet gemäß des Trellis-Aufbaus 200 von 4, um eine ausgewählte 8 der Vorkombinationen jedes Mal dann zu aktualisieren, wenn eine neue Abtastung empfangen wird. Dieselben 8 Speicher werden vier Mal aufeinanderfolgend aktualisiert, wonach der Adresszähler 308 aufwärts zählt, um die nächste Gruppe an 8 Speichern in dem Ringpuffer 303 zu adressieren. Weil der Adresszähler 308 nun die Ausgaben von einer Gruppe an acht Speichern auswählt, als dass er auch neue Werte an ihre Eingänge lenkt, enthält der Schaltbaum 302 sowohl einen Eingangsschaltbaum zum Lenken von Werten an die Speicher, als auch einen Ausgangsschaltbaum, um Werte aus den Speichern auszuwählen. Der Schaltbaum 302 kann ein einzelner, bidirektionaler Schaltbaum sein, welcher CMOS zweiseitige Schalter verwendet, wenn gewünscht, und die Speicher können zum Lesen (d.h. zum Setzen ihrer gespeicherten Werte an einen in Verbindung stehenden I/O-Bus) oder zum Beschreiben (d.h. zum Akzeptieren des Wertes auf dem I/O-Bus zur Speicherung) freigegeben werden. Für einen 64-Bit Korrelator ist der Adresszähler 308 ein 6-Bit Zähler, welcher durch 64 teilt. Die höchstwertigsten vier Bits versorgen die Adresse des Satzes an 8 Speichern, welche durch den Schaltbaum 302 ausgewählt werden, während die geringstwertigsten zwei Bits das geeignete an vier ausgeprägten Ausgabe-Bitmuster aus dem Kodeplaner 307 während vier aufeinanderfolgender Korrelationen auswählen, wobei sie das Muster dann durch eine Umdrehung der Ausgabe-Bitmuster um eine Stelle von dem Kodeplaner 307 wiederholen. Der Kodeplaner 307 führt 16 Sätze an drei Steuerbits an 16 Achtwege-Selektoren 304 (von denen aus Gründen der Vereinfachung nur 4 gezeigt sind) und 16 Vorzeichen geänderte Bits an 16 entsprechende Vorzeichenänderer 305 (von denen aus Gründen der Vereinfachung nur 4 gezeigt sind) gemäß Gleichung (7) zu. Die Verwendung der Kode-Bits C(1) ... C(64) wird nur um eine Stelle zwischen jeder aufeinanderfolgenden Korrelation vor Berechnung der Steuerbits b(i) vertauscht. Der Addierbaum 306 addiert die 16 ausgewählten Vorkombinationen unter Verwendung von 8 + 4 + 2 + 1 = 15 paarweisen Addierern, um jede neue Korrelation zu erlangen. Somit erfordert jede Korrelation 12 Additionen oder Subtraktionen für den in 4 gezeigten Trellis-Aufbau 200, plus 15 für den in 5 gezeigten Korrelator 300, was insgesamt 27 macht.

Der Speicheraufwand von dem in 3 gezeigten Korrelator 100 (34 Additionen) zu der Kombination des in 4 gezeigten Trellis-Aufbaus 200 und des in 5 gezeigten Korrelators 300 (27 Additionen) ist vielleicht größer als es den Anschein macht, da eine Schmetterlingsschaltung gleichzeitig eine Summe und eine Differenz bilden kann, mit weniger als einer doppelten Komplexität von einer Summe oder Differenz alleine. Die gleiche Komplexität des Trellis-Aufbaus 200 von 4 beträgt somit eher ungefähr 10 Betriebe anstelle von 12. Der Gewinn beim Verwenden von Vorkombinationen an vier Werten ist jedoch vielleicht immer noch klein, verglichen mit dem Korrelator 100 von 3, und mag die Extrakomplexität nicht rechtfertigen. Wenn es jedoch gewünscht ist, 64-Bit Korrelationen mit mehr als einem 64-Bit Kodewort zur selben Zeit durchzuführen, kann die Bemühung und die Hardware zum Berechnen und Speichern von Vorkombinationen für all die Kombinationen gebräuchlich sein, und nur der Kodeplaner und der Addierbaum brauchen pro Kode verdoppelt zu werden. Somit beträgt die Komplexität zum Durchführen von vier 64-Bit Korrelationen beispielsweise 12 + 4×15 = 72 gleichwertige Additionen, verglichen mit 3 + 4×31 = 127 gleichwertigen Additionen für den Korrelator 100 von 3. Darüber hinaus ist, wenn der Addierbaum schnell genug ist, um vier Mal aufeinanderfolgend mit unterschiedlichen 64-Bit Kodes während einer Abtastungsperiode verwendet zu werden, keine Extra-Hardware erforderlich, um die vier Korrelationen mit vier unterschiedlichen Kodewörtern durchzuführen. Da es die vorliegende Erfindung ermöglicht, dass die Anzahl an Stufen in dem Addierbaum reduziert wird, ermöglicht sie ebenfalls, dass die Welligkeitsverbreitung (rippel-though-propagation) reduziert wird und hilft zur Geschwindigkeitserhöhung, wodurch ermöglicht wird, dass mehrere Korrelationen mit derselben Hardware durchgeführt werden.

Im allgemeinen gilt, dass, je mehr Kodes vorliegen, mit welchen die Eingangsabtastungen korreliert werden müssen, oder je länger die Kodes sind, desto höher ist die Anzahl an Vorkombinationen, welche beim Berechnen gerechtfertigt ist, um eine Gesamtleistungskomplexität zu minimieren, wie in der oben angegebenen Familienanmeldung U.S. Patentanmeldung No. 08/967,444 beschrieben ist.

Bezugnehmend auf 6 ist ein Kodeplaner 400 zum Korrelieren mit vier 64-Bit Kodes gezeigt. Der Kodeplaner 400 enthält vier repetierende Schieberegister 401, 402, 403, 404, einen n-Bit breiten Bus 405, einen Zeitpunktsteuerer 406 und einen Kombinierer 407. Die vier repetierenden Schieberegister 401, 402, 403, 404 speichern jeweilige Kodes von vier n-Bit Kodes, welche mit empfangenen Signalabtastungen zu korrelieren sind. Die Ausgaben der Schieberegister werden mit dem n-Bit breiten Bus 405 verbunden und können durch Aktivieren einer in Verbindung stehenden Leitung der Ausgabeeinschalt-Steuerleitungen OE1, OE2, OE3, OE4 eingeschaltet oder „in drei Zustände" (tristated) gebracht werden. Durch Einschalten der Ausgaben werden wiederum die n-Bit Kodes (u1 ... un), (v1 ... vn), (w1 ... wn) und (x1 ... xn) aufeinanderfolgend verwendet, um eine Korrelation zu bilden. Nachdem jeder Kode verwendet wurde, wird dessen repetierendes Schieberegister durch Aktivieren einer der Schiebeleitungen um eine Stelle vertauscht. Die OE- und Schiebeleitungen werden somit durch den Zeitpunksteuerer 406 aufeinanderfolgend für die vier Kodes aktiviert, um vier Korrelationen zu erzeugen, eine mit jedem Kode, für jede neu empfangende Signalabtastung.

Wenn Vorkombinationen von vier Signalabtastungen verwendet werden, um den Addierbaum zu verkleinern, wie bei dem Trellis-Aufbau 200 von 4 und dem Korrelator 300 von 5, müssen drei Steuerbits für jeden 8-Wege Selektor, zusammen mit einem Vorzeichen ändernden Bit, zugeführt werden. Diese werden in dem Kombinierer 400 von 6 ausgebildet. Bits von Stufen 1, 5, 9 ... des ausgewählten Koderegisters werden direkt an die Vorzeichenänderer 305 von 5 ausgegeben, während Bits 2, 3 und 4 ein Exklusiv-Oder-Gatter durchlaufen, mit Bit 1, um die drei Steuerbits für den ersten 8-Wege-Selektor 304a zu erzeugen; Bits 6, 7 und 8 ein Exklusiv-Oder-Gatter durchlaufen, mit Bit 5, um Steuerbits für den zweiten 8-Wege-Selektor 304b zu erzeugen, usw.

Somit führt ein Kombinieren der oben mit Bezug auf den Trellis-Aufbau 200 von 4, dem Korrelator 300 von 5 und dem Kodeplaner 400 von 6 beschriebenen Konzepte zu einem erfinderischen Korrelator mit niedriger Leistung, welcher für jede neu empfangene Abtastung Korrelationen zwischen den letzten 64 Abtastungen und jedem Kode von vier 64-Bit Kodes erzeugt, und zwar mit einem Gesamtaufwand von ungefähr 12 + 4×15 = 72 gleichwertigen Additionen pro vier Korrelationen. Dies macht 18 Additionen pro Korrelation, welches weitaus wirksamer ist als die 63 Additionen pro Korrelation des Korrelators 20 von 2 aus dem Stand der Technik.

An dieser Stelle sollte erwähnt werden, dass bei den zwei Beispielen von 3 und 5 jeweils die Anzahl an Abtastungen, welche vorkombiniert werden, nämlich 2 und 4, in die Korrelationslänge von 64 teilbar sind. Da die Anzahl an benötigten Vorkombinationen von N-Bits exponentiell mit 2N–1 ansteigt, steigt jeweils die Anzahl an Vorkombinationen von 2 auf 8 an. Ein Vorkombinieren von mehr als vier Abtastungen, während dabei immer noch eine Anzahl kombiniert wird, welche in die Korrelationslänge von 64 teilbar ist, würde 8 vorzukombinierende Abtastungen erfordern, welches 128 Ergebnisse gibt, welches überhöht und jenseits des Optimums liegt, welches eine Komplexität minimiert. Jedoch wäre es wünschenswert, in der Lage zu sein, andere Anzahlen an Abtastungen vorzukombinieren, wie zum Beispiel 3 oder 5, welche nicht in die Korrelationslänge teilbar sind, um zu sehen, ob eine sogar niedrigere Komplexität erreicht werden kann.

Beispielsweise bezugnehmend auf 7 ist ein 64-Bit Korrelator 500 gezeigt, welcher einen 63-Bit Korrelator 501, einen Vorzeichenänderer 502 und einen Addierer 503 enthält. Obwohl der 64-Bit Korrelator 500 unter Verwendung des 63-Bit Korrelators 501 arbeitet, welcher durch drei teilbar ist, kann eine Extraabtastung addiert oder subtrahiert werden, um 64-Bit Korrelationen bereitzustellen. Bei dem Korrelator 500 von 7 führen Vorkombinationen von drei Abtastungen zu vier Möglichkeiten. Das heißt, dass ein Ringpuffer 504 als 21 Stufen von vier Pufferelementen organisiert ist, wobei jedes der vier Pufferelemente die vier Vorkombinationen von jeder Gruppe an drei aufeinanderfolgenden Signalabtastungen für 63 aufeinanderfolgende Abtastungen hält. Innerhalb des 63-Bit Korrelators 501 sind einundzwanzig 4-Wege-Selektoren mit jeder Gruppe von vier Pufferelementen verbunden, und werden durch zwei Bits gesteuert, wie zum Beispiel (b1 + b2) und (b1 + b3), um eine von jeden vier Vorkombinationen gemäß der Kodebits auszuwählen.

Das b1-Kodebit und jedes dritte Bit der ersten 63 Kodebits werden an 21 Vorzeichenänderer innerhalb des 63-Bit Korrelators 501 zugeführt, und die Ausgaben der 21 Vorzeichenänderer werden einem Addierbaum mit 21 Eingängen innerhalb des 63-Bit Korrelators 501 zugeführt. Die 64-igste Signalabtastung wird durch einen Vorzeichenänderer 502 direkt mit Kodebit 64 multipliziert, und das Ergebnis wird durch einen Addierer 503 mit der Ausgabe des Addierbaums mit 21 Eingängen addiert, wie gezeigt. Der Addierbaum mit 21 Eingängen könnte beispielsweise ein Addierbaum mit 24 Eingängen sein, wobei zwei Eingänge nicht verwendet werden. Ein solcher Addierbaum mit 24 Eingängen könnte als drei Addiererbäume mit 8 Eingängen aufgebaut sein, wobei deren Ausgaben in einem Addierer mit 3 Eingängen addiert werden.

Wenn die 65-igste Signalabtastung empfangen wird, wird die erste Signalabtastung nicht länger benötigt, da sie mehr als 64 Signalabtastungen alt ist, und daher außerhalb des Korrelationsfensters ist. Somit wird der Beitrag der ersten Signalabtastung durch den Beitrag der letzten Signalabtastung, nämlich Signalabtastung 64, ersetzt, und zwar durch derartiges Modifizieren, dass die Vorkombinationen von alten Signalabtastungen 1, 2 und 3 gleich Vorkombinationen von Signalabtastungen 2, 3 und 64 sind. Dies kann unter Verwendung eines Trellis-Aufbaus gemacht werden, und zwar eines solchen wie in 8 gezeigt.

Bezugnehmend auf 8 ist ein Trellis-Aufbau 600 gezeigt, bei welchem vier Pufferelemente A, B, C und D vier Kombinationen der drei ältesten Signalabtastungen S1, S2 und S3 zu der Zeit halten, wenn Signalabtastung S64 empfangen wird, und verwendet wird, um eine 64-Bit Korrelation zu vollenden. Die erste Signalabtastung S1 bewegt sich somit außerhalb des Korrelationsfensters und Signalabtastung S64 bewegt sich hinein. Um die nächste Korrelation in Termen von 20 derselben 3-Abtastung Kombinationen wie zuvor auszudrücken, und nur eine Vorkombination zu modifizieren, wird der Trellis-Aufbau 600 unter Verwendung der alten Werte von A, B, C und D mit der zuletzt empfangenen Signalabtastung S64 gezeigt, und zwar um den Beitrag der ältesten Signalabtastung S1 zu löschen und dabei Vorkombinationen von S64, S3 und S2 anstelle dessen auszubilden. Nachdem die nächste Signalabtastung, nämlich S65, ankommt, und verwendet wird, um einen anderen Satz an Korrelationen zu vollenden, wird der Beitrag von S2 gelöscht und Vorkombinationen von S65, S64 und S3 werden gebildet. Nachdem die nächste Signalabtastung, nämlich 566, ankommt, und verwendet wird, um einen weiteren Satz an Korrelationen zu vollenden, werden die Pufferelemente A, B, C und D wieder so modifiziert, um den Beitrag von S3 zu löschen und anstelle dessen Kombinationen von S66, S65 und S64 zu bilden.

Da diese letzten Vorkombinationen nicht länger die älteste Signalabtastung S1 enthalten, werden die Pufferelemente A, B, C und D, welche als nächstes betrieben werden, auf den nächsten Satz von vier um einen Ringpuffer von 21 Sätzen an vier geändert, welche Vorkombinationen der nun ältesten Signalabtastungen S6, S5 und S4 enthalten. Somit wurde gezeigt, wie es möglich ist einen Korrelator aufzubauen, welcher Vorkombinationen sogar dann verwendet, wenn die Anzahl an vorkombinierten Signalabtastungen nicht in die Länge der Korrelation teilbar ist.

Bei dem letzten Beispiel wurde eine 64-Bit Korrelation unter Verwendung von 6 + 21 = 27 Additionen durchgeführt. Vier 64-Bit Korrelationen könnten für jede neue Signalabtastung unter Verwendung von 6 + 4×21 = 90 Additionen durchgeführt werden, verglichen mit 252 Additionen, welche beim Stand der Technik benötigt werden. Es wird dem Fachmann klar sein, dass ein 64-Bit Korrelator ebenfalls als ein 65-Bit Korrelator aufgebaut werden könnte, bei welchem der Beitrag der 65-igsten Signalabtastung subtrahiert wird, wodurch Vorkombinationen von 5 zu verwendenden Signalabtastungen ermöglicht werden. Durch gleiche Mittel können Korrelatoren von jeglicher Länge, sogar Primärlänge, unter Verwendung eines Korrelators von einer günstigeren Länge aufgebaut werden, wobei Beiträge von zusätzlichen Abtastungen addiert werden oder überflüssige Abtastungen subtrahiert werden.

Eine hauptsächlich vergegenwärtigte Anwendung für die vorliegende Erfindung ist die Demodulation von Breitband, Direktsequenz, Code Division Multiple Access Signalen (WBCDMA). Die Signalabtastungen von solchen WBCDMA-Signalen sind hauptsächlich komplexe Zahlen, welche einen Real- und einen Imaginärteil haben, und die Kodes, mit welchen das Signal korreliert werden muss, enthalten ebenfalls einen Real- und einen Imaginärkodeteil. Es wurde zuvor demonstriert, dass komplexe Korrelationen durch vier reale Korrelatoren durchgeführt werden können, welche die Korrelationen zwischen dem realen Kode und dem realen Signalteil, dem realen Kode und dem imaginären Signalteil, dem imaginären Kode und dem imaginären Signalteil und dem imaginären Kode und dem realen Signalteil bilden. Diese vier Korrelationen werden dann zu Paaren zusammengefasst, um ein reales- und imaginäres Korrelationsergebnis zu erzeugen. Eine Technik zum Durchführen von komplexen Korrelationen zwischen einem komplexen Kode und einem komplexen Signal, welche nur zwei zu berechnende reale Korrelationen benötigt, und dabei die Komplexität und den Leistungsverbrauch halbiert, ist der WO-A-08/21842 beschrieben, mit dem Titel „Despreading Of Direct Sequence Spread Spectrum Signals". Die darin beschriebene Technik spricht das Problem zum Durchführen einer Korrelation zwischen einem vorgegebenen Satz an N Signalabtastungen und einem vorgegebenen N+N Bit-Komplexkode an, spricht jedoch nicht ein Wiederholen der Korrelation für jede neue Signalabtastung, mit einer Verschiebung zwischen dem Kode und den Signalabtastungen, an. Die vorliegende Erfindung löst das Problem zum Berechnen von Korrelationen bei jeder Abtastungsverschiebung, wobei sie ebenfalls nur eine Verdoppelung der Komplexität zum Arbeiten mit komplexen Werten, anstelle einer vierfachen Komplexität, benötigt.

Wenn ein komplexer Kode, welcher zwei Bits (Bx, By) enthält, verwendet wird, um ein CDMA-Signal zu spreizen, wird im allgemeinen betrachtet, die komplexen Werte Bx + jBy darzustellen, welche jegliche der vier Konstellationspunkte 1+j, 1–j, –1+j oder –1–j sein können. Jedoch kann es, wie in der oben angegebenen 08/748,755 Anmeldung gelehrt, vorteilhaft sein, das Bild um 45° zu umdrehen und anstelle dessen die Konstellationspunkte 1+j0, 0+j1, –1+j0 und 0–j1 oder einfach 1, j, –1 und –j auf die folgende Weise durch die Bitpaare (Bx,By) zu bezeichnen:

  • Bx = 0, By = 0 (Boolean) stellt Konstellationswert +1 dar
  • Bx = 0, By = 1 stellt Konstellationswert +j dar
  • Bx = 1, Bj = 0 stellt Konstellationswert –j dar
  • Bx = 1, By = 1 stellt Konstellationswert –1 dar

Es kann dann gesehen werden, dass die Kodewerte +1 oder –1 sind, wenn Bx = By ist, andererseits +j oder –j wenn Bx und By sich unterscheiden. Tatsächlich ist der Kodewert Bx (algebraisch +1 oder –1), wenn Bx = By ist, alternativ jBx, wenn Bx nicht gleich By ist.

Es wird nun die Korrelationsberechnung zwischen komplexen Signalabtastungen (I1, Q1) ; (I2, Q2) ; (I3, Q3) . . . (I64, Q64) und einem 64 Komplexsymbolkode (Bx1, By1); (Bx2, By2); (Bx3, By3) ... (Bx64, By64) betrachtet, welche gegeben wird durch (Bx1, By1) (I1, Q1) + (Bx2, By2) (I2, Q2) ... + (Bx64, By64) (I64, Q64 ) für eine erste Verschiebung der Signalabtastungen relativ zum Kode. Bei Verwendung der um 45° gedrehten Konstellation ist entweder By1 gleich Null und Bx1 nicht Null oder umgekehrt, und ähnliche Fälle. Für jeden der vier Fälle gibt das erste Paar an Termen: Für By1 = By2 = 0: (Bx1 * I1 + Bx2 * I2) + j(Bx1 * Q1 + Bx2 * Q2) ... (8) Für By1 = Bx2 = 0: (Bx1 * I1 – By2 * Q2) + j(Bx1 * Q1 + By2 * I2) ... (9) Für Bx1 = By2 = 0: (- By1 * Q1 + Bx2 * I2) + j(By1 * I1 + Bx2 * Q2) ... (10) Für Bx1 = Bx2 = 0: (- By1 * Q1 – By2 * Q2) + j(By1 * I1 + By2 * I2) ... (11)

Es kann gesehen werden, dass für Fall (8) und Fall (11) die Summe und Differenz von I1 und I2 und ebenfalls von Q1 und Q2 benötigt werden. Für Fälle (9) und (10) werden die Summe und Differenz von I1 und Q2 und ebenfalls von Q1 und I2 benötigt. Wenn diese acht Summen und Differenzen vorberechnet werden, kann der Realteil der Korrelation ausgedrückt werden als die Summe von 32 ausgewählten von jeden acht, während der Imaginärteil die Summe von 32 ausgewählten anderen von jeden acht ist. Somit ist die Komplexität in Termen von Additionen für einen komplexen Korrelator einfach die doppelte der Komplexität von einem realen Korrelator, und die Komplexität von jeder realen Korrelation wurde durch die Verwendung von Vorkombinationen von Paaren an Abtastungen halbiert. Die Anzahl an Vorkombinationen, welche für diesen komplexen Korrelator ausgebildet werden müssen, beträgt acht, welche doppelt so hoch, als wie sie für zwei reale Korrelatoren benötigt wird. Daher beträgt die Anzahl an Speicherelementen, welche für den komplexen Korrelator benötigt werden, das vierfache der Anzahl an Speicherelementen, welche für einen realen Korrelator benötigt werden, obwohl der Leistungsverbrauch nur der Doppelte ist. 9 zeigt einen Trellis-Aufbau 700 zum Aktualisieren der acht Vorkombinationen in dem oben beschriebenen komplexen Korrelator.

Es wurde oben beschrieben, wie ein Gleitkorrelator, anders auch bekannt als ein angepasstes Filter für digital kodierte Signale, mit reduziertem Leistungsverbrauch, verglichen mit dem Stand der Technik, hergestellt werden kann. Die vorliegende Erfindung enthält ein Ausbilden von Vorkombinationen von Eingangsabtastungen, welche dann in einem Ringpuffer gespeichert werden, wobei die ältesten Vorkombinationen überschrieben werden. Selektoren wählen dann bestimmte der Vorkombinationen von dem Ringpuffer aus, welche in einem Addierbaum addiert werden, wobei die Größe des Addierbaumes aufgrund des Ausbildens von Vorkombinationen reduziert ist. In einem weiteren Aspekt der vorliegenden Erfindung werden nach Empfang einer neuen Signalabtastung die gespeicherten Vorkombinationen, welche die älteste empfangene Signalabtastung enthalten, manipuliert, um den Beitrag der ältesten Signalabtastung zu löschen, und enthält den Beitrag der spätesten Signalabtastung, wodurch ein Speichern von vorherigen Signalabtastungen, als auch zuvor ausgebildeten Vorkombinationen der vorherigen Signalabtastungen vermieden wird. Es wurde ebenfalls gezeigt, dass die vorliegende Erfindung angepasst werden kann, um Korrelationen zwischen entweder realen Werten oder komplexen Werten durchzuführen, und zwar mit vorteilhaften Reduktionen des Leistungsverbrauchs und der Komplexität. Die vorliegende Erfindung kann ebenfalls angewendet werden, um die Effizienz von Speicherprogramm (Software) implementierten Korrelatoren zu verbessern, welche digitale Signalprozessoren, Computer oder Mikroprozessoren verwenden.

Zusammengefasst wurde ein Korrelator zum Korrelieren der letzten „n" Abtastungen eines empfangenen Signals mit einem n-Digit Kodewort beschrieben, bei welchem ein neues Korrelationsergebnis für jede neu empfangene Signalabtastung berechnet wird. Ein Leistungsverbrauch während eines kontinuierlichen Betriebes wird durch die kombinierte Verwendung von zwei Techniken reduziert. Zunächst werden Gruppen an „L" Signalabtastungen gesammelt und vorkombiniert, um 2L-1 Vorkombinationen zu gewinnen; die vorkombinierten Werte werden in einen M-Element Ringpuffer geschrieben, bei welchem M = (n/L) * 2L-1 ist.

Zweitens werden die neu vorkombinierten Werte sequentiell in die nächsten Positionen des M-Element Ringpufferspeichers geschrieben, wobei sie die Abtastungen überschreiben, welche „n" Abtastungen früher empfangen wurden, wodurch ein Verschieben aller „n" Mehrfach-Bit Abtastungen durch den Puffer bei jedem neuen Abtastungs-Augenblick vermeiden wird. Ein Addierbaum, welcher durch Selektorschalter mit den Ausgängen der Pufferspeicherelemente verbunden ist, berechnet die gewünschte Korrelation durch Addieren oder Subtrahieren von ausgewählten Werten in Abhängigkeit von den Digits des Korrelationskodes. Da nur eine Vorkombination von jeder Gruppe an gespeicherten Vorkombinationen zur Eingabe an den Addierbaum ausgewählt wird, wird die Größe des Addierbaums dadurch reduziert.

Ein beispielhafter 64-Bit Korrelator enthält einen 32×2 Element Ringpuffer. Ein Paar von neuen Signalabtastungen wird gesammelt und vorkombiniert, um ihre Summe und Differenz alle zwei Abtastungstaktzyklen zu bilden, wobei die Summe und Differenz in dem nächsten sequentiellen Paar von den 32 Paaren an Pufferelementen gespeichert werden. Ein Zweiwege-Ausgabeselektor wird mit dem Ausgang von jedem Pufferelementpaar verbunden und durch die Modulo-Zwei Summe von einem entsprechenden Paar der 64-Bit Korrelationskodebits gesteuert, um entweder die gespeicherte Summe oder die gespeicherte Differenz auszuwählen, welche an einen Addierbaum mit 32 Eingängen angelegt wird. Der Addierbaum addiert oder subtrahiert jeden Eingangswert in Abhängigkeit von einem des im Zusammenhang stehenden Paares an Korrelationskodebits, wodurch die Größe des Addierbaums von einem Addierbaum mit 64 Eingängen auf einen Addierbaum mit 32 Eingängen reduziert wird, welches, kombiniert damit, dass nur an jedem abwechselnden Abtastungstakt gearbeitet wird, ungefähr den Gesamtleistungsverbrauch durch vier reduziert, während ein Korrelationsergebnis alle zwei Taktzyklen bereitgestellt wird. Die Zwischenkorrelationsergebnisse, welche benötigt werden, um eine Korrelation an jedem Taktzyklus zu vollenden, können unter Verwendung einer Kopiervorrichtung, welche mit einem Ein-Abtastung Staffeler arbeitet, oder alternativ unter Verwendung derselben Vorrichtung mit einer Anordnung zum Subtrahieren der beitragenden Abtastung, ausgebildet werden, welches nun eine Korrelationsausgabe pro Abtastungstaktzyklus bei halbem Leistungsverbrauch, verglichen mit einem Korrelator, welcher keine Vorkombinationen ausbildet, ergibt.

Die vorliegende Erfindung ist im Umfang nicht durch die hier beschriebenen spezifischen Ausführungsformen beschränkt. Anstelle dessen sind unterschiedliche Modifikationen der vorliegenden Erfindung, zusätzlich zu den hier beschriebenen, dem Fachmann anhand der vorherigen Beschreibung und begleitenden Zeichnungen deutlich. Somit dienen solche Modifikationen dazu, innerhalb des Umfanges der anliegenden Ansprüche zu fallen.


Anspruch[de]
  1. Angepasstes Filter, welches eine Sequenz an Signalabtastungswerten mit einem vorbestimmten digitalen Kode korreliert, und zwar durch Erzeugen eines Korrelationswertes jedes mal dann, wenn eine Verschiebung in der Sequenz an Signalabtastungswerten relativ zu dem vorbestimmten digitalen Kode auftritt, wobei das angepasste Filter enthält:

    einen Vorkombinierer (101; 301) zum Kombinieren von Untergruppen der Signalabtastungswerte in der Sequenz, um Sätze an Vorkombinationen auszubilden, wobei die Vorkombinationen Summen und Differenzen von Paaren der letzten Signalabtastungswerte (S(i+1)) sind;

    eine Speichervorrichtung (102; 303) zum Speichern der Sätze an Vorkombinationen;

    einen Kodegenerator (105; 307) zum Zuführen von Kode-Bits, wobei die Kode-Bits mit Bezug auf die Signalabtastungswerte derart vertauscht sind, dass das derzeitige Kode-Bit dem letzten Signalabtastungswert entspricht;

    eine Vielzahl von Selektoren (103; 304) zum Auswählen einer Vorkombination von jedem Satz an gespeicherten Vorkombinationen, um eine Vielzahl von ausgewählten Vorkombinationen bereitzustellen, wobei die Auswahl auf der Modulo-Zwei Summe von zwei aufeinanderfolgenden Kode-Bits basiert; und

    einen Addierer (104; 306) zum Addieren oder Subtrahieren der Vielzahl von ausgewählten Vorkombinationen, um einen Korrelationswert entsprechend einer Verschiebung in der Sequenz an Signalabtastungswerten zu erzeugen.
  2. Angepasstes Filter nach Anspruch 1, bei welchem die Signalabtastungswerte reale Werte sind.
  3. Angepasstes Filter nach Anspruch 1, bei welchem die Signalabtastungswerte komplexe Werte sind und der vorbestimmte digitale Kode einen Real-Kode und einen Imaginär-Kode enthält.
  4. Angepasstes Filter nach Anspruch 3, bei welchem der Vorkombinierer (101; 301) die Sätze an Vorkombinationen aus Summen und Differenzen von Paaren realer oder Paaren imaginärer Signalabtastungswerte bildet.
  5. Angepasstes Filter nach Anspruch 3, bei welchem der Vorkombinierer (101, 301) die Sätze an Vorkombinationen aus einer Summe und einer Differenz des Realteils von einem Signalabtastungswert und des Imaginärteils von einem anderen Signalabtastungswert bildet.
  6. Angepasstes Filter nach Anspruch 1, bei welchem der vorbestimmte digitale Kode ein Segment eines Direktsequenz-Spreizspektrum Spreizkodes ist.
  7. Angepasstes Filter nach Anspruch 1, bei welchem das angepasste Filter Direktsequenz-Spreizspektrumssignale in einem RAKE-Empfänger dekodiert.
  8. Angepasstes Filter nach Anspruch 1, bei welchem der Vorkombinierer (101; 301) die Sätze an Vorkombinationen aus Summen und Differenzen von Paaren der Signalabtastungswerte bildet.
  9. Angepasstes Filter nach Anspruch 1, bei welchem der Vorkombinierer (101; 301) die Sätze an Vorkombinationen aus allen möglichen Kombinationen von Summen und Differenzen einer vorgegebenen Anzahl der Signalabtastungswerte bildet.
  10. Angepasstes Filter nach Anspruch 9, bei welchem nur eine Vorzeichen-Polarität mit einer der Signalabtastungswerte verwendet wird, wodurch die Anzahl an Vorkombinationen, welche in jedem Satz von Vorkombinationen gebildet werden, halbiert wird.
  11. Angepasstes Filter nach Anspruch 1, bei welchem der Vorkombinierer (101; 301) Paare von Vorkombinationen von einem ältesten Satz an Vorkombinationen kombiniert, um den Beitrag von einem ältesten Wert der Signalabtastungswerte in dem ältesten Satz an Vorkombinationen zu löschen, und ferner das Ergebnis mit einem neuesten Signalabtastungswert kombiniert, um einen aktualisierten Satz an Vorkombinationen zu erzeugen.
  12. Angepasstes Filter nach Anspruch 11, bei welchem der aktualisierte Satz an Vorkombinationen jedes mal dann erzeugt wird, wenn ein neuer Signalabtastungswert empfangen wird.
  13. Angepasstes Filter nach Anspruch 11, bei welchem der aktualisierte Satz an Vorkombinationen den ältesten Satz an Vorkombinationen in der Speichervorrichtung überschreibt.
  14. Angepasstes Filter nach Anspruch 11, bei welchem der älteste Satz an Vorkombinationen der Satz an Vorkombinationen ist, welcher von dem ältesten Signalabtastungswert abhängt, dessen Beitrag noch nicht gelöscht wurde.
  15. Angepasstes Filter nach Anspruch 1, bei welchem die Speichervorrichtung (102; 303) ein Ringpuffer ist.
  16. Angepasstes Filter nach Anspruch 1, bei welchem die Speichervorrichtung (303) einen Leitschaltbaum (302) zum Leiten eines Satzes an Vorkombinationen an einen vorgesehenen Satz an Speicherelementen enthält.
  17. Angepasstes Filter nach Anspruch 16, bei welchem der Leitschaltbaum (302) ein Binärbaum ist, welcher eine Anzahl an Stufen enthält, welche gleich dem Logarithmus der Basis zwei von der Anzahl an Speicherorten für Sätze an Vorkombinationen ist.
  18. Angepasstes Filter nach Anspruch 17, bei welchem eine Stufe des binären Leitschaltbaums (302), welche eine kleinere Anzahl an Schaltelementen hat, eine Route öfter schaltet als eine Stufe, welche eine größere Anzahl an Schaltelementen hat.
  19. Angepasstes Filter nach Anspruch 17, bei welchem die Speichervorrichtung (102; 303) die Sätze an Vorkombinationen in einer Reihenfolge speichert, welche relativ zu der zeitsequentiellen Reihenfolge ihrer Bildung bitverkehrt ist.
  20. Angepasstes Filter nach Anspruch 1, bei welchem jeder der Vielzahl an Selektoren durch eine entsprechende Untergruppe an Bits des vorbestimmten digitalen Kodes gesteuert wird.
  21. Angepasstes Filter nach Anspruch 20, bei welchem der Addierer (104; 306) eine entsprechend ausgewählte Vorkombination gemäß der Polarität eines der Bits der entsprechenden Untergruppe an Bits addiert oder subtrahiert.
  22. Angepasstes Filter nach Anspruch 1, bei welchem der vorbestimmte digitale Kode eine erste Anzahl an Kode-Symbolen enthält, und der Vorkombinierer (101; 301) Sätze an Vorkombinationen von einer Untergruppe bildet, welche eine zweite Anzahl an Signalabtastungswerten enthält, welche nicht in die erste Anzahl teilbar ist, wobei das angepasste Filter einen Korrelator (100; 300; 500) zum Korrelieren mit einem vorbestimmten Kode von einer Länge enthält, welche durch die zweite Anzahl teilbar ist.
  23. Angepasstes Filter nach Anspruch 1, ferner enthaltend:

    einen Multiplizierer (107; 305; 502) zum Multiplizieren jeder ausgewählten Vorkombination mit einem entsprechend vorausgewählten Bit von dem vorbestimmten digitalen Kode, um die Polarität von jeder ausgewählten Vorkombination zu ändern oder zu bestätigen.
  24. Verfahren, welches eine Sequenz an Signalabtastungswerten mit einem vorbestimmten digitalen Kode korreliert, und zwar durch Erzeugen eines Korrelationswertes jedes mal dann, wenn eine Verschiebung in der Sequenz an Signalabtastungswerten relativ zu dem vorbestimmten digitalen Kode auftritt, wobei das Verfahren enthält:

    Kombinieren von Untergruppen der Signalabtastungswerte in der Sequenz, um Sätze an Vorkombinationen auszubilden, wobei die Vorkombinationen Summen und Differenzen von Paaren der letzten Signalabtastungswerte sind;

    Speichern der Sätze an Vorkombinationen;

    Zuführen von Kode-Bits, wobei die Kode-Bits mit Bezug auf die Signalabtastungswerte derart vertauscht werden, dass das derzeitige Kode-Bit dem letzten Signalabtastungswert entspricht;

    Auswählen einer Vorkombination von jedem Satz an gespeicherten Vorkombinationen, um eine Vielzahl von ausgewählten Vorkombinationen bereitzustellen, wobei die Auswahl auf der Modulo-Zwei Summe der zwei aufeinanderfolgenden Kode-Bits basiert; und

    Addieren oder Subtrahieren der Vielzahl an ausgewählten Vorkombinationen, um einen Korrelationswert entsprechend einer Verschiebung in der Sequenz an Signalabtastungswerten zu erzeugen.
  25. Verfahren nach Anspruch 24, ferner enthaltend ein Speichern der Sätze an Vorkombinationen, nachdem sie ausgebildet sind.
  26. Verfahren nach Anspruch 24, ferner den Schritt enthaltend:

    Multiplizieren jeder ausgewählten Vorkombination mit einem entsprechend vorausgewählten Bit aus dem vorbestimmten digitalen Kode, um die Polarität von jeder ausgewählten Vorkombination zu ändern oder zu bestätigen.
  27. Verfahren nach Anspruch 24, bei welchem der Schritt des Kombinierens von Untergruppen der Signalabtastungswerte in der Sequenz zum Ausbilden von Sätzen an Vorkombinationen ein Kombinieren von Paaren an Vorkombinationen von einem ältesten Satz an Vorkombinationen, um den Beitrag eines ältesten Wertes der Signalabtastungswerte in dem ältesten Satz an Vorkombinationen zu löschen, und ein Kombinieren des Ergebnisses mit einem neuesten Signalabtastungswert, um einen aktualisierten Satz an Vorkombinationen zu erzeugen, enthält.
  28. Verfahren nach Anspruch 27, bei welchem der aktualisierte Satz an Vorkombinationen jedes mal dann erzeugt wird, wenn ein neuer Signalabtastungswert empfangen wird.
  29. Verfahren nach Anspruch 27, bei welchem der aktualisierte Satz an Vorkombinationen den ältesten Satz an Vorkombinationen überschreibt.
  30. Verfahren nach Anspruch 27, bei welchem der älteste Satz an Vorkombinationen der Satz an Vorkombinationen ist, welcher von dem ältesten Signalabtastungswert abhängt, dessen Beitrag noch nicht gelöscht wurde.
  31. Herstellungsgegenstand zum Korrelieren einer Sequenz an Signalabtastungswerten mit einem vorbestimmten digitalen Kode durch Erzeugen eines Korrelationswertes jedes mal dann, wenn eine Verschiebung in der Sequenz an Signalabtastungswerten relativ zum vorbestimmten digitalen Kode auftritt, wobei der Herstellungsgegenstand enthält:

    ein computerlesbares Speichermedium; und

    ein auf dem Speichermedium gespeichertes Computerprogramm; wobei das gespeicherte Computerprogramm so konfiguriert ist, dass es von mindestens einem Computer aus dem computerlesbaren Speichermedium lesbar ist, und dabei den mindestens einen Computer so betreibt, um:

    Untergruppen der Signalabtastungswerte in der Sequenz zu kombinieren, um Sätze an Vorkombinationen auszubilden, wobei die Vorkombinationen Summen und Differenzen von Paaren der letzten Signalabtastungswerte sind;

    die Sätze an Vorkombinationen zu speichern;

    Kode-Bits zuzuführen, wobei die Kode-Bits mit Bezug auf die Signalabtastungswerte derart vertauscht werden, dass das derzeitige Kode-Bit dem letzten Signalabtastungswert entspricht;

    eine Vorkombination von jedem Satz an Vorkombinationen auszuwählen, um eine Vielzahl an ausgewählten Vorkombinationen bereitzustellen, wobei die Auswahl auf der Modulo-Zwei Summe von zwei aufeinanderfolgenden Kode-Bits basiert; und

    die Vielzahl von ausgewählten Vorkombinationen zu addieren oder subtrahieren, um einen Korrelationswert entsprechend einer Verschiebung in der Sequenz an Signalabtastungswerten zu erzeugen.
  32. Herstellungsgegenstand nach Anspruch 31, welcher ferner den mindestens einen Computer so betreibt, um:

    die Sätze an Vorkombinationen zu speichern, nachdem sie ausgebildet sind.
  33. Herstellungsgegenstand von Anspruch 31, welcher ferner den mindestens einen Computer so betreibt, um:

    jede ausgewählte Vorkombination mit einem entsprechend vorausgewählten Bit aus dem vorbestimmten digitalen Kode zu multiplizieren, um die Polarität von jeder ausgewählten Vorkombination zu ändern oder zu bestätigen.
  34. Herstellungsgegenstand nach Anspruch 31, welcher ferner den mindestens einen Computer so betreibt, um Untergruppen der Signalabtastungswerte in der Sequenz zu kombinieren, um Sätze an Vorkombinationen durch Kombinieren von Paaren an Vorkombinationen von einem ältesten Satz an Vorkombinationen auszubilden, um den Beitrag eines ältesten Wertes der Signalabtastungswerte in dem ältesten Satz an Vorkombinationen zu löschen, und das Ergebnis mit einem neuesten Signalabtastungswert zu kombinieren, um einen aktualisierten Satz an Vorkombinationen zu erzeugen.
  35. Herstellungsgegenstand nach Anspruch 34, bei welchem der aktualisierte Satz an Vorkombinationen jedes mal dann erzeugt wird, wenn ein neuer Signalabtastungswert empfangen wird.
  36. Herstellungsgegenstand nach Anspruch 34, bei welchem der aktualisierte Satz an Vorkombinationen den ältesten Satz an Vorkombinationen überschreibt.
  37. Herstellungsgegenstand nach Anspruch 34, bei welchem der älteste Satz an Vorkombinationen der Satz an Vorkombinationen ist, welcher von dem ältesten Signalabtastungswert abhängt, dessen Beitrag noch nicht gelöscht wurde.
Es folgen 9 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com