-
Diese
Erfindung bezieht sich allgemein auf RAKE-Empfänger und insbesondere auf einen
programmierbaren Mehrkanal-Korrelator-Coprozessor (CCP), der CDMA-Basisstations-
und CDMA-Handapparat-RAKE-Empfänger-Operationen
unterstützt.
-
Ein
RAKE-Empfänger
ist ein Funkempfänger,
der mehrere unabhängige
Empfängereinheiten
enthält, die
meist als RAKE-Zweige bezeichnet werden, von denen jeder die über Multipfad
ausgebreiteten Signale empfängt
und als ein Diversity-Kombinator für sie wirkt. RAKE-Empfänger werden
unter anderem insbesondere in CDMA-Empfängern verwendet. RAKE-Empfänger enthalten
allgemein Korrelationen und Akkumulationen, die einem besonderen
drahtlosen Kommunikationsprotokoll zugeordnet sind, wobei jeder
RAKE-Zweig dafür
vorgesehen ist, die über
Multipfad ausgebreiteten Signale auf vorgegebene Weise zu verarbeiten,
um ein gewünschtes
Kommunikationsprotokoll zu versorgen. Das US-Patent Nr. 5.978.423
mit dem Titel Method and Arrangement of Signal Tracking and A Rake-Receiver
Utilizing the Arrangement, erteilt am 2. November 1999 an Farjh,
und das US-Patent Nr. 5.917.851 mit dem Titel Method for Allocating
Rake Brauches and Rake Receiver, erteilt am 29. Juni 1999 an Jarvela
u. a., erläutern
beispielhaft RAKE-Empfängertechniken
und -architekturen des Standes der Technik, in denen RAKE-Zweige
dauerhaft festen Signalverarbeitungstasks zugeordnet sind. Darüber hinaus
ist in der europäischen
Patentanmeldung 935.204 ein Korrelator-Coprozessor beschrieben,
der gemäß lokaler
Steuerung einen vorgegebenen Korrelationsalgorithmus ausführt.
-
Angesichts
der vorstehenden Diskussion besteht im Gebiet der drahtlosen Kommunikation
ein Bedarf an einer programmierbaren, äußerst flexiblen, vektorgestützten Korrelationsmaschine,
die unabhängig
von dem besonderen drahtlosen Kommunikationsprotokoll CDMA-Basisstations-
und CDMA-Handapparat-RAKE-Empfängeroperationen
wie etwa unter anderem Fingerspreizung und Suche für mehrere
Kanäle
ausführen kann.
-
Die
vorliegende Erfindung schafft einen Korrelator-Coprozessor, wie
er in den Ansprüchen
dargelegt ist.
-
Ausführungsformen
der Erfindung können
auf einen Korrelator-Coprozessor (CCP) gerichtet sein, der besonders
zur Unterstützung
von Spreizspektrum-CDMA-Kommunikationssystemen
wie etwa IMT2000-DS (3,84-MHz-Chipraten-Spezifikation), IMT2000-MC, IMT2000-TDD
und CDMAOne/IS-95 sowie GPS geeignet ist. Der CCP ist eine programmierbare, äußerst flexible,
vektorgestützte
Korrelationsmaschine, die CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
ausführt.
Der CCP ist eine zentrale Korrelationsmaschine, die für verschiedene
RAKE-Empfänger-Tasks
wie etwa unter anderem Fingerspreizung und Suche verwendet werden
kann, um unabhängig
von dem besonderen drahtlosen Protokoll die meisten für RAKE-Empfänger üblichen
Funktionen zu versorgen. Jeder RAKE-Empfänger-Task verwendet auf zeitmultiplexierte
Weise einen gemeinsamen zentralen Datenpfad des CCP, so dass in
dem CCP viele verschiedene Tasks gleichzeitig ausgeführt werden
können.
Um den Leistungsverbrauch zu senken, ist der Hauptdatenpfad vektorisiert.
-
Die
gemeinsame Nutzung des CCP-Hauptdatenpfads für verschiedene RAKE-Empfänger-Funktionen,
z. B. Fingerdemodulation, Codeverfolgungsschleifen und Suche, versorgt
eine CCP-Struktur, die eher als festverdrahtete Betriebsmittel,
die bekannten Architekturen gemeinsam sind, programmierbar konfigurierbare Betriebsmittel
besitzt. Die Menge der CCP-Betriebsmittel wird auf irgendeine gewünschte Weise
zugeordnet, um eine gegebene Situation zu versorgen. Nicht verwendete
CCP-Betriebsmittel werden gesperrt, um einen Leistungsverlust zu
verhindern.
-
Der
CCP kann komplexwertige Korrelationen ausführen, die aus Entspreizung
und kohärenter
Akkumulation bestehen. Außerdem
kann der CCP nicht kohärente
Akkumulationen ausführen
wie etwa "Symbol"-Energiewerte akkumulieren
und für
Suchoperationen die akkumulierten Energiewerte für ein angegebenes Fenster von
Versätzen
zurückgeben.
Zum Beispiel kann der CCP zu frühe,
rechtzeitige und zu späte
Abtastwerte eines RAKE-Fingers zur Verwendung in der Code verfolgungsschleife
eines Fingers (typisch eine Verzögerungsregelschleife
(DLL)) akkumulieren.
-
Eine
bevorzugte Ausführungsform
des CCP umfasst einen Datenpfad mit "Multiplizierern" zum Multiplizieren von Abtastwerten
an einem Eingangspuffer mit Abtastwerten von Pseudozufallscode (PN-Code)
und Walsh-Code, Addiererbäume
zum Erzeugen von Partialkorrelationen, einen kohärenten Akkumulator zum Summieren
der momentanen Partialkorrelationen mit einer oder mehreren früheren Partialkorrelationen
und einen Nachverarbeitungsblock zum Ausführen von Effektivwertberechnungen
(sqrt(I2 + Q2)-Berechnungen) (gelegentlich
als "Energie"-Werte bezeichnet)
und nicht kohärenten
Akkumulationen. Vorzugsweise verwendet der CCP-Datenpfad umfangreiche
Pipeline-Stufen, um die Rechenkapazität zu maximieren, sowie Temporärspeicher
("Notizblock"-Speicher) zum Speichern
von Partialkorrelationsergebnissen und Effektivwertakkumulations-Zwischenergebnissen.
Ferner umfasst die bevorzugte Ausführungsform des CCP mehrere
Ausgangspuffer wie etwa einen Fingersymbolpuffer, einen DPE-Puffer, einen LCI-Puffer,
einen EOL-Puffer, einen SSC-Suchpuffer und/oder einen PSC-Suchpuffer
zur Unterstützung
verschiedener Typen von Tasks und zum Speichern von Taskergebnissen.
Gemäß der bevorzugten
Ausführungsform
umfasst der CCP ferner PN- und Walsh-Generatoren, eine Steuereinheit,
einen Taskpuffer, einen Unterbrechungsgenerator und Konfigurationsparameter-Speichereinheiten.
-
Somit
schafft die vorliegende Erfindung verschiedene technische Vorteile.
In einem Aspekt der Erfindung wird ein programmierbarer, äußerst flexibler,
vektorgestützter
Korrelator-Coprozessor geschaffen, der mehrere CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
unterstützt.
-
In
einem weiteren Aspekt der Erfindung wird eine zentrale Korrelationsmaschine
geschaffen, die verschiedene RAKE-Empfänger-Tasks wie etwa Fingerentspreizung
und Suche ausführt.
-
In
einem abermals weiteren Aspekt der Erfindung wird ein Korrelator-Coprozessor
mit einem zentralen Datenpfad geschaffen, der zeitmultiplexierte
Operationen unterstützen
kann, so dass durch den Korrelator-Coprozessor viele verschiedene
Tasks gleichzeitig ausgeführt
werden können.
-
In
einem nochmals weiteren Aspekt der Erfindung wird ein Korrelator-Coprozessor
zur Unterstützung mehrerer
CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
mit einem vektorisierten Hauptdatenpfad zur Verringerung des Leistungsverlusts
geschaffen.
-
Gemäß einem
weiteren Aspekt der Erfindung ist ein Korrelator-Coprozessor mit
einem gemeinsam genutzten Datenpfad programmierbar konfigurierbar,
um mehrere CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
zu versorgen, ohne dass "festverdrahtete" Strukturelemente
erforderlich sind.
-
Gemäß einem
abermals weiteren Aspekt der Erfindung kann ein Korrelator-Coprozessor zur Unterstützung mehrerer
CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
komplexwertige Korrelationen ausführen, die aus Entspreizung
und kohärenter
Akkumulation bestehen, und kann er ferner "Symbol"-Energiewerte akkumulieren (nicht kohärente Akkumulationen).
-
In
einem nochmals weiteren Aspekt der Erfindung ist ein Korrelator-Coprozessor
zur Unterstützung mehrerer
CDMA-Basisstations- und CDMA-Mobilstations-RAKE-Empfängeroperationen
zur Unterstützung
der drahtlosen Protokolle IMT2000-DS (3,84-MHz-Chipraten-Spezifikation),
IMT2000-MC, IMT2000-TDD, CDMAOne/IS-95 und GPS konfigurierbar.
-
Wie
sie hier verwendet werden, haben die folgenden Begriffe die folgenden
Bedeutungen.
- "3G" bedeutet 3-te Generation.
- "ABB" bedeutet analoges
Basisband (vergleiche AFE).
- "A/D (ADC)" bedeutet Analog/Digital-Umsetzer.
- "AFC" bedeutet automatische
Frequenzregelung.
- "AFE" bedeutet analoges
Eingangsteil (vergleiche ABB).
- "AGC" bedeutet automatische
Verstärkungsregelung.
- "ARIB" bedeutet Association
of Radio Industries and Businesses (Japan).
- "ARM" bedeutet Fortschalt-RISC-Maschine.
- "BS" bedeutet Basisstation.
- "CCP" bedeutet Korrelator-Coprozessor.
- "CDMA" bedeutet Codemultiplex-Vielfachzugriff.
- "CPICH" bedeutet gemeinsamer
Pilotkanal.
- "D/A (DAC)" bedeutet Digital/Analog-Umsetzer.
- "DBB" bedeutet digitales
Basisband.
- "DLL" bedeutet Verzögerungsregelschleife.
- "DMA" bedeutet direkter
Speicherzugriff.
- "DPCCH" bedeutet dedizierter
physikalischer Steuerkanal.
- "DPE (DPPE)" bedeutet Verzögerungsprofilschätzung.
- "DPP" bedeutet Verzögerungspfadleistung.
- "DSP" bedeutet digitaler
Signalprozessor/digitale Signalverarbeitung.
- "DSPRDC" bedeutet DSP-Forschungs-
und Entwicklungszentrum.
- "ETSI" bedeutet European
Telecommunications Standards Institute.
- "FSC" bedeutet erster
Kurzcode.
- "GPS" bedeutet globales
Positionsbestimmungssystem.
- "HW" bedeutet Hardware.
- "ITU" bedeutet International
Telecommunications Union.
- "L1" bedeutet Schicht
1 (Bitübertragungsschicht).
- "L2" bedeutet Schicht
2 (Sicherungsschicht).
- "L3" bedeutet Schicht
3 (Vermittlungsschicht).
- "LC" bedeutet Langcode.
- "LCI" bedeutet Langcodeanzeiger.
- "LFSR" bedeutet Schieberegister
mit linearer Rückkopplung.
- "MS" bedeutet Mobilstation.
- "PICH" bedeutet Seitenwechselanzeigekanal.
- "PN" bedeutet Pseudozufalls-.
- "PSC" bedeutet primärer Suchcode.
- "RF" bedeutet Radiofrequenz.
- "RTT" bedeutet Funkübertragungstechnologie.
- "RX" bedeutet Empfang/Empfänger.
- "SC" bedeutet Kurzcode.
- "SIR" bedeutet Signal/Störungs-Verhältnis.
- "SSC" bedeutet sekundärer Suchcode.
- "SW" bedeutet Software.
- "TI" bedeutet Texas Instruments
Incorporated.
- "TIA" bedeutet Telecommunications
Industry Association.
- "TRDC" bedeutet Tsukuba
Research and Development Center.
- "TX" bedeutet Senden/Sender.
- "UMTS" bedeutet Universal
Mobile Telephone System.
- "WBU" bedeutet drahtlose
Geschäftseinheit
(TI).
- "WCS" bedeutet drahtlose
Kommunikationssysteme (TI).
- "WCDMA" bedeutet Breitband-CDMA.
- "Algorithmische
Software" bedeutet
ein algorithmisches Programm, das verwendet wird, um die Verarbeitung von
Daten durch einen Computer oder durch eine Datenverarbeitungsvorrichtung
anzuweisen.
- "Datenverarbeitungsvorrichtung" bezieht sich auf
eine CPU, auf einen DSP, auf einen Mikroprozessor, auf einen Mikrocontroller
oder auf eine andere ähnliche
Vorrichtung sowie auf ein Schnittstellensystem, wobei das Schnittstellensystem
Zugang zu der Datenverarbeitungsvorrichtung liefert, so dass Daten
eingegeben und durch die Datenverarbeitungsvorrichtung verarbeitet
werden.
- "Diskrete Daten" bedeutet digitalisierte
Daten, die in Form singulär
isolierter, diskontinuierlicher Daten oder Ziffern gespeichert werden
können.
-
Kurzbeschreibung
der Zeichnung
-
Weitere
Aspekte und Merkmale der vorliegenden Erfindung und viele der begleitenden
Vorteile der vorliegenden Erfindung werden leicht klar, während diese
mit Bezug auf die folgende ausführliche
Beschreibung besser verstanden wird, wenn sie in Verbindung mit
der beigefügten
Zeichnung betrachtet wird, in der gleiche Bezugszeichen in ihren
gesamten Figuren gleiche Teile bezeichnen und in der:
-
1 einen
vereinfachten Blockschaltplan auf höchster Ebene veranschaulicht,
der einen CCP gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt;
-
2 ein
IMT2000-DS-Beispiel eines dedizierten physikalischen Abwärtsstreckenkanals
(DPCH) mit Pilotbits am Ende des Schlitzes und einem oder mehreren
TPC-Bits in der Mitte des Schlitzes zeigt;
-
3 ein
vereinfachter Blockschaltplan ist, der eine CCP-Datenpfadstruktur
veranschaulicht;
-
4 ein
CCP-Taskzyklus-Iterations-Verknüpfungsdiagramm
veranschaulicht;
-
5 externe
Schnittstellen mit einem CCP veranschaulicht;
-
6 einen
Taskpuffer veranschaulicht, der zur Verwendung mit dem in 1 gezeigten
CCP geeignet ist;
-
7 Taskpuffereinträge veranschaulicht,
die einem Taskpuffer zugeordnet sind;
-
8 mehrere
Taskanforderungsbits veranschaulicht, die einem CCP zugeordnet sind;
-
9 ein
Taskanforderungs-ID-Register-Format veranschaulicht;
-
10 ein
Fingerunterbrechungstabellenformat veranschaulicht;
-
11 ein
Fingerunterbrechungssteuerungsformat veranschaulicht;
-
12 ein
Task_Update_Cycle-Register veranschaulicht;
-
13 eine
Walsh-Tabelle veranschaulicht;
-
14 einen
Walsh-Tabellen-Eintrag veranschaulicht;
-
15 eine
FSB-Pufferkonfigurationstabelle veranschaulicht;
-
16 einen
FSB-Pufferkonfigurationstabellen-Eintrag veranschaulicht;
-
17 ein
Pilot-TPC-Positionstabellen-Eintragformat veranschaulicht;
-
18 ein
Pilotbittabellen-Eintragformat veranschaulicht;
-
19 ein
Format des Registers zur Freigabe externer Unterbrechungen veranschaulicht;
-
20 ein
PSC-Register-Format veranschaulicht;
-
21 ein
SSC-Register-Format veranschaulicht;
-
22 DPE-
und LCI-Energieakkumulationsparameter veranschaulicht;
-
23 ein
Suchcode-Symbolplatz-Register veranschaulicht;
-
24 einen
Start/Fortsetzen-Befehl veranschaulicht;
-
25 einen
Software-Rücksetzbefehl
veranschaulicht;
-
26 ein
CCP Status-Register-Format veranschaulicht;
-
27 Task-Lauf/Stopp-Statusbits
veranschaulicht;
-
28 Task-Pingpong-Statusbits
veranschaulicht;
-
29 ein
Taskaktualisierungszeitregister veranschaulicht;
-
30 ein
Zykluszählregister
veranschaulicht;
-
31 ein
Register des momentanen GCC-Zählwerts
veranschaulicht;
-
32 ein
Int_Error_Event_Status-Register veranschaulicht;
-
33 ein
Int_System_Event_Status-Register veranschaulicht;
-
34 einen
FIFO-Leer-Status veranschaulicht;
-
35 einen
FIFO-0-Status veranschaulicht;
-
36 einen
FIFO-1-Status veranschaulicht;
-
37 einen FIFO-2-Status veranschaulicht;
-
38 einen
FIFO-3-Status veranschaulicht;
-
39 ein
FIFO-Inhaltsformat veranschaulicht;
-
40 ein
Fingersymbolpuffer-Format (FSB-Format) veranschaulicht;
-
41 ein
FSB-Format, nur SF = 4, veranschaulicht;
-
42 ein
Finger-Max-Puffer-Format veranschaulicht;
-
43 ein
EOL-Puffer-Speicherabbild veranschaulicht;
-
44 ein
DPE-Puffer-Speicherabbild veranschaulicht;
-
45 ein
LCI-Puffer-Speicherabbild veranschaulicht;
-
46 ein
PSC-Suchpuffer-Speicherabbild veranschaulicht;
-
47 ein
sekundäres
Suchcodepuffer-Format veranschaulicht;
-
48 einen
Taskaktualisierungs-Zeitablaufplan veranschaulicht;
-
49 ein
Task-Start/Stopp-Zustandsübergangsdiagramm
veranschaulicht;
-
50 Fingermodifikationen
in der komprimierten Betriebsart veranschaulicht;
-
51 ein
Fingertask-Format veranschaulicht;
-
52 ein
Walsh-Untertask-Format für
Finger-Nicht-EOL-Walsh-Einträge
veranschaulicht;
-
53 ein
Walsh-Untertask-Format für
EOL, DPE veranschaulicht;
-
54 einen
Verarbeitungsspezifizierer für
die kohärente
Mehrsymbolverarbeitung veranschaulicht;
-
55 einen
Verarbeitungsspezifizierer für
die kohärente
Einzelsymbolverarbeitung veranschaulicht;
-
56 ein
DPE-Suchtask-Format veranschaulicht;
-
57 ein
PSC-Suchtask-Format veranschaulicht;
-
58 ein
SSC-Suchtask-Format veranschaulicht;
-
59 ein
LCI-Suchtask-Format veranschaulicht;
-
60 ein
PICH-Suchtask-Format veranschaulicht;
-
61 einen
Ringpuffer in einem Fingersymbolpuffer veranschaulicht;
-
62 eine
Implementierung eines digitalen Basisbandsystems veranschaulicht,
das einen in 1 gezeigten CCP, einen digitalen
Signalprozessor (DSP) und eine Maximalverhältniskombinations-ASIC (MRC-ASIC)
gemäß einer
Ausführungsform
der vorliegenden Erfindung veranschaulicht; und
-
63 einen
globalen Chip-Zählermechanismus
(GCC-Mechanismus) zur Aufrechterhaltung der Zeitgebung in einem
CDMA-Rake-Empfänger
veranschaulicht, der zur Verwendung in Verbindung mit dem in 1 gezeigten
CCP geeignet ist.
-
Obgleich
die oben angegebenen Zeichnungsfiguren alternative Ausführungsformen
darlegen, werden, wie in der Diskussion angemerkt wird, außerdem weitere
Ausführungsformen
der vorliegenden Erfindung erwartet. In allen Fällen stellt diese Offenbarung
veranschaulichte Ausführungsformen
der vorliegenden Erfindung durch Darstellung und nicht durch Einschränkung dar.
Durch den Fachmann auf dem Gebiet können zahlreiche weitere Änderungen
und Ausfüh rungsformen
konstruiert werden, die im Umfang der Prinzipien dieser Erfindung
liegen. Obgleich die im Folgenden beschriebene ausführliche
Beschreibung der bevorzugten Ausführungsformen allgemein auf
eine Mobilstation anwendbar ist, die z. B. die Kommunikationsnormen IMT2000-DS
unterstützen
kann, nutzt sie Konzepte, die ebenso auf Basisstationen und andere
CDMA-Kommunikationsnormen anwendbar sind.
-
Ausführliche
Beschreibung der bevorzugten Ausführungsformen
-
1 veranschaulicht
einen vereinfachten Blockschaltplan auf höchster Ebene eines Korrelator-Coprozessors
(CCP) 100 gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung. Der CCP 100 unterstützt u. a.
eine 1 × Taktrate
von 3,84 MHz, d. h. eine Grundlinien-IMT2000-Chiprate, indem sie
einen 16 × Systemtakt
(SYS_CLK) und einen 8 ×-
(30,72 MHz-), einen 4 ×- (15,36 MHz-) oder
einen 2 ×-
(7,68 MHz-)Empfangsabtasttakt nutzt. Der Systemtakt und der Empfangsabtasttakt
sind synchron, d. h. phasenausgerichtet. Ein 4 ×-Empfangsabtasttakt verringert
die Eingangspufferanforderungen des CCP 100 und die A/D-Leistung
auf Kosten eines verringerten Signal/Rausch-Verhältnisses (SNR). Zum Beispiel
könnte
in einem CCP 100, der nur Suchtasks implementiert, ein
2 ×-Empfangsabtasttakt
verwendet werden. Der Empfangsabtasttakt beeinflusst nur den/die
Eingangspuffer 102 und nicht den Kern des CCP 100.
-
Der
CCP 100 kann mehrere Gleichphasen-(I-) und Quadratur-(Q-)Signalabtastwerte
von mehreren Quellen empfangen, um eine Antennen-Diversity zu versorgen.
Die Puffer 102, die die I/Q-Abtastwerte speichern, sind
außerhalb
des Kerns des CCP 100 zu sehen. In einer bevorzugten Ausführungsform
können
vier Quellen (18 Quellen für
Basisstations-RAKE-Empfängeroperationen)
unterstützt
werden, die Handapparat-RAKE-Empfängeroperationen zugeordnet
sind, wobei die I- und Q-Abtastwerte jeweils 4 bis 6 Bits oder möglicherweise
noch mehr sind; und wobei jede Quelle Signale mit dem Zwei-, Vier-
oder Achtfachen der Chiprate erzeugt.
-
Gemäß einer
Ausführungsform
ist der CCP 100 ein RHEA-Peripheriegerät. Wenn er in Verbindung mit einem
Host-Prozessor wie etwa einem DSP verwendet wird, der RHEA-Busschnittstellenfähigkeiten
besitzt, kann unter Verwendung eines einzigen Busses wie etwa des
RHEA-Busses 104, der Bandbreitenbeschränkungen des RHEA-(DSP-)Busses 104 unterliegt,
um Handapparat-RAKE-Empfängeroperationen
zu unterstützen,
die volle Funktionalität
des CCP 100 realisiert werden. Wenn er in Verbindung mit
einem Host-Prozessor wie etwa einem von Texas Instruments Incorporated
hergestellten DSP, Modell TMS320C6x, verwendet wird, kann unter
Verwendung eines EMIF-Busses zur Versorgung der Basisstationsverwendung
die volle Funktionalität
des CCP 100 realisiert werden. Wie zu sehen ist, wird auf
den Fingersymbolpuffer (FSB) 106 (der Fingerdaten speichert) über einen
externen FSB-Bus 108 zugegriffen, um die Flexibilität beim Auslesen
von Fingerdaten zu versorgen. Zum Beispiel kann ein externer Agent
diese Daten wiedergewinnen, um die Hardware-gestützte Symbolverarbeitung zu
versorgen. Die Verwendung des externen FSB-Busses 108 hängt davon
ab, wie der CCP 100 in dem DBB-System verbunden ist.
-
Der
CCP 100 kann Korrelationen und Akkumulationen (kohärent und
nicht kohärent)
ausführen.
Die Grundoperation ist die üblicherweise
als Entspreizung bezeichnete Korrelation (auf die eine Summation
und Ausgabe folgt), die zur Entfernung der Effekte der Langcodeverwürfelung
und der Walsh-Spreizung (es wird die WCDMA-Nomenklatur verwendet)
verwendet wird. Es ist wichtig, dass der CCP 100 diese
Korrelationen und Akkumulationen auf spezifische Weise steuert,
um alle RAKE- und Sucheroperationen zu erzielen.
-
Ferner
ist der CCP 100 eine Multitasking-Maschine. Zum Beispiel
wird eine CCP-Fingeroperation ein Fingertask genannt. Die von dem
CCP 100 unterstützten
Tasks enthalten: 1) Fingertask (Walsh-Entspreizung eines oder mehrerer
Kanäle
und Zu-Früh-/Rechtzeitig-/Zu-Spät-(EOL-)Energiemessung))
zur Unterstützung sowohl
von Basisstations- als auch von Handapparat-RAKE-Empfängeroperationen,
2) Verzögerungsprofilschätzungstask
(DPE-Task) oder "Pfadsuche" zur Unterstützung sowohl
von Basisstations- als auch von Handapparat-RAKE-Empfän geroperationen,
3) Primärsuchcode-Suchtask
(PSC-Suchtask) oder "Stufe-1-Suche" zur Unterstützung von
Handapparat-RAKE-Empfängeroperationen,
4) Sekundärsuchcodesuche (SSC-Suche)
oder "Stufe-2-Suche" zur Unterstützung von
Handapparat-RAKE-Empfängeroperationen,
5) Langcode-Identifizierer-Suchtask (LCI-Suchtask) oder "Stufe-3-Suche" zur Unterstützung von
Handapparat-RAKE-Empfängeroperationen,
6) Seitenwechselanzeigekanal-Entspreizungs-Task (PICH-Entspreizungs-Task)
zur Unterstützung
von Handapparat-RAKE-Empfängeroperationen
und 7) Zugriffssuche zur Unterstützung
von Basisstations-RAKE-Empfängeroperationen.
Die vorliegende Erfindung ist aber nicht in dieser Weise beschränkt und
selbstverständlich
kann die CCP 100 richtig konfiguriert mehr oder weniger
Tasks als die oben dargelegten unterstützen. Um die funktionalen Fähigkeiten
des CCP 100 beispielhaft weiter zu erläutern, werden die vorstehenden
Tasks 1-6 im Folgenden beschrieben.
-
Hinsichtlich
eines CCP-Fingertasks werden Langcodeentwürfelung (LC-Entwürfelung)
und Walsh-Entspreizung ausgeführt,
was zu einem komplexen Ausgangssymbolstrom (I und Q) führt. Solange
die Kanäle
den gleichen LC-Versatz, den gleichen Rahmenversatz, den gleichen
Schlitzversatz und den gleichen Spreizfaktor haben, kann jede Fingeroperation
mehrere Walsh-Codekanäle
versorgen. Um bei der Kombination der Symbole zu helfen, wird für jeden
Walsh-Kanal jedes
Fingers einmal pro Schlitz eine maximale Energie ausgegeben. Jede
Fingeroperation unterstützt
einen Satz von Zu-Früh-/Rechtzeitig-/Zu-Spät-(EOL-)Energiemessungen,
die einem besonderen Walsh-Code-Kanal zugeordnet sind. Diese Energiemessungen
werden einmal pro Rahmen ausgegeben.
-
2 zeigt
einen IMT2000-DS-Zeitschlitz 200 für einen dedizierten physikalischen
Abwärtsstreckenkanal
(DPCH) mit Pilotbits 202 am Ende des Zeitschlitzes 200 und
einem bzw. mehreren TPC-Bits 204 in der Mitte des Zeitschlitzes 200.
Da sich die Plätze
der Pilot- und Sendeleistungssteuerungs-(TPC-)Bits für verschiedene Spreizfaktoren
sowie zwischen verschiedenen drahtlosen Protokollnormen unterscheiden
können, kann
der CCP 100 die Pilot- und
TPC-Bitplätze
konfigurieren, um irgendein drahtloses Protokoll zu versorgen, das
diese Pilotbits und TPC-Bits verwendet.
-
Wie
oben festgestellt wurde, unterstützt
jeder CCP-Finger einen Satz von EOL-Energiemessungen, um Codeverfolgungsschleifenoperationen,
z. B. DLL, zu unterstützen.
Auf diese Weise wird durch den CCP 100 die Sende-Diversity
ohne Rückkopplung
(STTD) unterstützt.
Zum Beispiel können
Pilotsymbole in einen Energiewert umgesetzt werden, wobei die Energiewerte
aller Pilotsymbole in einem Rahmen akkumuliert werden. Außerdem können Pilotsymbole über einen
oder mehrere Schlitze akkumuliert werden, wobei der resultierende
komplexe Wert in einen Energiewert umgesetzt wird. Daraufhin werden
alle diese resultierenden Energiewerte in jedem Rahmen akkumuliert.
Um die STTD zu unterstützen,
wird die mehreren Antennen zugeordnete Energie kombiniert. Ferner
kann eine Nicht-Pilot-Energie gemessen werden, in der jedes Symbol
in einen Energiewert umgesetzt wird und die Energiewerte aller Symbole
in einem Rahmen akkumuliert werden.
-
Der
Verzögerungsprofilschätzungstask
(DPE-Task) wird von dem CCP 100 verwendet, um in einem Fenster
von Versätzen
potentielle Multipfade zu identifizieren. Für jeden Chip- oder 1/2-Chip-Versatz
in einem angegebenen Versatzfenster wird ein Energiewert zurückgegeben. Über eine
angegebene Anzahl von Funkschlitzen und Ausgaben werden periodisch
Messwerte genommen. Vorzugsweise kann der DPE-Task die erforderliche
Energie auf die gleiche Weise messen, wie EOL-Messungen für den oben
beschriebenen Fingertask implementiert sind.
-
Der
Primärsuchcode-Suchtask
(PSC-Suchtask) wird von dem CCP 100 zur Erfassung neuer
Basisstationen verwendet, die in den WCDMA-Normen auch als "Stufe-1"-Suche bezeichnet
wird. Die "Stufe-1"-Suche gibt die schlitzperiodischen
Ausgangsenergiewerte mit angepasstem Filter (für 5120 1/2-Chip-Versätze) zurück. Die
Messungen finden über
eine angegebene Anzahl von Funkschlitzen statt. Vorzugsweise nutzt
der CCP 100 die hierarchische Struktur in einem 256-Chip-PSC und führt in zwei
Schritten von je 16 Operationen eine angepasste Fil terung aus. Der
erste Schritt verbraucht Zyklen des CCP 100, während der
zweite Schritt in der (nicht gezeigten) Nachverarbeitungs-Hardware
läuft.
Vorzugsweise umfasst der 256-Chip-PSC eine programmierbare 16 × 16-PSC-Sequenz.
-
Die
zweite Suchcodesuche (SSC-Suche) oder "Stufe-2"-Suche wird von dem CCP 100 dazu
verwendet, eine Rahmensynchronisation einer neuen Basisstation festzusetzen
und ihre Langcodegruppe zu identifizieren. Der SSC-Suchtask nimmt
an, dass die SSC-Walsh-Codes 16 × 16-Strukturen haben und "entspreizt" den Datenstrom in
der 256-Chip-PSC/SSC-Suchcodeposition mit einem Spreizfaktor von
16. Vorzugsweise werden die PSC-Symbole gleichzeitig entspreizt.
Somit werden für
den SSC 16 komplexe Symbole pro Schlitz und für den PSC 16 Symbole pro Schlitz
ausgegeben. Die verbleibenden Walsh-Hadamard-Transformationsoperationen
sind vorzugsweise in einem DSP oder in dedizierter Hardware außerhalb
des CCP 100 implementiert.
-
Die
Langcode-Identifizierersuche (LCI-Suche) oder "Stufe-3"-Suche wird von dem CCP 100 dazu
verwendet, nach den oben beschriebenen Suchstufen 1 und 2 den genauen
Verwürfelungscode
zu bestimmen. Dieser CCP-Task misst unter Verwendung jedes der angegebenen
Verwürfelungscodes
die entspreizten Energien. Ferner kann der LCI-Suchtask die gemeinsame
Pilot-Energie am meisten bevorzugt in der gleichen Weise, wie Pilotmessungen
in Verbindung mit dem oben beschriebenen DPE-Task implementiert
sind, messen.
-
Der
Seitenwechselanzeigekanal-Task wird von dem CCP 100 dazu
verwendet, die PICH-Symbole über
ein Fenster von Versätzen
zu entspreizen. Dies ermöglicht
während
der Entspreizung eine gewisse Unsicherheit in der genauen Zeitgebung
des Kanals. Die entspreizten Symbole werden für jeden Versatz in dem angegebenen
Fenster gepuffert.
-
Die
Betriebsmittel des CCP 100 können auf verschiedene Weise
aufgeteilt sein, um die oben beschriebenen RAKE-Empfänger-Tasks
zu implementieren. Aus diesem Grund wird auf einige hier diskutierte
Parameter eher mit Namen als mit Zahlen Bezug genommen (z. B. SYS_CLK,
MAX_CYCLES). Zum Beispiel gibt es insgesamt MAX_CYCLES "Korrelationszyklen" oder Zyklen, die
durch eine Ausführungsform
des CCP 100 unterstützt
werden. Der CCP 100 besitzt eine Verarbeitungskapazität, die annähernd äquivalent
MAX_CYCLES diskreten Korrelatoren für RAKE-Finger ist. Der CCP 100 besitzt
4·MAX_CYCLES äquivalente
Korrelatoren zur Implementierung eines DPE-Suchtasks. Die Anzahl
der für
jeden Task des CCP 100 aufgewendeten Korrelationszyklen
wird dann wie folgt beschrieben. Hinsichtlich eines Fingertask verwendet
jeder Walsh-Kanal einen Korrelationszyklus, der unabhängig von
seinem Spreizfaktor ist, während
jeder Satz von EOL-Messungen drei Korrelationszyklen verwendet.
Ferner wird für
jeden Walsh-Kanal die maximale Symbolenergie in einem Schlitz bestimmt.
Hinsichtlich eines DPE-Tasks sind die Fenstergrößen Vielfache von 16 Chips;
außerdem
verwenden jeweils 2 Chips von Fenstergröße nur einen Zyklus, obgleich
zwei äquivalente
Korrelationen ausgeführt
werden (für
vier äquivalente
Korrelationen, die für
die rechtzeitigen Abtastwerte und, wenn die 1/2-Chip-Option freigegeben
ist, für
die rechtzeitigen + 1/2-Chip Abtastwerte ausgeführt werden). Der PSC- und der
SSC-Suchtask verwenden 16 Zyklen bzw. 2 Zyklen, während der
LCI-Suchtask einen Zyklus pro Langcode verwendet. Hinsichtlich des
PICH-Tasks sind
die Fenstergrößen Vielfache
von 16 Chips; wobei jeder Chip von Fenstergröße unabhängig davon, ob die 1/2-Chip-Option
freigegeben ist, einen Zyklus verwendet.
-
Der
CCP 100 unterstützt
MAX_FINGERS gleichzeitige Fingertasks; wobei NUM_WALSH8 dieser Fingertasks
bis zu 8 Walsh-Kanäle
unterstützen
und NUM_WALSH4 bis zu 4 Walsh-Kanäle unterstützen. Jeder Fingertask kann
1 Satz von EOL-Messungen unterstützen,
wobei aber ein Fingertask, der EOL-Messungen vornimmt, die Anzahl
der an diesem Finger unterstützten
Walsh-Kanäle
um einen verringert. Somit können
die Fingertasks bei Bedarf bis zu maximal (7 × NUM_LARGE_FINGERS + 3 × (MAX_FINGERS – NUM_LARGE_FINGERS)
Zyklen angeben (wobei zu jeder Zeit nur MAX_CYCLES Zyklen laufen
können).
-
Der
CCP 100 unterstützt
einen PSC-Suchtask, der dann, wenn er vorhanden ist, der erste Task
sein muss, der läuft,
damit die Nachverarbeitung der Ergebnisse Zeit hat, abgeschlossen
zu werden. Ferner unterstützt
der CCP 100 bis zu MAX_DPE DPR-Suchtasks, die nur dann
unterstützt
werden können,
wenn die Summe der Größe der Suchfenster
kleiner als MAX_CYCLES ist. Außerdem
unterstützt
der CCP 100 in irgendeiner Kombination, die den obigen
Beschränkungen
entspricht, bis zu MAX_LCI LCI-Suchtasks sowie insgesamt MAX_TASKS
Tasks. Alle Tasks zusammen können
MAX_CYCLES Zyklen nicht überschreiten.
Ferner soll der CCP 100 einen PICH-Task unterstützen, obgleich
gemäß den Beschränkungen
der Finger-Ids (bis zu MAX_FINGERS), der FSB-Größe und den MAX_CYCLES-Beschränkungen
mehr laufen könnten.
Am meisten bevorzugt verbraucht ein gesperrter Task keine Zyklen.
Dagegen verbraucht ein freigegebener Task, der nicht implementiert
ist oder auf den Lauf wartet einen Zyklus pro Task. Die Betriebsmittelzuweisung
des CCP 100 kann unter Verwendung der obigen Beschränkungen
in Anwendung auf verschiedene im Folgenden beschriebene Szenarien
beispielhaft erläutert
werden.
- Szenarium 1: 1 DPE-Task von 256 Chip-Versätzen (insgesamt
verbrauchte Zyklen = 128);
Dieses Szenarium könnte während einer
Interfrequenz-Basisstationsmessung oder beim "Aufwachen" in der Standby-Betriebsart auftreten.
Da eine schnelle Messung oder erneute Erfassung wichtig ist, ist
die Verwendung der vollen CCP-Fähigkeiten
ist gerechtfertigt.
- Szenarium 2: 2 DPE-Tasks von je 256 Chip-Versätzen (insgesamt
verwendete Zyklen = 256);
Dieses Szenarium könnte während einer
Interfrequenz-Basisstationsmessung auftreten.
- Szenarium 3: 1 DPE-Task von 256-Chip-Versatz, 1 PSC-Suchtask,
6 Fingertasks von 16 Walsh-Codes (als 16 Finger von je 8 Codes implementiert)
und 6 Fingertasks von EOL-Messungen (insgesamt verwendete Zyklen =
256/2 + 16 + 6·16
+ 6·3
= 258);
Dies könnte
ein stationäres
Szenarium mit einer Funkverbindung sein, die aus 16 Walsh-Kanälen besteht.
Wegen der großen
Anzahl von Walsh-Kanälen
wird die volle Verwendung der Betriebsmittel des CCP 100 benötigt.
- Szenarium 4: 1 DPE-Task von 256-Chip-Versatz, 1 PSC-Suchtask,
6 Fingertasks von 4 Walsh-Codes, 6 Fingertasks von 4 Walsh-Codes,
6 Fingertasks von 2 Walsh-Codes, 6 Fingertasks von 1 Walsh-Code
und 6 Fingertasks von EOL-Messungen (insgesamt verwendete Zyklen
= 256/2 + 16 + 6·4
+ 6·4
+ 6·2
+ 6·1
+ 6·3
= 228);
Dies könnte
ein stationäres
Szenarium mit vier Funkverbindungen, zwei mit 4 Codes, einer mit
2 Codes und einer mit 1 Code, sein.
- Szenarium 5: 1 DPE-Task von 128-Chip-Versatz und 6 Fingertasks
von 1 Walsh-Code, jeweils mit EOL-Messungen (insgesamt verwendete
Zyklen = 128/2 + 6·1
+ 6·3
= 88);
Dies könnte
ein stationäres
Szenarium mit jeweils einer Funkverbindung mit einem Code sein.
Da die Verzögerungsspreizung
klein ist oder da eine große
Suche in Teile unterteilt ist, ist das DPE-Suchfenster klein.
- Szenarium 6: 1 DPE-Task von 128-Chip-Versatz und 2 Fingertasks
von je 4 Walsh-Codes plus EOL-Messungen für jeden (insgesamt verwendete
Zyklen = 128/2 + 2·4
+ 2·3
= 78);
Dies könnte
ein 2-MBps-Szenario (gebäudeintern)
sein.
-
Wie
hier zuvor angegeben wurde, führt
der CCP 100 eine "Chip"-Ratenverarbeitung
und Energieakkumulation aus. Am meisten bevorzugt führt der
CCP 100 weder "Symbol"-Raten-Empfängeroperationen
wie etwa Kanalschätzung,
Maximalverhältniskombination
und Entschachtelung noch Rückkopplungsschleifen
wie etwa AGC, AFC und DLL aus. Vorzugsweise liefert der CCP 100 die
Ener giewerte an die Rückkopplungsschleife
(für die
DLL), bearbeitet die Schleife aber nicht selbst. Solche Symboloperationen
können
entweder in einem DSP oder in dedizierter Hardware außerhalb
des CCP 100 ausgeführt
werden. Angesichts des Vorstehenden ist zu sehen, dass die Fähigkeiten
und die Architektur des CCP 100 neben anderen Faktoren,
z. B. Datenpfadbreite, Taktraten, ASIC-Technologie und dergleichen,
von der Anzahl benötigter
Finger und von der Multipfad-Verzögerungsspreizung abhängen.
-
Es
ist wichtig, dass der CCP 100 unter Verwendung von Daten,
die einem gepufferten Takt von Empfangs-(Unter-)Chipraten-Abtastwerten
zugeordnet sind, wiederholt Korrelationen ausführt. Der Datenpfad 300 kann
unter Verwendung mehrerer Chips von Daten in einem einzigen Zyklus
eine Partialkorrelation ausführen. Diese
Fähigkeiten
und Funktionen werden nun im Folgenden in Verbindung mit jedem der
in 1 veranschaulichten Elemente des CCP 100 ausführlich beschrieben.
Weiter anhand von 1 speichern die Eingangspuffer 102 einen
Strom von Empfangs-I/Q-Unterchip-Abtastwerten zur Verarbeitung durch
den Datenpfad 300 des CCP 100. Diese Unterchip-Abtastwerte
können
auf eine dem Fachmann auf dem Gebiet drahtloser Kommunikation gut
bekannte Weise direkt von einem analogen Eingangsteil (AFE), von
einer digitalen Eingangsteilfilterung oder von einer digitalen Interpolationsfilterung
kommen. Der CCP 100 wählt
für jeden
Korrelationszyklus einen Satz von Eingangsabtastwerten aus, die
einem besonderen Unterchip-Abtastwert entsprechen. Der CCP 100 kann
Eingangsdaten aus mehreren Quellen 106, 108 empfangen,
um z. B. mehrere Antennen zu unterstützen. Jede Eingangsquelle 106, 108 kann
gemäß der momentanen
Ausführungsform eine
2 ×-,
eine 4 ×-
oder eine 8 ×-Chiprate
sein. In der Ausführungsform
werden bis zu vier Eingangsquellen unterstützt. Ferner können die
Eingangspuffer 102 als kundenangepasste Registerdateien
oder als Speicher implementiert sein.
-
Der
CCP-Datenpfad 300 enthält "Multiplizierer", um die Abtastwerte
von dem Eingangspuffer 102 mit Abtastwerten von PN- und
Walsh-Codes von den PN- und
Walsh-Generatoren 110, 112 zu multiplizieren,
Addiererbäume,
um wie oben diskutiert Partialkorrelationen zu erzeugen, einen kohärenten Akkumulator,
um die momentane Partialkorrelation mit einer oder mit mehreren
früheren
Partialkorrelationen zu summieren, und einen Nachverarbeitungsblock,
um Effektivwertberechnungen (sqrt(I2 + Q2)-Berechnungen) (gelegentlich als "Energie"-Werte bezeichnet) und nicht kohärente Akkumulationen
auszuführen.
Am meisten bevorzugt verwendet der CCP-Datenpfad 300 ferner
umfangreiche Pipeline-Stufen, um die Rechenkapazität maximal
zu machen. Zum Speichern von Partialkorrelationsergebnissen und
Effektivwertakkumulations-Zwischenergebnissen werden Temporärspeicher
("Notizblock"-Speicher) verwendet.
Taskergebnisse werden je nach Typ des Tasks in einem der Ausgangspuffer,
z. B. im Fingersymbolpuffer 106, im LCI-Puffer 115 und/oder
im DPE-Puffer 114, im EOL-Puffer 116, im SSC-Suchpuffer 140,
im Finger-Max-Puffer 4200 und/oder im PSC-Suchpuffer 118 gespeichert.
-
3 veranschaulicht
einen vereinfachten Blockschaltplan auf höchster Ebene, der den CCP-Datenpfad 300 gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. Hinsichtlich der Genauigkeit des
Datenpfads 300 akkumuliert der CCP 100 Bits und
verwirft er Bits in verschiedenen Stufen des Datenpfads 300. Die
Eingangsdaten 302 (von den Eingangspuffern 102)
werden über
einen (nicht gezeigten) 6-Bit-A/D-Umsetzer erhalten. Nach Durchgang
durch die Addiererbäume 122 gibt
es 17 Datenbits. An diesem Punkt werden einige Bits verworfen. Bevor
Symbole in den Fingersymbolpuffer 106 geschrieben werden,
werden für
SF = 4 9 MSB mit Sättigung
verworfen; oder wird für
andere SF 1 MSB mit Sättigung
verworfen. Hinsichtlich der in den Rest des Datenpfads 300 (z.
B. EOL-Puffer 116, DPE-Puffer 114, LCI-Puffer 115)
durchgelassenen Symbole werden 4 MSB und 2 LSB mit Sättigung
verworfen. Nach der kohärenten
Akkumulation 304 gibt es 22 Bits. Von diesen 22 Bits werden,
beginnend vom (13 + max (5, log2(NS)))-ten
LSB, wobei NS die Anzahl der Symbole der
kohärenten
Akkumulation ist, 18 Bits behalten. Nach der nicht kohärenten Akkumulation 306 gibt es
32 Bits. Von diesen 32 Bits werden, beginnend vom (13 + max (5,
log2(NNS)))-ten LSB, wobei NNS die
Anzahl der nicht kohärenten
Akkumulationen ist, 24 Bits behalten.
-
Der
PSC-Suchpuffer 118 dient zwei Zwecken. Zunächst speichert
er laufende Energiewerte, während der
PSC-Suchtask aktiv ist. Diesbezüglich
wird er von dem CCP 100 als Akkumulatorspeicher verwendet. Zweitens
speichert er, wenn der PSC-Suchtask abgeschlossen ist, die letzten
Energiewerte, die daraufhin durch den Host-Prozessor, d. h. durch
den DSP, gelesen werden können.
Es wird ein Energiewert pro 1/2-Chipversatz zurückgegeben, was für einen
wie etwa in 2 veranschaulichten Zeitschlitz
mit 2560 Chips zu insgesamt 5120 Energiewerten führt. Gemäß einer Ausführungsform
erfordert der PSC-Suchtask einen (nicht gezeigten) Postprozessor
zum Erfassen der 5120 Energiewerte; dabei ist der PSC-Suchpuffer 118 den Zwischenwerten
der ersten Stufe gewidmet, die durch den oben dargelegten Postprozessor
gelesen würden. Während der
PSC-Suchtask aktiv ist, kann nur durch den CCP-Datenpfad 300 auf
den PSC-Suchpuffer 118 zugegriffen werden. Wenn der PSC-Suchtask
inaktiv ist, kann nur über
den DSP-Bus 104 auf
den PSC-Suchpuffer 118 zugegriffen werden. Eine Entscheidungseinrichtung 308 behandelt
Zugriffsrechte. Ferner kann beim Abschluss eines PSC-Suchtasks eine Unterbrechung
erzeugt werden.
-
Der
DPE-Puffer 114 und der LCI-Puffer 115 speichern
DPE- bzw. LCI-Suchergebnisse. Sie sind über den DSP-Bus 104 jederzeit
lesbar. Der DPR-Puffer 114 und der LCI-Puffer 115 sind
einzeln gepuffert, wobei neue Ergebnisse alte überschreiben. Wenn neue Ergebnisse
bereit sind, können
sie auf dem DSP-Bus 104 direkt durch den Host-Prozessor
oder durch die in 1 gezeigte DSP-DMA-Steuereinheit 150 gelesen
werden. Wenn neue Ergebnisse bereit sind, können taskgestützte Unterbrechungen
erzeugt werden. Zum Beispiel kann eine Unterbrechung erzeugt werden,
wenn ein DPE-Task abgeschlossen wird.
-
Der
EOL-Puffer 116 speichert Finger-EOL-Messergebnisse. Er
ist über
den DSP-Bus 104 jederzeit direkt lesbar. Der EOL-Puffer 116 ist
ebenfalls einzeln gepuffert, wobei wie bei dem DPE-Puffer 114 neue
Ergebnisse alte überschreiben.
Wenn neue Ergebnisse bereit sind, können sie auf dem DSP-Bus 104 direkt
durch den Host-Prozessor oder durch die DSP-DMA-Steuereinheit 150 gelesen
werden. Der Fingertask kann verschiedene schlitzgestützte Unterbrechungsereignisse
aus geben, die zum Signalisieren der Verfügbarkeit neuer EOL-Daten verwendet
werden können.
-
Der
Fingersymbolpuffer 106 speichert komplexe I- und Q-"Symbole", die sich aus Fingertasks
ergeben. Hier werden alle Symbole wie etwa Pilot, TPC, Daten und
dergleichen gespeichert, nachdem sie von dem CCP-Datenpfad 300 empfangen
und verarbeitet worden sind. Der Fingersymbolpuffer 106 ist
als ein Mehrschlitz-Ringpuffer für
jeden Walsh-Kanal implementiert. Der Fingersymbolpuffer 106 dient
als Zwischenspeicher für
die nachgeschaltete Symbolratenverarbeitung. Die Größe des Fingersymbolpuffers 106 ist
vorzugsweise ein Kompromiss zwischen dem Bereich und der Rate, mit
der Daten dorthin bewegt werden müssen, wo die nachgeschaltete
Verarbeitung stattfindet. Außerdem
kann auf den Fingersymbolpuffer 106 an dem externen FSB-Bus 108 zugegriffen
werden, der verwendet werden kann, wenn eine nachgeschaltete Verarbeitung und/oder
Speicherung außerhalb
des Host-Prozessors (d. h. des DSP-Systems) stattfindet.
-
Hinsichtlich
des PN-Generators 110 und des Walsh-Code-Generators 112 gibt
ein Task des CCP 100 einen PN-Code ("Gold-Code") und einen Walsh-Code, die zu erzeugen
sind, sowie einen Code-Versatz an. Daraufhin erzeugen die PN/Walsh-Code-Generatoren 110, 112 beginnend
von dem angegebenen Code-Versatz
einen Block angegebener PN/Walsh-Codes. Die Gold-Code-Erzeugung
ist zentral und kann für
irgendeinen Korrelationszyklus erzeugt werden. Da die Code-Nummer
und der Versatz von einem globalen Chip-Zähler (GCC) verfügbar sind,
braucht weder ein LFSR-Zustand noch eine "Maske" angegeben zu werden. Um den Leistungsverlust
minimal zu machen, werden vorzugsweise sowohl das "Block"-Erzeugungsverfahren
als auch das Erzeugungsverfahren für "seriellen" Gold-Code verwendet. Die 16 × 16-WCDMA-PSC-
und -SSC-Strukturen haben programmierbare Parameter, die zur Verwendung
in Verbindung mit PSC- und SSC-Suchoperationen anzugeben sind.
-
Weiter
anhand von 1 ist die Steuereinheit 150 dafür verantwortlich,
jeden der Tasks des CCP 100 tatsächlich zu implementieren und
geeignete Steuersignale für
den Datenpfad 300 zu erzeugen. Es ist wichtig, dass verschiedene
Korrelatio nen einfach durch Ändern
der Steuerfolge implementiert werden können. Vorzugsweise werden die
nachgeschaltete Steuer-Pipeline-Stufe und Pipeline-Stufe des Datenpfads 300 abgeschaltet,
um Leistung zu sparen, wenn keine Tasks laufen.
-
Die
lokale Zeitgebungsreferenz für
den CCP 100 wird über
einen externen globalen Chipzähler
(GCC) 162 aufrechterhalten, der die ankommenden Chip-Abtastwerte zählt, während sie
in die Eingangspuffer 102 geschrieben werden. Dieser im
Folgenden ausführlicher
diskutierte GCC 162 zählt
modulo der Länge
des WCDMA-Langcodes (38400). Die gesamte Zeitgebung in dem CCP 100 einschließlich der
in RAKE-Empfängeroperationen
verwendeten Versätze
ist auf den GCC 162 bezogen.
-
Der
CCP 100 verwendet eine Anzahl von im Folgenden ausführlicher
diskutierten Konfigurationstabellen 160, um anzugeben,
wie er jeden seiner Tasks ausführt.
Einige Tabellen werden global verwendet, während andere bestimmten Tasks
zugeordnet sind. Zum Beispiel enthält eine Konfigurationstabelle 160 für jeden Spreizfaktor
die Position und die Größe der Pilotsymbole.
Eine weitere Konfigurationstabelle 160 enthält die einem
besonderen Fingertask zugeordneten Walsh-Codes. Die Konfigurationen
werden direkt durch den Host-Prozessor bereitgestellt.
-
Hinsichtlich
des Unterbrechungsgenerators 165 gibt es in dem CCP 100 drei
Typen von Unterbrechungen. Diese im Folgenden ausführlicher
diskutierten Unterbrechungen sind taskgestützte Unterbrechungen, Systemunterbrechungen
und Fehlerunterbrechungen. Jeder Task des CCP 100 kann
wenigstens eine Unterbrechung erzeugen. Zum Beispiel kann ein DPE-Task
eine Unterbrechung erzeugen, wenn er abgeschlossen ist. Jeder Fingertask
kann eine Anzahl von Unterbrechungen erzeugen, um z. B. das Ende
eines Funkschlitzes oder den Empfang des TPC-Symbols anzugeben.
Taskgestützte
Unterbrechungen werden hauptsächlich
von dem Host-Prozessor zur Datenwiedergewinnung verwendet, können aber
auch für
andere SW/HW-Synchronisationszwecke dienen. Taskgestützte Unterbrechungen
ordnen Statusinformationen in einem von vier Unterbrechungs-FIFO- Registern an. Jedes
Unterbrechungs-FIFO-Register ist an eine der vier von dem CCP 100 kommenden
Unterbrechungsleitungen 170 gebunden. Die Systemunterbrechungen
zeigen globale Ereignisse des CCP 100 an. Zum Beispiel
signalisiert eine Taskaktualisierungsunterbrechung dem Host-Prozessor,
dass Taskaktualisierungen abgeschlossen sind. Jedes Mal, wenn eine
Fehlerbedingung erfasst wird, wird eine Fehlerunterbrechung erzeugt.
-
Der
Taskpuffer 180 enthält
eine Liste von Tasks, die der CCP 100 ausführt. Der
Taskpuffer 180 wird direkt durch den CCP 100 gelesen,
um die momentanen Tasks des CCP zu bestimmen. Der Taskpuffer 180 ist ein
Pingpong-Puffer mit einer eigenen Steuerung für den Pingpong-Status jedes
Eintrags in dem Taskpuffer 180. An einer Taskaktualisierungsgrenze
findet ein Wechsel von Ping zu Pong oder umgekehrt statt. Eine Taskaktualisierungsunterbrechung
teilt dem Host-Prozessor mit, wann die Übertragung abgeschlossen ist
und dass die aktualisierten Statusbits für jeden Task verfügbar sind.
Dieser Mechanismus ermöglicht
zwischen dem Host-Prozessor und dem CCP 100 eine Synchronisation,
die verhindert, dass durch den CCP 100 unvollständige Tasks
gelesen werden. Der CCP 100 unterstützt in dem Taskpuffer 180 bis
zu MAX_TASKS Tasks.
-
4 ist
ein Diagramm, das mehrere Iterationszyklusgrenzen 400 des
CCP 100 veranschaulicht, die für einen auf null gesetzten
Modulo-16-GCC implementiert sind. 4 wird im
Folgenden anhand der 1–3 diskutiert,
um wichtige Operationen des CCP 100 einschließlich, aber
nicht beschränkt
auf, des Konzepts von Zyklen und ihres Managements, der Programmierung
des CCP 100, des Managements von Tasks, des Ausgangsspeichers
und der Unterbrechungen ausführlicher
darzulegen. Der CCP 100 ist so konfiguriert, dass er durch
den Host angegebene Tasks so ausführt, dass alle laufenden Tasks
in einer CCP-Iteration, die, wie in 4 zu sehen
ist, 16 Chips dauert, 16 Chips an Daten verarbeiten. Dieselben Tasks
setzen in der nächsten
CCP-Iteration die Verarbeitung (der nächsten 16 Chips an Daten) fort.
Ein Task wird typisch für
viele CCP-Iterationen ausgeführt.
In jeder CCP-Iteration sind MAX_CYCLES CCP-Zyklen verfügbar, um Tasks
auszuführen.
Diese CCP-Zyklen können
für Fingertasks,
Suchtasks und dergleichen verwendet werden. Verbleibende zusätzliche
Zyklen fordern den CCP 100 vorzugsweise auf, automatisch
in einen Leistungssparzustand einzutreten. Es ist festgestellt worden,
dass die meisten einer CCP-Iteration zugeordneten Tasks mehr als
einen CCP-Zyklus verbrauchen. Im Folgenden wird jeder Task einschließlich der
Anzahl der von jedem Task benötigten
Zyklen ausführlicher
beschrieben. An besonderen CCP-Iterationsgrenzen 400, die
Taskaktualisierungsgrenzen genannt werden, werden neue Tasks eingewechselt
und/oder momentane Tasks geändert. Sofort
nach der Taskaktualisierungsgrenze 400 wechselt der CCP 100 die
Tasks wie angefordert in den Taskpuffer 180. Daraufhin
beginnt der CCP 100 die Tasks von der ersten Adresse des
Taskpuffers 180 an auszuführen. Jeder Taskaktualisierungsgrenze 400 ist
ein Taskaktualisierungs-Unterbrechungsereignis zugeordnet, dessen
weitere Einzelheiten im Folgenden dargelegt werden. Einige Tasks,
z. B. LCI-Suche, benötigen zum
Abschließen
beträchtlich
mehr als einen Iterationsdurchgang und stoppen, wenn sie abgeschlossen
sind. Weitere Tasks, z. B. Finger, laufen ununterbrochen, bis sie
durch den Host-Prozessor gesperrt werden.
-
In
einer Ausführungsform
des CCP 100 liegt es in der Verantwortung der auf dem Host-Prozessor
laufenden Software, die verfügbaren
MAX_CYCLES CCP-Zyklen
zu managen. Wenn die MAX_CYCLES Zyklen verbraucht sind und der CCP 100 nicht
alle freigegebenen Tasks ausgeführt
hat, wird ein Fehlerunterbrechungsergebnis ausgegeben. Um als Hilfe
beim Zyklusmanagement und für
Austestzwecke anzuzeigen, wie viele Zyklen in der letzten CCP-Iteration
verbraucht wurden, wird durch den CCP 100 jede CCP-Iteration
ein Cycle_Count-Register aktualisiert. Dieses Register ändert sich
selten, während
Tasks hinzugefügt
oder abgeschlossen werden, und wird vorzugsweise direkt nach einer
Taskaktualisierungsgrenze 400 gelesen, um die Genauigkeit
sicherzustellen.
-
Der
Taskpuffer 180 speichert bis zu MAX_TASKS Tasks, auf die
in zahlenmäßiger Reihenfolge
durch Adressen eingewirkt wird. Mit Ausnahme dessen, dass der PSC-Suchtask
(falls vorhanden), wie oben festgestellt wurde, am meisten bevorzugt
der erste auszuführende
Task ist, beeinflusst die Reihenfolge der An ordnung der Tasks in
dem Taskpuffer 180 in keiner Weise die Ergebnisse eines
Tasks. Wie oben angegeben wurde, verarbeitet der CCP 100 nur
jene Tasks, die "freigegeben" sind. Nach Ausführung aller
freigegebenen Tasks wird der CCP-Datenpfad 300 vorzugsweise
für die
verbleibenden Zyklen in der Iteration abgeschaltet, so dass Lese-
und Schreibvorgänge
in den Speicher des Datenpfads 300 aufhören. Obgleich eine gewisse Steuerlogik
funktional bleibt, führt
das Vorstehende wie oben festgestellt zu erheblichen Leistungseinsparungen
in dem CCP.
-
Neue
Tasks können
am meisten bevorzugt jederzeit dadurch hinzugefügt werden, dass sie in den Taskpuffer 180 geschrieben
werden, woraufhin ein sofortiges Laden für diesen Task angefordert wird.
Die den Konfigurationstabellen 160 zugeordneten Konfigurationsspeicher
und -register werden am meisten bevorzugt initialisiert, bevor ein
Task programmiert wird, der auf sie Bezug nimmt. Für eine Ausführungsform
kann ein Task aktiv in der ersten CCP-Iteration laufen, die auf
das Laden eines Tasks in die Hardware-Seite des Taskpuffers 180 folgt.
Somit müssen
die Konfigurationsparameter für
einen Task vor der oder an der Taskaktualisierungsgrenze 400 programmiert
werden, die dem Laden des Tasks zugeordnet ist.
-
Angesichts
des Vorstehenden reicht es selbstverständlich nicht aus, eine Taskspezifikation
in dem Taskpuffer 180 zu haben, damit der Task ausgeführt wird.
Der Task muss außerdem,
vorzugsweise durch Anfordern entweder eines synchronen Starts oder
eines sofortigen Starts, freigegeben sein. Ein sofortiger Start tritt
an der Taskaktualisierungsgrenze 400 in Kraft, an der die
Anforderung empfangen wird, während
ein synchroner Start bei der für
diesen Task angegebenen Schlitznummer (d. h. mit Bezug auf die eigene
Schlitzzeitgebung des Tasks) in Kraft tritt. Wie oben angegeben
wurde, kann jeder Task an irgendeiner Taskaktualisierungsgrenze
freigegeben werden. Am meisten bevorzugt gibt es außer in Bezug
auf die Gesamtzyklen, die durch die freigegebenen verbraucht werden,
keinen festen Grenzwert an die Anzahl der Tasks in dem Taskpuffer 180,
die freigegeben werden können.
Die vorstehenden Merkmale betreffen ebenso gut das Stoppen von Tasks.
Somit kann angefordert werden, dass alle Tasks sofort oder synchron
an irgendeiner Taskaktualisierungsgrenze 400 stoppen.
-
Die Änderung
von Tasks ist in einer sehr ähnlichen
Weise wie das Laden von Tasks implementiert. Taskparameter können dadurch
geändert
werden, dass eine Taskspezifikation in den Taskpuffer 180 geschrieben
wird und daraufhin sofort, ohne den Freigabestatus zu ändern, ein
Laden angefordert wird. Ein Task kann synchron (zu seiner eigenen
Schlitzzeitgebung) neu geladen werden. Wie im Folgenden ausführlicher
beschrieben wird, muss beim Ändern
von Taskparametern sorgfältig
vorgegangen werden, da sich ein neuer Parameter mit einem früheren Parameter
widersprechen kann, wodurch fehlerhafte Ergebnisse erzeugt werden.
-
Der
CCP 100 hält
ein Statusregister, das den Lauf/Stopp-Status jedes Tasks angibt.
Ein Task ist in einem von vier Zuständen: gestoppt, auf Lauf wartend,
laufend, oder auf Stopp wartend. Ein "freigegebener" Task ist ein solcher, der läuft, auf
den Lauf wartet oder auf den Stopp wartet. Wenn ein Task ausgeführt zu werden
beginnt, wird er ewig (bis er durch SW angehalten wird) oder bis
zu einer gut definierten Endzeit ausgeführt. Das Stoppen eines Tasks
kann manuell durch Software erfolgen oder kann wie oben dargelegt
im Fall eines Tasks mit einer gut definierten Endzeit durch den
CCP 100 automatisch erfolgen. Weitere Einzelheiten hinsichtlich
der automatischen Deaktivierungszeiten (Stoppzeiten) werden im Folgenden
in Verbindung mit den Beschreibungen für jeden Task dargelegt. Ein "gesperrter" Task ist ein solcher,
der in der gestoppten Betriebsart ist.
-
Konfigurationsparameter
sind Informationen, die von laufenden Tasks verwendet werden. Von
einigen Parametern wird erwartet, dass sie geändert werden, während ein
Task läuft,
während
das bei den meisten nicht der Fall ist. Somit sind Vorkehrungen
implementiert, die an jenen Parametern, die möglicherweise geändert werden
müssen,
während
ein Task läuft, Änderungen
derart ermöglichen,
dass die Änderungen
vorhersehbare Ergebnisse haben. In einer im Folgenden dargelegten
Ausführungsform
sind die Parameter, die solche Vorkehrungen haben, die Fingerunterbrechungstabelle,
die Fingersymbolpuffer-Konfigurationstabelle und die Walsh-Tabelle,
die im Folgenden umfassender beschrieben werden. Ein träge in der
Fingerunterbrechungstabelle werden an jeder Taskaktualisierungsgrenze 400 von
der Software-Seite eines Doppelpuffers in den Hardware-Schatten des Doppelpuffers übertragen.
In die Einträge
in der Walsh-Tabelle und in der Fingersymbolpuffer-Konfigurationstabelle
(FSB-Konfigurationstabelle) kann jederzeit geschrieben werden. Von
den Tasks werden Zeiger auf die Tabellen verwendet, wobei es diese
Zeiger sind, die geändert
werden können, während der
Task mit vorhersehbaren Verhalten läuft. Es muss Software implementiert
sein, um das Schreiben in irgendeinen momentan von dem CCP 100 verwendeten
Eintrag, der undefinierte Ergebnisse erzeugen kann, zu vermeiden.
-
Nach
einem Einschalt-Rücksetzen
sind alle Register des CCP 100 in einem bekannten Zustand.
Die CCP-Speicher haben Inhalte, die undefiniert sind, und der CCP 100 lässt selbst
keine Tasks laufen. Der CCP 100 kann auf zahlreiche Arten
konfiguriert werden, um seine ersten Tasks laufen zu lassen, nachdem
der CCP-Takt gestartet
worden ist. Gemäß einer
Ausführungsform
kann der CCP 100 auf folgende Weise initialisiert werden:
- 1. Es werden Konfigurationsspeicher und -register
(z. B. Walsh-Tabelle, Fingersymbolpuffer-Konfigurationstabelle,
Fingerunterbrechungstabelle, Task_Update_Cycle-Register, Pilotbits-Tabelle,
Unterbrechungen und dergleichen) programmiert;
- 2. es werden Tasks in den Taskpuffer 180 geschrieben;
- 3. es werden Taskanforderungen (Start, Laden) in ihre jeweiligen
Register geschrieben; und
- 4. der CCP 100 wird über den Start/Fortsetzen-Befehl
gestartet.
-
Alle
angegebenen Taskanforderungen (Start/Laden) treten an der ersten
Taskaktualisierungsgrenze 400 auf, wo die Tasks auch ausgeführt zu werden
beginnen. Es ist wichtig, dass die Inhalte aller Speicher undefiniert
sind und initialisiert werden müssen,
bevor auf sie Bezug genommen wird. Der gesamte Taskpuffer 180 braucht
vor seiner Verwendung nicht initialisiert zu werden. Plätze, die verwendet
werden sollen, erfordern aber vor der Verwendung eine Initialisierung.
Beim Rücksetzen
werden alle Tasks gesperrt. Wenn der CCP 100 über einen
Startbefehl oder über
einen Ruhezeitgeber zum Lauf freigegeben wird, beginnen Taskaktualisierungsunterbrechungen.
Allerdings ist die vorliegende Erfindung dahingehend nicht beschränkt, wobei
unter geeigneten Umständen
selbstverständlich
viele weitere Initialisierungsprozeduren, -techniken und -sequenzen ebenfalls
funktionieren können,
um den CCP 100 angemessenen zu initialisieren. Die vorstehenden
Techniken sind lediglich zur beispielhaften Erläuterung von in den hier erwähnten Figuren
gezeigten Betriebscharakteristiken des CCP 100 dargelegt.
-
Gemäß einer
im Folgenden anhand von 15 ausführlich beschriebenen
Ausführungsform
wird der Fingersymbolpuffer 106 dadurch gemanagt, dass
für jeden
Entspreizer (Untertask), der sie verwendet, Mehrschlitz-Ringpufferbereiche
eingestellt werden. Die in dem Host-Prozessor laufende Software
ist verantwortlich für
das Management dieser Bereiche sowie dafür sicherzustellen, dass sich
die Bereiche nicht überschneiden. Es
ist wichtig, dass die SW rechtzeitig auf Unterbrechungen reagieren
muss, so dass sie immer in "sicheren Bereichen" liest. Obgleich
der CCP 100 an eine besondere Adresse in diesem Speicher
schreibt, würde
z. B. das Lesen dieser Adresse dazu führen, dass ein undefiniertes
Datenwort gelesen wird.
-
Wie
oben angegeben wurde, können
viele Ereignisse in dem CCP 100 Unterbrechungen auf einer
der Leitungen 170 externer Unterbrechungen verursachen.
Es gibt Systemunterbrechungsereignisse, Fehlerunterbrechungsereignisse
und taskgestützte
Unterbrechungsereignisse. Jedes Unterbrechungsereignis kann unabhängig stattfinden.
Wie oben ebenfalls festgestellt wurde, ist für die taskgestützten Unterbrechungen
ein FIFO-Warteschlangensystem implementiert, so dass mehrere unerledigte
Unterbrechungen gehalten werden können, bis sie der Host-Prozessor
wie im Folgenden ausführlicher
beschrieben bedient.
-
5 veranschaulicht
externe Schnittstellen zu einem CCP
100. Wie zu sehen ist,
enthalten die externen Schnittstellen eine Schnittstelle des DSP-Busses
104,
einen externen Bus
500 des Fingersymbolpuffers (FSB)
106,
I/Q-Dateneingänge
502 und
weitere Steuerverbindungen. In der folgenden Tabelle 1 ist eine
Beschreibung von Schnittstellensignalen dargelegt, die den externen
Schnittstellen des CCP
100 zugeordnet sind. TABELLE
1 (Schnittstellensignalbeschreibung)
TABELLE
1 (Fortsetzung)
-
Die 6–47 veranschaulichen
zur Verwendung in Verbindung mit dem CCP 100 geeignete
Software-Schnittstelleneinzelheiten, die sich auf den Taskpuffer 180,
auf synchron und asynchron aktualisierte Konfigurationsparameter,
auf einen Befehlssatz, auf den globalen und auf den Unterbrechungsstatus,
auf FSB-Statusdaten und auf Ausgangsdaten beziehen. Selbstverständlich sind
alle Datenwerte mit dem LSB bei Bit 0 orientiert, während das
MSB bei der höchsten
Bitzahl ist. Wenn ein 32-Bit-Feld über einen 16-Bit-Bus gelesen
wird, ist außerdem
die Adresse für
die Bits 15-0 selbstverständlich
gerade und geht der Adresse für
die Bits 31-16 voraus. Ferner werden am meisten bevorzugt alle als "nicht verwendet" oder "Wert bedeutungslos" gezeigten Bitfelder
mit Nullen gefüllt,
um die Kompatibilität
mit anderen Ausführungsformen
des CCP 100 sicherzustellen.
-
6 veranschaulicht
einen zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Taskpuffer 180, während 7 geeignete
Einträge
des Taskpuffers 180 veranschaulicht. Der Taskpuffer 180 ist
eine Sammlung von MAX_TASKS Ping/Pong-Puffern, von denen jeder einen
CCP-Task von 90 Bits (5·16)
enthalten kann. Der Status jedes der MAX_TASKS Tasks hinsichtlich
dessen, ob für
den CCP 100 der Ping oder der Pong zur Ausführung verfügbar ist,
sowie der weitere für
das SW-Laden/die SW-Änderung
verfügbare
Status können
auf Grundlage einzelner Tasks durch SW gesteuert werden. Im Folgenden
werden Taskformate gemäß einer
bevorzugten Ausführungsform
weiter beschrieben. Einträge,
die durch die SW änderbar
sind, können durch
den Host-Prozessor (DSP) gelesen werden.
-
Wie
oben dargelegt wurde, werden die Konfigurationsparameter an der
Taskaktualisierungsgrenze 400 aktualisiert, wobei zu dieser
Zeit das durch Soft ware geänderte
Register in ein durch Hardware lesbares Schattenregister kopiert
wird.
-
8 veranschaulicht
einen zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Eintrag von Taskanforderungsbits, während 9 ein zur
Verwendung in Verbindung mit dem CCP 100 geeignetes Taskanforderungs-ID-Register-Format 900 veranschaulicht.
Der Typ der Anforderung wird dadurch angegeben, dass die geeigneten
Informationen in das Taskanforderungs-ID-Feld geschrieben werden.
Jeder Task hat ein Taskanforderungs-ID-Register, das den Typ der
gestellten Anforderung identifiziert, wenn in das entsprechende
Taskanforderungsbit eine "1" geschrieben ist.
Nunmehr anhand von 9 und hinsichtlich der Start/Stopp-Freigabe 902 gibt
eine "1" an, dass die Anforderung
die in den Start/Stopp-ID-Bits 904 identifizierte Start/Stopp-Aktion
enthält,
während
eine "0" angibt, dass keine
Start/Stopp-Aktion angefordert ist. Auf die Start/Stopp-ID-Bits 904 wird
durch die Hardware nur dann Bezug genommen, wenn das Start/Stopp-Freigabebit 902 gesetzt
ist ("1"). Eine "00" gibt einen sofortigen
Start, eine "01" einen synchronen
Start, eine "10" einen sofortigen
Stopp und eine "11" einen synchronen
Stopp an. Einstellen des Laden/Neuladen-Freigabebits 906 auf "1" gibt an, dass die Anforderung eine
Laden/Neuladen-Aktion enthält,
wie sie in dem Laden/Neuladen-ID-Bit 908 identifiziert
ist. Eine "0" gibt an, dass keine
Laden/Neuladen-Aktion angefordert ist. Einstellen des Laden/Neuladen-ID-Bits 908 auf "0" gibt an, dass ein sofortiges Laden
angefordert ist, während
eine "1" angibt, dass ein
synchrones Neuladen angefordert ist. Auf dieses Bit wird durch die
Hardware nur dann Bezug genommen, wenn das Laden/Neuladen-Freigabebit 906 gesetzt
ist ("1"). Ein synchrones
Neuladen bedeutet, dass die Anweisung "freigegeben" ist, während das Neuladen dann, wenn
sie nicht freigegeben ist, unerledigt bleibt, bis ein sofortiges
Laden angefordert ist. Das eine oder die mehreren Zeitgebungseinstellungs-Freigabebits 910 betreffen
nur Fingertasks. Einstellen dieses Bits auf "1" ist
eine Anforderung zum Einstellen der Zeitgebung, während Einstellen
dieses Bits auf "0" keine Anforderung
zum Einstellen der Zeitgebung ist. Zeitgebungsänderungsinformationen sind
in der angegebenen Fingertask-Beschreibung enthalten. Das Schlitznummerfeld 912 gibt
die Schlitznummer für
eine synchrone Aktion (synchroner Start, synchroner Stopp oder synchrones
Neuladen) relativ zu der eigenen Rahmenzeitgebung des Tasks an.
Dieses Feld 912 definiert den ersten Schlitz zu Beginn
der Verarbeitung, wenn ein synchroner Start angefordert ist. Wenn
ein synchroner Stopp angefordert ist, definiert dieses Feld 912 den
ersten Schlitz, der nicht verarbeitet wird (die letzte verarbeitete Schlitznummer
ist die, die dieser Schlitznummer vorangeht, modulo 15). Wenn ein
synchrones Neuladen angefordert ist, definiert dieses Feld 912 den
ersten Schlitz nach dem Neuladen (die letzte verarbeitete Schlitznummer
vor dem Neuladen ist die, die dieser Schlitznummer vorangeht, modulo
15). Die fünfzehn
Schlitze pro Rahmen sind von 0 bis 14 nummeriert. Der Wert in Schlitz
15 in diesem Feld 912 gibt den Beginn des nächsten Schlitzes
an. Irgendeine Anforderung für
einen gegebenen Task, der auf diesen Wert Bezug nimmt, kann dann, wenn
der gegebene Task momentan bearbeitet wird, erst nach Abschluss
des gegebenen Tasks beginnen. Andernfalls nehmen die Anforderung
und der momentane Task beide auf den letzten geschriebenen Wert
Bezug.
-
10 veranschaulicht
ein Fingerunterbrechungstabellen-Format 1000, während 11 ein
Fingerunterbrechungssteuerungs-Format 1100 veranschaulicht,
das für
jedes 3-Bit-Feld in der Fingerunterbrechungstabelle 1002 gemeinsam
ist. Die Fingerunterbrechungstabelle 1002 ordnet einem
Satz von Unterbrechungsereignissen eine Finger-ID zu. Jede Finger-ID
besitzt einen Platz in der Tabelle 1002, die eine Schlitzunterbrechung
und/oder eine TPC-Unterbrechung und/oder eine Pilotunterbrechung
freigeben kann. Die Größe der Tabelle 1002 ist
MAX_FINGERS × 10
Bits. Die Fingerunterbrechungstabelle 1002 ist doppelt
gepuffert und die Inhalte der Tabelle 1002, in die SW schreibt,
werden an der Taskaktualisierungsgrenze 400 in die Hardware-Ansicht
des CCP 100 kopiert. Die Tabelle 1002 kann so,
wie sie von der Hardware des CCP 100 gesehen wird, durch
den Host-Prozessor (DSP) gelesen werden. Jedes der 3-Bit-Felder
in einem in 10 gezeigten Eintrag (Schlitz,
TPC und Pilotunterbrechungssteuerung) der Fingerunterbrechungstabelle 1002 besitzt
ein gemeinsames Format, wie es in 11 gezeigt
ist, wo das Feld zur Steuerung der Pilotunterbrechung 1004 gezeigt
ist. Das MSB 1006 steuert den Freigabestatus und die 2
LSB 1008 geben den Unterbrechungs-FIFO an. Das Halbschlitz-Freigabebit 1010 ändert die
Schlitzunterbrechungssteuerung 1012 (falls freigegeben)
für Halbschlitz
(falls "1") oder Ganzschlitz
(falls "0").
-
12 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes Task_Update_Cycle-Register 1200,
das identifiziert, wie häufig
es ein Taskaktualisierungsereignis gibt. Das Register 1200 ist
unter Verwendung eines Schattenregisters implementiert, das an der
Taskaktualisierungsgrenze 400 aktualisiert wird. Beim Rücksetzen
ist der Wert von Update_Cycle 3 dezimal. Der Wert in diesem Register 1200 ist
eins weniger als die Anzahl von 16-Chip-Perioden in einem Task_Update-Zyklus
(z. B. 3 => Taskaktualisierungsintervall
ist 4·16
Chips).
-
Im
Gegensatz zu den vorstehenden synchron aktualisierten Konfigurationsparametern
sind asynchron aktualisierte Konfigurationsparameter typisch solche,
die, wenn überhaupt,
nicht häufig
geändert
werden, nachdem der CCP 100 seine Operationen begonnen
hat. Ändern
dieser Parameter, wenn nicht in Verwendung, (z. B. Ändern des
Walsh-Tabellen-Eintrags, wenn keine Tasks auf den besonderen Eintrag
Bezug nehmen, der geändert
wird) ist kein Problem.
-
13 veranschaulicht
eine zur Verwendung in Verbindung mit dem CCP 100 geeignete
Walsh-Tabelle 1300, während 14 einen
zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Walsh-Tabellen-Eintrag für
einen Abtastwert-Walsh-Untertask veranschaulicht. Die Walsh-Tabelle 1300 hält die Walsh-Untertasks 1310, 1312, 1314, 1316.
Ein Satz von Walsh-Untertasks wird von einem Finger oder DPE-Task
dazu verwendet anzugeben, wie auf einem oder auf mehreren (im Fall
eines Fingers) Walsh-Kanälen
eine Walsh-Entspreizung stattfinden sollte. Jeder Finger- oder DPE-Task
hat ein Walsh-Zeigerfeld 1302, 1304, 1306, 1308 zur
Angabe des gewünschten
Satzes von Walsh-Untertasks 1310–1316. Außerdem können Fingertasks
die Verarbeitung eines EOL-Untertasks angeben, der bei der Berechnung
von Rechtzeitig-, Zu-Früh- und
Zu-Spät-Energien auf einem
besonderen Walsh-Kanal eine DLL-Funktion unterstützt. Die Walsh-Tabelle 1300 besteht
aus TOTAL_WALSH verschiedenen Abschnitten oder Sätzen, wobei jeder mit einer
festen Anzahl von Walsh-Untertasks 1310–1316 konfiguriert
ist. Die ersten NUM_WALSH8 Sätze
von Walsh-Untertasks 1310–1312, die durch die
ersten Walsh-Zeiger 0 bis (NUM_WALSH8 – 1) adressiert sind, können jeweils
bis zu 8 Walsh-Untertasks angeben, während die letzten NUM_WALSH4
Sätze,
die durch die Walsh-Zeiger NUM_WALSH8 bis (NUM_WALSH8 + NUM_WALSH4 – 1) adressiert
sind, jeweils bis zu 4 Walsh-Untertasks 1314–1316 angeben
können.
Die TOTAL_WALSH Sätze
von Walsh-Untertasks 1310–1316 können maximal (NUM_WALSH8·8 + NUM_WALSH4·4) Walsh-Untertasks 1310–1316 angeben.
Der CCP 100 unterstützt
unter Verwendung von MAX_FINGERS eindeutigen Finger-IDs bis zu MAX_FINGERS
Fingertasks. Jeder Fingertask erfordert einen Satz von Walsh-Untertasks 1310–1316 mit
1 bis 8 gültigen
Einträgen.
Die Fingertasks mit den ersten (aufeinander folgenden) NUM_LARGE_FINGERS
Finger-IDs sind beschränkt,
so dass sie auf einen Satz von Untertasks der Größe 8 zeigen, während die
verbleibenden Finger-IDs beschränkt
sind, so dass sie auf einen eines Satzes von Untertasks der Größe 4 zeigen.
Auf denselben Walsh-Untertask-Satz kann mehr als ein Fingertask
zeigen. Ein DPE-Task erfordert einen einzigen Walsh-Untertask, der
sich in irgendeinem Satz von Walsh-Untertasks 1310–1316 als
der erste Untertask in diesem Satz befinden kann; es können irgendwelche
Walsh-Zeiger verwendet werden. 13 erläutert beispielhaft
64 Sätze
von Walsh-Untertasks mit NUM_WALSH8 = 32 und NUM_WALSH4 = 32. Falls
weniger als die maximale Anzahl von Einträgen (8 oder 4) benötigt werden,
müssen
die Untertasks 1310–1316,
wie in 14 veranschaulicht ist, die
beispielhaft einen Walsh-Untertask erläutert, der zu dem fünften Walsh-Satz
(S5) gehört
und der dritte Walsh-Untertask (ST3) ist, zu Beginn des Bereichs
erscheinen und aufeinander folgend sein.
-
15 veranschaulicht
eine zur Verwendung in Verbindung mit dem CCP 100 geeignete
FSB-Pufferkonfigurationstabelle 1500, während 16 einen
Tabelleneintrag für
die FSB-Pufferkonfigurationstabelle 1500 veranschaulicht.
Die FSB-Pufferkonfigurationstabelle 1500 ist ein Pingpong-Puffer
mit zwei Einträgen
für jede
Finger-ID/Walsh-ID-(Entspreizer-)Kombination zur Anzeige, wo in
dem Fingersymbolpuffer 106 ein Finger ist, wobei jeder
seiner (wie durch die Walsh-ID
angegebenen) Walsh-Kanäle
seine entspreizten Symbole ausgibt. Die ersten NUM_LARGE_FINGERS
Finger können
bis zu acht Walsh-IDs angeben, während
jeder der verbleibenden Finger bis zu vier Walsh-IDs angeben kann.
Somit gibt es 8·NUM_LARGE_FINGERS
+ 4·(MAX_FINGERS – NUM_LARGE_FINGERS)
Einträge. 15 erläutert beispielhaft
MAX_FINGERS = 64 und NUM_LARGE_FINGERS = 32. Jeder Eintrag enthält eine
Startadresse für
den ersten Schlitz von Daten in einem Vierschlitz-Ringpuffer und
einen Adressenversatz von einem Schlitz zu dem nächsten Schlitz. Wie im Folgenden
weiter diskutiert wird, befinden sich Startadressen und Versatzadressen
am meisten bevorzugt an geraden 32-Bit-Wortgrenzen. In die FSB-Pufferkonfigurationstabelle 1500 wird
direkt geschrieben, wobei in die Ping- und in die Pong-Seite unabhängig geschrieben
wird. Wie in 16 beispielhaft erläutert ist,
ist jeder Eintrag 32 Bits breit und lesbar.
-
17 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes Dateneintragformat
für eine Pilot-TPC-Positionstabelle,
während 18 ein
zur Verwendung in Verbindung mit dem CCP 100 geeignetes Dateneintragformat
für eine
Pilotbits-Tabelle veranschaulicht. Die Pilot-TPC-Positionstabelle
gibt die Position des Piloten und der TPC-Symbole an. Es gibt acht
(8) Einträge,
die jeweils einem Spreizfaktor von 4 bis 512 entsprechen. Wie zu
sehen ist, gibt jeder Eintrag zwei getrennte Plätze für Pilotsymbole und einen Platz
für das
TPC-Symbol an. Das TPC-Positionsfeld 1700 gibt die Symbolnummer
in einem Funkzeitschlitz an. Jedes Pilotpositionsfeld gibt ein zusammenhängendes
Gebiet von Symbolen in dem Funkzeitschlitz an. Wie in 17 gezeigt
ist, wird das Gebiet unter Verwendung einer Startposition 1702, 1704 und
einer Endposition 1706, 1708 angegeben. In einer
Ausführungsform
werden die definierten Pilotgebiete nicht nur dazu verwendet, den
Platz von Pilotsymbolen anzugeben, da ihre Verwendung von dem Task
und von dem Untertask abhängt,
von denen sie verwendet werden. Somit sind für jeden Spreizfaktor zwei definierte
Pilotgebiete erforderlich. Der Fingertask wählt eines dieser Pilotgebiete
aus, um anzugeben, wann die Finger-Pilotunterbrechung aktiviert wird, was,
wie zu sehen ist, am Ende des letzten Symbols in diesem Gebiet ist.
Um diesen besonderen Task zu erzielen, ist das Ende des Gebiets
wichtig. Ein EOL-Walsh-Untertask oder ein DPE-Walsh-Untertask können eines
der Pilotgebiete in der Pilot-TPC-Positionstabelle auswählen, um
zu definieren, welche Symbolenergien zu akkumulieren sind. Das definierte
Gebiet braucht z. B. dann, wenn es erwünscht ist, die Energien zusätzlicher
Nicht-Pilotsymbole
zu messen, nicht genau dem Vorwärtsverbindungs-Pilotsymbolgebiet
zu entsprechen. Alternativ können
diese Untertasks die Energien von Symbolen außerhalb des gewählten Pilotsymbolgebiets
messen.
-
Wie
zu sehen ist, hat die in 18 gezeigte
Pilotbits-Tabelle für
jeden Funkschlitz (bis zu 16 Schlitze) für vier verschiedene Optionen
einen Eintrag für
die Modulation der Pilotbits (wobei bis zu 16 Bits pro Schlitz unterstützt werden).
Die gemeinsamen Pilotbits in einer Ausführungsform (auf dem gemeinsamen
Pilotkanal CPICH im IMT2000-DS) brauchen in die Pilotbits-Tabelle
nicht eingegeben zu werden, da sie als Option 0 verfügbar sind
und ihre Werte fest verdrahtet sind. Die Pilotbits für die Diversity-Antenne
sind zusammen mit den Pilotbits für die erste Antenne gespeichert.
Die Größe der Tabelle
ist (3 × 16)
Einträge
mal 32 Bits. Die Pilotbits-Tabelle wird von Finger-EOL- und Finger-DPE-Tasks verwendet.
Jeder Pilotbitseintrag codiert einen Schlitz und enthält für jede Antenne
16 Bits. Im WCDMA ist jedes Paar von Bits ein komplexes Pilotsymbol. Das
erste Paar von Bits in dem Schlitz liegt in den Bits 15 und 14,
wobei das Bit 15 das Gleichtaktbit ist und das Bit 14 das Quadraturphasebit
ist. Das nächste
Paar von Bits ist in den Bits 13 und 12 usw. Die Anzahl der Pilotbits
in einem tatsächlichen
Funkschlitz kann kleiner als 16 sein, wobei in diesem Fall die ersten
n Bits verwendet werden, wobei n die Gesamtzahl der erforderlichen
Bits ist. Jeder Task, der die Verwendung der Pilotbits-Tabelle erfordert,
gibt die Pilotbits-Options nummer zusammen mit einem Pilotgebiet
an, wobei sie zusammen die Anzahl der Piloten und ihre Werte angeben.
-
Ein
Register zur Steuerung externer Unterbrechungen steuert die Freigabe
von FIFO-Fehler- und FIFO-Systemunterbrechungen zu den Leitungen 170 externer Unterbrechungen. 19 veranschaulicht
ein zur Verwendung in Verbindung mit den Registern zur Freigabe
externer Unterbrechungen geeignetes Format.
-
20 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes PSC-Register-Format
für ein
PSC-Register, in dem ein erster Suchcode eine hierarchische Struktur
besitzt, die durch das Kronecker-Produkt von zwei 16-Bit-Sequenzen,
PSC = PSC0 X PSC1, definiert ist, wobei "X" das
Kronecker-Produkt bezeichnet.
-
21 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes SSC-Register-Format
für ein
SSC-Register, in dem der sekundäre
Suchcode durch das Kronecker-Produkt von zwei 16-Bit-Sequenzen, SSC
= SSC0 X SS1, gefolgt von der Modulo-2-Addition mit einer Hadamard-Sequenz,
wobei "X" das Kronecker-Produkt
bezeichnet, eine hierarchische Struktur besitzt. Der SSC-Suchtask
verwendet SSC0 und Nachverarbeitung mit SSC1; wobei die Hadamard-Sequenz
als ein Task für
Software oder Spezial-Hardware bleibt.
-
22 veranschaulicht
zur Verwendung in Verbindung mit dem CCP 100 geeignete
DPE- und LCI-Energieakkumulationsparameter, in denen die DPE- und
LCI-Tasks einmal nach der Messung von NNTS·NTS Funkschlitzen von Daten Ergebnisse ausgeben.
Wenn Pilotsymbole kohärent
länger
als ein Symbol akkumuliert werden, steuert NTS die
Anzahl der Funkzeitschlitze kohärenter
Akkumulationen. NTS kann (im Unterschied
zu den Beschränkungen
für den
EOL-Untertask) irgendeinen Wert zwischen 0 und 31 haben, wobei 0
0,4 Schlitze bedeutet, während
die anderen vollständige
Schlitze sind. Wenn Pilotsymbole mit einer kohärenten Länge von einem Symbol akkumuliert
werden, wird NTS ignoriert und werden die
Ergebnisse nach NNTS Zeitschlitzen ausgegeben.
Eine Ausführungsform
des Datenpfads 300 des CCP 100 ist für die Akkumulation
von bis zu 8 Rahmen bestimmt. Es wird erwartet, dass eine Überschreitung
dieses Bereichs mit irgendeiner Kombination dieser Parameter für diesen
Datenpfad 300 zu Fehlern wegen Überlauf führt. Vorzugsweise werden die
Tabellen für DPE-
und LCI-Parametergrößen von
MAX_DPE × 14
Bits bzw. MAX_LCI × 14
Bits konfiguriert, wobei die Parameter für jede DPE- und LCI-Such-ID,
wie in 22 gezeigt ist, in einem getrennten
Eintrag gespeichert sind.
-
23 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes Suchcode-Symbolplatzregister,
das angibt, welches Symbol eines Perch-Kanals den primären und
den sekundären
Suchcode (PSC und SSC) enthält.
Die Werte liegen für
eine bevorzugte Ausführungsform
zwischen 0 und 9.
-
24 veranschaulicht
ein zur Verwendung in Verbindung mit der CCP-Steuereinheit 150 geeignetes Start/Fortsetzen-Befehlsregister 2400,
wobei der Start/Halt-Befehl wie oben diskutiert für den Start
des CCP 100 nach dem Einschalten verwendet wird. Der CCP 100 startet
und stoppt immer bei einer 16-Chip-Grenze 400 des
GCC, wobei der Schrittwert 2402 die Anzahl der Zyklen definiert,
die vor dem Stopp zu laufen haben, wobei ein Wert "0" die Dauerlauf-Betriebsart angibt.
-
25 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes Software-Rücksetzbefehlsregister.
Wenn der CCP 100 gestoppt oder angehalten wird, setzt ein
Software-Rücksetzbefehl
alle internen Register und Zustände
auf die oben diskutierte Einschalt-Rücksetzkonfiguration zurück. Vorzugsweise
soll dieser Befehl nicht verwendet werden, während der CCP 100 etwas
ausführt.
-
Die 26–39 veranschaulichen
verschiedene globale und Unterbrechungsstatusregister, in denen
eine Synchronisierschaltung am meisten bevorzugt ermöglicht,
dass der Host-Prozessor (DSP) genaue Werte aus diesen Registern
liest. Synchronisierschaltungen sind dem Fachmann auf dem Gebiet
der Datenprozessoren gut bekannt und werden hier somit der Klarheit
und Kürze
halber nicht ausführlicher
diskutiert.
-
In 26 ist
nun eine bevorzugte Ausführungsform
eines CCP-Statusregister-Formats
veranschaulicht. Vorzugsweise enthält das CCP-Statusregister ein
PSC-Pufferstatusbit,
wobei eine "1" anzeigt, dass auf den
PSC-Puffer 118 nur durch den CCP 100 zugegriffen
werden kann, während
eine "0" anzeigt, dass auf
den PSC-Puffer 118 durch den Host-Prozessor (DSP) zugegriffen
werden kann. Au ßerdem
enthält
das CCP-Statusregister vorzugsweise ein CCP-Lauf/Stopp-Statusbit,
wobei eine "1" angibt, dass der
CCP 100 läuft,
während
eine "0" angibt, dass der
CCP 100 gestoppt ist.
-
27 veranschaulicht
in Verbindung mit dem Taskpuffer 180 geeignete Lauf/Stopp-Statusregister,
in denen der Host-Prozessor den momentanen Lauf/Stopp-Status für alle Tasks
in dem Taskpuffer 180 lesen kann. Wie zu sehen ist, besitzt
jeder Task ein Zwei-Bit-Feld, das den Lauf/Stopp-Status codiert,
wobei "00" "gestoppt" anzeigt; "01" "auf Lauf wartend" anzeigt; "10" "laufend" anzeigt und "11" "auf Stopp wartend" anzeigt.
-
28 veranschaulicht
zur Verwendung in Verbindung mit dem Taskpuffer 180 geeignete
Pingpong-Statusregister, wobei zu sehen ist, dass jeder Task ein
Zwei-Bit-Feld besitzt, das den Pingpong-Status codiert, und wobei "00" "HW liest Ping" anzeigt; "01" "HW liest Ping, wartet
auf Pong" anzeigt; "10" "HW liest Pong" anzeigt; und "11" "HW liest Pong, wartet
auf Ping" anzeigt.
-
29 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
Taskaktualisierungszeitregister 2900, in dem das Task_Update_Timestamp-Register 2902 den
GCC-Wert der jüngsten Taskaktualisierungsgrenze 400 erfasst.
-
30 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
Zykluszählregister,
in dem das Zykluszählregister
die Anzahl der in der jüngsten
wie etwa in 4 gezeigten CCP-Iteration erwarteten
Zyklen erfasst. Das Zykluszählregister
wird am meisten bevorzugt in jeder CCP-Iteration aktualisiert.
-
31 veranschaulicht
ein zur Verwendung in Verbindung mit der CCP-Steuereinheit 150 geeignetes GCC-Zählregister.
Das GCC-Zählregister
erfasst den momentanen GCC-Wert, wobei es am meisten bevorzugt einmal
pro Chip aktualisiert wird. Am meisten bevorzugt zeigen die 4 MSB
die lokale GCC-Schlitznummer an, während die verbleibenden LSB
den Rest der Zählung
in Chips anzeigen.
-
32 veranschaulicht
eine Ausführungsform
eines zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Unterbrechungsfehlerereignis-Statusregisters. Vorzugsweise wird
ein Zyklus-Überschritten-Fehlerbit
auf "1" gesetzt, wenn die
Anzahl der in einer Iteration versuchten Zyklen größer als
das Maximum (z. B. 320) ist, während
es andernfalls auf "0" gesetzt wird. Die
Unterbrechungs-FIFO-Überlauffehlerbits
sind vorzugsweise so implementiert, dass ein Bit für jeden
der zuvor diskutierten vier Unterbrechungs-FIFOs auf "1" gesetzt wird, falls der entsprechende
FIFO übergelaufen
ist, oder andernfalls auf "0" gesetzt wird.
-
33 veranschaulicht
eine Ausführungsform
eines zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Unterbrechungssystemereignis-Statusregisters 3300. Das
Lesen des Unterbrechungssystemereignis-Statusregisters 3300 löscht am
meisten bevorzugt das Systemunterbrechungsereignis, wobei ein Task_Update-Ereignisbit 3302 auf "1" gesetzt wird, falls das Task_Update-Ereignis
aufgetreten ist, oder andernfalls auf "0" gesetzt
wird.
-
34 veranschaulicht
eine Ausführungsform
eines zur Verwendung mit dem CCP 100 geeigneten FIFO-Statusregisters,
das für
jeden Unterbrechungs-FIFO den Leer/Nicht-Leer-Status zeigt. Wenn
ein besonderer FIFO nicht leer ist, wird sein FIFO-Leer-Statusbit
vorzugsweise auf "1" gesetzt. Am meisten
bevorzugt wird das Statusbit gelöscht,
wenn alle FIFO-Inhalte gelesen worden sind. Die 35–38 veranschaulichen
FIFO-Statusregister, in denen jedes FIFO-Statusregister die Anzahl
aktiver Einträge
enthält,
die momentan in dem FIFO sind (und nicht gelesen worden sind).
-
39 veranschaulicht
ein zur Verwendung mit dem CCP 100 geeignetes Inhaltsformat,
das einer Ausführungsform
eines FIFO 3900 zugeordnet ist. Wie zu sehen ist, haben
die FIFO-Inhalte jeweils zwei Wörter 3902, 3904,
wobei sie vorzugsweise nacheinander an einem Speicherplatz ausgelesen
werden. Wenn das zweite Wort (FIFO_w1) 3904 gelesen wird,
inkrementiert die Hardware des FIFO 3900 seinen internen
Lesezeiger (der auf einen 32-Bit-Eintrag zeigt). Wenn es keine zu
lesenden aktiven Einträge
gibt, werden alles Nullen zurückgegeben.
Ein Fingertask kann mehrere und gleichzeitige Unterbrechungsereignisse
für den
hal ben Schlitz, für
den vollen Schlitz, für
die TPC und für
den Piloten ausgeben, die durch einzelne Statusbits in dem ersten
Wort 3902 angezeigt werden. Das Pufferschlitznummerfeld 3906 zeigt
an, in welchem Schlitz in dem Mehrschlitz-Ringpuffer ein Fingertask
oder SSC-Suchtask seine Daten angeordnet hat (wobei das Pufferschlitznummerfeld
am meisten bevorzugt gültig
ist, wenn das Schlitzunterbrechungs-Bitfeld für einen Fingertask und für alle SSC-Suchtask-Unterbrechungen
gesetzt ist). Wie zu sehen ist, zeichnet das zweite Wort 3094 des
FIFO den GCC-Wert auf, wenn ein spezifisches Ereignis aufgetreten
ist.
-
40 veranschaulicht
eine Ausführungsform
eines Fingersymbolpuffer-Register-Formats 4000, wenn ein
Fingertask einen Spreizfaktor zwischen 8 und 512 hat, während 41 ein
einem Fingertask mit einem Spreizfaktor von 4 zugeordnetes FSB-Register-Format 4100 veranschaulicht.
Der FSB 4000 hält
18 k 32-Bit-Wörter und
ist für
jede Finger-ID/Walsh-ID-Kombination in Mehrschlitz-Ringpuffer geteilt.
Der Platz jedes Ringpuffers ist in einer im Folgenden diskutierten
FSB-Konfigurationstabelle definiert. Auf den FSB 4000, 4100 wird
am meisten bevorzugt über
ein Seitenregister unter Verwendung von Techniken, die dem Fachmann auf
dem Gebiet der Datenverarbeitung bekannt sind, durch Software über einen
Hardware-Symbolprozessor (HSP) oder durch ein Maximalverhältniskombinations-Modul
(MRC) zugegriffen.
-
42 veranschaulicht
ein Register-Format für
einen Finger-Max-Puffer 4200 gemäß einer Ausführungsform,
die zur Verwendung mit dem CCP 100 geeignet ist. Der Finger-Max-Puffer 4200 ist
ein Vierschlitz-Ringpuffer, der für eine besondere Finger-ID/Walsh-ID-(Entspreizer-)Kombination
den größten Energiewert
in einem Schlitz speichert. Jeder Energiewert sind 16 Bits. Am meisten
bevorzugt gibt es 8·NUM_LARGE_FINGERS
+ 4·(MAX_FINGERS – NUM_LARGE_FINGERS)
Vier-Schlitz-Ringpuffer. Diese Vier-Schlitz-Ringpuffer sind in der
gleichen Reihenfolge wie der FSB-Konfigurationspuffer 106 angeordnet,
wobei die vier Schlitzenergien zusammen gruppiert sind. Die für einen
besonderen Schlitz verwendete Pufferzahl (0-3) ist dieselbe wie
die Pufferzahl, die durch den FSB 106 zum Speichern von
Symbolen verwendet wird, wo bei die Fingertask-Unterbrechungsinformationen
diese Pufferzahl in dem FIFO-Eintrag
bereitstellen.
-
43 veranschaulicht
eine Ausführungsform
eines zur Verwendung in Verbindung mit dem EOL-Puffer 116 geeigneten
EOL-Puffer-Speicherabbilds 4300. Wie oben dargelegt wurde,
speichert der EOL-Puffer 116 Zu-Früh-, Rechtzeitig- und Zu-Spät-Energiemessdaten,
die Fingertasks zugeordnet sind. Die Ergebnisse werden einmal pro
Rahmen – am
Ende jedes Rahmens – in
den EOL-Puffer 116 ausgegeben und am meisten bevorzugt
vor der nächsten
Rahmengrenze durch den Host-Prozessor (z. B. den DSP) wiedergewonnen. Wenn
neue Ergebnisse bereit sind, können
sie auf dem DSP-Bus 104 direkt durch den Host-Prozessor
oder durch eine dem Host-Prozessor zugeordnete DSP-DMA-Steuereinheit
gelesen werden. Wie in 43 zu sehen ist, werden die
Ausgaben durch die Finger-ID indiziert.
-
44 veranschaulicht
eine Ausführungsform
eines DPE-Puffer-Speicherabbilds, das zur Verwendung in Verbindung
mit dem DPE-Puffer 114 geeignet ist. In dem DPE-Puffer 114,
der bis zu MAX_DPE·32·2 Energiewerte
hält, werden
die Ausgangsergebnisse von dem DPE-Task angeordnet. Der DPE-Puffer 114 ist
in gleich große
Blöcke
mit jeweils 32 Plätzen
aufgeteilt, wobei ein Platz eine Rechtzeitig-Energie und (optional) eine
Zu-Spät-Energie
für einen
Versatz in einem angegebenen Suchfenster hält. Ein DPE-Task mit einer
bestimmten DPE-Such-ID
gibt seine Ergebnisse beginnend bei der gleichen Blocknummer in
dem DPE-Puffer 114 aus. Falls das Suchfenster für einen
DPE-Task kleiner oder gleich 32 Chips ist, werden alle seine Ergebnisse
in einem Block des DPE/LCI-Puffers 114, 115 angeordnet.
Falls das Suchfenster größer als
32 ist, werden die Ergebnisse in den nächsten angrenzenden Blöcken des
DPE/LCE-Puffers 114, 115 angeordnet. Die Ergebnisse
werden aufeinander folgend von dem Start- bis zu dem Endversatz
gespeichert.
-
45 veranschaulicht
ein zur Verwendung in Verbindung mit dem LCI-Puffer 115 geeignetes LCI-Puffer-Speicherabbild.
Die Ausgangsergebnisse von den LCI-Tasks werden in dem LCI-Puffer 115 angeordnet,
der MAX_LCI Paare von Energiewerten halt. Der LCI-Puffer 115 ist
in gleich große
Blöcke,
jeder Block mit 8 Plätzen,
aufgeteilt, wobei ein Platz eine Rechtzeitig-Energie und (optional)
eine Zu-Spät-Energie
für einen
Langcode hält.
Ein LCI-Task mit einer bestimmten LCI-Such-ID gibt seine Ergebnisse
beginnend bei der gleichen Blocknummer in dem LCI-Puffer 115 aus.
Der LCI-Task gibt für
jeden von bis zu 8 Codes, die identifiziert werden, ein Paar Energien
aus.
-
46 veranschaulicht
ein zur Verwendung in Verbindung mit dem PSC-Suchpuffer 118 geeignetes PSC-Suchpuffer-Speicherabbild,
wobei der PSC-Suchpuffer 118 5120
Wörter,
eines für
jeden 1/2-Chip in einem WCDMA-Funkzeitschlitz, enthält. Wie
zu sehen ist, enthält
der erste Platz den Energiewert mit dem Versatz null (modulo 2560
Chips) vom GCC, der nächste
bei 1/2 Chip usw. Am meisten bevorzugt kann auf den PSC-Suchpuffer 118 durch
den Host-Prozessor nur dann zugegriffen werden, wenn der PSC-Suchtask
nicht aktiv ist. Die Zugreifbarkeit wird durch das PSC-Pufferstatusbit
in dem oben anhand von 26 diskutierten CCP-Statusregister
angezeigt.
-
47 veranschaulicht
ein sekundäres
Suchcodepuffer-Format, das zur Verwendung in Verbindung mit dem
oben ebenfalls anhand von 21 diskutierten
SSC-Suchpuffer 140 geeignet ist. Wie zu sehen ist, enthält der SSC-Suchpuffer 140 1024
32-Bit-Wörter,
die als acht 4-Schlitz-Ringpuffer, einer für jede SSC-ID, angeordnet sind.
Sowohl für
den PSC als auch für
den SSC gibt es 16 Symbole pro Schlitz, wobei in dem Puffer komplexe
Symbole sowohl für
den PSC als auch für
den SSC gespeichert sind. Die erste Hälfte des SSC-Suchpuffers 140,
die 512 32-Bit-Wörter
enthält,
enthält
die SSC-Symbole, während
die zweite Hälfte
die PSC-Symbole enthält.
-
Im
Folgenden werden anhand der 48–60 zur
umfassenderen Beschreibung von 1) Fingertasks einschließlich der
Unterstützung
für eine
EOL-Messung, 2) DPE ("Multipfadsuche"), 3) PSC-Suche ("Stufe-1-Suche"), 4) SSC-Suche ("Stufe-2-Suche"), 5) LCI-Suche ("Stufe-3-Suche") und 6) Seitenwechselanzeigekanal-Entspreizung
(PICH-Entspreizung) die Verfügbarkeit
von Task-Sätzen,
wie Tasks in den CCP 100 übertragen werden, wann Tasks
beginnen ausgeführt
zu werden und wann sie abgeschlossen sind, dargelegt.
-
48 ist
ein Diagramm, das die zur Verwendung in Verbindung mit der CCP 100 geeignete
Taskaktualisierungszeitgebung gemäß einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Wie oben dargelegt wurde,
enthält
der CCP 100 einen Pingpong-Taskpuffer 180, der
bis zu MAX_TASKS Tasks enthalten kann. Tasks werden durch Software
in den Taskpuffer 180 geschrieben und können durch den CCP 100 ausgeführt werden,
nachdem sie in die Hardware-Seite
(Firmware) geladen worden sind. Das Laden wird unter Verwendung
der Taskanforderungsbits zusammen mit einer Taskanforderungs-ID
durch Software angefordert und findet bei der nächsten Taskaktualisierungsgrenze 400 nach
dem Schreiben der Anforderung statt. Das Vorstehende ist der Grundmechanismus,
um Tasks zur Ausführung
in den CCP 100 zu laden. Wenn die Task_Update-Übertragung
stattfindet, wird das Task_Update_Timestamp-Register 2902 wie
ebenfalls oben beschrieben mit dem momentanen Wert des globalen
Chipzählers
(GCC) geladen. Das Zeitintervall für die Task_Update-Grenze (Taskaktualisierungsgrenze) 400 ist
am meisten bevorzugt programmierbar und muss für eine hier beschriebene Ausführungsform,
wie ebenfalls in 48 veranschaulicht ist, auf
ein Vielfaches der CCP-Iteration (16 Chipperioden) eingestellt werden.
Dieses Vielfache von 16 Chips wird in dem doppelt gepufferten Schattenregister
Task_Update_Cycle gespeichert, das bei jeder Task_Update-Grenze
(Taskaktualisierungsgrenze) 400 durch Kopieren der Software-Seite
des Registers in die Hardware-Seite aktualisiert wird. Beim Rücksetzen
ist der Wert des Task_Update_Cycle 4, wobei er aber auch andere
Werte haben könnte.
Die Inhalte des Taskpuffers 180 können wie oben erläutert durch
den Host-Prozessor gelesen werden. Nachdem die Task_Update-Unterbrechung 4802 stattgefunden
hat, die den Abschluss der Task_Update-Aktionen signalisiert, führt das
Lesen des Taskpuffers 180 nicht zu einem Synchronisationsproblem.
Nach einem Einschalt-Rücksetzen
ist der Inhalt des Taskpuffers 180 wie oben dargelegt undefiniert,
sind die Freigabestatusbits aller Tasks in dem Ausführungspuffer
gesperrt und sind alle Taskanforderungsbits gelöscht. Wenn die Tasks in den
Taskpuffer 180 geschrie ben worden sind, Taskanforderungen
zum Laden und Starten erfolgt sind und der CCP 100 gestartet
worden ist, beginnen die Tasks ausgeführt zu werden.
-
49 veranschaulicht
ein Task-Start/Stopp-Zustandsübergangsdiagramm
gemäß einer
Ausführungsform,
die zur Verwendung in Verbindung mit dem CCP 100 geeignet
ist. Vorzugsweise ist den meisten Tasks eine ID zugeordnet, die
durch den CCP 100 verwendet wird, um zu identifizieren,
welche Konfigurationsparameter den Tasks zugeordnet sind und wo
die Ergebnisse der Tasks anzuordnen sind. Es ist wichtig, dass dieselbe
ID nicht an zwei Tasks desselben Typs, die gleichzeitig laufen können, verdoppelt
werden sollte, da die Ergebnisse einer solchen Situation nicht notwendig
für jede
Ausführungsform
des CCP 100 definiert sind. Eine Ausführungsform des CCP 100 implementiert
vier Typen von Task-Ebenen-IDs
einschließlich
Finger-ID, DPE-Such-ID, LCI-Such-ID und SSC-ID. Die Finger-ID wird
von Fingertasks und von dem oben beschriebenen PICH-Entspreizer-Task
verwendet. Die Finger-ID eines Tasks wird zum Indizieren des kohärenten Notizblockspeichers 310,
des internen Notizblockspeichers 312, der FSB-Konfigurationstabelle 1500,
des FSB-Status, der Fingerunterbrechungstabelle und des EOL-Puffers 116 verwendet.
Außerdem
wird die Finger-ID zum Unterscheiden verschiedener Taskereignisse
in den Unterbrechungs-FIFOs verwendet. Die DPE-Such-ID wird von
DPE-Tasks verwendet, wobei gefordert wird, dass irgendwelche laufenden
DPE-Tasks eindeutige DPE-Such-IDs verwenden. Die Such-ID eines DPE-Tasks
wird zum Indizieren der internen Notizblockspeicher 310, 312 und
des DPE-Puffers 114 verwendet. Außerdem wird sie zum Unterscheiden
verschiedener DPE-Taskereignisse in den Unterbrechungs-FIFOs verwendet.
Die LCI-Such-ID wird von LCI-Tasks verwendet, wobei gefordert wird,
dass irgendwelche laufenden LCI-Tasks eindeutige LCI-Such-IDs verwenden. Die
Such-ID eines LCI-Tasks wird zum Indizieren der internen Notizblockspeicher 310, 312 und
des LCI-Puffers 115 verwendet. Außerdem wird sie dazu verwendet,
verschiedene LCI-Taskereignisse in den Unterbrechungs-FIFOs zu unterscheiden.
Die SSC-ID wird zum Unterscheiden verschiedener SSC-Suchtaskereignisse
in den Unterbrechungs-FIFOs und zum Indizieren des SSC-Puffers 140 verwendet.
Ferner besitzt jeder Walsh-Untertask in jedem Walsh-Satz, wie im Folgenden
ausführlicher
diskutiert wird, eine eindeutige Walsh-ID, damit er sich von anderen
Walsh-Untertasks unterscheidet.
-
Wie
oben dargelegt wurde, unterhält
der CCP 100 ein MAX_TASKS-Bit-Task-Start/Stopp-Statusregister, das
widerspiegelt, welche Tasks "freigegeben" sind. Freigegebene
Tasks sind jene, die "laufen" "auf den Lauf warten" oder "auf den Stopp warten". Der CCP 100 holt einen Task
nur dann, wenn er freigegeben ist. Somit werden gesperrte Tasks übersprungen
und verbrauchen keine CCP-Zyklen.
Der CCP 100 gemäß einer bevorzugten
Ausführungsform
kann automatisch Tasks, die abgeschlossen worden sind, einschließlich PSC-Suche,
DPE, LCI und PICH, autonom sperren stoppen. Alle anderen Tasks werden
am meisten bevorzugt durch den Host-Prozessor gestoppt. Der CCP 100 kann
keine Tasks autonom starten. Allgemein fordert der Host-Prozessor
das Starten und Stoppen von Tasks des CCP 100 an der Taskaktualisierungsgrenze 400 an, wobei
alle Tasks, wie oben dargelegt wurde, auf Einzelgrundlage gestartet
oder gestoppt werden können.
Der Host-Prozessor stellt das richtige Taskanforderungsbit ein und
schreibt den Typ der Anforderung in das Taskanforderungsregister
für den
Task. Ein Task, der freigegeben ist, kann oder kann nicht aktiv
laufen, da dies davon abhängt,
ob seine Startzeit erreicht worden ist. Wenn die Startzeit nicht
erreicht worden ist, "wartet" der freigegebene
Task darauf "zu
laufen", wobei ein
Zyklus des CCP 100 pro Task verbraucht wird. Ein Task,
der "läuft" oder "auf den Stopp wartet", läuft aktiv
und kann mehrere Zyklen des CCP 100 verbrauchen.
-
Nunmehr
weiter anhand von 49 und unter Berücksichtigung
der obigen Vorschriften für
die hier diskutierten Ausführungsformen
geht der CCP 100, wie durch den Übergang "A" dargestellt
ist, aus einem "gestoppten" in einen "auf Lauf wartenden" Zustand über, wenn
ein synchroner Start angefordert ist. Wie durch den Übergang "B" dargestellt ist, geht der CCP 100 aus
einem "auf Lauf
wartenden" Zustand
in einen "gestoppten" Zustand über, wenn
ein sofortiger Stopp angefordert ist. Wie durch den Übergang "C" dargestellt ist, geht der CCP 100 aus
einem "auf Lauf
wartenden" Zustand
in einen "laufenden" Zustand über, wenn
die Schlitzaktivierungszeit erreicht ist. Wie durch den Übergang "D" dargestellt ist, geht der CCP 100 aus
einem "laufenden" Zustand in einen "auf Stopp wartenden" Zustand über, wenn
ein synchroner Stopp angefordert ist. Wie durch den Übergang "E" dargestellt ist, geht der CCP 100 aus
einem "auf Stopp
wartenden" Zustand
in einen "gestoppten" Zustand über, wenn
entweder die Schlitzaktivierungszeit kommt oder ein sofortiger Stopp
angefordert ist. Wie durch den Übergang "F" dargestellt ist, geht der CCP 100 aus
einem "laufenden" in einen "gestoppten" Zustand über, wenn
ein sofortiger Stopp angefordert ist oder ein Task schließlich abgeschlossen wird.
Wie durch den Übergang "G" dargestellt ist, geht der CCP 100 schließlich aus
einem "gestoppten" Zustand in einen "laufenden" Zustand über, wenn
ein sofortiger Start angefordert ist.
-
Aufgrund
des Wesens des Kanals ist festgestellt worden, dass der Fingertask
periodische Einstellungen seiner Zeitgebung erfordert. Wie oben
beschrieben wurde, wird dieser Prozess unter Verwendung des Zeitgebungseinstellmerkmals
in den vorstehenden Taskanforderungs/Taskanforderungs-ID-Registern
ausgeführt,
wobei er durch das erstmalige Schreiben der vollständigen neuen
Fingertask-Informationen einschließlich Änderungen der Abtastwertzahl,
der Zeitgebungseinstell-Richtungsbits und des Rahmenversatzes (wenn überhaupt)
in den Taskpuffer 180 beginnt. Nachfolgend werden die Taskanforderungs-ID-Informationen
einschließlich
des Einstellens der Zeitgebungseinstellungsfreigabe-, der Ladefreigabe-
und der Sofortladebits in das richtige ID-Register geschrieben.
Schließlich
wird das richtige Bit, wie etwa oben anhand von 8 diskutiert
wurde, in dem Taskanforderungsregister eingestellt. Gelegentlich
wurde festgestellt, dass die Zeitgebungseinstellungen den CCP 100 zwingen,
eher 32 Chips gleichzeitig als 16 Chips zu entspreizen. Es wurde festgestellt,
dass der Datenpfad 300 in den meisten Situationen in jeder
Beziehung die Zusatzsymbole oder die Partialsymbole versorgt. Allerdings
wurde in einer Ausführungsform
festgestellt, dass die maximale Symbolenergie die zusätzlichen
16 Chips nicht berücksichtigte,
wenn der Spreizfaktor entweder 4 oder 8 war.
-
Am
meisten bevorzugt kann ein Task relativ zu seiner eigenen Schlitz/Rahmen-Zeitgebung
synchron neu konfiguriert werden. Dieses Merkmal kann verwendet
werden, um die im Folgenden beschriebene komprimierte Betriebsart
sowie weitere synchrone Neukonfigurationen zu unterstützen. Wie
oben diskutiert wurde, kann ein Task seine Konfiguration vorzugsweise
an Schlitzgrenzen starten, stoppen oder neu laden, indem er die
richtige Aktion für
diesen Task anfordert und die Schlitzgrenze identifiziert, damit
diese Aktion stattfindet. Falls eine Walsh-Tabelle eine synchrone Änderung
benötigt,
sollten vorzugsweise ein neuer Walsh-Zeiger und ein neuer Walsh-Eintrag
neu geladen werden. Falls ein Eintrag der FSB-Konfigurationstabelle 1500 eine Änderung
benötigt,
sollte ähnlich
vorzugsweise der FSB-Konfigurations-Pingpong-Eintrag (FSBC-Pingpong-Eintrag)
für diesen
Task, der nicht verwendet wird, geändert und neu geladen werden.
-
50 veranschaulicht
eine zur Verwendung mit dem CCP 100 geeignete Fingeränderungstechnik 5000 in
der komprimierten Betriebsart gemäß einer Ausführungsform
der vorliegenden Erfindung. Wenn ein Finger in die und aus der komprimierten
Betriebsart geht, muss er Versorgung der Verdopplung der Anzahl
der Symbole bei der Verringerung des Spreizfaktors (SF) möglicherweise
zusätzlichen
Speicher zuordnen. Der nicht genutzte Eintrag der Pingpong-FSB-Konfigurationstabelle 1500 kann
geändert
werden und der Fingertask so neu geladen werden, dass auf die neue
FSB-Konfiguration Bezug genommen wird. Um die Fingeränderung
während
der komprimierten Betriebsart beispielhaft zu erläutern, wird
im Folgenden eine Technik gemäß einer
Ausführungsform
zusammengefasst.
- 1) Stelle Fingernominalbedingungen,
Nominal-SF, ein und starte den Finger;
- 2) schreib bei Benachrichtigung über die komprimierte Betriebsart
während
des letzten normalen Rahmens eine neue Taskbeschreibung in den Taskpuffer 180,
der die Informationen über
die neu komprimierte Betriebsart einschließlich Änderung von SF, Walsh-Zeiger
und bei Bedarf FSB-Konfigurationszeiger enthält, damit sie am Ende des Schlitzes
14 (15-ter Schlitz) als seine Taskbeschreibung neu geladen werden. Schreib
eine Taskanforderung, um den Task am Ende des Schlitzes 14 synchron
neu zu laden (5002);
- 3) schreib, nachdem der in Schritt 2 beschriebene Wechsel stattgefunden
hat (und seine Schlitz-ID nicht mehr benötigt wird), eine Taskanforderung,
um den Task am Ende des richtigen Schlitzes synchron zu stoppen
(5004);
- 4) schreib, nachdem der Task gestoppt wurde (und seine Schlitz-ID
nicht mehr benötigt
wird), eine Taskanforderung, um den Task synchron (erneut) zu starten,
in den richtigen Schlitz (5006). (Die alte Taskbeschreibung
ist bereit, erneut zu laufen, wobei keine Änderungen erforderlich sind.);
und
- 5) schreib, nachdem der Task gestartet ist, eine Taskanforderung,
um den Task am Ende des Schlitzes 14 (15-ter Schlitz) 5008 synchron
neu zu laden (zurück
zu den Nominalbedingungen). (Die ursprüngliche Nominal-Task-Beschreibung
wartet auf der Software-Seite des Taskpuffers 180, wobei
sie bereit ist, erneut zu laufen, ohne dass Änderungen erforderlich sind.)
-
Wie
oben dargelegt wurde, können
alle Tasks des CCP 100 sofort an der Taskaktualisierungsgrenze 400,
an der die Anforderung gestellt wird, oder synchron zu ihrer eigenen
Schlitzzeitgebung gestartet werden. Der Startschlitz kann der Funkschlitz
0 bis 14 oder der nächste
(unter Verwendung von Schlitz 15 charakterisierte) Funkschlitz sein.
Gemäß einer
Ausführungsform
verbraucht ein Task, der "auf
Lauf wartet" einen
Zyklus des CCP 100, bis er in den "laufenden" Zustand eintritt, wobei er zu diesem
Zeitpunkt die durch seine Spezifikationen bestimmte Anzahl der Zyklen
des CCP 100 verwendet. Am meisten bevorzugt werden die
DPE-, PCI-, LCI- und PICH-Tasks an einer Schlitzgrenze gestartet,
um den richtigen Betrieb sicherzustellen. Selbstverständlich kann
ein sofortiger Start eines Fingertasks in einigen Situationen unerwünscht sein;
allerdings sind die EOL-Daten in dieser Situation erst nach Abschluss
des ersten vollen Rahmens richtig.
-
Ferner
ist selbstverständlich,
dass einige Tasks ohne Ende ausgeführt werden, während andere
Tasks gut definierte Endzeiten haben. Gemäß einer Ausführungsform
sind Finger- und SSC-Tasks ununterbrochen, während DPE-, PSC-, LCI- und PICH-Tasks Einmal-Tasks
sind. Um die funktionalen Fähigkeiten
und Ope rationseigenschaften für
eine Ausführungsform
des CCP 100 beispielhaft weiter zu erläutern, werden diese Tasks nun
im Folgenden anhand der 51–60 ausführlicher
beschrieben. Selbstverständlich
können
auch weitere Ausführungsformen
des CCP 100 formuliert werden, indem z. B. alle "nicht verwendeten" Bitfelder auf null gesetzt
werden, um die Kompatibilität
mit spezifischen weiteren Ausführungsformen
sicherzustellen.
-
Wie
oben dargelegt wurde, wird der Fingertask zum Demodulieren von Fingern
und zur EOL-Messung (DLL-Unterstützung)
verwendet. Entspreizte Fingersymbole werden in dem Fingersymbolpuffer 106 gespeichert
und EOL-Messwerte an den EOL-Puffer 116 ausgegeben. Der
Fingertask kann bis zu drei Unterbrechungen einschließlich Pilot,
TPC und Schlitzende aktivieren. Diese Unterbrechungen werden unter
Verwendung der anhand von 10 beschriebenen
Fingerunterbrechungstabelle 1002 freigegeben und angegeben.
Die EOL-Ergebnisse werden einmal pro Rahmen ausgegeben; wobei die
Ergebnisse, da die Fingertasks keine gespeicherte Historie haben,
auf der momentanen Funkschlitznummer beruhen. Das heißt, dass
ein Finger an der nächsten
Rahmengrenze neu synchronisiert wird, wenn er an einer anderen als
an einer Rahmengrenze gestartet wird. Nach Abschluss des ersten
vollen Rahmens sind die EOL-Ergebnisse dann richtig. (Dabei sind allerdings
die Symbolergebnisse sofort ungültig.)
Hinsichtlich EOL-Messungen kann die Anzahl der Zeitschlitze zur
kohärenten
Akkumulation des Piloten NTS = 0,4, 1, 2,
3, 5, 7 und 15 sein. Somit gibt es abgerundet (15/NTS)
Energieakkumulationen pro Rahmen. Falls NTS nicht
durch 15 teilbar ist, werden die letzten gebrochenen verbleibenden
(15/NTS) abgerundeten (15/NTS)
Schlitze des Piloten in dem Rahmen in der Energieakkumulation nicht
verwendet. Die Schlitzunterbrechung des Fingertasks soll verwendet
werden, um den FSB 106, der einen Schlitz von Symbolen
wiedergewinnt, die abgeschlossen worden sind, zu bedienen. Die in
dem oben anhand der 32–39 diskutierten
Unterbrechungs-FIFO
gespeicherten Informationen enthalten die Pufferschlitznummer zur
Hilfe beim Identifizieren des Platzes der abgeschlossenen Symbole.
Da es 15 Schlitze pro Rahmen gibt, ist der erste Schlitz der Daten,
die verarbeitet werden, nachdem ein Fingertask zu laufen begonnen
hat, nicht notwendig in dem ersten Schlitz des in seinem FSB-Konfigurationseintrag
definierten Mehrschlitz-Ringpuffers. Somit erhält der Host-Prozessor diese
Informationen am meisten bevorzugt von dem Unterbrechungs-FIFO.
Nachdem der erste Schlitz von Informationen gespeichert worden ist,
werden, wie es in einer Ringpufferanordnung zu erwarten ist, die
nachfolgenden Schlitze gespeichert. Der maximale Energiewert jeder
Finger-ID/Walsh-ID-Kombination
wird einmal pro Schlitz in einen Vier-Schlitz-Ringpuffer (Finger-Max-Puffer 4200)
ausgegeben, um bei der Kombination von RAKE-Symbolen zu helfen.
-
51 veranschaulicht
einen zur Verwendung in Verbindung mit dem CCP
100 geeigneten
Fingertaskpuffer
5100, der gemäß einer bevorzugten Ausführungsform
formatiert ist. Wie zu sehen ist, hat der Fingertask einen Task-Opcode
5102 (z.
B. 0100). Außerdem
enthält
der Fingertask eine Eingangs-ID
5104, die so arbeitet,
dass sie einen besonderen Eingangspuffer
102 von I/Q-Daten
302 zur
Verarbeitung auswählt.
Eine Finger-ID
5106 ist ein anwenderdefiniertes Feld, das
für alle
Fingertasks eine eindeutige Identifizierungsnummer enthält. Auf
die Bitwerte "000" bis "111" wird in der Reihenfolge
ein Spreizfaktor
5108 (z. B. 4, 8, 16, 32, 64, 128, 256,
512) abgebildet. Falls für
den EOL eine kohärente
Akkumulation gewählt
worden ist, wird das N
TS-Feld
5110 (bezieht
sich nur auf die EOL-Verarbeitung) dazu verwendet, die Anzahl der
Zeitschlitze zum kohärenten
Akkumulieren des Piloten zu implementieren. Gemäß einer Ausführungsform
ist das N
TS-Feld
5110 auf die in
der folgenden Tabelle 2 gezeigten Werte beschränkt. Tabelle
2 (N
TS-Feldwerte)
-
Ein
Walsh-Zeiger 5112 wählt
einen von 32 Sätzen
von Walsh-Untertasks in der Walsh-Tabelle 1300 aus. Ein
Abtastwert Nr. 5114 wird dazu verwendet auszuwählen, welche
Unterchip-Abtastwerte zu verarbeiten sind. Ein komprimiertes Bit 5116 wird
auf "1" eingestellt, um
anzuzeigen, dass der Finger in der komprimierten Betriebsart ist,
was die EOL-Verarbeitung beeinflusst. Falls der Finger startet,
werden die kohärenten
und nicht kohärenten
Akkumulationen gelöscht.
Während
der Finger läuft,
wird jedes Mal, wenn eine neue Berechnung abgeschlossen wird, die
laufende nicht kohärente
Summe ausgegeben. Die Timing_Adjust-Bits 5118 widerspiegeln
eine Änderung
der Abtastzeit für
den Fingertask. Die Optionen enthalten keine Änderung und +/– delta,
wobei delta ein Unterabtastwert eines Chips ist. Die Zeitgebungsaktualisierung
ist in dem Abtastwertfeld des Tasks nicht widerspiegelt; stattdessen
sind die Informationen intern in dem CCP 100 gespeichert.
Die Werte für
delta können "00", was keine Änderung
darstellt, "01", was +1 Unterchip-Abtastwerteinstellung
(auf späteren
Abtastwert) darstellt, und "1X", was –1 Unterchip-Abtastwerteinstellung
(auf früheren
Abtastwert) darstellt, sein. Um eine spezifische Fingertask-Zeitgebung
richtig einzustellen, muss für
den Task ein Taskzeitgebungseinstellungs-Anforderungsbit eingestellt
werden, wobei irgendwelche Änderungen
in der Abtastzeit des Fingertasks und Langcodeversatzfelder der
in den Taskpuffer 180 geschriebenen Taskbeschreibung eingewechselt
werden müssen.
Das Zeitgebungseinstellungs-Anforderungsbit informiert den CCP 100 über die Änderungen
der Abtastzeit und den Langcodeversatz des Fingertasks, die geschehen
sind, so dass er seine interne Verarbeitung dementsprechend ändern könnte. Es
ist zu sehen, dass der Fingertask fehlerhafte Ergebnisse ausgeben
und zu falschen Zeiten Unterbrechungen auslösen kann, wenn Änderungen
entweder der Abtastzeit oder des Langcodeversatzes vorgenommen werden,
während
keine Taskzeitgebungseinstellungs-Anforderung erfolgt. Ein FSBC-Pingpong-Bit 5120 wird
auf "0" gesetzt, um die
Ping-Seite der FSB-Konfigurationstabelle 1500 zu verwenden,
um zu bestimmen, wohin Symbole aus zugeben sind, während es
auf "1" eingestellt wird,
um die Pong-Seite der FSB-Konfigurationstabelle 1500 zu
verwenden. Ein Rahmenversatz-Feld 5122 gibt den Versatz
des Rahmens relativ zu dem Start des Langcodes an. Dies ist am meisten
bevorzugt immer ein Vielfaches von 256 Chips, so dass das Feld 5122 das
Vielfache von 256 Chips aus dem Langcodeversatz angibt. Der Start
des Rahmens folgt am meisten bevorzugt immer auf den Start des Langcodes,
so dass das Feld 5122 angibt, wie viel später (vorzeichenlos).
Ein Langcode-plus-Rahmenversatz-Feld 5124 gibt den Versatz
relativ zu dem globalen Chipzählwert
(GCC) an, bei dem der Rahmen beginnt. Wie oben dargelegt wurde,
geben die vier MSB den Versatz in Funkzeitschlitzen an, während die
verbleibenden LSB den zusätzlichen
Unterschlitz in Chips angeben. Ein Feld von NWalsh Bits 5126 stellt
die Anzahl aktiver Walsh-Untertasks minus eins dar. Dieser Parameter
gibt an, dass die ersten NWalsh + 1 Walsh-Untertasks
alle aktiv sind. Für
Fingertasks mit Finger-IDs größer oder
gleich NUM_LARGE_FINGERS ist dieses Feld 5126 auf "000", "001", "010" und "011" beschränkt. Die
EOL_en-Feldbits 5128 geben an, ob einer der Walsh-Untertasks
ein EOL-Walsh-Untertask ist. Gemäß einer
bevorzugten Ausführungsform
der Erfindung gibt Einstellen der EOL_en-Feldbits auf "1" an, dass der erste Walsh-Untertask
der EOL-Walsh-Untertask sein muss, wobei die EOL-Verarbeitung um 4 dezimiert wird, wenn
der Spreizfaktor 4 ist, und um 2 dezimiert wird, wenn der Spreizfaktor
8 ist (eine Beschränkung,
die nur DPCCH, nicht CPICH betrifft). Ein Pilot_location-Bit 5130 weist
den CCP 100 an, aus der oben anhand von 17 diskutierten
Pilot-TPC-Positionstabelle das Pilotgebiet 0 oder 1 zur Verwendung
bei der Bestimmung einer Pilotunterbrechung für den Fingertask auszuwählen (die EOL-Verarbeitung
kann einen anderen Pilot-Platz verwenden, der in Verbindung mit
einem Walsh-Untertask angegeben ist). Schließlich gibt ein Langcode-ID-Feld 5132 den
Gold-Code an, der für
die Langcodeverwürfelung
verwendet wird (0-24, 575). Der Fingertask erfordert eine Anzahl
von Zyklen, die gleich der Anzahl von Nicht-EOL-Untertasks plus
der Anzahl der Zyklen, die für
einen EOL-Walsh-Untertask erforderlich sind (nur einer pro Fingertask
ist zulässig),
ist, wobei ein EOL-Walsh-Untertask gemäß einer bevorzugten Ausführungsform
drei Zyklen braucht.
-
52 veranschaulicht
ein Walsh-Untertask-Format 5200, das zur Anzeige von Finger-Nicht-EOL-Walsh-Einträgen in der
Walsh-Tabelle 1300 geeignet ist, während 53 ein
Walsh-Untertask-Format 5300 veranschaulicht, das zur Anzeige
von Finger-EOL- und Finger-DPE-Task-Einträgen in der Walsh-Tabelle 1300 geeignet
ist. Einträge
in der Walsh-Tabelle 1300 werden hauptsächlich für Finger- und DPE-Tasks verwendet.
Wenn es einen EOL-Walsh-Untertask gibt, wird am meisten bevorzugt
gefordert, dass er auf dem ersten Platz ist. Am meisten bevorzugt
stellen zwei Optionen weniger als die maximale Anzahl von Einträgen (8 oder
4) bereit. Die erste Option erfordert, dass der Walsh-Untertask
zu Beginn des Walsh-Satzes erscheint und aufeinander folgend ist,
wobei das NWalsh-Feld 5126 auf
die richtige Größe eingestellt
wird. Die zweite Option ist anzugeben, dass das Walsh-Sperrbit irgendeines
Walsh-Untertasks, der in dem ersten NWalsh-Feld 5126 nicht
verwendet wird, gesetzt ist, um anzugeben, dass er gesperrt ist.
Ein Nachteil der zweiten Option ist, dass selbst dann, wenn ein
Untertask gesperrt ist, für
jeden der NWalsh-Untertasks ein Zyklus verbraucht
wird. Wie oben dargelegt wurde, werden Walsh-Untertasks am meisten
bevorzugt in aufeinander folgender Adressenreihenfolge in einem
Satz bearbeitet.
-
Nunmehr
weiter anhand von 52 ist zu sehen, dass die Walsh-Untertask-Parameter für Nicht-EOL-Fingertasks
ein Walsh-Sperrbit 5202 enthalten, das angibt, ob ein zugeordneter
Walsh-Untertask freigegeben oder gesperrt ist, wobei ein Walsh-Sperrbit 5202,
das auf "1" eingestellt ist,
den zugeordneten Walsh-Untertask sperrt. Eine Walsh-ID 5204 ist
ein anwenderdefiniertes Feld, das in einem besonderen Walsh-Untertask-Satz
der Walsh-Tabelle 1300 eindeutig ist. Eine Walsh-Id 5204 kann
vorzugsweise in anderen Walsh-Untertask-Sätzen in der Walsh-Tabelle 1300 wiederverwendet
werden. Ein Walsh-Code 5206 gibt die Walsh-Hadamard-Codenummer
an, wobei diese Nummer des Walsh-Codes 5206 für einen
Spreizfaktor (SF) < 512
am meisten bevorzugt log2(SF) Bits, linksbündig und
rechts mit Nullen aufgefüllt,
ist. Auf diese Weise stimmt die Nummer des Walsh-Codes 5206 für SF = 512
mit derselben Codenummer und mit dem Codemuster der anderen Spreizfaktoren überein.
-
Wieder
anhand von 53 ist zu sehen, dass die Walsh-Untertask-Parameter
für die
Finger-EOL- und Finger-DPE-Tasks ebenfalls ein Walsh-Sperrbit 5302 enthalten,
das seinen zugeordneten Walsh-Untertask sperrt, wenn es auf "1" eingestellt ist. Ein Walsh-Code-Feld 5304 arbeitet
wie oben anhand von 52 beschrieben für Walsh-Untertask-Parameter
für Nicht-EOL-Fingertasks.
Das Setzen eines Kohärente-Option-Bits 5306 gibt
an, dass die kohärente
Verarbeitung für
mehr als ein Symbol ausgewählt
ist (beinhaltet ein Pilotgebiet); andernfalls ist die kohärente Verarbeitung
auf ein Symbol beschränkt
und werden die Energien über
viele Symbole (Pilot- oder Nicht-Pilot-Gebiet) akkumuliert. Ein
Verarbeitungsspezifiziererfeld 5308 wird für die kohärente Mehrsymbolverarbeitung
(nur Pilot) verwendet. Das Verarbeitungsspezifiziererfeld 5308 ermöglicht 1)
kohärente
Akkumulationen länger
als ein einzelnes Symbol, wobei NTS wie
zuvor diskutiert die Länge der
kohärenten
Akkumulation angibt; und 2) die kohärente Einzelsymbolverarbeitung
(Pilot oder nicht Pilot), die die nicht-kohärente Akkumulation von Symbolen
ermöglicht
und bei der NTS ignoriert wird.
-
54 veranschaulicht
ein ausführlicheres
Diagramm eines zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Verarbeitungsspezifiziererfelds 5400 für die kohärente Mehrsymbolverarbeitung
gemäß einer
bevorzugten Ausführungsform.
Wie zu sehen ist, besitzt das Verarbeitungsspezifiziererfeld 5400 ein
Pilotgebietbit 5402, das verwendet wird, um eines der zwei
in der oben anhand von 17 diskutierten "Pilot-TPC-Positionstabelle" angegebenen Pilotgebiete
anzugeben. Ein Pilotbits-Auswahlfeld 5404 wird dazu verwendet,
eine von vier Optionen (die Werte "1" bis "4") in der oben anhand von 18 diskutierten
Pilotbits-Tabelle oder den gemeinsamen Pilotkanal (Wert "0") auszuwählen. Ein Sende-Diversity-Freigabebit 5406 ist
auf "1" eingestellt, um
die Diversity-Pilotverarbeitung so freizugeben, dass die Energien
von zwei Antennen kombiniert werden.
-
55 veranschaulicht
ein ausführlicheres
Diagramm eines zur Verwendung in Verbindung mit dem CCP 100 geeigneten
Verarbeitungsspezifiziererfelds 5500 zur kohärenten Einzelsymbolverarbeitung
gemäß einer
bevorzugten Ausführungs form.
Wie zu sehen ist, besitzt das Verarbeitungsspezifiziererfeld 5500 ebenfalls
ein Pilotgebietbit 5502, das die Auswahl eines der zwei
in der oben diskutierten "Pilot-TPC-Positionstabelle" angegebenen Pilotgebiete
ermöglicht.
Ein Pilot/Nicht-Pilot-Bit 5504 ist auf "1" eingestellt,
um das wie durch das Pilotgebietbit 5502 definierte Pilotgebiet
auszuwählen,
oder ist andernfalls auf "0" eingestellt, um
ein Gebiet außerhalb
des definierten Pilotgebiets auszuwählen. Einstellen des Verarbeite-alle-Bits 5506 auf "1" veranlasst, dass das Pilot/Nicht-Pilot-Bit 5504 ignoriert
wird. Wenn das Verarbeite-alle-Bit 5506 auf "1" eingestellt ist, werden alle Symbole
in dem Schlitz verarbeitet, während
dann, wenn das Verarbeite-alle-Bit 5506 auf "0" eingestellt ist, nur die Symbole in
dem durch das Pilotgebiet und durch das Pilot/Nicht-Pilot-Bit 5504 definierten Gebiet
verarbeitet werden.
-
56 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
DPE-Suchtask-Format 5600 für mehrere DPE-Suchtaskparameter,
die den DPE-Taskregistern 5602, 5604, 5606, 5608 und 5610 gemäß einer
bevorzugten Ausführungsform
zugeordnet sind. Die DPE-Suche misst die Pfadenergien in einem angegebenen
Fenster von Versätzen.
In jedem CCP-Zyklus werden zwei Versätze gesucht. Sie unterstützt die
Bestimmung der stärksten
Pfade in irgendeinem Walsh-Code-Kanal (der durch ein Bündel oder durch
kein Bündel
gebildet sein kann). Wenn zwei Eingangsantennen vorhanden sind,
kann eine alternierende Antennenbetriebsart gewählt werden, in der alternierende
Symbole von alternierenden Antennen entspreizt werden. Die Ergebnisse
werden in dem oben diskutierten DPE-Puffer 114 gespeichert.
Jeder DPE-Suchtask besitzt eine eindeutige DPE-Such-ID, damit er
sich von anderen DPE-Tasks unterscheidet. Die Such-ID steuert, wo
in dem DPE-Puffer 114 die Ergebnisse gespeichert werden.
Am meisten bevorzugt darf die Such-ID nicht geändert werden, während der
DPE-Task läuft, da
für einige
Ausführungsformen
des CCP 100 wahrscheinlich fehlerhafte Ergebnisse auftreten.
Wie oben dargelegt wurde, arbeitet der DPE-Suchtask in einer Einmal-Betriebsart.
Wenn Pilotsymbole kohärent über mehrere
Symbole akkumuliert werden (was durch das Kohärente-Option-Bit 5306 = "1" in dem Walsh-Untertask angegeben ist),
steuert NTS die Anzahl der Funkzeitschlitze
der kohärenten
Akkumulation, wobei die Ergebnisse NTS·NNTS Funkzeitschlitze nach dem Start des Tasks
ausgegeben werden. Wenn Symbolenergien akkumuliert werden (was durch
das Kohärente-Option-Bit 5306 = "0" in dem Walsh-Untertask angegeben ist),
wird NTS ignoriert, wobei die Ergebnisse
NTS Funkzeitschlitze nach dem Start des
Tasks ausgegeben werden. Die Werte für NTS und
NNTS werden aus der DPE-Energieakkumulationstabelle
gelesen, auf die durch die Such-ID Beziehung genommen wird und die
zuvor in Verbindung mit 22 diskutiert
wurde. Wie oben dargelegt wurde, wird die DPE-Suche um 4 dezimiert,
wenn der Spreizfaktor 4 ist, und um 2 dezimiert, wenn der Spreizfaktor
8 ist (eine Beschränkung,
die nur DPCCH, nicht CPICH, betrifft).
-
Wieder
anhand von 56 ist zu sehen, dass die DPE-Suchtaskparameter
ein Task-Opcode-Feld 5612 (z. B. "0011")
sowie ein Eingabe-ID-Feld 5614, das dazu verwendet wird,
einen Eingangspuffer in mehreren Eingangspuffern 102 auszuwählen, enthält. Ein
Alt_Ant-Bit 5616 wird dazu verwendet, aus zwei Eingangspuffern
in den mehreren Eingangspuffern 102 eine alternierende
Antennenbetriebsart auszuwählen. Eine
DPE-Such-ID 5618 unterscheidet verschiedene DPE-Tasks.
Ein Spreizfaktorfeld 5620 wird für SF = 4, 8, 16, 32, 64, 128,
256 oder 512 in der Reihenfolge auf die Bitwerte "000" bis "111" abgebildet. Ein
Unterbrechungsfreigabefeld 5622 wird zur Charakterisierung
von Unterbrechungen verwendet, wobei das MSB eine Unterbrechung
freigibt und wobei die zwei LBs einen besonderen Unterbrechungs-FIFO
angeben. Ein Walsh-Zeigerfeld 5624 wird dazu verwendet,
einen Walsh-Untertask-Satz auszuwählen, wobei der Walsh-Untertask
an dem ersten Platz verwendet wird und wobei ferner das Walsh-Freigabefeld
der anderen Untertasks ignoriert wird, wodurch andere Walsh-Untertasks
ignoriert werden. Ein Abtastwertnummer-Feld 5626 wird dazu
verwendet auszuwählen,
welcher Unterchip-Abtastwert "rechtzeitig" ist. Ein Rahmenversatz-Feld 5628 in dem
DPE-Taskregister 5606 wird dazu verwendet, den Versatz
eines Rahmens relativ zu dem Start des Langcodes anzugeben. Der
Rahmenversatz ist am meisten bevorzugt immer ein Vielfaches von
256 Chips, so dass das Rahmenversatz-Feld 5628 das Vielfache
von 256 Chips von dem Langcodeversatz angibt. Am meisten bevorzugt
folgt der Start des Rahmens immer auf den Start des Langcodes, so
dass das Rahmenversatz-Feld 5628 angibt, wie viel später (und
vorzeichenlos ist). Ein Langcode-plus-Rahmenversatz-Feld 5630 wird
dazu verwendet, den Versatz relativ zu der globalen Chipzählung anzugeben,
bei der der Rahmen beginnt, wobei die vier MSB den Versatz in Funkzeitschlitzen
angeben, während
die verbleibenden LSB den zusätzlichen
Unterschlitz in Chips angeben. Ein 1/2-Chip-Freigabebit 5632 wird
dazu verwendet, die Verarbeitung von Abtastwerten mit einer Auflösung von
1/2 Chip freizugeben. Ein Fenstergrößefeld 5634 (5 Bits)
wird dazu verwendet, eine Fenstergröße von 16·(n + 1) relativ zu dem Langcodeversatz
anzugeben, wobei 0 ? n < 31
ist. Ein Langcode-ID-Feld 5636 wird
dazu verwendet, Gold-Code anzugeben, der der Langcodeverwürfelung
zugeordnet ist. Gemäß einer
Ausführungsform
erfordert der DPE-Suchtask
unabhängig
davon, ob die 1/2-Chip-Verarbeitung freigegeben ist, eine Anzahl
von Zyklen, die gleich der Hälfte
der Anzahl von Versätzen
in der Fenstergröße ist.
-
57 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
PSC-Suchtask-Format 5700 für mehrere PSC-Suchtaskparameter,
die den PSC-Taskregistern 5702, 5704, 5706 und 5708 gemäß einer
bevorzugten Ausführungsform
zugeordnet sind. Der PSC-Suchtask unterstützt das Auffinden des PSC in
der WCDMA-Norm, der die Schlitzzeitgebung bestimmt. Die Ergebnisse
werden in dem PSC-Suchpuffer 118 gespeichert und können durch
den Host-Prozessor gelesen werden, wenn der Task abgeschlossen ist.
In einer Ausführungsform
ist jederzeit nur ein laufender PSC-Suchtask zulässig, wobei es am meisten bevorzugt
der erste Task sein muss, der läuft,
damit die Nachverarbeitungs-Hardware wie oben dargelegt Zeit hat,
ihre Verarbeitung abzuschließen.
-
Wieder
anhand von 57 ist zu sehen, dass die PSC-Suchparameter
ein Task-Opcode-Feld 5710 (z. B. "0001")
enthalten. Ein Eingangs-ID-Feld 5712 wird dazu verwendet,
einen Eingangspuffer aus den mehreren Eingangspuffern 102 auszuwählen. Ein
Unterbrechungsfreigabefeld 5714 wird dazu verwendet, Unterbrechungen
zu charakterisieren, wobei das MSB eine Unterbrechung freigibt,
während
die zwei LSB den Unterbrechungs-FIFO bestimmen. Ein 1/2-Chip-En-Feld 5716 wird
dazu verwendet, die Verarbeitung von Abtastwerten mit einer Auflösung von
1/2 Chip freizugeben. Ein NTS-Feld 5718 wird
dazu verwendet, eine Anzahl von Funkschlitzen zum Akkumulieren von
Energie anzugeben. Ein Abtastwertnummer-Feld 5720 wird
dazu verwendet auszuwählen,
welcher Unterchip-Abtastwert "rechtzeitig" ist. Ein Fensterstartversatzfeld 5722 wird dazu
verwendet, eine Startzeit für
den Task in Chips anzugeben. Ein Fenstergrößefeld 5724 wird dazu
verwendet, die Anzahl von in das Fenster aufzunehmenden Chips anzugeben.
Gemäß einer
Ausführungsform
erfordert der PSC-Suchtask 16 Zyklen, wobei der Task aktiviert wird,
wenn der GCC modulo 2560 gleich dem in dem Fensterstartversatzfeld 5722 angegebenen
Wert ist.
-
58 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
SSC-Suchtask-Format 5800 für mehrere den SSC-Taskregistern 5802, 5804 und 5806 zugeordnete
SSC-Suchtaskparameter gemäß einer
bevorzugten Ausführungsform.
Der SSC-Suchtask führt
einen Teil der zuvor diskutierten Stufe-2-WCDMA-Basisstations-Suche
aus. Er bearbeitet lediglich das ausmaskierte Symbol eines Perch-Kanals
und gibt 16 durch den SSC entspreizte Symbole (mit einer Länge von
16 Chips) sowie 16 durch den PSC entspreizte Symbole pro Funkzeitschlitz
aus. Auf diese Weise arbeitet der SSC-Suchtask ähnlich einem Fingertask. Wie
zuvor dargelegt wurde, findet die verbleibende Stufe-2-Verarbeitung
einschließlich
Anwendung der zweiten Ebene der SSC-Codierung, der Walsh-Hadamard-Transformation
und der angepassten Filterung mit kommafreiem Code in dem Host-Prozessor
oder in der Hardware außerhalb
des CCP 100 statt. Der Platz des ausmaskierten Symbols
ist in dem oben anhand von 23 diskutierten
Suchcodesymbolplatz-Register angegeben. Am meisten bevorzugt verwendet
der SSC-Suchtask eine SSC-ID, die für irgendwelche weiteren SSC-Suchtasks eindeutig
ist und für
die Datenverarbeitung keinen Walsh-Zeiger verwendet. Der resultierende SSC
und der resultierende PSC werden in einem Vier-Schlitz-Ringpuffer in dem oben in Verbindung
mit 47 diskutierten SSC-Puffer 140 angeordnet,
wobei die SSC-Suche eine Schlitz-Ende-Unterbrechung aktiviert, wenn
ein vollständiger
Schlitz von Daten in dem SSC-Puffer 140 bereit ist. Der
SSC-Suchtask startet und stoppt, wie oben anhand von 49 diskutiert
wurde.
-
Weiter
anhand von 58 ist zu sehen, dass die SSC-Suchtaskparameter
ein Opcode-Feld 5808 (z. B. "0101")
sowie ein Eingangs-ID-Feld 5810, das zur Auswahl eines
Eingangspuffers aus den mehreren Eingangspuffern 102 verwendet
wird, enthalten. Ein SSC-ID-Feld 5812 ist ein anwenderdefiniertes
Feld, das eine eindeutige Identifizierungsnummer für alle SSC-Tasks
ist. Ein Unterbrechungsfreigabefeld 5814 nutzt das MSB zur
Freigabe einer Schlitz-Ende-Unterbrechung, während die zwei verbleibenden
LSB einen besonderen Unterbrechungs-FIFO angeben. Ein Abtastwertnummer-Feld 5816 wird
dazu verwendet auszuwählen,
welcher Unterchip-Abtastwert "rechtzeitig" ist. Ein GCC-Versatzfeld 5808 veranlasst,
dass die "Rahmen"-Zeitgebung wie ein
Finger mit LC-Versatz = GCC-Versatz
und Rahmenversatz = 0 ist. Da es der Zweck der SSC-Suche ist, eine
Rahmenzeitgebung festzusetzen, ist die Rahmenzeitgebung für die SSC-Suche
aber beliebig. Das Vorhandensein einer angegebenen "Rahmen"-Zeit ermöglicht nicht,
dass der SSC-Puffer 140 und die zugeordnete SW eine Zeitreferenz
relativ zu der neuen Rahmenzeitgebung haben, die festgesetzt wird.
Auf ähnliche
Weise wie bei dem DPE-Suchtask geben die vier MSB den Versatz in
Funkzeitschlitzen an, während
die verbleibenden LSB den zusätzlichen
Unterschlitzversatz in Chips angeben.
-
59 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
LCI-Suchtask-Format 5900 für mehrere den LCI-Taskregistern 5902, 5904, 5906, 5908 und 5910 zugeordnete LCI-Suchtaskparameter
gemäß einer
bevorzugten Ausführungsform.
Der LCI-Suchtask unterstützt
die Bestimmung des Langcodes aus einer Gruppe von Langcodes ("Stufe-3-Suche"), die in der "Stufe-2-Suche" durch Verarbeitung
des CPICH bestimmt wurden. Die Ergebnisse sind in dem LCI-Puffer 115 gespeichert.
Jeder LCI-Suchtask hat eine eindeutige LCI-Such-ID, damit er sich
von anderen LCI-Tasks unterscheidet. Die LCI-Such-ID steuert, wo
die Ergebnisse in dem LCI-Puffer 115 gespeichert sind.
Am meisten bevorzugt darf diese Such-ID auf keine Weise geändert oder
abgeändert
werden, während
der LCI-Task läuft,
während
andernfalls in Verbindung mit verschiedenen Ausführungsformen des CCP 100 wahrscheinlich
fehlerhafte Ergebnisse auftreten. Wie oben dargelegt wurde, arbeitet
der LCI-Suchtask in der Einmal-Betriebsart. Nach dem Start des LCI-Suchtasks
werden Pilotsymbole kohärent über mehrere
Symbole akkumuliert, während
NTS die Anzahl der Funkzeitschlitze kohärenter Akkumulation
steuert und NTS·NNTS Funkzeitschlitze
die Ergebnisse ausgegeben werden. Die Werte für NTS und
NNTS werden aus der wie oben in Verbindung
mit 22 diskutierten LCI-Energieakkumulationstabelle
lesen, auf die durch die Such-ID Bezug genommen wird. Am meisten
bevorzugt verarbeitet der LCI-Suchtask immer den gemeinsamen Pilotkanal,
während
die Antennen-Diversity eine Option ist.
-
Wieder
anhand von 59 ist zu sehen, dass die LCI-Suchtaskparameter
einen Task-Opcode 5912 (z. B. "0010")
sowie eine Eingangs-ID 5914, die zur Auswahl eines Eingangspuffers
aus den mehreren Eingangspuffern 102 verwendet wird, enthalten.
Wie zu sehen ist, enthält
der LCI-Suchtask außerdem
ein Unterbrechungsfreigabefeld 5916, das zur Charakterisierung
von Unterbrechungen verwendet wird, wobei das MSB eine Unterbrechung
freigibt, während
die zwei LSB zur Anzeige eines spezifischen Unterbrechungs-FIFO
verwendet werden. Ein Abtastwertnummer-Feld 5918 wird dazu
verwendet, einen angegebenen Unterchip-Abtastwert als "rechtzeitig" auszuwählen, während ein
Such-ID-Feld 5920 dazu verwendet wird, zwischen verschiedenen
LCI-Tasks zu unterscheiden. Das LCI-Taskregister 5906 enthält ein Langcode-Versatzfeld 5922, das
dazu verwendet wird, den Versatz des Langcodestarts relativ zu der
globalen Chipzählung
anzugeben, wobei die vier MSB den Versatz in Funkzeitschlitzen angeben,
während
die verbleibenden LSB den zusätzlichen
Unterschlitzversatz in Chips angeben. Ein Sende-(TX-)Diversity-Freigabefeld 5924 gibt
für jeden
der zu testenden Langcodes die Sende-Diversity an. Gemäß einer
bevorzugten Ausführungsform
wird eine "1" dazu verwendet,
die Diversity-Pilotverarbeitung freizugeben, so dass die Energien
von zwei Antennen kombiniert werden, wobei die Bits den Bits des
Code-Freigabefelds 5926 entsprechen. Ein Langcodegruppen-Nummerfeld 5928 wird
dazu verwendet anzugeben, welche Gruppe aus 64 Code-Gruppen jeweils
mit 8 Langcodes zu verarbeiten und zu testen ist. Ein Langcodeeinstellfeld 5930 gibt
den eingestellten Hauptcode (z. B. "00"),
den geraden alternativen Satz (z. B. "01")
oder den ungeraden alternativen Satz (z. B. "10")
an. Ein 1/2-Chip- Freigabebit 5932 ist
vorzugsweise auf "1" eingestellt, um
die Verarbeitung von 1/2-Chip-Zu-Spät-Abtastwerten freizugeben.
Ein Codefreigabefeld 5926 gibt an, welcher der 8 Langcodes
zu testen ist, wobei ein einzelnes Bit den Test jedes Langcodes
freigibt (z. B. Bit 7 für
Code 7 ... bis hinab zu Bit 0 für
Code 0), während
ein einzelnes Bit vorzugsweise auf "1" eingestellt
ist, um anzugeben, dass der Code getestet werden sollte. Gemäß einer Ausführungsform
erfordert der Abschluss des LCI-Suchtasks, dass eine Anzahl von
Zyklen gleich der Anzahl von zu testenden Langcodes ist.
-
60 veranschaulicht
ein zur Verwendung in Verbindung mit dem CCP 100 geeignetes
Seitenwechselanzeigekanal-Suchtask-Format (PICH-Suchtask-Format) 6000 für mehrere
den PICH-Taskregistern 6002, 6004, 6006, 6008 und 6010 zugeordnete
PICH-Suchtaskparameter gemäß einer
bevorzugten Ausführungsform.
Der PICH-Suchtask entspreizt die Symbole in einem angegebenen Fenster
von Versätzen
mit einer Auflösung
von 1/2 Chip. Die Ergebnisse werden gemäß der verwendeten Finger-ID
und der Walsh-ID, auf die der oben in Verbindung mit 13 beschriebene
Walsh-Zeiger zeigt, in dem Fingersymbolpuffer 106 gespeichert. Jeder
PICH-Task besitzt eine eindeutige Finger-ID, damit er sich von anderen
PICH- und Fingertasks unterscheidet. Die resultierenden Daten werden
beginnend von dem Platz, der durch den Ping-Eintrag der FSB-Konfigurationstabelle 1500 für die Finger/Walsh-ID-Kombination
bestimmt ist, in dem (im Folgenden ausführlicher beschriebenen) Fingersymbolpuffer 106 angeordnet.
Die Symbole werden für
den ersten Fensterversatz "rechtzeitig" (1–8 Symbole),
gefolgt von dem ersten Fensterversatz "zu spät" (1–8
Symbole), gefolgt von dem zweiten Fensterversatz "rechtzeitig" (1–8 Symbole)
usw. gespeichert. Falls weniger als 8 Symbole angefordert sind,
wird links für
die fehlenden Symbole in dem FSB 106 Raum gelassen, wobei
der Datenraum aber undefiniert ist. Wie oben dargelegt wurde, arbeitet
der PICH-Suchtask in einer Einmal-Betriebsart für 1–8 Symbole in Verbindung mit
einem Spreizfaktor von 256.
-
Nunmehr
fortsetzend mit 60 ist zu sehen, dass die Seitenwechselanzeigekanal-Entspreizungs-(Such-)Taskparameter
(PICH-Entspreizungs- (Such-)Taskparameter)
einen Task-Opcode 6012 (z. B. "0111")
sowie eine Eingangs-ID 6014, die zur Auswahl eines Eingangspuffers
unter den mehreren Eingangspuffern 102 verwendet wird,
enthält.
Wie zu sehen ist, enthält
der PICH-Suchtask
außerdem
ein Unterbrechungsfreigabefeld 6018, das zur Charakterisierung
von Unterbrechungen verwendet wird, wobei das MSB eine Unterbrechung
freigibt, während
die zwei LSB zur Anzeige eines besonderen Unterbrechungs-FIFO verwendet werden.
Ein Walsh-Zeigerfeld 602 wählt einen besonderen Walsh-Untertask-Satz
aus, in dem der Walsh-Untertask an dem ersten Platz verwendet wird,
während
andere zusammen mit irgendeinem zugeordneten Walsh-Untertask-Freigabefeld
ignoriert werden. Ein Abtastwertnummer-Feld 6022 wird dazu
verwendet, einen angegebenen Unterchip-Abtastwert als "rechtzeitig" auszuwählen, während ein
Finger-ID-Feld 6016 dazu verwendet wird, zwischen verschiedenen
Finger- und PICH-Tasks zu unterscheiden. Das N_Symbols-Feld 6024 bestimmt
die Anzahl der Symbole, die die Anweisung zu verarbeiten hat (gemäß einer Ausführungsform
geben "000" bis "111" 1 bis 8 an). Ein
Rahmenversatz-Feld 6028 im
PICH-Taskregister 6006 wird dazu verwendet, den Versatz
eines Rahmens relativ zu dem Start des Langcodes anzugeben. Am meisten bevorzugt
sind dies immer Vielfache von 256 Chips, wobei das Feld 6028 das
Vielfache von 256 Chips von dem Langcodeversatz angibt. Am meisten
bevorzugt folgt der Start des Rahmens immer auf den Start des Langcodes,
so dass das Feld 6028 angibt, wie viel später (bevorzugt
vorzeichenlos). Das PICH-Taskregister 6008 enthält ein Langcode-plus-Rahmenversatz-Feld 6030,
das zur Anzeige des Versatzes relativ zu der globalen Chipzählung verwendet
wird, bei dem der Rahmen beginnt, wobei die vier MSB den Versatz
in Funkzeitschlitzen angeben, während
die verbleibenden LSB den zusätzlichen
Unterschlitzversatz in Chips angeben. Ein 1/2-Chip-Freigabebit 6032 wird
dazu verwendet, die Verarbeitung von Abtastwerten mit einer Auflösung von
1/2 Chip freizugeben. Ein Fenstergrößefeld 6026 (5 Bits)
wird dazu verwendet, eine Fenstergröße von 16·(n + 1) relativ zu dem Langcodeversatz
anzugeben, wobei n gleich oder größer 0, aber kleiner als 31
ist. Schließlich
gibt ein Langcode-ID-Feld 6034 den Gold-Code an, der zur
Versorgung der Langcodeverwürfelung verwendet
wird. Gemäß einer
Ausführungsform
erfordert der Abschluss des PICH-Suchtasks unabhängig davon, ob die 1/2-Chip- Verarbeitung freigegeben
ist, dass eine Anzahl der Zyklen gleich der Anzahl der Versätze in der
Fenstergröße ist.
-
61 veranschaulicht
eine Ausführungsform
eines Ringpuffers 6100 in dem Fingersymbolpuffer 106.
Wie oben dargelegt wurde, speichert der Fingersymbolpuffer 106 komplexe
I- und Q-Symbole, die sich aus Fingertasks ergeben. Alle Symbole,
einschließlich
Pilot, TPC, Daten und dergleichen, werden in dem Fingersymbolpuffer 106 gespeichert,
nachdem sie durch den Datenpfad 300 des CCP 100 empfangen
und verarbeitet worden sind. Der Fingersymbolpuffer 106 ist
als viele Mehrschlitz-Ringpuffer 6100 implementiert. Gemäß einer
Ausführungsform
ist der Fingersymbolpuffer 160 so implementiert, dass insgesamt
20 k (zwanzigtausend) komplexe Symbole (32 Bits/Symbol) mit Spreizfaktoren
von 8 bis 512 gespeichert werden können oder 40 k (vierzigtausend)
komplexe Symbole (16 Bits/Symbol) mit einem Spreizfaktor 4 gespeichert
werden können.
Um die Neukonfiguration der Symbolpufferung zu minimieren, wenn
Finger oder Walsh-Kanäle hinzugefügt und entfernt
werden, verwendet jeder Walsh-Kanal jedes Fingers am meisten bevorzugt
einen anderen Ringpuffer 6100 zum Speichern von Symbolen.
Gemäß einer
oben beschriebenen Ausführungsform
ist die Gesamtgröße des FSB 106 20
k × 32-Bit-Wörter. Vorzugsweise
gibt jede Finger-ID/Walsh-ID-Kombination
einen Mehrschlitz-Ringpuffer 6100 in dem FSB 106 an,
der zum Speichern seiner Daten verwendet wird, wobei jeder Schlitz 6104 eine
Startadresse 6102 hat, so dass zwischen den den Schlitzen 6104 zugeordneten
Startadressen 6102 einer oder mehrere Versätze 6106 definiert
werden können.
Dieses Merkmal ermöglicht,
dass die Walsh-Kanäle
für denselben
Fingertask auf Schlitzgrundlage angrenzend aneinander in einem Schlitz
angeordnet werden können.
Gemäß einer
Ausführungsform
ist der Host-Prozessor (z. B. der DSP) verantwortlich dafür sicherzustellen,
dass es keine Überschneidung
zwischen Puffern 6100 für
eine einzelne Finger-ID/Walsh-ID-Kombination und zwischen verschiedenen
Finger-ID/Walsh-ID-Kombinationen gibt. Am meisten bevorzugt ist
jeder Ringpuffer 6100 vier Funkschlitze lang. Am meisten
bevorzugt wird der Startschlitz für Daten, wenn eine Anweisung
gestartet wird, durch Hardware bestimmt, während er wegen der Anforderung des
Vier-Schlitz-Ringpuffers in Ver bindung mit 15 Funkschlitzen pro
Rahmen durch Software gelesen werden muss, um die Synchronisation
aufrecht zu erhalten. Gemäß einer
Ausführungsform
wird als ein Adjunkt zum GCC ein Super-Rahmenzählwert von 0 bis 3 gehalten,
um bei der Bestimmung, in welchem FSB-Schlitz 6104 in dem
Ringpuffer 6100 Daten anzuordnen sind, für die Hardware
eine Referenz bereitzustellen.
-
Um
die Entspreizerdaten, die einer besonderen Finger-ID und Walsh-ID
zugeordnet sind, einem besonderen Ringpuffer 6100 zuzuweisen,
wird die FSB-Konfigurationstabelle 1500 verwendet. Der
Fingersymbolpuffer 106 dient außerdem als Zwischenspeicher
für die
nachgeschaltete Symbolverarbeitung, wobei auf ihn wie zuvor dargelegt
sowohl von dem DSP-Bus 104 als auch von dem externen FSB-Bus 108 zugegriffen werden
kann, um die Symbolverarbeitung in Hardware und/oder in Software
zu ermöglichen.
Der DSP-Bus 104 ermöglicht
entweder direkt oder über
DMA den Zugriff durch den Host-Prozessor, während der externe FSB-Bus 108 ermöglich, dass
die nachgeschaltete Hardware direkt auf Fingerdaten zugreift.
-
Wieder
anhand der 1 und 5 gibt es
sechs Unterbrechungsleitungen 170 von dem CCP 100, die
wie oben diskutiert mit einem internen Unterbrechungsgenerator 165 verbunden
sind. Es gibt vier Universalunterbrechungen, die von den vier zuvor
anhand der 32–39 beschriebenen
FIFOs kommen. Die verbleibenden zwei Unterbrechungen bestehen aus
einer Systemunterbrechung und aus einer Fehlerunterbrechung. Jeder
der vier Unterbrechungs-FIFOs (Register) enthält Unterbrechungsereignisinformationen,
die von CCP-Tasks kommen. Zum Beispiel kann ein Fingertask mehrere
Unterbrechungsereignisse auslösen,
die auf einen besonderen Unterbrechungs-FIFO abgebildet werden können. Vorzugsweise
kann jeder FIFO bis zu NintFIFO = 16 taskgestützte Unterbrechungsereignisse
speichern, wobei das Lesen des FIFO durch den Host-Prozessor die
Anzahl enthaltener Ereignisse dekrementiert. Ein FIFO wird dazu
verwendet, viele durch CCP-Tasks ausgelöste Unterbrechungsereignisse
zu versorgen, und ermöglicht,
dass der Host-Prozessor die Bedienung von CCP-Unterbrechungen optimiert.
Wie oben diskutiert wurde, kann jeder Task seine Unterbrechungsereignisse
unter Verwendung der Fingerunterbrechungstabelle 1002 und/oder
des Unterbrechungsfreigabefelds in der oben anhand der 56–60 beschriebenen
Taskspezifikation auf irgendeinen Unterbrechungs-FIFO abbilden.
Fingerunterbrechungsereignisse, die unter Verwendung der Fingerunterbrechungstabelle 1002 auf
Unterbrechungs-FIFOs
abgebildet werden können,
enthalten ein Pilotunterbrechungsereignis, ein TPC-Unterbrechungsereignis
und ein Schlitzunterbrechungsereignis. Am meisten bevorzugt können die vorstehenden
Unterbrechungsereignisse auf irgendeinen FIFO einschließlich desselben
FIFO abgebildet werden. Gemäß einer
Ausführungsform
können
alle anderen Tasks jeweils ein taskgestütztes Unterbrechungsereignis
auslösen,
das unter Verwendung des oben beschriebenen Unterbrechungsfreigabefelds
freigegeben und auf einen FIFO abgebildet wird. Wenn ein Taskereignis
auftritt, werden ein Task-Opcode, eine Task-ID, Fingertask-Unterbrechungsereignisdaten
und GCC-Daten in einen FIFO geschrieben, um einen FIFO-Eintrag zu
formulieren, auf den durch den Host-Prozessor an dem DSP-Bus 104 unter
Verwendung von zwei Lesezugriffen zugegriffen werden kann. Gemäß einer
Ausführungsform
betreffen Unterbrechungsereignisdaten nur Fingertasks und werden
zur Anzeige der besonderen fingertaskgestützten Ereignisse verwendet.
Wenn im selben CCP-Zyklus mehrere Fingerunterbrechungsereignisse
auftreten, wird maximal ein FIFO-Eintrag in irgendeinen gegebenen
FIFO protokolliert. Dieses Feld gibt somit nicht nur an, welches
der Ereignisse, sondern auch, welche Kombination der Ereignisse.
Für eine
Ausführungsform
ist der GCC vorzugsweise mit einer Auflösung von 16 Chips implementiert,
wobei ein Versuch, einen leeren FIFO zu lesen, alles Nullen auf
dem Datenbus zurückgibt.
Während
Taskereignisse auftreten, werden ihre Statusdaten sofort in den
FIFO eingegeben, der abgebildet wird. Diese Einträge können aber
erst bei der nächsten
16-Chip-Grenze gelesen
werden, wobei die Taskereignisse zu dieser Zeit auch das erforderliche
FIFO-nicht-leer-Statusfeld aktivieren können. In einer einzigen CCP-Iteration
können
viele Einträge
in einen FIFO geschrieben werden, wobei diese Einträge aber
erst bei der nächsten
16-Chip-Grenze gelesen werden können.
-
Außer den
oben beschriebenen Universalunterbrechungsereignissen werden durch
den CCP 100 ein Task_Update-Unterbrechungsereignis wie
etwa das oben anhand von 48 diskutierte
sowie Fehlerunterbrechungsereignisse einschließlich, aber nicht beschränkt darauf,
dass die Anzahl zulässiger
Zyklen überschritten
wird, und eines FIFO-Überlaufs
(4 Bits), versorgt. Die externen Unterbrechungen werden aktiviert, wenn
die auf sie abgebildeten Unterbrechungsereignisse aktiviert werden.
Gemäß einer
bevorzugten Ausführungsform
ist die Aktivierungszeitgebung für
Unterbrechungsereignisse wie folgt:
- 1) Es tritt
ein FIFO-(nicht-leer-)Ereignis auf, in dem der Nicht-leer-Status
eines FIFO erst bei der nächsten 16-Chip-Grenze
nach dem CCP-Zyklus, in dem das taskgestützte Ereignis auftritt, aktiviert
wird. Obgleich die Taskereignisinformationen in den FIFO eingegeben
werden, wenn das taskgestützte
Ereignis auftritt, kann dieser neue Eintrag erst bei der nächsten 16-Chip-Grenze
gelesen werden und beeinflusst den Nicht-leer-Status des FIFOs nicht;
- 2) es tritt ein Systemunterbrechungsereignis auf, in dem das
Task_Update-Unterbrechungsereignis
an der Task_Update-Grenze auftritt und bei dem die Task_Update-Grenze
immer an einer 16-Chip-Grenze liegt; und
- 3) beim Auftreten eines definierten Systemfehlers wird ein Fehlerunterbrechungsereignis
aktiviert.
-
Eine
externe Unterbrechung wird vorzugsweise gelöscht, wenn alle auf sie abgebildeten
Unterbrechungsereignisse gelöscht
werden wie etwa durch 1) Auslesen aller FIFO-Einträge durch
den Host-Prozessor, 2) Lesen des Systemunterbrechungsereignis-Statusregisters
durch den Host-Prozessor und 3) Lesen des Fehlerunterbrechungsereignis-Statusregisters
durch den Host-Prozessor.
-
Zur
zusammengefassten Erläuterung
des oben Stehenden ist die vorliegende Erfindung ein programmierbarer, äußerst flexibler,
vektorgestützter
Korrelator-Coprozessor
(CCP 100), der CDMA-Basisstations- und CDMA-Handapparat-RAKE-Empfängeroperationen
für mehrere
Kanäle
ausführt.
Da die meisten RAKE-Empfängerfunktionen
Korrelationen und Akkumulationen umfassen, kann unabhängig von
dem besonderen drahtlosen Protokoll für verschiedene RAKE-Empfänger-Tasks
wie Fingerentspreizung und Suche eine zentrale Korrelations maschine
verwendet werden. Außer
der Ausführung
(komplexwertiger) Korrelationen, die aus Entspreizung und kohärenter Akkumulation
bestehen, akkumuliert der CCP 100 auch "Symbol"-Energiewerte (nicht kohärente Akkumulationen).
Wenn der CCP 100 in einer Basisstationsumgebung verwendet wird,
kann er mehrere I- und Q-Abtastwerte von wenigstens 18 Antennenquellen
empfangen und verarbeiten. Der CCP 100 führt gemäß den Tasks,
die ein Host-Prozessor, z. B. ein DSP, in die CCP-Taskpuffer 180 schreibt,
eine Chipraten-Verarbeitung und Energieakkumulation aus, um die
Operationen des CCP 100 zu steuern. Beispielhafte Host-Prozessoren,
die zur Verwendung mit dem CCP 100 geeignet sind, enthalten
den DSP TMS320C641x/C55x, hergestellt von Texas Instruments Incorporated
aus Dallas, Texas. Die DSP TMS320C641x/C55x führen alle Symbolratenempfängeroperationen
wie etwa Kanalschätzung
(einschließlich Phasen-
und Frequenzschätzung),
Entschachtelung, Rückkopplungsschleifen
wie etwa automatische Verstärkungsregelung
und Verzögerungsregelschleife
aus.
-
62 veranschaulicht
eine Implementierung eines digitalen Basisbandsystems 6200,
das den CCP 100, einen DSP TMS320C641x 6202 und
eine Maximalverhältniskombinations-ASIC
(MRC-ASIC) 6204 umfasst. Die MRC-Funktionen können alternativ
in Software implementiert sein. Der CCP 100 ist verantwortlich für 1) die
Ausführung
der Entspreizung, die erforderlich ist, um die Datensymbole pro
Finger an die Entität
(z. B. DSP oder eine weitere ASIC) zu liefern, die für die MRC-Verarbeitung
verantwortlich ist, 2) die Ausführung der
EOL-Energiemessungen für
eine DLL, 3) die Ausführung
von Chip- und 1/2-Chip-Korrelationen
und Energiemessungen für
DPE- und Suchzwecke und 4) die Lieferung von Rohpilotsymbolen pro
Finger an den DSP (C6x/C55x) 6202. Der DSP (C6x/C55x) 6202 verwendet
die berechneten Rohpilotsignale, um die Kanalschätzung jedes Fingers auszuführen. Daraufhin
werden die Koeffizienten der Kanalschätzung an die für die MRC verantwortliche
Entität,
z. B. an die MRC-ASIC 6204 oder
an den DSP (C6x/C55x) 6202, gesendet. Die MRC-ASIC 6204 multipliziert
die entspreizten Symbole unter Verwendung dieser berechneten Koeffizienten mit
den Kanalschätzungskoeffizienten
und summiert daraufhin die von den verschiedenen Fingern (Pfaden) kommenden
Symbole miteinander, um in dem kombinierten Symbolpuffer (CSB) 6206 kombinierte
Symbole bereitzustellen.
-
63 veranschaulicht
einen globalen Chipzählermechanismus
(GCC-Mechanismus) 6500 zur Aufrechterhaltung der Zeitgebung
in einem CDMA-Rake-Empfänger, der
zur Verwendung in Verbindung mit dem CCP 100 gemäß einer
Ausführungsform
der vorliegenden Erfindung geeignet ist. Ein CDMA-Empfänger verfolgt
die Zeitgebung zwischen verschiedenen Multipfadkomponenten. Die
Multipfad-Zeitgebung wird unter Verwendung einer Pfadsuchfunktion
oder einer Verzögerungsprofil-Schätzfunktion,
die dem Fachmann auf dem Gebiet der CDMA-Rake-Empfänger bekannt
sind, bestimmt. Die stärksten
Multipfad-Komponenten werden RAKE-"Fingern" zugewiesen, die an jeder Multipfad-Komponente
eine Entspreizungsoperation ausführen.
Der GCC 6500 ist ein Hardware-Zähler,
der ankommende CDMA-Signalabtastwerte (oder "Chips") zählt.
Der GCC 6500 zählt
modulo der Periode "L" 6502 der
Pseudozufallsfolge (PN-Folge), die zum Spreizen des CDMA-Signals
verwendet wird. Er zählt
die Abtastwerte des CDMA-Signals ("Chips"), während
sie in dem Empfänger ankommen
und in einen Eingangspuffer 102 geschrieben werden. Die
gesamte Zeitgebung in dem Empfänger ist
relativ zu dem GCC 6500 angegeben. Eine Sucheinrichtung
stellt, ebenfalls relativ zu dem GCC 6500, eine Pfadzeitgebung
bereit. Diese Pfadzeitgebungen können
daraufhin an RAKE-Finger übertragen
werden. Falls die Fingerzuordnung in Software ausgeführt wird,
braucht der Software-Prozess die genaue Zeitgebung in der Hardware
nicht zu kennen. Die Pfadzeitgebungen werden relativ zu dem GCC 6500 angegeben,
wobei die Hardware die genaue Zeitgebung durch Addieren des relativen
Zeitgebungswerts zu dem momentanen Wert des GCC 6500 berechnen
kann. Wie oben dargelegt wurde, ist die gesamte Zeitgebung in dem
CCP 100 einschließlich
der Sucheinrichtungs- und RAKE-Finger-Versätze
auf den GCC 6500 bezogen.
-
Diese
Erfindung ist in beträchtlicher
Ausführlichkeit
beschrieben worden, um dem Fachmann auf dem Gebiet der drahtlosen
Kommunikation die Informationen zu geben, die er benötigt, um
die neuen Prinzipien anzuwenden und die benötigten Spezialkomponenten zu
konstruieren und zu verwenden. Angesichts der vorstehenden Beschreibungen
ist klar, dass die vorliegende Erfindung hinsichtlich Konstruktion
und Betrieb eine erhebliche Abweichung vom Stand der Technik darstellt.
Obgleich hier besondere Ausführungsformen
der vorliegenden Erfindung ausführlich
beschrieben worden sind, können
daran jedoch selbstverständlich
verschiedene Änderungen,
Abwandlungen und Ersetzungen vorgenommen werden, ohne in irgendeiner
Weise vom Umfang der vorliegenden Erfindung abzuweichen. Obgleich
oben bestimmte Fähigkeiten
und Architekturen des CCP 100 in Verbindung mit einer 3,84-Chiprate
definiert worden sind, bleibt das Grundarchitekturkonzept des CCP 100 z.
B. für
andere Chipraten das gleiche. Obgleich der CCP 100 hier
ferner zur Bestimmung der Korrelation zwischen Eingangsdaten und
lokal erzeugter PN-Sequenz bzw. lokal erzeugten PN-Sequenzen beschrieben
worden ist, können
ebenso gut weitere Ausführungsformen
des CCP 100 genutzt werden, um eine Kreuzkorrelation zweier
lokal erzeugter PN-Sequenzen zu erzeugen. Solche Kreuzkorrelationswerte
können
von einem Host-Prozessor wie etwa von einem DSP verwendet werden,
um die IC/MUD in Software auszuführen.