## 1 Introduction
Further, the implementation includes Space-Time Adaptive Processing (STAP) [13] which provides best interference rejection performance but has highest computational complexity among interference rejection techniques [14]. In order to achieve real-time capability, the most computationally expensive functions are programmed in x86 assembly using Single Instruction Multiple Data (SIMD) instructions. We build on a structure of SIMD parallel programming [15] and include SIMD assembly code as a real-time implementation example since it is the fundamental enabler of such an implementation. Multi-threaded programming, again fully documented, is leveraged to fully exploit the multi-core resources of the processor [16]. The execution flow is designed to distribute the tasks across multiple cores. For reducing the operations of the software correlator, local replicas of code and carrier at zero-phase are generated and stored prior to execution. A software technique to correlate the IF data with local replica for whole code period without crossing data bit transition is developed and described. The implementation is validated using actual IF data streams. The signal processing, positioning and beamforming are accomplished by software approach and shown to function in real time. By adding synthetic interference to the collected data, the only practical test option given the protected nature of the GPS L1 frequency band, two test scenarios are used to demonstrate the interference rejection performance of the CRPA software receiver. The first interference scenario is with high Interference-to-Signal ratio (J/S). The second scenario is with multiple different interferer types from different directions. The results are illustrated by angle-frequency responses. The key contributions of this paper are summarized as follows: (a) this is the first published work which not only demonstrates a real-time all-in-view CRPA software receiver running on a CPU but describes the implementation in significant detail with actual code examples critical to the architecture; (b) This work leverages a mechanism to perform \"blind\" beamforming (without prior knowledge or calibration). This mechanism is implemented by realizing up to 60 tracking channels (12 tracking channels for each antenna element of the four-element array and 12 tracking channels for composite beamformed signal). (c) This work provides an approach to estimate Radio Frequency (RF)chain/cabling bias upon startup. This information is not necessary for beamforming in our approach but it can be useful to illustrate the functionality of the receiver. Based on this bias information, which is used to generate a simplified antenna model, angle-frequency responses are calculated accurately to show the functionality of the implemented STAP in the spatial and temporal domains in the presence of multiple interferers with different bandwidths. The paper proceeds as follows: first, the beamforming algorithm implemented in the software receiver is introduced and its mathematical properties are outlined. Then, the mechanism used to build the steering vectors without prior calibration is documented. The architecture of the software receiver, including hardware and software components, is explained in detail. In order to validate the implementation and the interference rejection performance, the software receiver is tested with live GPS/WAAS data and synthetic interferers. The results demonstrate the performance of the software receiver under multiple interferers in the spatial and temporal domains.