-
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.
-
In der
US 2003/0202565 A1 wird ein mit ROM-Speichern realisierter Pseudo-Zufalls- bzw. Pseudo-Rausch-Generator (PN Generator) beschrieben, der einen Adressen- und Steuersignal-Generator, eine Reihe bzw. Bank von ROM-Speichern und eine sog. Einheit zum Anordnen und Pufferspeichern von Bits („bit alignment and buffering unit”; siehe dort
6). Die Reihe der ROM speichert die X(i)- und Y(i)-Sequenzen eines Haupt-Synchronisations-Codes („primary synchronization code”), kurz PSC genannt. Zuerst bestimmt der Adressen- und Steuersignal-Generator eine ROM-Adresse, dann geben die ROM-Speicher die X(i)- und Y(i)-Sequenzen, die unter dieser Adresse gespeichert sind, aus an die Einheit zum Anordnen und Pufferspeichern von Bits, welche das X(i)-Wort verschiebt, um einen PN-Vektor als Ausgangs-Vektor zu erzeugen. Es müssen fortlaufend Adressen erzeugt werden, um die benötigten X(i)- und Y(i)-Sequenzen zu erhalten. Die dort beschriebene Technik betrifft terrestrische CDMA-Funkübertragung und dient dazu, in einem Rake-Empfänger die sog. Sucher („searcher”) und Finger („fingers”) zum Auffinden der stärksten Mehrwege-Empfangssignale zu verbessern. Der Empfang von Satteliten-Signalen, insbesondere GPS-Signalen von mehreren Satteliten, wird dort nicht beschrieben.
-
Aufgabe der Erfindung ist es, für einen Empfänger, gleichzeitig die Codes verschiedener Satelliten anfordern kann, einen Speicher-Code-Generator zu schaffen, der geeignet ist, Codes entsprechend einer Vielzahl von Satelliten bereitzustellen. Auch soll ein passendes Verfahren zur Speicher-Code-Erzeugung vorgeschlagen werden.
-
KURZE ZUSAMMENFASSUNG DER ERFINDUNG
-
Die Erfindung stellt einen Speicher-Code-Generator bereit. Gemäß den Merkmalen des Anspruchs 1 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 verschiebt das darin gespeicherte zweite Code-Segment, um einen Korrelations-Code zur Korrelation bereitzustellen. Der Vorbereitungs-Pufferspeicher-Satz ruft die Code-Daten aus dem Code-Speicher sequentiell ab, um ein drittes Code-Segment zum Füllen eines Leerraums des Korrelations-Pufferspeicher-Satzes für eine nachfolgende Korrelation vorzubereiten, wenn der Korrelations-Pufferspeicher-Satz den Korrelations-Code für die gegenwärtige Korrelation bereitstellt.
-
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 910m und einen Code-Speicher 920 aufweist. Die physikalischen Kanäle 9101–910m 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, ..., S3m 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 on 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.