Abstract:
A receiving system dynamically searches the communications band for transmissions of messages having the same nominal communications parameters, including the use of the same spreading code, but having potentially different specific frequencies and code-phases. The receiver, which is independent of the transmitters, samples the communications band at each code-phase of the spreading code over a span of downconverted transmission frequencies. When a message element is detected at a particular code-phase and frequency, it is forwarded to a demodulator that demodulates the message and sends it to its intended destination. In a preferred embodiment, a progressive Fourier Transform is used to incrementally determine the power level at each successive code-phase at a given frequency, thereby substantially reducing the time required to search for transmissions at each discrete code-phase. To accommodate variances in frequency and/or phase of a received signal from the same transmitter, the received signal is partitioned into subsets, and a composite measure is used to detect subsets that ‘slip’ into an adjacent frequency or phase sampling bin.

Description:
This is a continuation-in-part of U.S. patent application Ser. No. 09/513,962, filed Feb. 28, 2000 now U.S. Pat. No. 6,985,512. 

   BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   This invention relates to the field of communications, and in particular to the processing of multiple asynchronous spread-spectrum communications. 
   2. Description of Related Art 
   Spread-Spectrum techniques are used to modulate an information signal such that the modulated signal appears as noise. The information is modulated by a pseudo-random signal, and can be demodulated, or despread, by the same pseudo-random sequence. This modulation is commonly referred to as Direct-Sequence Spread Spectrum (DSSS). The modulated signal is spread across a bandwidth that is substantially larger than the bandwidth of the information signal, and has the apparent effect of increasing the noise-floor of receivers that receive this signal. Applying the same pseudo-random sequence to the modulated signal allows the information signal to be detected within this apparent noise. 
   Code Division Multiple Access (CDMA) is a commonly used spread-spectrum communications technique wherein the information signal is encoded by one of many code sequences before it is transmitted. The received signal is decoded by the same code sequence to reproduce the original information signal. Transmissions from multiple transmitters can be simultaneously communicated via a common frequency channel by employing different code sequences for each transmitter, provided that the code sequences have particular uniqueness characteristics. The uniqueness characteristics of acceptable codes substantially guarantee that a coherent output will only be produced when the received signal corresponds to a signal that is encoded using the same code sequence. Signals that are not encoded using the same code sequence as the decoding code sequence are decoded as noise signals. In a conventional CDMA system, such as a cellular telephone network, the network controller allocates and deallocates code sequences on demand, so that each of the transmitters can transmit over the same network without interference from other transmitters. 
   An often overlooked characteristic of a pseudo-random spread spectrum code is that a coherent output is only produced when the decoding code sequence is applied substantially in phase with the encoding code sequence. Consider, for example, a six-bit code sequence 0-1-1-0-1-0. A one-bit phase shift of this sequence is 1-1-0-1-0-0 (cyclic shift to the left); a two-bit phase shift is 1-0-1-0-0-1; and so on. A six-bit code has six different “code-phases”. If the received signal is decoded with a code-phase that corresponds to an encoding phase shifted by two bits, for example, this would be equivalent to receiving a signal having a 1-0-1-0-0-1 encoding sequence and decoding it with a 0-1-1-0-1-0 sequence. If this six-bit code is a proper pseudo-noise code, having the above defined uniqueness characteristics, then the decoding of this signal having a “different” encoding code merely produces a noise output. U.S. Pat. No. 5,537,397, “SPREAD ALOHA CDMA DATA COMMUNICATIONS”, issued Jul. 16, 1996, to Norman Abramson, and incorporated by reference herein, discloses a technique that uses this phase-dependency characteristic to allow multiple transmitters to use the same code concurrently. As in the conventional CDMA system, the network controller provides an allocation to each transmitter, but in the referenced patent, each transmitter is allocated a different time-slot, or code-phase, rather than a different code. The controller instructs each transmitter to advance or delay its transmission, so that its signal is received at the receiver with a code-phase that is sufficiently different from the code-phase of other transmitters. In this manner, although each of the transmitters and the receiver use the same code, each transmitter provides a “different” (phase-shifted) code to the receiver, relative to the particular code-phase of the decoder at the time of decoding. 
   The prior art pseudo-random spread spectrum approaches require a unique identification of each transmitter, because the communication of each allocated code or code-phase must be directed to the appropriate transmitter. Each transmitter must also be equipped with a receiver, to receive and process the communicated code or phase allocation. The code-phase allocation technique also requires that each transmitter have identical encoding frequencies with the receiver, because a difference in frequency between a transmitter and receiver exhibits itself as a continually changing phase shift. As discussed further below, this requirement for substantially identical frequencies extends to the modulation frequency used to up-convert and down-convert to and from a communication radio frequency (RF). This equivalence in frequency can be achieved via the use of a phase locked loop that adjusts the receiver&#39;s frequency to the transmitter&#39;s. As would be evident to one of ordinary skill in the art, this approach requires a separate phase locked loop for each currently active transmitter. 
   U.S. Pat. No. 6,128,469, “SATELLITE COMMUNICATION SYSTEM WITH A SWEEPING HIGH-GAIN ANTENNA”, issued 3 Oct. 2000 to Ray Zenick, John Hanson, Scott McDermott, and Richard Fleeter, and U.S. Pat. No. 6,396,819, “LOW-COST SATELLITE COMMUNICATION SYSTEM”, issued 28 May 2002 to Richard Fleeter, John Hanson, Scott McDermott, and Ray Zenick, and U.S. Pat. No. 6,317,029, “IN-SITU REMOTE SENSING” issued 13 Nov. 2001 to Richard Fleeter, disclose systems and methods that facilitate the reception and processing of messages from a large number of preferably low-cost transmitters, and are each incorporated by reference herein. For example, a large number of  1 C chip-size transmitters may be released from an aircraft that overflies a hurricane or forest fire. These transmitters may be configured to periodically or randomly transmit their location and the atmospheric conditions at their location, such as temperature, pressure, moisture content, and so on. A receiving system receives and processes the transmissions from these many devices and provides temperature and pressure profiles, changes and trends, predictions, and the like. Such systems require simple, low-cost, and efficient transmitters. 
   BRIEF SUMMARY OF THE INVENTION 
   It is an object of this invention to provide a receiving system that is configured to distinguish among transmissions from a plurality of transmitters that are each communicating at a common frequency and using a common DSSS code sequence. It is a further object of this invention to provide a receiving system that distinguishes among these transmissions as the frequency and transmission rates vary among the plurality of transmitters. 
   These objects and others are achieved by providing a receiving system that dynamically searches the communications band for transmissions of messages having the same nominal communications parameters, including the use of the same spreading code, but having potentially different specific frequencies and code-phases. The receiver, which is independent of the transmitters, samples the communications band at each code-phase of the spreading code over a span of downconverted transmission frequencies. When a message element is detected at a particular code-phase and frequency, it is forwarded to a demodulator that demodulates the message and sends it to its intended destination. In a preferred embodiment of this invention, a progressive Fourier Transform is used to incrementally determine the power level at each successive code-phase at a given frequency, thereby substantially reducing the time required to search for transmissions at each discrete code-phase. To accommodate variances in frequency and/or phase of a received signal from the same transmitter, the received signal is partitioned into subsets, and a composite measure is used to detect subsets that ‘slip’ into an adjacent frequency or phase sampling bin. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention is explained in further detail, and by way of example, with reference to the accompanying drawings wherein: 
       FIG. 1  illustrates an example timing diagram for an encoding and decoding process using an example six-bit spreading-code. 
       FIG. 2  illustrates an example block diagram for a communications system in accordance with this invention. 
       FIG. 3  illustrates an example plot of energy distribution within a decoded baseband composite signal as a function of frequency and code-phase in accordance with this invention. 
       FIG. 4  illustrates an example flow diagram of a detection process in accordance with this invention. 
       FIG. 5  illustrates an example timing diagram of two successive code phase decodings of an input stream in accordance with this invention. 
   

   Throughout the drawings, the same reference numerals indicate similar or corresponding features or functions. 
   DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1  illustrates an example timing diagram for an encoding and decoding process using an example spreading-code. Illustrated at  1 A is a message sequence, consisting of an example 01001011 bit pattern. Illustrated at  1 B is a code sequence, consisting of an example 011010 code pattern that is applied to each code-phase of the message. Although the example code comprises six bits, conventional codes use hundreds or thousands of bits. The timing diagram at  1 C illustrates the combination of the example 011010 code being applied to each bit in the 01001011 message bit pattern. In this example, the encoding is an exclusive-or of the corresponding bits. That is, if the message bit is zero, the corresponding output is equal to the example code 011010; if the message bit is a one, the corresponding output is equal to the inverse of the code, 100101. As can be seen, this multiplexing of the message bits at  1 A and the code at  1 B results in a signal at  1 C that changes up to six times more often than the original message. That is, the resultant signal is spread across a larger frequency range; as such, the code used to effect this increased frequency range is termed a “spreading code”. The resultant higher frequency sequence illustrated at  1 C is communicated to the receiving station, and subjected to noise and interference from other transmitters, and is received at the receiving station in a distorted form. Not illustrated, the sequence at  1 C is typically modulated up to a higher frequency for transmission, then demodulated back, or down-converted, to the baseband frequency of the sequence at  1 C. This received distorted baseband signal corresponding to the encoded message at  1 C is illustrated at  1 D. 
   At the receiver, the received signal at  1 D is decoded by modulating it with the same code that was used to create the encoded signal, as illustrated at line  1 E. As can be seen, decoding sequence at line  1 E is identical, in value and phase, to the encoding sequence at line  1 B. In this decoding, a logic value of zero in the code results in an output that is identical to the received signal, and a logic value of one in the code results in an output that is an inverse of the received signal. The decoded signal is illustrated at line  1 F. As can be seen at line  1 F, the regions of the decoded signal corresponding to a message bit value of “zero” have an overall signal level that is substantially lower than the regions of the decoded signal corresponding to the message bit value of “one”. That is, each segment of the message bit that was inverted by a “one” in the encoding sequence ( 1 B) is inverted again by a corresponding “one” in the decoding sequence ( 1 E). A decoder that accumulates the energy content contained in each bit region would demonstrate a substantial negative value corresponding to each “zero” message bit, and a substantial positive value corresponding to each “one” message bit. 
   If the encoding sequence at  1 B or the decoding sequence at  1 E differ, either in value or in phase, the resultant signal at  1 F will exhibit erroneous “positive” energy content segments in the regions corresponding to “zero” message bits, and erroneous “negative” energy content segments in the regions corresponding to “one” message bits. Because of this non-coherence, the energy content of each segment will tend to average out to zero, rather than exhibiting a strong “positive” or “negative” bias. 
     FIG. 2  illustrates an example block diagram of a communications system  200  in accordance with this invention. The communications system  200  includes a plurality of transmitters  280   a - 280   c , a receiver  210 , and a message discriminator  220 . The transmitters  280   a - c  each provide a transmit signal  281   a - c  comprising a message  282   a - c  that is encoded using a spreading-code  202 . Each transmitter  280   a - c  is substantially autonomous, and each transmitter  280   a - c  uses the same encoding and communications parameters, including the same spreading-code  202 , and the same modulation technique to provide the transmit signal  281   a - c  over the same communications channel. These transmit signals  281   a - c  form a composite signal  281  within this common communications channel. If two or more transmitters  280   a - c  transmit at the same time and at the same code-phase and essentially the same frequency, a collision results and these transmissions will not be distinguishable within the composite signal  281 . If only one transmitter  280   a - c  is transmitting at a given code-phase, the transmitted message  282   a - c  will be decodable at this code-phase, as discussed with regard to  FIG. 1 . 
   There are a number of applications that include the communication of relatively short and non-critical messages. Because a typical code  202  includes a sequence of over a thousand bits, thereby forming over a thousand code-phases for each bit of a message, the likelihood of two infrequently transmitting devices transmitting at exactly the same code-phase at the same time is slight. Because the messages are non-critical, the loss of individual messages because of this possibility of an exact phase coincidence is acceptable. For example, an application of U.S. Pat. No. 6,317,029, “IN-SITU REMOTE SENSING”, referenced above, includes the sensing of moisture content over a vast geographic area. Collectively, this information is useful and significant, but the intermittent loss of reports from individual collectors would not be significant. Because the odds are in favor of subsequent or prior reports from these collectors being transmitted without collision, and the rate of change of information content from these collectors can be expected to be low, the loss of individual reports has an insignificant effect on the collective information. 
   Other applications that are particularly well suited for this invention include, for example, cargo or container tracking; intrusion or trespass detection; emergency beacons; pipeline monitors; utility consumption meters; and so on. An infrequently transmitting beacon on a cargo container, for example, will use very little power, and can be economically provided to allow tracking of even small containers. If some intermediate reports of the container&#39;s location are lost due to collisions with other transmission, the effect will be non-consequential. In like manner, if pressure-sensing transmitters are dispersed over an open area, pedestrian or vehicular traffic across this area can be readily detected, even if some of the transmissions from the transmitters are lost. Similarly, an emergency beacon need only be detected once to have a desired rescue effect. These and other applications will be evident to one of ordinary skill in the art in view of this disclosure. 
   In this example embodiment, the receiver  210  receives the composite signal  281 , down-converts the composite signal  281  to a baseband signal  211 , and provides the baseband signal  211  to the message discriminator  220 . Within the message discriminator  220 , a detector  230  determines each particular frequency  232  and code-phase  234  that contains substantial signal energy, as discussed further below, and provides these frequencies  232  and code-phases  234  to a demodulator  250 . The demodulator  250  decodes the baseband signal  211  at each of these frequencies  232  and code-phase  234  to produce a decoded signal  251  corresponding to each frequency  232  and code-phase  234  pair. Each decoded signal  251  corresponds to segment of a particular transmitted message  282   a - c . A queue controller  260  stores each decoded signal  251  from each frequency  232  and code-phase  234  pair into a corresponding queue  271 - 273 , thereby forming strings of signals  251  in each queue  271 - 273  that correspond to the transmitted messages  282   a - c.    
     FIG. 3  illustrates an example plot of energy levels within a decoded baseband composite signal  300  as a function of frequency and code-phase. That is, the example plot of  FIG. 3  illustrates the energy that would be detected if a particular spreading code were applied to the baseband signal  211  of  FIG. 2  within the frequency band of +/−F, at each of N code phases of an N-bit spreading code. As illustrated, the example decoded composite signal  300  includes energy distributions  301 - 306  from six transmitters that used the same spreading code. 
   Ideally, if the transmit frequencies of each transmitter were identical, and equal to the receiver frequency, each of the energy distributions  301 - 306  would lie along the f=0 axis. The variance among transmit and receive frequencies results in a distribution of energy distributions within the +/−F band, where F is defined as the maximum allowable difference between transmit and receive frequencies. 
   Although each transmitter is using the same spreading code, each transmitter operates asynchronously to the receiver, and thus the received energy distributions occur at different code-phases, relative to the receiver. As can be seen, each transmitter&#39;s energy distribution  301 - 306  can be identified as occurring at a particular (frequency, phase) pair, relative to the receiver. That is, energy distribution  301  occurs at frequency f 3  and code phase p 1  (f 3 , p 1 ); energy distribution  302  occurs at (f 1 , p 4 ); energy distribution  303  at (f 3 , p 3 ); and so on. In accordance with this invention, individual transmissions are discriminated based on the energy content at each frequency and code-phase. Each coincidently transmitted message that is sufficiently separated from other messages, in frequency or in code-phase, can be discriminated from the other messages using the techniques disclosed herein. 
   Referring back to  FIG. 2 , in accordance with this invention, the detector  230  scans the baseband signal  211  to detect substantial energy distributions within a given frequency-phase search space. The detector  230  applies the spreading code  202  at each frequency and phase combination, as controlled by the frequency  231  and phase  233  control signals, and reports each of the frequency-phase pairs f  232 , p  234  ((f 3 , p 1 ), (f 1 , p 4 ), (f 3 , p 3 ), and so on) at which substantial energy levels  301 - 306  are detected. The demodulator  250  demodulates the baseband signal  211  at the given frequency  232  and phase  234 , and forward the demodulated signal  351  to the queue controller  360 . The demodulator  250  associates each frequency-phase pair  232 ,  234  with a queue index Q  252 , and the queue controller  260  routes each demodulated signal  251  to a corresponding queue  271 - 273 , based on this index  252 . 
   Although the detector  230  may be configured to contain multiple detection devices, to allow the detector  230  to scan and decode the baseband signal  211  in parallel, an embodiment of this invention that minimizes the cost of the detector  230  provides an efficient means for scanning and decoding the baseband signal  211  within a single process. Preferably, the efficiency of the detector  230  is such that it allows the detection process to be accomplished via software running on a general purpose processor, or on a signal processor, as well as via conventional hardware devices. 
     FIG. 4  illustrates an example flow diagram of a detection process in accordance with this invention that is suitable for embodiment in a software program. The process searches the solution space for each combination of frequency and phase via the nested loops  410 - 480  (frequency) and  430 - 470  (phase). The frequency band of +/−F is partitioned into a number (M) of discrete frequencies, nominally spaced by a space d, where d=2*F/(M−1). Non-uniform spacing may also be used. The spacing d, and therefore the number M, is determined based on the filter characteristics of the detector, using techniques common in the art. The filter characteristics are selected such that the band-pass width of the filter is at least as wide as the main lobe of the transmission energy distribution ( 301 - 306  in  FIG. 3 ) during the detection period, and d is selected such that an energy distribution that occurs at a center frequency that is half-way between two discrete frequencies is not substantially attenuated, thereby allowing it to be detected at either or both of the discrete frequencies. The loop  410 - 480  steps through each of these discrete frequencies, thereby scanning across the +/−F frequency band. 
   The loop  430 - 470  is configured to determine the energy content of the input stream at the particular discrete frequencies, at each of the N code-phases of the N-bit spreading code. In a straightforward embodiment of this invention, the N-bit spreading code would be applied to the last N-samples of the incoming signal to decode the signal at a current code-phase, and a DFT of the despread, or decoded, N-samples would be applied to determine the energy content at this code-phase for the given frequency. Then, time advances to the next code-phase, and a next sample of the incoming signal is received. The N-bit spreading code is applied to the new set of N-samples of the incoming signal (the newly received sample plus N−1 of the previous samples), and another DFT of the despread N-samples of incoming signal would be applied to determine the energy content of this next code-phase. 
   The DFT of a decoded N-bit input stream can be expressed as: 
                     X   m     ⁡     (   t   )       =       ∑     c   =   0       N   -   1       ⁢       x   ⁡     (     t   -   c     )       ⁢     C   ⁡     (     N   -   1   -   c     )       ⁢     ⅇ     -       jf   m     ⁡     (     t   -   c     )                       (   1   )               
