DE60119602T2 - Korrelator Koprozessor für CDMA Rake-Empfänger - Google Patents

Korrelator Koprozessor für CDMA Rake-Empfänger Download PDF

Info

Publication number
DE60119602T2
DE60119602T2 DE60119602T DE60119602T DE60119602T2 DE 60119602 T2 DE60119602 T2 DE 60119602T2 DE 60119602 T DE60119602 T DE 60119602T DE 60119602 T DE60119602 T DE 60119602T DE 60119602 T2 DE60119602 T2 DE 60119602T2
Authority
DE
Germany
Prior art keywords
task
ccp
buffer
finger
walsh
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60119602T
Other languages
English (en)
Other versions
DE60119602D1 (de
Inventor
Katherine G. Coppell Brown
Sundararajan Plano Sriram
Francis Houston Honore
Yuan Kang Richardson Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of DE60119602D1 publication Critical patent/DE60119602D1/de
Application granted granted Critical
Publication of DE60119602T2 publication Critical patent/DE60119602T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7097Interference-related aspects
    • H04B1/711Interference-related aspects the interference being multi-path interference
    • H04B1/7115Constructive combining of multi-path signals, i.e. RAKE receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/709Correlator structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B1/7073Synchronisation aspects
    • H04B1/7075Synchronisation aspects with code phase acquisition
    • H04B1/70751Synchronisation aspects with code phase acquisition using partial detection
    • H04B1/70752Partial correlation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/69Spread spectrum techniques
    • H04B1/707Spread spectrum techniques using direct sequence modulation
    • H04B2001/70706Spread spectrum techniques using direct sequence modulation using a code tracking loop, e.g. a delay locked loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B2201/00Indexing scheme relating to details of transmission systems not covered by a single group of H04B3/00 - H04B13/00
    • H04B2201/69Orthogonal indexing scheme relating to spread spectrum techniques in general
    • H04B2201/707Orthogonal indexing scheme relating to spread spectrum techniques in general relating to direct sequence modulation
    • H04B2201/70707Efficiency-related aspects
    • H04B2201/7071Efficiency-related aspects with dynamic control of receiver resources
    • H04B2201/70711Efficiency-related aspects with dynamic control of receiver resources with modular structure

Description

  • 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 13 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)
    Figure 00310001
    Figure 00320001
    TABELLE 1 (Fortsetzung)
    Figure 00320002
    Figure 00330001
  • Die 647 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 13101316. 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 13101316 konfiguriert ist. Die ersten NUM_WALSH8 Sätze von Walsh-Untertasks 13101312, 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 13141316 angeben können. Die TOTAL_WALSH Sätze von Walsh-Untertasks 13101316 können maximal (NUM_WALSH8·8 + NUM_WALSH4·4) Walsh-Untertasks 13101316 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 13101316 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 13101316 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 13101316, 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 2639 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 3538 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 4860 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 5160 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 3239 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 NTS-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 NTS-Feld 5110 auf die in der folgenden Tabelle 2 gezeigten Werte beschränkt. Tabelle 2 (NTS-Feldwerte)
    Figure 00540001
    Figure 00550001
  • 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 3239 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 5660 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.

