# Area-Efficient Universal Code Generator for GPS L1C and BDS B1C Signals
## 1 Introduction  
A global navigation satellite system (GNSS) calculates navigation using constellation satellites and provides users with global-level location and time information [1; 2]. GNSS receivers distinguish visible satellites and extract navigation messages from mixed signals coming from many satellites. In this case, the pseudo-random noise (PRN) codes included in the satellite signals play an important role [2; 3]. Mathematically, codes in which 0s and 1s are randomly well-distributed have the characteristic of having high auto-correlations and low cross-correlations [2; 3]. Navigation systems extract the signal information of a certain satellite from mixed signals coming from many satellites using PRN codes with such a correlation characteristic [2; 3]. Each satellite combines a unique PRN code with navigation data and transmits the resultant signals, and the receiver receives signals transmitted from all the satellites in a mixed form. The receiver sequentially calculates the correlation values between the candidate PRN codes generated internally with the mixed signals transmitted by all the satellites. If the correlation value between the signals received by the receiver and the generated PRN code is high, the satellite corresponding to the currently generated PRN code will be judged to be a visible satellite, and, if the correlation value is low, the satellite corresponding to the currently generated PRN code will be judged to not be included in the satellites that transmitted the signals currently received. For instance, Figure 1 depicts the general signal acquisition for a GNSS receiver. When PRN 2, 3, and 4 are visible satellites, the GNSS receiver takes the mixed signals coming from PRN 2, 3, and 4. The GNSS receiver computes the correlation between the received signal and the internally generated PRN code. In this example, the generated PRN 2, 3, and 4 has a high correlation, but the generated PRN 1, 5, 6, 7, and 8 maintain a low correlation. Therefore, the types of satellites included among those that transmitted the signals currently receivedcan be judged by using the correlation characteristic of PRN codes, and this is an essential calculation process for performing navigational calculations in the satellite navigation system [3]. PRN codes have unique PRN values according to satellites' signal systems and numbers [4; 5; 6; 7]. Representative examples of satellite signal systems that provide the GNSS include GPS [4] in the United States, GALILEO [5] in the EU, GLONASS [6] in Russia, and BDS [7] in China. Each satellite signal system transmits many satellite signals in various frequency bands. More precisely, GPS [4] satellites transmit L1 C/A, L1C, L2C, and L5 signals, and GALILEO [5] satellites transmit E1 and E5a/b signals. GLONASS [6] satellites transmit L1 OF, L1 OC, L2 OF, L2 OC, and L3 OC signals, and BDS [7] satellites transmit B1I, B1C, B2I, B2A, and B3I signals. Individual satellites in each satellite signaling system have their unique PRN codes to achieve high auto-correlation and low cross-correlation values, which are described in the interface control document (ICD) of each signaling system [4; 5; 6; 7]. Table 1 shows a summary of the PRN code generation methods by satellite system signal. Code generation methods are generally divided into three types: LFSR-based codes, memory-based codes, and Legendre sequence-based codes. LFSR-based codes have the advantage that maximally long PRN codes can be generated with simple LFSR hardware, and most satellite signals are made using LFSR-based codes. In the case of memory-based codes, mathematically pre-calculated PRN code sequences are stored in the memory, and the sequences are read from the memory and used as PRN codes. Memory-based codes are used in Galileo E1 signals because they are intuitive and simple, but they have the disadvantage that a lot of memory space is necessary to store the sequences.