where:
         X m (t) is the discrete Fourier transform (DFT) output,   x(t) is the input sample at time t,   C(n) is the +/−1 spreading code at bit n, and   f m  is the frequency being searched.       
   This straightforward approach, however, requires N complex multiplications, and N complex sums per code phase. In accordance with a second aspect of this invention, a “Progressive”, or incremental, Discrete Fourier Transform (PDFT) process is used to efficiently compute the DFT at each code-phase, as detailed below. 
   Each code-phase corresponds to the decoding of the incoming signal via the given spreading code at successive increments of time.  FIG. 5  illustrates an example timing diagram of two successive code phase decodings of an input stream. Line  5 A illustrates an example input stream (and is repeated twice, as Lines  5 A and  5 A′, for ease of reference). Line  5 B illustrates an example spreading code, and Line  5 C illustrates the application of the spreading code of line  5 B to the input stream of line  5 A. In this example, a “zero” value of the code corresponds to a multiplication of the input stream bit value by +1, and a “one” value of the code corresponds to a multiplication of the input stream bit value by −1. 
   Line  5 D illustrates the code of line  5 B at the next code-phase; that is, shifted by one bit. The application of the code at this code phase produces the decoded output that is illustrated on Line  5 E. The circled values on Line  5 E illustrate the decoded bit values that differ from the values of Line  5 C. At the extremes  501 ,  502  of the code, the newest sample  502 , at time t, is included in this next set of N decoded samples, and the oldest sample  501 , at time t−N, is not included. At each transition of the code, the decoded samples on Line  5 E differ from the decoded samples of Line  5 C. At all points other than the transition points of the code, the values on Lines  5 E and  5 C are identical. Thus, the decoded samples at each successive code phase can be expressed in terms of the decoded samples of the prior code phase, modified by the addition of the newest sample, subtraction of the oldest sample, and the inversion of sample values at each code transition point. For ease of reference, the code transitions are distinguished as “up” transitions and “down” transitions. The “up” transitions are illustrated as occurring at times u 1 , u 2 , u 3 , u 4 , and u 5  at Line  5 B, and the “down” transitions are illustrated as occurring at times d 1 , d 2 , d 3 , d 4 , and d 5 . As time is illustrated as progressing from left-to-right in  FIG. 3 , the transition times are illustrated from right-to-left from the most recent input sample. As illustrated on Line  5 E, this convention allows the samples at the transitions to be referenced as y(t−u 1 ), y(t−u 2 ), . . . y(t−d 1 ), y(t−d 2 ), and so on. 
   At an “up” transition, such as u 1 , the decoded output y(t−u 1 ) of Line  5 E corresponds to an inversion of the input sample x(t−u 1 ) of Line  5 A′, whereas, on Line  5 C, the corresponding decoded value  511  is a non-inversion of the input sample. Thus, each up-transition corresponds to a subtraction of the input sample, and an addition of the inversion of the input sample, for a total change of a double subtraction of the input sample x(t−u 1 ) from the previous result. At a “down” transition, on the other hand, such as d 1 , the decoded output y(t−d 1 ) on Line  5 E corresponds to a non-inversion of the input sample x(t−d 1 ), while on Line  5 C, the corresponding decoded value  521  is an inversion of the input sample. Thus, each down-transition corresponds to the subtraction of an inversion of the input sample and the addition of the input sample, for a total change of a double addition of the input sample x(t−d 1 ) to the previous result. 
   Based on the above, the progressive DFT of a next code phase can be expressed as: 
                     X   m     ⁡     (   t   )       =         X   m     ⁡     (     t   -   1     )       +         x   ′     ⁡     (   t   )       ⁢     C   ⁡     (     N   -   1     )         -         x   ′     ⁡     (     t   -   N     )       ⁢     C   ⁡     (   0   )         +       2   *     ⁢       ∑     i   =   1       #   ⁢           ⁢   downs       ⁢       x   ′     ⁡     (     t   -     d   i       )           -       2   *     ⁢       ∑     i   =   1       #   ⁢           ⁢   ups       ⁢       x   ′     ⁡     (     t   -     u   i       )                     (   2   )               