Claims (16)

  1. Korrelator-Coprozessor für einen RAKE-Empfänger, mit: einem Pseudozufallseode-Generator (110) mit einem Steuereingang und einem Pseudozufallscode-Ausgang; einem Walsh-Code-Generator (112) mit einem Steuereingang und einem Walsh-Code-Ausgang; wenigstens einem Eingangspuffer (102), wobei jeder Eingangspuffer wenigstens einen Gleichphasensignalabtastwert- und Quadratursignalabtastwert-Eingang, einen Steuereingang und einen Komplexsignal-Ausgang besitzt; wenigstens einem Chip-Zähler (162), wobei jeder Chip-Zähler einen Signalabtasteingang, der mit dem wenigstens einen Gleichphasensignalabtastwert- und Quadratursignalabtastwert-Eingang in Verbindung steht, und ferner einen Lokalreferenztakt-Ausgang besitzt; einen Datenpfad (300), der so konfiguriert ist, dass er Abtastwerte der Pseudozufallscodes, Abtastwerte der Walsh-Codes und Gleichphasen-Unterehip- und Quadratur-Unterchip-Abtastwerte empfängt und verarbeitet und wenigstens einen Ausgang, einen ersten Datenpfadeingang, der mit dem Pseudozufallscode-Ausgang und mit dem Walsh-Code-Ausgang in Verbindung steht, einen zweiten Datenpfadeingang, der mit dem Komplexsignal-Ausgang in Verbindung steht, und ferner einen dritten Datenpfadeingang besitzt; wenigstens einem Taskpuffer (180), der einen Eingang und einen Ausgang besitzt und so konfiguriert ist, dass er eine Liste programmierbar ausführbarer Tasks speichert; wenigstens einem Konfigurationstabellenpuffer (160), der einen ersten Ausgang und einen zweiten Ausgang besitzt, wobei der erste Ausgang mit dem wenigstens einen Taskpuffer-Eingang in Verbindung steht, und ferner wenigstens einen Eingang besitzt, der mit einem Schnittstellenbus zu einem externen System in Verbindung steht und so konfiguriert ist, dass er mehrere Konfigurationstabellen speichert, die angeben, wie jeder Task in der Liste programmierbar ausführbarer Tasks implementiert ist; einem Unterbrechungsgenerator (165); wenigstens einem Ausgangsdatenpuffer (106, 114, 116), der wenigstens einen Eingang, der mit dem wenigstens einen Datenpfadausgang in Verbindung steht, und ferner wenigstens einen Ausgang, der mit dem Schnittstellenbus zu dem externen System in Verbindung steht, besitzt; und einer Steuereinheit (150), die einen ersten Ausgang, der mit dem dritten Datenpfadeingang in Verbindung steht, einen zweiten Ausgang, der mit dem Steuereingang des Pseudozufallscode-Generators, dem Steuereingang des Walsh-Code-Generators und dem Eingangspuffer-Steuereingang in Verbindung steht, einen dritten Ausgang, der mit dem Unterbrechungsgenerator-Eingang in Verbindung steht, einen ersten Eingang, der mit dem wenigstens einen Taskpuffer-Ausgang in Verbindung steht, und einen zweiten Eingang, der mit dem wenigstens einen zweiten Konfigurationstabellen-Ausgang in Verbindung steht, besitzt, wobei die Steuereinheit mit Taktsignalen synchronisiert ist, die von dem Chip-Zähler empfangen werden, und durch die programmierbar ausführbaren Tasks gesteuert wird, um den Walsh-Code-Generator anzuweisen, die Walsh-Codes zu erzeugen, den Pseudozufallscode-Generator anzuweisen, die Pseudozufallscodes zu erzeugen und den Datenpfad anzuweisen, die Abtastwerte der Pseudozufallscodes, die Abtastwerte der Walsh-Codes und die Gleichphasen-Unterchip- und die Quadratur-Unterchip-Abtastwerte zu verarbeiten und hieraus wahlweise RAKE-Empfänger-Daten oder Suchergebnisse zu erzeugen, die RAKE-Empfänger-Daten oder die Suchergebnisse in dem wenigstens einen Ausgangsdatenpuffer (106) zu speichern und den Unterbrechungsgenerator dazu zu veranlassen, wenigstens ein taskbasiertes Unterbrechungssignal zu erzeugen.
  2. Korrelator-Coprozessor nach Anspruch 1, bei dem der Datenpfad (300) mehrere Multiplizierer umfasst, die so konfiguriert sind, dass sie die Gleichphasen- und Quadratur-Abtastwerte von dem wenigstens einen Eingangspuffer mit Abtastwerten der Pseudozufallscodes und mit Abtastwerten der Walsh-Codes multiplizieren.
  3. Korrelator-Coprozessor nach Anspruch 2, bei dem der Datenpfad (300) ferner mehrere Addiererbäume umfasst, die so konfiguriert sind, dass sie Partialkorrelationsdaten erzeugen, die den Gleichphasen- und den Quadratur-Abtastwerten zugeordnet sind.
  4. Korrelator-Coprozessor nach Anspruch 3, bei dem der Datenpfad (300) ferner wenigstens einen kohärenten Akkumulator umfasst, der so konfiguriert ist, dass er die Partialkorrelationsdaten und Daten, die wenigstens einer früheren Partialkorrelation zugeordnet sind, die ihrerseits den Gleichphasen- und Quadratur-Abtastwerten zugeordnet ist, summiert.
  5. Korrelator-Coprozessor (CCP) nach Anspruch 4, bei dem der Datenpfad (300) ferner ein Nachverarbeitungselement umfasst, das so konfiguriert ist, dass es Energiedaten erzeugt und nicht kohärente Akkumulationen, die den Gleichphasen-Chip- und Quadratur-Chip-Abtastwerten zugeordnet sind, ausführt.
  6. Korrelator-Coprozessor (CCP) nach Anspruch 5, bei dem der Datenpfad (300) ferner Temporärspeicherelemente umfasst, die so konfiguriert sind, dass sei wenigstens einige der Partialkorrelationsdaten, der Energiedaten und der Zwischenakkumulationsdaten, die nicht kohärenten Akkumulationen zugeordnet sind, speichern.
  7. Korrelator-Coprozessor nach einem vorhergehenden Anspruch, bei dem der Datenpfad (300) ferner mehrere Pipeline-Stufen umfasst, die so konfiguriert sind, dass sie die Verarbeitungsfähigkeit maximal machen.
  8. Korrelator-Coprozessor nach einem vorhergehenden Anspruch, bei dem wenigstens ein Ausgangsdatenpuffer wenigstens einen Puffer enthält, der aus der Gruppe ausgewählt ist, die aus Puffern für einen primären Suchcode, für eine Verzögerungsprofilschätzung, für einen Langcode-Identifizierer und für einen sekundären Suchcode, aus Finger-Max-Puffern, aus Zu-Früh-/Rechtzeitig-/Zu-Spät-Puffern und aus Fingersymbolpuffern besteht.
  9. Korrelator-Coprozessor nach Anspruch 8, der ferner einen externen Fingersymbolpuffer-Bus (FSB-Bus) umfasst, der einen Zugriff eines externen Host-Prozessors auf FSB-Daten schaffen kann.
  10. Korrelator-Coprozessor nach einem vorhergehenden Anspruch, bei dem die Steuereinheit, die durch die programmierbar ausführbaren Tasks angewiesen wird, so konfiguriert ist, dass sie ferner den Unterbrechungsgenerator dazu veranlasst, Systemunterbrechungen zu erzeugen, um globale CCP-Ereignisse anzuzeigen, und Fehlerunterbrechungen erzeugt, um die Erfassung von Fehlerbedingungen anzuzeigen.
  11. Korrelator-Coprozessor (CCP) nach einem vorhergehenden Anspruch, der ferner einen Schnittstellenbus zu dem externen System umfasst, der einen Zugriff eines externen Host-Prozessors auf den wenigstens einen Konfigurationstabellen-Puffer, den Unterbrechungsgenerator und den wenigstens einen Ausgangsdatenpuffer schaffen kann.
  12. Korrelator-Coprozessor nach Anspruch 11, bei dem der Schnittstellenbus zu dem externen System ein RHEA-Bus ist.
  13. Korrelator-Coprozessor nach Anspruch 11, bei dem der Schnittstellenbus zu dem externen System ein EMIF-Bus ist.
  14. Korrelator-Coprozessor nach einem vorhergehenden Anspruch, bei dem der Datenpfad (300) mehrere Multiplizierer, mehrere Addiererbäume, wenigstens einen kohärenten Akkumulator, ein Nachverarbeitungselement und Elemente zur temporären Datenspeicherung umfasst, so dass der Datenpfad vorgegebene Funktionen für einen RAKE-Empfänger ausführen kann.
  15. Korrelator-Coprozessor nach Anspruch 14, bei dem die vorgegebenen Funktionen aus der Gruppe ausgewählt sind, die aus Entspreizungs-Tasks, Zu-Früh-/Zu-Spät-Korrelationen für die Zeitverfolgung, kohärenter Akkumulation unterschiedlicher Längen, Energieschätzung, nicht kohärenter Akkumulation, Korrelationen für die Verzögerungsprofilschätzung und Korrelationen für Such-/Erfassungs-Funktionen bestehen.
  16. Korrelator-Coprozessor nach einem vorhergehenden Anspruch, bei dem die Steuermittel, die durch die programmierbar ausführbaren Tasks angewiesen werden, so konfiguriert sind, dass sie ferner die Mittel zum Erzeugen von Unterbrechungssignalen dazu veranlassen, Systemunterbrechungen zu erzeugen, die globale CCP-Ereignisse angeben, und Fehlerunterbrechungen zu erzeugen, die Fehlerbedingungen angeben.
