-
IN BEZUG GENOMMENE ANMELDUNGEN
-
Diese
Anmeldung nimmt die Priorität
der US-Patentanmeldung Nr. 12/025,076 in Anspruch, die am 4. Februar
2008 eingereicht wurde.
-
HINTERGRUND DER ERFINDUNG
-
GEBIET DER ERFINDUNG
-
Der
Erfindung betrifft Signal-Korrelation und insbesondere einen Speicher-Code-Generator,
der einen Code für
die Signal-Korrelation bereitstellt.
-
BESCHREIBUNG DES STANDES DER TECHNIK
-
In
einem Kommunikations-System, wie etwa dem Global Positioning System
(GPS), müssen
sowohl der Signal-Sender, wie auch der Signal-Empfänger einen
Code-Generator zur Bereitstellung von Codes aufweisen. Bevor Rohdaten
von dem Signal-Sender gesendet werden, moduliert der Signal-Sender
die Rohdaten gemäß einem
Code, um ein moduliertes Signal zu erhalten. Der Signal-Sender sendet
dann das modulierte Signal durch die Luft an den Signal-Empfänger. Nachdem
der Signal-Empfänger
das modulierte Signal empfangen hat, muss der Signal-Empfänger dann
das empfangene Signal demodulieren, bevor das empfangene Signal
weiterverarbeitet wird. Der Signal-Empfänger korreliert das empfangene
Signal mit einem Code, um das empfangene Signal zu demodulieren.
Somit müssen
sowohl der Sender wie auch der Empfänger eines Kommunikations-Systems
einen Code-Generator zur Erzeugung eines Codes für die Signal-Verarbeitung aufweisen.
-
Bei
einem GPS-System kann ein Code gemäß einem vorbestimmten Algorithmus
erzeugt werden. Ein Code-Generator eines GPS-Systems weist deshalb
eine einfache Struktur zur Code-Erzeugung auf. In einem Ausführungsbeispiel
umfasst ein Code-Generator eines GPS-Systems ein lineares rückgekoppeltes
Schieberegister (linear feedback shift register), das einen Code
erzeugt. Ein Galileo-System wendet jedoch eine pseudo-zufällige Sequenz als
Code für
die Signal-Verarbeitung an, wie etwa Codes für die sogenannten E1-B-und
E1-C-Bänder
des Galileo-Systems. Weil der E1-B-Band-Code und der E1-C Band-Code des
Galileo-Systems nicht direkt mit einem Schieberegister erzeugt werden
können, muss
deshalb ein Code-Generator eines Galileo-Systems einen Code-Speicher
zum Speichern des Codes aufweisen, bevor der Code-Generator dann
den Code von dem Code-Speicher zur Signal-Verarbeitung abrufen kann.
-
Wenn
ein Signal-Prozessor eines Empfängers
ein Eingangssignal verarbeitet, wird ein Code mit einer bestimmten
Phase benötigt.
Ein Code-Generator muss deshalb einen Code mit einer Code-Phase
so bald wie möglich
bereitstellen. Wenn der Code-Generator einen Code mit kurzer Verzögerungszeit
bereitstellen kann, kann die Signal-Verarbeitung eines Signal-Prozessors
beschleunigt werden und die Funktionsfähigkeit des Empfängers wird verbessert.
Wenn zusätzlich
der Signal-Prozessor verschiedene Segmente des Eingangssignales
verarbeitet, werden Code-Segmente mit verschiedenen Phasen benötigt. Der
Code-Generator muss deshalb die Code-Segmente mit dazwischen liegenden
Phasensprüngen
bereitstellen. Wenn der Code-Generator den Signal-Prozessor mit
einem aktuellen Code-Segment zur Korrelation versorgt, kann der
Code-Generator gleichzeitig im Voraus ein nachfolgendes Code-Segment
vorbereiten. Somit kann, wenn die Korrelation des aktuellen Code-Segmentes
abgeschlossen ist, das nachfolgende Code-Segment dann unverzüglich dem
Signal-Prozessor ohne Verzug bereit gestellt werden, wodurch die
Systemfunktionalität
verbessert wird. Demnach wird ein Speicher-Code-Generator benötigt, der
geeignet ist, einen Korrelations-Code mit wenig Zeitverzug zu erzeugen.
-
Wenn
zusätzlich
ein Empfänger
Signale entsprechend einer Vielzahl von Satelliten verarbeitet, muss
ein Code-Generator
des Empfängers
Codes entsprechend der Vielzahl der Satelliten bereitstellen. Der
Code-Generator muss deshalb einen Code-Speicher aufweisen, der eine
Vielzahl von Codes entsprechend den Satelliten bereitstellt. Weil
der Empfänger
gleichzeitig die Codes entsprechend verschiedener Satelliten anfordern
kann, muss deshalb der Code-Speicher einen Mechanismus zum Verwalten
bzw. Verarbeiten der Anforderungen von Codes entsprechend der verschiedenen
Satelliten aufweisen. Darum wird ein Code-Speicher benötigt, der
geeignet ist, Codes entsprechend einer Vielzahl von Satelliten bereitzustellen.
-
KURZE ZUSAMMENFASSUNG DER
ERFINDUNG
-
Die
Erfindung stellt einen Speicher-Code-Generator bereit. In einem
Ausführungsbeispiel umfasst
der Speicher-Code-Generator
einen Code-Speicher, einen Vorbereitungs-Pufferspeicher-Satz und einen Korrelations-Pufferspeicher-Satz. Der Code-Speicher
speichert Code-Daten. Der Vorbereitungs-Pufferspeicher-Satz fragt
ein erstes Code-Segment
an Code-Daten von dem Code-Speicher ab und verschiebt das erste
Code-Segment, um ein zweites Code-Segment mit der gewünschten Code-Phase zu erhalten,
die von dem Korrelations-Pufferspeicher-Satz benötigt wird. Der Korrelations-Pufferspeicher-Satz
lädt das
zweite Code-Segment
von dem Vorbereitungs-Pufferspeicher-Satz und stellt einen Korrelations-Code
zur Korrelation gemäß dem zweiten
Code-Segment bereit. Der Vorbereitungs-Pufferspeicher-Satz bereitet das zweite
Code-Segment entsprechend einer nachfolgenden Korrelation vor, wenn
der Korrelations-Pufferspeicher-Satz den Korrelations-Code für die gegenwärtige Korrelation
gemäß dem ersten
Code-Segment bereitstellt.
-
Die
Erfindung stellt einen Speicher-Code-Generator bereit. In einem
Ausführungsbeispiel umfasst
der Speicher-Code-Generator
einen Code-Speicher, einen Roh-Code-Verteiler (raw code allocator), eine
Vielzahl von Code-Pipes bzw. – Leitungen
und einen Code-Selektor auf. Der Code-Speicher speichert Code-Daten. Der Roh-Code-Verteiler fragt
sequentiell eine Reihe von Code-Segmenten von Code-Daten von dem Code-Speicher
ab und verteilt entsprechend die Code-Segmente auf eine der Vielzahl
von Code-Pipes. Die Vielzahl von Code-Pipes speichern jeweils die
Code-Segmente, die
von dem Roh-Code-Verteiler ver- bzw. zugeteilt worden sind. Der
Code-Selektor bzw. die Code-Auswahlvorrichtung
fragt die Code-Segmente von den Code-Pipes gemäß der Sequenz bzw. Reihenfolge
der Code-Segmente ab, um einen Korrelations-Code zur Korrelation
bereitzustellen. Wenn eine Ziel-Code-Pipe (target code pipe), die
aus den Code-Pipes ausgewählt
worden ist, den Code-Selektor mit dem Code-Segment als Korrelations-Code
versorgt, verschieben die Code-Pipes, außer für die Ziel-Code-Pipe, die darin gespeicherten Code-Segmente,
um die Code-Segmente mit den gewünschten
Code-Phasen zu erhalten, die von dem Code-Selektor benötigt werden.
-
Die
Erfindung stellt auch einen Speicher-Code-Generator bereit. In einem Ausführungsbeispiel umfasst
der Speicher-Code-Generator einen Code-Speicher, einen Roh-Code-Verteiler, eine
Vielzahl von Code-Pipe-Paaren und einen Code-Selektor. Der Code-Speicher
speichert eine Vielzahl von Codes entsprechend der Vielzahl von
Satelliten. Der Roh-Code-Verteiler ruft gleichzeitig die Codes von dem
Code-Speicher ab, um eine Vielzahl von Code-Segmenten entsprechend
den Satelliten zu erhalten und weist die Code-Segmente den Code-Pipe-Paaren zu, die
den Satelliten zugeordnet sind. Die Code-Pipe-Paare empfangen die
Code-Segmente, verschieben
die Code-Segmente zu den gewünschten
Phasen und versorgen einen Code-Selektor mit verschobenen Code-Segmenten.
Der Code-Selektor empfängt
die verschobenen Code-Segmente von den Code-Pipes und wählt eines
von den verschobenen Code-Segmenten als einen Korrelations-Code zur
Korrelation aus. Jedes der Code-Pipe-Paare umfasst zwei Code-Pipes,
und wenn eine der beiden Code-Pipes den Code-Selektor mit dem verschobenen Code-Segment
versorgt, verschiebt die andere der zwei Code-Pipes das darin gespeicherte
Code-Segment, um das verschobene Code-Segment mit den gewünschten
Code-Phasen zu erhalten, die von dem Code-Selektor benötigt werden.
-
Eine
detaillierte Beschreibung wird in den nachfolgenden Ausführungsbeispielen
unter Bezugnahme auf die beiliegenden Zeichnungen angegeben.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Erfindung kann eingehender durch Lesen der nachfolgenden detaillierten
Beschreibung und Beispiele unter Bezugnahme auf die beiliegenden
Zeichnungen verstanden werden, wobei:
-
1 einer
schematischen Darstellung von bereitgestellten Codes mit verschiedenen
Phasensprüngen
entspricht;
-
2.
einem Blockschaltbild für
einen Speicher-Code-Generator
entspricht, der einen Korrelations-Code gemäß der Erfindung bereitstellt;
-
3 einem
Blockschaltbild eines Ausführungsbeispiels
eines Speicher-Code-Generators
gemäß der Erfindung
entspricht;
-
4A–4F einer
Reihe von schematischen Darstellungen entsprechen, die die Funktionen
von Vorbereitungs-Pufferspeichern und Korrelations-Pufferspeichern nach 3 zeigen;
-
5 einem
Flussdiagramm für
ein Verfahren zum Betreiben der Vorbereitungs-Pufferspeicher und
der Korrelations-Pufferspeicher nach 3 entspricht;
-
6A einem
Blockschaltbild eines Ausführungsbeispiels
eines Speicher-Code-Generators
gemäß der Erfindung
entspricht;
-
6B einem
Blockschaltbild eines weiteren Ausführungsbeispiels eines Speicher-Code-Generators entspricht,
der geeignet ist, Korrelations-Codes entsprechend einer Vielzahl
von Satelliten gemäß der Erfindung
bereitzustellen;
-
7A–7C einer
Reihe von schematischen Darstellungen entsprechen, die die Funktion von
Code-Pipes des Speicher-Code-Generators nach 6 zeigen;
-
8 einem
Blockschaltbild eines Signal-Empfängers entspricht,
der einen physikalischen Kanal aufweist;
-
9 einem
Blockschaltbild eines Signal-Empfängers entspricht,
der eine Vielzahl von physikalischen Kanälen und einen Code-Speicher aufweist;
-
10 einem
Blockschaltbild eines Code-Speichers entspricht, der zur Bereitstellung
von Codes für
eine Vielzahl von physikalischen Kanälen gemäß der Erfindung geeignet ist;
-
11 einer
schematischen Darstellung eines Ausführungsbeispieles eines Signales
entspricht, das sich auf den Code-Speicher nach 11 gemäß der Erfindung
bezieht;
-
12 einem
Blockschaltbild eines Code-Speichers entspricht, der zur Bereitstellung
von Codes für
eine Vielzahl von physikalischen Kanälen gemäß der Erfindung geeignet ist;
-
13 einer
schematischen Darstellung eines Ausführungsbeispiels eines Signals
entspricht, das sich auf den Code-Speicher nach 12 gemäß der Erfindung
bezieht; und
-
14 einem
Flussdiagramm für
ein Verfahren zur Bereitstellung von Codes für eine Vielzahl von physikalischen
Kanälen
gemäß der Erfindung
entspricht.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Die
folgende Beschreibung entspricht der als beste angesehen Weise zur
Ausführung
der Erfindung. Diese Beschreibung dient dem Zwecke der Veranschaulichung
der allgemeinen Prinzipien der Erfindung und soll nicht in einem
beschränkenden Sinne
verstanden werden. Der Schutzumfang der Erfindung wird am besten
durch die Bezugnahme auf die beiliegenden Ansprüche bestimmt.
-
Wenn
ein Signal-Prozessor ein Eingangssignal gemäß einem Code verarbeitet, muss
ein Code-Generator den Signal-Prozessor
mit dem Code zur Korrelation versorgen. Es kann ein Code-Generator
erforderlich sein, um einen Code mit einem festen Phasensprung oder
mit einem variablen Phasensprung bereitzustellen. Bezugnehmend auf 1 wird
eine schematische Darstellung von bereit gestellten Codes mit verschiedenen
Phasensprüngen dargestellt.
Ein Code-Generator stellt Code-Segmente mit verschiedenen Phasen
in verschiedenen Korrelations-Bereichen (correlation regions) bereit.
Die Phasen-Unterschiede zwischen zwei benachbarten Code-Segmenten
wird als Phasensprung bezeichnet. In einem ersten Ausführungsbeispiel
wird ein Code-Generator zur Bereitstellung eines Code-Segmentes 112 entsprechend
einem aktuellen Korrelations-Bereich K und ein Code-Segment 114 entsprechend
einem nächsten
Korrelations-Bereich K + 1 benötigt.
Im Vergleich zum Code-Segment 112, das das Code-Sample bzw. – Muster
(CN-1 ..., C0) aufweist,
weist das Code-Segment 114,
das das Code-Sample (CN-1+G, CG)
umfasst, einen festen Phasensprung um G Samples auf.
-
In
einem zweiten Ausführungsbeispiel
wird der Code-Generator
benötigt,
um drei Code-Segmente 122a, 122b und 122c entsprechend
einem aktuellen Korrelations-Bereich K bereitzustellen und drei
Code-Segmente 124a, 124b und 124c entsprechend
einem nächsten
Korrelations-Bereich K+1 bereitzustellen. Die Phasensprünge zwischen
den Code-Segmenten 122a bis 122c entsprechen
der Weite eines Samples. Der Phasensprung zwischen Code-Segmenten 122c und 124a jedoch
entspricht der Breite von G Samples. Somit weist der Code, der von dem
Code-Generator in dem zweiten Ausführungsbeispiel bereit gestellt
wird, einen variablen Phasensprung auf. In einem dritten Ausführungsbeispiel
entspricht der Phasensprung zwischen dem Code-Segment 132a und 132b einer
Breite eines Samples bzw. Musters, jedoch entspricht der Phasensprung
zwischen den Code-Segmenten 132b und 132c einer Weite
von zwei Samples. Somit weist auch der Code, der von dem Code-Generator
in dem dritten Ausführungsbeispiel
bereit gestellt wird, einen variablen Phasensprung auf. Ein Speicher-Code-Generator muss
deshalb einen Mechanismus aufweisen, um effizient Code-Segmente
mit verschiedenen Phasensprüngen
bereitzustellen, um die Systemanforderungen zu erfüllen.
-
Bezug
genommen wird auf 2, die ein Blockschaltbild eines
Speicher-Code-Generators 200 zeigt, der einen Korrelations-Code
gemäß der Erfindung
bereitstellt. Der Speicher-Code-Generator 200 umfasst einen
Code-Speicher 202, einen Vorbereitungs-Pufferspeicher-Satz
(preparation buffer set) 204 und einen Korrelations-Pufferspeicher-Satz
(correlation buffer set) 206. Der Vorbereitungs-Pufferspeicher-Satz 204 ist
zwischen dem Code-Speicher 202 und dem Korrelations-Pufferspeicher-Satz 206 verbunden.
Der Code-Speicher 202 speichert Code-Daten. In einem Ausführungsbeispiel
dienen die Code-Daten zur Korrelation von Galileo-E1-Bandsignalen.
Der Vorbereitungs-Pufferspeicher-Satz 204 fragt
ein Code-Segment von Code-Daten
von dem Code-Speicher ab und verschiebt Samples des Code-Segmentes,
um somit ein Code-Segment mit einer gewünschten Phase zu erhalten,
die von dem Korrelations-Pufferspeicher-Satz 206 benötigt wird. Der
Korrelations-Pufferspeicher-Satz 206 lädt dann das
Code-Segment mit der gewünschten
Phase aus dem Vorbereitungs-Pufferspeicher-Satz und stellt direkt
einen Korrelations-Code zur Korrelation gemäß dem geladenen Code-Segment
bereit.
-
Wenn
der Korrelations-Pufferspeicher-Satz 206 einen Korrelations-Code
zur Korrelation gemäß einem
aktuellen Code-Segment bereitstellt, verschiebt der Vorbereitungs-Pufferspeicher-Satz 204 ein
nachfolgendes Code-Segment auf eine gewünschte Phase. Somit kann, nachdem
die Korrelation der gegenwärtigen
Code-Segmente abgeschlossen ist, der Vorbereitungs-Pufferspeicher-Satz 204 direkt
den Korrelations-Pufferspeicher-Satz mit nachfolgenden Code-Segmenten ohne Zeitverzug
versorgen, und kann somit Unterbrechungen bei der Korrelation vermeiden,
um die Systemleistung zu verbessern.
-
Bezugnehmend
auf 3 wird ein Blockschaltbild eines Ausführungsbeispiels
eines Speicher-Code-Generators 300 gemäß der Erfindung gezeigt. Der
Speicher-Code-Generator 300 umfasst einen Code-Speicher,
zwei Vorbereitungs-Pufferspeicher 304a und 304b,
zwei Korrelations-Pufferspeicher 306a und 306b und
einen Code-Selektor 308. Der Code-Speicher 302 speichert
Code-Daten. Die Vorbereitungs-Pufferspeicher 304a und 304b bilden den
Vorbereitungs-Pufferspeicher-Satz 204 nach 2 und
die Korrelations-Pufferspeicher 306a und 306b bilden
den Korrelations-Pufferspeicher-Satz 206 nach 2.
Sowohl die Vorbereitungs-Pufferspeicher 304a und 304b,
wie auch die Korrelations-Pufferspeicher 306a und 306b entsprechen Schieberegistern.
Zusätzlich
weisen die Vorbereitungs-Pufferspeicher 304a und 304b,
sowie die Korrelations-Pufferspeicher 306a und 306b eine
Pufferspeicher-Breite von N Bits auf und können deshalb N Bit Code-Segmente
speichern. In einem Ausführungsbeispiel
entspricht die Pufferspeicher-Breite
N der Wortlänge
des Code-Speichers 302, und die Vorbereitungs-Pufferspeicher 304a und 304b können deshalb
direkt die Code-Wörter
aus dem Code-Speicher 302 unter einem einzigen Speicher-Zugriff
laden.
-
Der
Vorbereitungs-Pufferspeicher 304b ist mit einem Ende (tail)
des Vorbereitungs-Pufferspeichers 304a verbunden. Somit
können,
nachdem die Vorbereitungs-Pufferspeicher 304a und 304b zwei aufeinander
folgende Code-Segmente
von dem Code-Speicher 302 abgefragt haben, die Vorbereitungs-Pufferspeicher 304a und 304b die
Phasen der aufeinander folgenden Code-Segmente auf gewünschte Phasen
passend zur Korrelation verschieben. Demgemäß ist der Korrelations-Pufferspeicher 304a mit
einem Ende des Korrelations-Pufferspeichers 306b verbunden.
Nachdem die Korrelations-Pufferspeicher 306a und 306b die
Code-Segmente von dem Vorbereitungs-Pufferspeicher-Satz geladen
haben, können
die Korrelations-Pufferspeicher 306a und 306b noch
die Phasen der Code-Segmente verschieben, um einen Korrelations-Code
mit leicht veränderten
Code-Phasen bereitzustellen. Der Code-Selektor 308 kann
dann einen Ausgangscode (C0, ..., CM-1) von den Code Bits auswählen, die
in den Korrelations-Pufferspeichern 306a und 306b gespeichert
sind, und kann dann die Codes (C0, ...,
CM-1) zur Korrelation ausgeben.
-
Eine
Verbindung bzw. Verknüpfung
zwischen dem Vorbereitungs-Pufferspeicher-Satz und dem Korrelations-Pufferspeicher-Satz
kann dynamisch angepasst werden. Die Korrelations-Pufferspeicher 306a und 306b sind
jeweils mit den Vorbereitungs-Pufferspeichern 304a und 304b verbunden.
In einem Setup-Modus bei der Initiierung eines großen Phasensprunges
können
die Korrelations-Pufferspeicher 306a und 306b deshalb
direkt Code-Segmente mit gewünschten
Phasen von den Vorbereitungs-Pufferspeichern 304a und 304b laden.
In einem Zwischenmodus (intermediate mode), der auf den Setup-Modus
folgt, lädt,
wenn der gesamte Code, der von dem Korrelations-Pufferspeicher 306 geladen
worden ist, zu dem Korrelations-Pufferspeicher 306a verschoben
worden ist, um einen leeren Korrelations-Pufferspeicher 306b zurück zu lassen,
der Korrelations-Pufferspeicher 306b ein Code-Segment aus dem Vorbereitungs-Pufferspeicher 304b.
In einem Normalmodus wird der Anfang des Vorbereitungs-Pufferspeichers 304a mit
dem Ende des Korrelations-Pufferspeichers 306b verbunden
und wird der Code, der in dem Vorbereitungs-Pufferspeicher 304a gespeichert
ist, zu dem Korrelations-Pufferspeicher 306b und dann zu
dem Korrelations-Pufferspeicher 306a verschoben. Die Funktion
bzw. Betriebsweise der Vorbereitungs-Pufferspeicher 304a und 304b sowie
der Korrelations-Pufferspeicher 306a und 306b werden
in den 4A bis 4F und 5 veranschaulicht.
-
Die 4A–4F entsprechen
einer Reihe von schematischen Darstellungen, die die Funktionen
der Vorbereitungs-Pufferspeicher 304a und 304b sowie
der Korrelations-Pufferspeicher 306a und 306b nach 3 zeigen.
Indes entspricht die 5 einem Flussdiagramm für ein Verfahren 500 zum
Betrieb der Vorbereitungs-Pufferspeicher 304a und 304b und
der Korrelations-Pufferspeicher 306a und 306b nach 3.
Wie oben beschrieben, weist der Speicher-Code-Generator 300 drei
Betriebsmodi auf, die einen Setup-Modus, einen Zwischenmodus und
einen Normalmodus enthalten, wobei die 4A und 4B sich
auf den Setup-Modus beziehen, die 4C und 4D sich
auf den Zwischenmodus beziehen und die 4E und 4F sich
auf den Normalmodus beziehen.
-
Wenn
der Speicher-Code-Generator 300 benötigt wird, um einen Code mit
einem großen
Phasensprung bereitzustellen, so wird der Betriebsmodus des Speicher-Code-Generators 300 auf
den Setup-Modus geschaltet. Es wird angenommen, dass der Code-Speicher 302 eine
Reihe von Code-Wörtern 401, 402, 403, 404, 405 und 406 speichert.
Bezug genommen wird auf 4A, bei
der in einem Setup-Modus die Vorbereitungs-Pufferspeicher 304a und 304b zunächst ein
erstes Code-Wort 401 bzw. ein zweites Code-Wort 402 aus
dem Code-Speicher 302 laden. Die Vorbereitungs-Pufferspeicher 304a und 304b verschieben
dann die Code-Wörter 401 und 402,
um ein Code-Segment
mit einer Code-Phase zu erhalten, das zur Korrelation (Schritte 502 und 504),
wie in 4B gezeigt, angefordert bzw.
benötigt
wird.
-
Wenn
das in den Vorbereitungs-Pufferspeichern 304a und 304b gespeicherte
Code-Segment eine gewünschte
Code-Phase zur Korrelation
aufweist, wird der Speicher-Code-Generator 300 in
einen sogenannten Push-to-B-Betriebsmodus geschaltet. Die Korrelations-Pufferspeicher 306a und 306b laden
dann direkt das Code-Segment aus den Vorbereitungs-Pufferspeichern 304a und 304b,
und die Vorbereitungs-Pufferspeicher 304a und 304b laden
ein viertes Code-Wort 404 bzw. ein drittes Code-Wort 403 aus
dem Code-Speicher 302 (Schritt 506), wie in 4C gezeigt.
Die Korrelations-Pufferspeicher 306a und 306b verschieben
dann schrittweise das darin gespeicherte Code-Segment, um einen
Korrelations-Code
bereitzustellen. In einem Ausführungsbeispiel
wählt der
Code-Selektor 308 das in dem Korrelations-Pufferspeicher 306a gespeicherte Code-Segment
als einen Ausgangs-Korrelations-Code
aus. Nachdem alle Codes, die ursprünglich in den Korrelations-Pufferspeicher 306b gespeichert
sind, in den Korrelations-Pufferspeicher 306a verschoben worden
sind, ist der Korrelations-Pufferspeicher 306b leer (Schritt 510).
Der Korrelations-Pufferspeicher 306b lädt dann das dritte Code-Wort 403 von
dem Vorbereitungs-Pufferspeicher 304b (Schritt 512),
wie in 4D gezeigt. Der Anfang (head)
des Vorbereitungs-Pufferspeichers 304a ist nächstfolgend
mit dem Ende des Korrelations-Pufferspeichers 306b verbunden.
-
Als
nächstes
wird der Speicher-Code-Generator 300 in den normalen Betriebsmodus
geschaltet. Da der Anfang (head) des Vorbereitungs-Pufferspeichers 304a nächstfolgend
mit dem Ende (tail) des Korrelations-Pufferspeichers 306b verbunden
ist, wird eine Kette umfassend den Vorbereitungs-Pufferspeicher 304a, den Korrelations-Pufferspeicher 306b und
den Korrelations-Pufferspeicher 306a gebildet, um Codebits
von dem Vorbereitungs-Pufferspeicher 304a zu dem Korrelations-Pufferspeicher 306a zu verschieben
(Schritt 516). Somit kann der Code-Selektor 308 dann
damit fortfahren, Korrelations-Codes mit verschobenen Phasen aus
dem Korrelations-Pufferspeicher 306a und 306b zu
extrahieren. Immer dann, wenn der Vorbereitungs-Code-Pufferspeicher 304a leer
ist (Schritt 520), lädt
der Vorbereitungs-Code-Pufferspeicher 304a direkt ein nachfolgendes
Code-Wort aus dem Code-Speicher 302 als Quelle, das zum
Korrelations-Pufferspeicher 306b verschoben wird (Schritt 524),
wie in 4E und 4F gezeigt. Somit
kann der Code-Selektor 308 damit fortfahren, einen Code
zur Korrelation bereitzustellen, wenn ein großer Phasensprung nicht benötigt wird.
-
Wenn
ein nachfolgender Korrelations-Code mit einem großen Phasensprung
benötigt
wird, wird der Speicher-Code-Generator 300 zurück in den
Setup-Modus geschaltet (Schritte 508, 514, 518 und 522),
und die Vorbereitungs-Pufferspeicher 304a und 304b laden
einen nachfolgenden Korrelations-Code aus dem Code-Speicher 302 und
verschieben den nachfolgenden Korrelations-Code zu einer gewünschten
Code-Phase hin, die für
die Korrelation benötigt
wird, wenn der Korrelations-Pufferspeicher 306a noch
den Code-Selektor 308 mit dem gegenwärtigen Korrelations-Code versorgt.
Somit können, wenn die
Korrelation des gegenwärtigen
Codes abgeschlossen ist, die Korrelations-Pufferspeicher 306a und 306b direkt
den nachfolgenden Code mit einem großen Phasensprung von dem Vorbereitungs-Pufferspeicher 304a und 304b ohne
Zeitverzug laden, und darum kann die Systemleistung deutlich verbessert
werden.
-
Es
gibt drei Code-Erzeugungs-Situationen in 1. Für eine erste
Code-Erzeugungs-Situation nach 1 kann der
Speicher-Code-Generator 300 die Funktionen des Setup-Modus, wie in 4A und 4B dargestellt,
wiederholen, um einen Speicher-Code mit festen Code-Phasensprüngen zu
erzeugen. Für
eine zweite Code-Erzeugungs-Situation nach 1 kann der
Speicher-Code-Generator 300 sequentiell bzw. der Reihe
nach Funktionen des Setup-Modus, des Zwischenmodus und des Normalmodus
ausführen,
wie in 4A–4F gezeigt,
um einen Speicher-Code mit variablen Code-Phasensprüngen zu erzeugen. Für eine dritte
Code-Erzeugungs-Situation
nach 1 wird ein Speicher-Code mit kleinen Code-Phasensprüngen benötigt. Der Speicher-Code-Generator 300 erzeugt
dann den Speicher-Code mit geringen Code-Phasensprüngen mittels des Code-Selektors 308,
welcher Codes mit benötigten
Phasensprüngen
als Output-Code bzw. Ausgabe-Code
auswählt.
-
Das
Ping-Pong-Konzept zum gleichzeitigen Betrieb eines Korrelations-Pufferspeicher-Satzes und
eines Vorbereitungs-Pufferspeicher-Satzes kann außerdem auf
weitere Ausführungsbeispiele
eines Speicher-Code-Generators angewendet werden. Bezug genommen
wird auf 6A, die ein Blockschaltbild
eines Ausführungsbeispiels
eines Speicher-Code-Generators 600 gemäß der Erfindung
zeigt. Der Speicher-Code-Generator 600 umfasst
einen Code-Speicher 602, einen Roh-Code-Verteiler (raw code
allocator) 603, eine Vielzahl von Code-Pipes 605a–605k und
einen Code-Selektor 608. Der Code-Speicher 602 speichert
Code-Daten. Der Roh-Code-Verteiler 603 ruft
sequentiell eine Reihe von Code-Segmenten von Code-Daten aus dem
Code-Speicher 602 ab und weist jeweils die Code-Segmente
einer der Code-Pipes 605a–605k zu.
-
Die
Code-Pipes bzw. – Weiterleitungen 605a–605k speichern
jeweils die Code-Segmente, die von dem Roh-Code-Verteiler 603 zugewiesen worden
sind. In einem Ausführungsbeispiel
entsprechen die Code-Pipes 605a–605k Schieberegistern. Wenn
die Code-Pipes 605a–605k Code-Segmente von dem
Roh-Code-Verteiler 603 empfangen, verschieben die Code-Pipes 605a–605k die
Phasen der Code-Segmente
auf gewünschte
Phasen, die von dem Code-Selektor 608 zur Korrelation benötigt werden.
Der Code-Selektor fragt dann die Code-Segmente von den Code-Pipes 605a–605k entsprechend
der Reihenfolge der Code-Segmente ab, um einen Korrelations-Code
zur Korrelation bereitzustellen. Die Code-Pipes 605a–605k arbeiten jedoch
nicht mit denselben Phasen. Wenn eine der Code-Pipes 605a–605k damit
beschäftigt
ist, den Code-Selektor 608 mit dem aktuellen Code-Segment
als Korrelations-Code zu versorgen, wie die Korrelations-Pufferspeicher 306a und 306b nach 3,
verschieben die anderen Code-Pipes die darin gespeicherten Code-Segmente,
um die Code-Segmente mit den gewünschten
Code-Phasen zu erhalten, die von dem Code-Selektor 608 benötigt werden,
wie die Vorbereitungs-Pufferspeicher 304a und 304b nach 3. Wenn
somit die Korrelation von dem gegenwärtigen Code-Segment abgeschlossen ist, kann der
Code-Selektor 608 direkt ein nächstes Code-Segment mit einer
gewünschten
Phase von einer der Code-Pipes ohne Zeitverzug abrufen. Mit anderen Worten schalten
die Code-Pipes 605a–605k dynamisch
zwischen der Ausübung
einer Rolle bzw. Funktion eines Vorbereitungs-Pufferspeichers und eines Korrelations-Pufferspeichers
um, um die Systemleistung zu verbessern.
-
Die 7A–7C entsprechen
einer Reihe von schematischen Darstellungen, die die Funktion bzw.
den Betrieb der Code-Pipes 605a–605k des Speicher-Code-Generators 600 nach 6 darstellen. Bezugnehmend auf 7A nimmt
eine Code-Pipe 605a die Funktion eines Korrelations-Pufferspeichers ein,
der ein darin gespeichertes Code-Segment
für den
Code-Selektor 608 bereitstellt. Andere Code-Pipes, außer für den Korrelations-Pufferspeicher 605a,
nehmen die Funktion von Vorbereitungs-Pufferspeichern ein, die ein
Code-Segment mit einer gewünschten
Phase vorbereiten. Bezugnehmend auf 7B liefert
die Code-Pipe 605a ein
anteiliges Korrelations-Code-Segment (partial correlation segment)
an den Code-Selektor 608 aus, wobei die Code-Pipe 605b den
darin gespeicherten Korrelations-Code zu einer gewünschten
Phase verschiebt, und wobei die Code-Pipe 605k einen Roh-Code (raw
code) von dem Roh-Code-Verteiler 603 abruft.
Jede Code-Pipe bzw. Code-Pipe behandelt seinen Korrelations-Code
unabhängig,
und wenn ein Code-Selektor 608 einen Korrelations-Code
mit einer gewünschten
Phase benötigt,
stellt eine der Code-Pipes 605a–605k direkt dem Code-Selektor 608 den
Korrelations-Code ohne Zeitverzug bereit. Somit würde, nachdem
die Korrelation des Code-Segmentes der Code-Pipe 605a abgeschlossen
ist, die Code-Pipe 605b dann direkt dem Code-Selektor 608 das
nachfolgende Code-Segment mit einem Phasensprung ohne Zeitverzug
zur Verfügung
stellen.
-
Ein
Empfänger
behandelt manchmal die Signal-Verarbeitung
von einer Vielzahl von Satelliten und benötigt eine Vielzahl von Korrelations-Codes gemäß den Satelliten.
Bezug genommen wird auf 6B, die
ein Blockschaltbild eines weiteren Ausführungsbeispiels eines Speicher-Code-Generators 650 zeigt,
der zur Bereitstellung von Korrelations-Codes entsprechend einer
Vielzahl von Satelliten gemäß der Erfindung
geeignet ist. Der Speicher-Code-Generator 650 umfasst
einen Code-Speicher 652, einen Roh-Code-Verteiler 653,
eine Vielzahl von Code-Pipe-Paaren 655a1–605k2 und
einen Code-Selektor 658.
-
Der
Code-Speicher 652 umfasst eine Vielzahl von Speichern 652a–652k.
Jeder der Speicher 652a–652k speichert einen
Code entsprechend einem der Satelliten. Somit speichert der Code-Speicher 652 Codes
entsprechend der Vielzahl von Satelliten. Jedes der Code-Pipe-Paare 655a–655k umfasst
zwei Code-Pipes. Beispielsweise umfasst das Code-Pipe-Paar 655a die
Code-Pipes 655a1 und 655a2. In einem Ausführungsbeispiel
entsprechen die Code-Pipes 655a1–655k2 Schieberegistern.
Der Roh-Code-Verteiler 653 umfasst eine Vielzahl von Schaltern 653a–653k,
von denen jeder eine Reihe von Code-Segmenten entsprechend einem
Satelliten von einem der Speicher 652a–652k abruft und wechselweise
die Code-Segmente
einer der zwei Code-Pipes eines Code-Pipe-Paares zuordnet, das dem
entsprechenden Satelliten zugewiesen ist.
-
Die
zwei Code-Pipes eines Code-Pipe-Paares (code Pipe pair) schalten
zwischen der Durchführung
der Funktion eines Vorbereitungs-Pufferspeichers und eines Korrelations-Pufferspeichers um. Wenn
eine der zwei Code-Pipes dem Code-Selektor 658 ein verschobenes
Code-Segment mit einer gewünschten
Phase bereitstellt, verschiebt die andere der zwei Code-Pipes ein
Roh-Code-Segment, das von dem Roh-Code-Verteiler 653 empfangen
wurde, um ein verschobenes Code-Segment mit einer gewünschten
Phase zu erhalten, die von dem Code-Selektor 658 benötigt wird.
Der Code-Selektor 658 umfasst eine Vielzahl von Multiplexern 658a–658k und einen
abschließenden
Multiplexer (end multiplexer) 659. Jeder der Multiplexer 658a–658k ruft
ein verschobenes Code-Segment
von einer der Code-Pipes des entsprechenden Code-Pipe-Paares ab. Somit stellt jedes Code-Pipe-Paar
ein verschobenes Code-Segment für
den abschließenden
Multiplexer 659 bereit. Schließlich wählt der abschließende Multiplexer 659 eines
der verschobenen Code-Segmente als Ausgangscode zur Korrelation
aus, und der Speicher-Code-Generator 650 kann deshalb jeden
Code passend zu den Satelliten erzeugen.
-
Um
die Anforderungen für
den Umgang von Signalen mehrerer Satelliten zu erzielen, weist ein
Signal-Empfänger
oft eine Vielzahl von physikalischen Kanälen (physical channels) für das jeweilige
Suchen und Nachverfolgen eines der Vielzahl von Satelliten auf.
Jeder physikalische Kanal benötigt
einen Korrelations-Code, der einem entsprechenden Satelliten zur
Korrelation mit einem Eingangssignal, das von dem entsprechenden
Satelliten empfangen wird, zugewiesen ist. Wenn ein physikalischer
Kanal zur Verarbeitung eines GPS-Signales,
eines COMPASS-Signales oder eines GLONASS-Signales vorgesehen ist, kann ein Code-Generator
direkt einen Korrelations-Code für
ein GPS-Signal, ein COMPASS-Signal oder
ein GLONASS-Signal mit einem linearen rückgekoppelten Schieberegister
(LFSR: linear feedback shift register) erzeugen. Wenn ein physikalischer
Kanal für
die Verarbeitung eines Galileo-E1-Bandsignales vorgesehen ist, entspricht
der Korrelations-Code für
das Galileo E1-Bandsignal
einer pseudo-zufälligen
Sequenz, die nicht wieder erzeugt werden kann. Ein Code-Speicher
muss deshalb den Korrelations-Code im Voraus speichern, bevor ein
Code-Generator dann
den Korrelations-Code von dem Code-Speicher abrufen kann, um den
Korrelations-Code bereitzustellen.
-
Bezug
genommen wird auf 8, die ein Blockdiagramm eines
Signal-Empfängers 800 mit
einem physikalischen Kanal 810 darstellt. Zusätzlich zu
dem physikalischen Kanal 810 umfasst der Signal-Empfänger 800 noch
einen Code-Speicher 820, der einen Korrelations-Code speichert.
Der physikalische Kanal 810 umfasst einen Träger-Mischer
(carrier mixer) 812, einen Korrelator 814, einen
Speicher 816, einen numerischen Code-Oszillator (NCO: numerical
code oscillator) 817 für
den Träger,
einen Code-Generator 818 und einen numerischen Code-Oszillator
(NCO) 819 für
den Code. Der Träger-Mischer 812 mischt
ein Eingangssignal S1, das von dem physikalischen
Kanal 810 empfangen wird, mit dem Trägersignal T1,
um ein Signal S2 ohne Trägerkomponente zu erhalten.
Der Code-Generator 818 ruft einen Korrelations-Code C von dem Code-Speicher 820 gemäß der Code-Phase
T2 ab, die von dem Code-NCO 819 erzeugt
wird. Der Korrelator 814 korreliert dann das Signal S2 mit dem Korrelations-Code C, um das Signal
S3 ohne Korrelations-Code-Komponente wieder
zu gewinnen. Das Signal S3 wird dann zunächst in
einem Speicher 816 zur weiteren Verarbeitung gespeichert.
-
Ein
Code-Speicher weist hohe Hardware-Kosten auf. Wenn ein Signal-Empfänger mehrere
Kanäle
aufweist, sind die Hardware-Kosten für die physikalische Implementierung
eines Signal-Empfängers
zu hoch, falls der Signal-Empfänger mehrere
Code-Speicher aufweist, die jeweils Korrelations-Codes für die physikalischen Kanäle speichern.
Ein Code-Speicher
muss deshalb Korrelations-Codes von einer Vielzahl physikalischer
Kanäle speichern
und als Speicher-Zugang bzw. Zugriff für mehrere physikalische Kanäle dienen.
Bezug genommen wird auf 9, die ein Blockschaltbild eines Signal-Empfängers 900 zeigt,
der eine Vielzahl von physikalischen Kanälen 9101 bis 910 m
und einen Code-Speicher 920 aufweist. Die physikalischen
Kanäle 9101–910 m
erzeugen jeweils Code-Abfragen (code requests) zum Zugriff auf den
Code-Speicher 920, und der Code-Speicher 920 erzeugt
entsprechend die Codes Ca, Cb,
..., Cm, die in Antwort an die physikalischen
Kanäle 9101–910m ausgeliefert
werden. Die physikalischen Kanäle 9101–910m korrelieren
dann das Eingangssignal S1 entsprechend
mit den Korrelations-Codes Ca, Cb, ..., Cm, um die
Signale S3a, S3b,
Sm zu erhalten, die zur weiteren Verarbeitung an
den Prozessor 908 gesendet werden.
-
Ein
Code-Speicher benötigt
deshalb einen Mechanismus zur Behandlung von Code-Abfragen (code
requests) von mehrfachen physikalischen Kanälen. Bezug genommen wird auf 10,
die ein Blockschaltbild eines Code-Speichers 1000 zeigt, der
zur Bereitstellung von Codes für
eine Vielzahl von physikalischen Kanälen gemäß der Erfindung geeignet ist.
Der Code-Speicher 1000 umfasst einen Multiplexer-Schaltkreis 1002 und
ein Inneres Speicher-Modul (core memory module) 1004 bzw. Kern-Speicher-Modul.
Das Innere Speicher-Modul 1004 speichert Code-Daten entsprechend
einer Vielzahl von Satelliten. In einem Ausführungsbeispiel dienen die Code-Daten, die in dem
Code-Speicher-Modul 1004 gespeichert sind, der Korrelation von
Galileo-E1-Bandsignalen. Wenn die mehreren physikalischen Kanäle einen
Code zur Signal-Korrelation
benötigen,
erzeugen die physikalischen Kanäle eine
Vielzahl von Adressen, die an den Code-Speicher gesendet werden,
um Code-Segmente mit Code-Daten anzufordern. Der Multiplexer-Schaltkreis 1002 wählt dann
nacheinander eine der Adressen als ein Segment eines Code-Speicher-Adressignales aus.
In einem Ausführungsbeispiel
führt der
Multiplexer-Schaltkreis 1002 eine ODER-Operation an den Adressen
aus, um das Code-Speicher-Adressierungs-Signal zu erhalten. Das innere Speicher-Modul 1004 fragt
dann die Code-Segmente an Code-Daten gemäß dem Code-Speicher-Adressierungs-Signal ab, um
ein Code-Speicher-Datensignal
zu erzeugen. Die physikalischen Kanäle erzeugen dann eine Vielzahl
von Latch-Signalen bzw. Verriegelungs-Signalen, um jeweils zuvor angeforderte
Code-Segmente von den Code-Speicher-Datensignalen für weitere Korrelationen
abzufragen.
-
Bezug
genommen wird auf 11, die eine schematische Darstellung
eines Ausführungsbeispiels
eines Signals zeigt, das sich auf den Code-Speicher 1000 nach 11 gemäß der Erfindung bezieht.
Angenommen wird, dass ein Signal-Empfänger drei
physikalische Kanäle
aufweist und dass die physikalischen Kanäle jeweils Anforderungen für Codes
und Adressen A1, A2 und A3 entsprechend den angeforderten Codes
in den Takt-Zyklen (clock cycles) t0, t1 und t2 erzeugen.
Der Multiplexer-Schaltkreis 1002 führt dann eine ODER-Operation
an den Adressen aus, die von den physikalischen Kanälen gesendet
werden, um ein Code-Speicher-Adressierungs-Signal zu erhalten, das
die Adresse A1 im Takt-Zyklus t0, die Adresse
A2 im Takt-Zyklus t2, und die Adresse A3
im Takt-Zyklus t3 umfasst. Das innere Speicher-Modul 1004 ruft
dann die darin gespeicherten Code-Daten gemäß dem Code-Speicher-Adressierungs-Signal
ab, um ein Code-Speicher-Datensignal zu erzeugen, wobei das Code-Speicher-Datensignal
ein Code-Segment
C1 entsprechend der Adresse A1 zum Takt-Zyklus t1, ein Code-Segment C2
entsprechend der Adresse A2 zum Takt- Zyklus t2 und
ein Code-Segment C3 entsprechend der Adresse A3 zum Takt-Zyklus
t3 aufweist. Die physikalischen Kanäle erzeugen
dann jeweils Latch-Signale, die jeweils zum Takt-Zyklus t1, t2 bzw. t3 aktiviert
bzw. freigegeben (enabled) werden, um jeweils eines der Code-Segmente
C1, C2 bzw. C3 von den Code-Speicher-Datensignalen zu latchen bzw.
zu verriegeln.
-
Obwohl
der Code-Speicher 1000 eine einfache Struktur aufweist,
hat der Code-Speicher 1000 noch Einschränkungen. Da der Multiplexer-Schaltkreis 1002 eine
ODERr-Operation an den Adressen, die von den physikalischen Kanälen gesendet
werden, ausführt,
um das Code-Speicher-Adressierungs-Signal zu erzeugen, können die
physikalischen Kanäle
nicht die Adressen in demselben Takt-Zyklus erzeugen, da andernfalls
das Code-Speicher-Adressierungs-Signal mit Fehlern erzeugt werden
würde.
Außerdem
können
die physikalischen Kanäle
die Latch-Signale nicht in demselben Takt-Zyklus aktivieren, um
an den angeforderten Code-Daten von dem Code-Speicher-Datensignal
zu latchen bzw. aufzufangen. Die physikalischen Kanäle müssen deshalb
einen Mechanismus aufweisen, der die Adressen davor schützt, zur
selben Zeit erzeugt zu werden, was den Schaltungsaufbau der physikalischen
Kanäle
verkompliziert.
-
Darum
wird ein Code-Speicher benötigt,
der zur gleichzeitigen Annahme von Speicher-Zugriffen beschaffen
ist, die von einer Vielzahl von physikalischen Kanälen erzeugt
werden. Bezug genommen wird auf 4,
die ein Blockschaltbild eines Code-Speichers 1200 zeigt,
der zur Bereitstellung von Codes für eine Vielzahl von physikalischen
Kanälen gemäß der Erfindung
geeignet ist. Der Code-Speicher 1200 umfasst einen Auswahl-Multiplexer
(selecting multiplexer) 1202, ein inneres Speicher-Modul 1204 und
einen Code-Pufferspeicher 1206. Bezug genommen wird auf 13,
die eine schematische Darstellung eines Ausführungsbeispieles eines Signals
zeigt, das sich auf den Code-Speicher 1200 nach 12 gemäß der Erfindung
bezieht. Angenommen wird, dass ein Signal-Empfänger drei physikalische Kanäle aufweist
und dass die physikalischen Kanäle
jeweils Anforderungen für
Code-Segmente und Adressen A1, A2 und A3 entsprechend den Code-Segmenten
zum selben Takt-Zyklus ta1 erzeugen. Da
die Anzahl der physikalischen Kanäle Drei beträgt, weisen
die Adressen A1, A2 und A3 eine Zeitdauer auf, die dreimal einem
Takt-Zyklus entspricht.
-
Nachdem
die physikalischen Kanäle
eine Vielzahl von Adressen entsprechend den angeforderten Code-Segmenten
an den Code-Speicher 1200 senden, latched der Auswahl-Multiplexer 1002 wiederholend
zu den Adressen (latches an to the addresses), die von den physikalischen
Kanälen
gemäß einer
vorbestimmten Reihenfolge von physikalischen Kanälen erzeugt wurden, um ein
Code-Speicher-Adressierungs-Signal zu erzeugen. Beispielsweise wird
eine Reihe von Takt-Zyklen t1a, t2a, t3a, t1b, t2b und t3b erzeugt, und der Auswahl-Multiplexer 1202 latched
zu den Adressen, die von einem ersten Kanal in den Takt-Zyklen t2a und t2b erzeugt
wurde, und latched zu den Adressen, die von einem dritten Kanal den
Takt-Zyklen t3a und t3b erzeugt
wurden. Da die Adressen die von den physikalischen Kanälen erzeugt
werden, eine Zeitdauer von drei Takt-Zyklen aufweisen, können Adressen
jederzeit durch den Auswahl-Multiplexer 1202 als ein Teil
bzw. Abschnitt (portion) des Code-Speicher-Adressierungs-Signals gelatched
werden. Somit latched der Auswahl-Multiplexer 1202 jeweils an
den Adressen A1, A2, bzw. A3, wie in 13 gezeigt,
zu den Takt-Zyklen t1a, t2a bzw.
t3a, um ein Code-Speicher-Adressierungs-Signal
zu erhalten, das die Adressen A1 zum Takt-Zyklus t1a,
die Adresse A2 zum Takt-Zyklus t2a und die Adresse
A3 zum Takt-Zyklus t3a umfasst.
-
Das
innere Speicher-Modul 1204 speichert Code-Daten entsprechend
der Vielzahl von physikalischen Kanälen. In einem Ausführungsbeispiel
dienen die Code-Daten, die in dem inneren Speicher-Modul 1204 gespeichert
sind, einer Galileo E1-Bandsignal-Korrelation. Wenn das innere Speicher-Modul 1204 das
Code-Speicher-Adressierungs-Signal empfängt, ruft das innere Speicher-Modul 1204 die
Code-Daten gemäß dem Code-Speicher-Adressierungs-Signal
ab, um ein Code-Speicher-Datensignal
zu erzeugen. Ein Code-Speicher-Datensignal,
wie in 13 gezeigt, umfasst somit ein
Code-Segment C1
zum Takt-Zyklus t2a, ein Code-Segment C2
zum Takt-Zyklus t3a und ein Code-Segment
C3 zum Takt-Zyklus t1b, wobei die Code-Segmente
C1, C2 bzw. C3 zu den Adressen A1, A2 bzw. A3 korrespondieren.
-
Der
Code-Pufferspeicher 1206 umfasst eine Vielzahl von Pufferspeichern,
die jeweils zu den physikalischen Kanälen korrespondieren. Wenn der
Code-Pufferspeicher 1206 das Code-Speicher-Datensignal
empfängt,
ruft der Code-Pufferspeicher 1206 jeweils
eine Vielzahl von Code-Segmenten ab, die von den physikalischen
Kanälen
von dem Code-Speicher-Datensignal
gemäß der Reihenfolge
der physikalischen Kanäle
angefordert werden, und speichert die Code-Segmente in den entsprechenden Pufferspeichern.
Beispielsweise ruft der. Code-Pufferspeicher 1206 ein Code-Segment C1 von dem
Code-Speicher-Datensignal zum Takt-Zyklus t2a ab
und speichert das Code-Segment C1 in einem ersten Pufferspeicher,
wie in 13 gezeigt. Der Code- Pufferspeicher 1206 ruft
dann jeweils Code-Segmente C2 und C3 von dem Code-Speicher-Datensignal
zu den Takt-Zyklen t3a bzw. t1b ab
und speichert die Code-Segmente C2 und C3 in einem zweiten Pufferspeicher
bzw. einem dritten Pufferspeicher, wie in 13 gezeigt.
-
Die
physikalischen Kanäle
erzeugen dann eine Vielzahl von Latch-Signalen, um jeweils die Code-Segmente
C1, C2 und C3 von den entsprechenden Pufferspeichern abzurufen.
Da die Dauer der Adressen A1, A2 und A3 auf den Takt-Zyklus t3a ausgedehnt ist, aktivieren die physikalischen
Kanäle
die gelatchten Signale zum Takt-Zyklus t1b nachfolgend zum
Taktzyklus t3a, um die Code-Segmente von
dem Code-Pufferspeicher 1206 abzurufen.
Der Code-Pufferspeicher 1206 löscht dann die Pufferspeicher
zum Takt-Zyklus t2b, nachdem die Code-Segmente
abgerufen worden sind. Obwohl die physikalischen Kanäle Code-Abfragen
zu demselben Takt-Zyklus
t1a erzeugen, kann somit der Code-Speicher 1200 noch und
weiterhin die Code-Abfragen bearbeiten und die Code-Segmente erzeugen.
Außerdem
können
die physikalischen Kanäle
auch die gelatchten Signale erzeugen, um Code-Segmente von dem Code-Speicher 1200 zu
demselben Takt-Zyklus t1b abzurufen. Die
Struktur der physikalischen Kanäle
ist deshalb vereinfacht und die Hardware-Kosten des Signal-Empfängers werden
reduziert.
-
Bezug
genommen wird auf 14, die ein Flussdiagramm eines
Verfahrens 1400 zur Bereitstellung von Codes für eine Vielzahl
von physikalischen Kanälen
gemäß der Erfindung
zeigt. Zuerst werden Code-Daten in einem inneren Speicher-Modul 1204 gespeichert.
(Schritt 1401). Der Auswahl-Multiplexer 1202 latched dann
wiederholend an einer Vielzahl von Adressen, die von einer Vielzahl
der physikalischen Kanäle
gemäß einer
Reihenfolge der physikalischen Kanäle erzeugt werden, um ein Code-Speicher-Adressierungs-Signal
zu erzeugen (Schritt 1402). Das innere Speicher-Modul 1204 ruft
dann die Code-Daten gemäß dem Code-Speicher-Adressierungs-Signal
von dem inneren Speicher-Modul ab, um ein Code-Speicher-Datensignal
zu erzeugen (Schritt 1403). Der Code-Pufferspeicher 1206 ruft dann
jeweils eine Vielzahl von Code-Segmenten ab, die von den physikalischen
Kanälen
von dem Code-Speicher-Datensignal gemäß der Reihenfolge der physikalischen
Kanäle
angefordert werden (Schritt 1404). Schließlich speichert
der Code-Pufferspeicher 1206 die Code-Segmente in einer Vielzahl von Pufferspeichern
(Schritt 1405), und die physikalischen Kanäle greifen
auf die Code-Segmente
von den Pufferspeichern jeweils zu.
-
Während die
Erfindung im Wege von Beispielen und bezüglich bevorzugter Ausführungsformen
beschrieben worden ist, versteht es sich, dass die Erfindung nicht
hierauf beschränkt
ist. Im Gegenteil ist beabsichtigt, verschiedene Modifikationen
und ähnliche
Anordnungen (so wie sie dem Fachmann offensichtlich erscheinen)
abzudecken. Deshalb soll dem Schutzumfang der beiliegenden Ansprüche die breiteste
Interpretation zukommen, um somit all solche Modifikationen und ähnliche
Anordnungen mit zu umfassen.