where:
         x′(t)=x(t)e −jf     m     t , the transform of input sample x(t) at the given frequency f m ,   X m (t) is the DFT of the code phase at time t,   X m (t−1) is the DFT of the prior code phase, at time t−1,   C(n) is the code at bit position n,   d i  are the down transitions of the code, and   u i  are the up transitions of the code.
 
The output of equation (2) is identical to equation (1), but equation (2) is expressed as a change to the DFT of the prior code phase. Assuming that the transforms x′(t) are saved for subsequent use, equation (2) only requires one complex multiplication (to determine the newest x′(t)), and fewer than N+2 complex additions, depending upon the number of transitions in the spreading code.
       
   Returning to  FIG. 4 , at the commencement of the loop  410 - 480 , a Sum term is initialized, at  420 , to provide an initial value for the incremental determination of the Discrete Fourier Transform (DFT) corresponding to each code-phase. This initial value corresponds to the DFT of the baseband signal at a first code-phase at the particular frequency determined by the frequency loop  410 - 480 , and can be determined via equation (1). 
   The loop  420 - 470  determines the DFT for each subsequent code-phase by modifying the Sum term based on the next transformed input sample x′(t), the oldest transformed input sample x′(t−N), and the transformed input samples at each transition, as detailed in equation (2). At  440 , the next transformed input value x′(t) is determined, and at  450 , the Sum term is modified. The Sum term corresponds to the energy content at the given frequency, F, and code-phase, P, and is stored as such, at  460 . 
   As noted above, the incremental determination of the DFT at  450  for each code-phase is equivalent to a conventional determination of a DFT for each code-phase, and thus the flow diagram of  FIG. 4  corresponds to a detection of the energy content at each frequency and code-phase pair within the given search space, and, because of the incremental nature of the computations, is particularly well suited for implementation as a software routine. Alternatively, a plurality of hardware devices could be employed, each tuned to one of the discrete frequencies within the +/−F frequency band, and each configured to continuously calculate the DFT at each code phase using the above described progressive, or incremental, DFT process. In such an embodiment, to optimize performance, the demodulator  250  of  FIG. 2  would preferably be partitioned into a plurality of demodulators, and each hardware device would preferably contain both the detector  230  and one or more demodulators  250 , integrated as a single unit. 
   Any of a variety of techniques can be applied to determine which frequency-phase pairs (f, p) are reported to from the detector  230  to the demodulator  250  of  FIG. 2 . In a straightforward embodiment, an energy threshold value may be used to identify the frequency-phase pairs contain sufficient energy to warrant subsequent demodulation. In an optimum-utilization embodiment, the capacity of the demodulator(s)  250  is limited, and the detector  230  provides as many (f, p) pairs as the demodulator can handle, sorted by energy content. That is, if the demodulator  250  can accommodate the demodulation of k signals, the detector  230  provides the k (f, p) pairs that have the highest energy content. 
   Note that the above-described determination of the energy content at a given frequency and phase corresponds to the energy content of a single duration of the spreading code, hereinafter termed an “epoch”. In a preferred embodiment of this invention, a plurality of epochs are used to determine the frequency-phase pairs that correspond to a transmission that warrants demodulation. In a straightforward embodiment, the magnitudes of the energy content at each epoch are added together and compared to a threshold value. 
   In a preferred embodiment, because the DFT measure of energy content includes both a magnitude and phase, a vector sum is also used. Because vector sum has the effect of narrowing the input bandwidth, and therefore reduces the allowable spacing between discrete frequencies in the +/−F search band, a combination of vector sums and magnitude sums is used. A running vector sum of a fixed number of epochs is maintained, and the magnitudes of these running vector sums are summed to provide the sum that is used to determine the overall energy content at each frequency-phase pair. 
   Due to a variety of effects, such as the Doppler effect caused by relative motion between a transmitter and receiver, the epochs from a single transmitter may drift, or ‘slip’ from one frequency-phase pair to an adjacent frequency-phase pair. If such effects are expected to occur, the energy-determination schemes addressed above can be modified to form a composite magnitude, based on the energy contents of a plurality of adjacent frequency-phase pairs. If the drift is constant or predictable, techniques can be applied to optimize the determination of the composite, by only including adjacent frequency-phase pairs in a determined direction from the initial frequency-phase pair. For example, if it is known that frequency drifts are rare, the composite energy determination may be based only on the two frequency-phase pairs that are adjacent in phase to the initial frequency-phase pair, rather than the eight frequency-phase pairs that are adjacent in frequency, in phase, or both. 
   While the above embodiment employs a Discrete Fourier Transform (DFT), any means for calculating a Fourier Transform may be adjusted using the above techniques to make it progressive, or incremental. For example, a Fast Fourier Transform (FFT) very efficiently calculates a set of evenly spaced Fourier Transforms by retaining information on sub-calculations common to multiple transforms. By applying the above techniques to the first calculation column of an FFT “butterfly diagram”, only a fraction of the nodes in this column need to be recalculated. That is, only those calculation nodes where one or both of its input points are “up” or “down” transitions as defined above, need to be recalculated. Similarly for the second column, only those calculation nodes where one or both of its input nodes (from the first column) have changed, need to be recalculated; and so on for the remaining columns in the FFT. 
   The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements which, although not explicitly described or shown herein, embody the principles of the invention and are thus within its spirit and scope. For example, although the techniques presented above use a Fourier Transform as the means for determining the energy content at a given frequency and code-phase, other techniques are common in the art for determining energy content, and may be used as well. In like manner, a DFT is used to determine the initial value of the Sum term in  FIG. 4 , which is a measure of the energy content at an initial code phase at a particular frequency. In an alternative embodiment, an FFT, or other energy-measuring means, can be used to initialize the Sum term, for subsequent modification using either the incremental DFT detailed in  FIG. 4 , or the above referenced incremental FFT. Additionally, although the equations provided are based on conventional formal techniques that are used to determine a measure of the energy content of a signal, other, less formal, techniques that approximate the energy content, or that adjust the measurement for compatibility with other system components, may also be used. For example, a technique that is commonly employed in iterative or incremental computations that modify a prior determined value is to scale the prior determined value by a factor that is less than unity, to prevent instabilities in the subsequent iterative calculations. Also, it is evident that the calculations performed by the detection portion of the preferred embodiment, may themselves be useful in executing the demodulation portion. For example, the outputs X m (t) for a given codephase p wherein a signal was detected—that is, X m (p), X m (p+N), X m (p+2N), and so on—may be used as despread, prefiltered inputs to the demodulation routine. These and other system configuration and optimization features will be evident to one of ordinary skill in the art in view of this disclosure, and are included within the scope of the following claims.