DE60119602T 2000-02-18 2001-02-19 Korrelator Koprozessor für CDMA Rake-Empfänger Expired - Lifetime DE60119602T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US18345700P 2000-02-18 2000-02-18
US183457P 2000-02-18
US607410 2000-06-30
US09/607,410 US6650694B1 (en) 2000-02-18 2000-06-30 Correlator co-processor for CDMA RAKE receiver operations

Publications (2)

Publication Number Publication Date
DE60119602D1 DE60119602D1 (de) 2006-06-22
DE60119602T2 true DE60119602T2 (de) 2007-05-03

Family

ID=26879139

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60119602T Expired - Lifetime DE60119602T2 (de) 2000-02-18 2001-02-19 Korrelator Koprozessor für CDMA Rake-Empfänger

Country Status (4)

Country Link
US (1) US6650694B1 (de)
EP (1) EP1128565B1 (de)
JP (1) JP2001285140A (de)
DE (1) DE60119602T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10393986B4 (de) * 2003-01-27 2012-04-12 Infineon Technologies Delta Gmbh Datenverarbeitungsvorrichtung einer Komponente eines Funktelekommunikationssystems und Verwendung

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3884896B2 (ja) * 2000-04-06 2007-02-21 株式会社エヌ・ティ・ティ・ドコモ 通信品質取得装置および通信品質取得方法
US7949362B2 (en) 2000-05-18 2011-05-24 Sirf Technology, Inc. Satellite positioning aided communication system selection
US7970412B2 (en) 2000-05-18 2011-06-28 Sirf Technology, Inc. Aided location communication system
US7929928B2 (en) * 2000-05-18 2011-04-19 Sirf Technology Inc. Frequency phase correction system
US7970411B2 (en) 2000-05-18 2011-06-28 Sirf Technology, Inc. Aided location communication system
US8078189B2 (en) 2000-08-14 2011-12-13 Sirf Technology, Inc. System and method for providing location based services over a network
US6968392B1 (en) * 2000-06-29 2005-11-22 Cisco Technology, Inc. Method and apparatus providing improved statistics collection for high bandwidth interfaces supporting multiple connections
AU7324401A (en) * 2000-07-10 2002-01-21 Interdigital Tech Corp Code power measurement for dynamic channel allocation
US7065128B2 (en) * 2000-07-31 2006-06-20 Infineon Technologies Ag Apparatus and methods for sample selection and reuse of rake fingers in spread spectrum systems
JP3468509B2 (ja) * 2000-08-22 2003-11-17 Necマイクロシステム株式会社 ページングモード制御方法
US7680178B2 (en) 2000-08-24 2010-03-16 Sirf Technology, Inc. Cross-correlation detection and elimination in a receiver
US6529829B2 (en) * 2000-08-24 2003-03-04 Sirf Technology, Inc. Dead reckoning system for reducing auto-correlation or cross-correlation in weak signals
US6721295B1 (en) * 2000-08-25 2004-04-13 Texas Instruments Incorporated Triple data system for high data rate communication systems
EP1198075A3 (de) * 2000-10-18 2004-12-01 Texas Instruments Inc. Verfahren zum beibehalten der Zeitreferenz in einem CDMA-Rake-Empfänger
US7236500B1 (en) * 2000-12-19 2007-06-26 Intel Corporation Demodulation of multi-user, multi-protocol data in a reconfigurable datapath
US7257179B2 (en) * 2001-03-06 2007-08-14 Research In Motion Limited Method and apparatus for frequency tracking in a space time transmit diversity receiver
US7668554B2 (en) 2001-05-21 2010-02-23 Sirf Technology, Inc. Network system for aided GPS broadcast positioning
JP3573745B2 (ja) * 2001-07-13 2004-10-06 川崎マイクロエレクトロニクス株式会社 Cdma受信装置およびcdma受信方法
US7773699B2 (en) * 2001-10-17 2010-08-10 Nortel Networks Limited Method and apparatus for channel quality measurements
DE50207741D1 (de) * 2001-10-31 2006-09-14 Infineon Technologies Ag Hardware-Struktur und Verfahren für eine Sende-Empfangseinrichtung mit konfigurierbaren Coprozessor für Mobilfunkanwendungen
US7023902B2 (en) * 2001-11-06 2006-04-04 Qualcomm Inc. Apparatus and method for scalable offline CDMA demodulation
DE60230794D1 (de) * 2001-11-20 2009-02-26 Mediatek Inc Verfahren und vorrichtungen zur spreizspektrum-signalverarbeitung unter verwendung eines unkonfigurierbaren koprozessors
US7586837B2 (en) * 2001-12-14 2009-09-08 Qualcomm Incorporated Acquisition of a gated pilot signal
US7215935B2 (en) * 2002-01-17 2007-05-08 Qualcomm Incorporated Segmented CDMA searching
GB2385498A (en) * 2002-02-13 2003-08-20 Pa Consulting Services Adjustable baseband processing of telecommunications signals
US7463671B2 (en) * 2002-02-19 2008-12-09 Marvell World Trade Ltd. Rake receiver interface
KR100886534B1 (ko) * 2002-03-27 2009-03-02 삼성전자주식회사 코드 분할 다중 접속 통신 시스템에서 시공간 송신 다이버시티 방식을 이용한 채널 신호 수신 장치 및 방법
CA2480508A1 (en) * 2002-03-29 2003-10-09 Interdigital Technology Corporation Low layer paging indicator processing system and method for multi-layer communication equipment
TWI259011B (en) 2002-04-12 2006-07-21 Interdigital Tech Corp Access burst detector correlator pool
US6788731B2 (en) 2002-04-26 2004-09-07 Motorola, Inc. Flexible correlation and queueing in CDMA communication systems
US7027492B2 (en) * 2002-05-01 2006-04-11 Texas Instruments Incorporated Wireless communication system with processor requested RAKE finger tasks
US7801085B1 (en) * 2002-06-03 2010-09-21 Ericsson Ab System and method of processing CDMA signals
US7702035B2 (en) * 2002-07-03 2010-04-20 Freescale Semiconductor, Inc. Searching method and apparatus for processing digital communication signals
DE10241691A1 (de) * 2002-09-09 2004-03-25 Infineon Technologies Ag Einrichtung und Verfahren zur Durchführung von Korrelationen in einem Mobilfunksystem
US7142586B2 (en) * 2002-09-18 2006-11-28 Telefonaktiebolaget Lm Ericsson (Publ) Robust delay estimation architecture
US20040062298A1 (en) * 2002-10-01 2004-04-01 Mcdonough John G. System and method for detecting direct sequence spread spectrum signals using pipelined vector processing
US7307977B1 (en) * 2002-10-01 2007-12-11 Comsys Communication & Signal Processing Ltd. Information transfer and interrupt event scheduling scheme for a communications transceiver incorporating multiple processing elements
JP2004179835A (ja) * 2002-11-26 2004-06-24 Fujitsu Ltd 通信装置
US20040109494A1 (en) * 2002-12-10 2004-06-10 Kindred Daniel R. Finger merge protection for rake receivers using polling
DE10260653B4 (de) * 2002-12-23 2010-12-09 Infineon Technologies Ag Mobilfunkempfänger-Architektur und Verfahren zum Synchronisieren von Hardware-Blöcken eines Mobilfunkempfängers
EP1441449A1 (de) * 2003-01-27 2004-07-28 Agilent Technologies, Inc. - a Delaware corporation - Programmierbarer Erfassungsmodul für einen CDMA-basierten Multistandard-Empfänger
ES2613954T3 (es) 2003-02-05 2017-05-29 Intel Corporation Búsqueda de celda inicial en sistemas de comunicación inalámbrica
TWI255099B (en) * 2003-03-05 2006-05-11 Interdigital Tech Corp Received communication signal processing methods and components for wireless communication equipment
US20040242248A1 (en) * 2003-05-30 2004-12-02 Motorola, Inc. Method and apparatus for fast network acquisition
DE10326336B4 (de) * 2003-06-11 2006-06-29 Infineon Technologies Ag Vorrichtung und Verfahren zum zeitlichen Steuern der Verarbeitung eines Funksignals in einer Mobilstation
US8296764B2 (en) * 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US7298775B1 (en) * 2003-08-29 2007-11-20 National Semiconductor Corporation Processor-implemented RAKE receiver
US7508806B1 (en) * 2003-08-29 2009-03-24 National Semiconductor Corporation Communication signal processor architecture
KR20070012308A (ko) 2003-09-02 2007-01-25 서프 테크놀러지, 인코포레이티드 위성 위치 신호를 위한 신호 처리 시스템
US8138972B2 (en) 2003-09-02 2012-03-20 Csr Technology Inc. Signal processing system for satellite positioning signals
WO2008024123A2 (en) * 2005-10-28 2008-02-28 Sirf Technology, Inc. Global positioning system receiver timeline management
US7006840B2 (en) * 2003-09-30 2006-02-28 Interdigital Technology Corporation Efficient frame tracking in mobile receivers
US7623894B2 (en) * 2003-10-09 2009-11-24 Freescale Semiconductor, Inc. Cellular modem processing
US7298799B1 (en) 2004-03-08 2007-11-20 Redpine Signals, Inc. All-tap fractionally spaced, serial rake combiner apparatus and method
US7209510B2 (en) * 2004-07-20 2007-04-24 Skyworks Solution, Inc. Channel estimation system for a wideband code division multiple access (WCDMA) communication system
US8422955B2 (en) * 2004-12-23 2013-04-16 Qualcomm Incorporated Channel estimation for interference cancellation
WO2006069474A1 (fr) * 2004-12-28 2006-07-06 Zte Corporation Appareil de reception de diversite multivoies d'un systeme amrc
DE102005006441A1 (de) * 2005-02-12 2006-08-17 Newlogic Technologies Ag Vorrichtung und Verfahren für das Ermitteln von Präambeln entssprechend dem IEEE 802.11a drahtlosen LAN Standard
DE102005006443A1 (de) * 2005-02-12 2006-08-24 Newlogic Technologies Ag Vorrichtung und Verfahren zur Detektion von Präambeln nach den IEEE 802.11a/b/g Wireless Standards und seine Anwendung auf einen 802.11 Multimodenempfänger
DE102005006442A1 (de) * 2005-02-12 2006-08-24 Newlogic Technologies Ag Vorrichtung und Methode zur Detektion von Präambeln nach dem IEEE 802.11b Wireless LAN Standard
EP3174235B1 (de) 2005-08-23 2020-10-21 Apple Inc. Pilot-entwurf für ofdm system mit vier sendeantennen
US20090129448A1 (en) * 2006-02-15 2009-05-21 Joshua Lawrence Koslov Apparatus and Method For Generating Scrambling Codes
WO2007149472A2 (en) * 2006-06-21 2007-12-27 Element Cxi, Llc Element controller for a resilient integrated circuit architecture
US8462818B2 (en) * 2006-08-02 2013-06-11 Freescale Semiconductor, Inc. Method for processing CDMA signals and a device having CDMA signal capabilities
EP1976138A3 (de) * 2007-03-30 2009-05-20 MediaTek, Inc Zeitverteilte Rake-Finger und Pfadsucher
US8094574B2 (en) * 2007-08-20 2012-01-10 Marvell International Ltd. Method and apparatus for wireless receiving
US8514015B2 (en) * 2008-12-10 2013-08-20 Qualcomm, Incorporated Amplifier with programmable off voltage
KR101566250B1 (ko) * 2009-01-13 2015-11-05 삼성전자주식회사 휴대용 단말기에서 멀티미디어 파일 스트리밍을 위한 장치 및 방법
US8373591B2 (en) * 2009-10-30 2013-02-12 Jed Margolin System for sensing aircraft and other objects
EP2402859A1 (de) * 2010-07-02 2012-01-04 STMicroelectronics (Grenoble 2) SAS Mikroplättchen und Baugruppe, die mehrere Mikroplättchen umfasst
US9071740B1 (en) 2011-10-28 2015-06-30 Google Inc. Modular camera system
US9197686B1 (en) * 2012-01-06 2015-11-24 Google Inc. Backfill of video stream
US9537968B1 (en) 2012-01-06 2017-01-03 Google Inc. Communication of socket protocol based data over a storage protocol based interface
GB2528499B (en) 2014-07-24 2021-03-31 Advanced Risc Mach Ltd Correlation determination early termination
US9544485B2 (en) 2015-05-27 2017-01-10 Google Inc. Multi-mode LED illumination system
US9489745B1 (en) 2015-06-12 2016-11-08 Google Inc. Using depth maps of a scene to identify movement of a video camera
US9613423B2 (en) 2015-06-12 2017-04-04 Google Inc. Using a depth map of a monitored scene to identify floors, walls, and ceilings
US9886620B2 (en) 2015-06-12 2018-02-06 Google Llc Using a scene illuminating infrared emitter array in a video monitoring camera to estimate the position of the camera
US9626849B2 (en) 2015-06-12 2017-04-18 Google Inc. Using scene information from a security camera to reduce false security alerts
US9235899B1 (en) 2015-06-12 2016-01-12 Google Inc. Simulating an infrared emitter array in a video monitoring camera to construct a lookup table for depth determination
US9454820B1 (en) 2015-06-12 2016-09-27 Google Inc. Using a scene illuminating infrared emitter array in a video monitoring camera for depth determination
US9386230B1 (en) 2015-06-12 2016-07-05 Google Inc. Day and night detection based on one or more of illuminant detection, lux level detection, and tiling
US9554063B2 (en) 2015-06-12 2017-01-24 Google Inc. Using infrared images of a monitored scene to identify windows
US10180615B2 (en) 2016-10-31 2019-01-15 Google Llc Electrochromic filtering in a camera
US10432247B2 (en) * 2017-03-20 2019-10-01 Intel IP Corporation Sequence triggering in RF front-ends

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764687A (en) * 1995-06-20 1998-06-09 Qualcomm Incorporated Mobile demodulator architecture for a spread spectrum multiple access communication system
US6198765B1 (en) * 1996-04-25 2001-03-06 Sirf Technologies, Inc. Spread spectrum receiver with multi-path correction
EP0935204A3 (de) * 1998-02-05 2001-02-28 Texas Instruments Incorporated Programmierbarer Korrelatorzusatzprozessor
US6243561B1 (en) * 1998-10-13 2001-06-05 Qualcomm Incorporated Offline page monitoring

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10393986B4 (de) * 2003-01-27 2012-04-12 Infineon Technologies Delta Gmbh Datenverarbeitungsvorrichtung einer Komponente eines Funktelekommunikationssystems und Verwendung

