## 2 Materials and Methods
### Universal GNSS Channel Design Decisions
#### 2.1.3 Spreading Codes  
As seen in Table 1, codes have different lengths and generation methods. Since all signals have their own primary (and secondary) code generation method, a universal channel would need to support them all. Linear Feedback Shift Register (LFSR) logic is definitely the best approach in the case of a dedicated signal channel. However, duplicating such resources customized for every signal becomes a burden: one channel can only track one signal at a time, resulting in many idle resources. Furthermore, considering this highly dynamic field, one may want to plan ahead. Indeed, a pre-computed memory code approach not only applies to all currently defined signals, but also allows for an easy, over-the-air, update link whenever a new Signal In Space (SIS) Interface Specification (IS) is released.  
Figure 3: MBOC Sub-Carriers Multi-Bit Simplification and Combination of both Data and Pilot Components (Differential = Early - Late; Prompt)  
Figure 2: Sub-Carriers and Spreading Codes Module (BPSK _vs._ MBOC).  
In recent GNSS signals, longer code periods also reduce the transit time integer ambiguity; the transit time for GPS satellites on L1 varies from about 66 ms (at zenith) to 80 ms (at horizon) [34]. Hence, the longer the code duration, the smaller the resulting ambiguity becomes. To further improve on this, secondary codes are laid over the primary ones, artificially making them longer (while improving the inter-correlation protection). To account for the secondary code, whose length may vary from 4 to 1800 chips, the memory codes approach is once again adopted. Another side effect of these secondary codes is the basic integration time period: they constrain the coherent integration time to the primary code period, which in turn, limits the correlation gain achieved during acquisition (at early acquisition stages, while the secondary code is still unknown).  
The only civil code for which the memory code approach is not suited is GPS L2 CL. Indeed, CL is 767,250-chip long, which would impose a much too high upper bound on the size of the memory dedicated to each channel, especially if we consider two such memory blocks (one for each component). A more realistic memory block size is 16 kbit (a standard size for the Virtex4 [35], on which the proposed universal channel is implemented), which is greater than 10,230--the second longest code, found on the L5, E5 and B3 signals. Hence, this requirement imposes two 16 kbit RAM blocks and a 27-register long LFSR as the minimum resources for each universal channel.  
More importantly, the GPS L2C signal introduces an additional particularity, _i.e._, the time multiplexing of two spreading codes of different lengths. The resulting merged code has twice the chipping rate compared to that of their individual sequences L2 CM and L2 CL, as seen in Figure 4.  
The 1.5 s long L2 CL code cannot be acquired directly at cold start. Nevertheless, its chip offset can be predicted from the satellite clock timestamp decoded through L2 CM or inferred from another signal from the same satellite. A full (L2 CM & L2 CL) integration may then occur, harvesting twice as much signal power compared to only L2 CM during the acquisition phase.