Also Published As

Publication number Publication date
DE60119602D1 (de) 2006-06-22
EP1128565B1 (de) 2006-05-17
JP2001285140A (ja) 2001-10-12
EP1128565A3 (de) 2004-01-02
EP1128565A2 (de) 2001-08-29
US6650694B1 (en) 2003-11-18

Similar Documents

Publication Publication Date Title
DE60119602T2 (de) Korrelator Koprozessor für CDMA Rake-Empfänger
DE60024814T2 (de) Verfahren und gerät zum erfassen eines spreizspektrumsignals
DE19806095C2 (de) Verfahren und Gerät zur Erfassung eines Pilotsignals in einem CDMA-Empfänger
DE60310905T2 (de) Software-parametrisierbare steuerblöcke zur verwendung bei der verarbeitung der physikalischen schicht
EP1338097B1 (de) Verfahren und vorrichtung zur verarbeitung eines empfangssignals in einem kommunikationssystem
DE60225823T2 (de) Konfigurierbare endstellen maschine
DE60035367T2 (de) Sucher mit programmierbarem signalangepasstem filter zum suchen nach mehreren pilotsignalen
DE69926767T2 (de) Endgerät mit parallelem pilotsucher
DE19757375A1 (de) Verfahren und System für eine parallele Demodulation mehrerer Chips eines CDMA-Signals
US6366606B1 (en) Programmable correlator coprocessor device and method
KR101085716B1 (ko) 소프트웨어 기반 이동통신 시스템에서 이동국의 수신 장치및 방법
US7209461B2 (en) Method and apparatus for chip-rate processing in a CDMA system
DE10024220A1 (de) Verfahren und Vorrichtung zum Aktivieren eines Funktelefonempfängers mit Streuspektrum
JP2002261733A (ja) Cdmaレイク受信機のタイミング方法
DE69632915T2 (de) Verfahren zum steuern eines empfängers, und empfänger
US8134981B2 (en) Correlator for primary cell search using memory architecture
DE69924867T2 (de) Schnell veränderbarer pseudozufälliger rausch-sequenzgenerator
DE60202919T2 (de) Empfangseinheit, Empfangsverfahren und Halbleitervorrichtung
US8125973B2 (en) Time shared rake fingers and path searcher
US7023902B2 (en) Apparatus and method for scalable offline CDMA demodulation
US6539048B2 (en) Ring matched filter for synchronizing to a spreading code
DE10216191A1 (de) Schaltungsmaßstabverringerung von RAKE-Empfängern in CDMA-Kommunikationssystemen
WO2004068357A1 (de) Datenverarbeitungsvorrichtung mit einem datenübertragungskanal zum übertragen von daten zwischen datenverarbeitungseinrichtungen
US6801568B2 (en) Despreading apparatus and method for CDMA signal
JP3416642B2 (ja) メモリインタフェース回路および逆拡散後シンボルのメモリへの書き込み方法

Legal Events

Date Code Title Description
8364 No opposition during term of opposition