TWI870481B - Modernized global navigation satellite system receivers - Google Patents
Modernized global navigation satellite system receivers Download PDFInfo
- Publication number
- TWI870481B TWI870481B TW109135794A TW109135794A TWI870481B TW I870481 B TWI870481 B TW I870481B TW 109135794 A TW109135794 A TW 109135794A TW 109135794 A TW109135794 A TW 109135794A TW I870481 B TWI870481 B TW I870481B
- Authority
- TW
- Taiwan
- Prior art keywords
- gnss
- code
- memory
- data
- sideband
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 465
- 238000012545 processing Methods 0.000 claims abstract description 237
- 238000000034 method Methods 0.000 claims description 185
- 238000001228 spectrum Methods 0.000 claims description 167
- 230000010354 integration Effects 0.000 claims description 90
- 238000003775 Density Functional Theory Methods 0.000 claims description 83
- 239000000872 buffer Substances 0.000 claims description 67
- 230000001427 coherent effect Effects 0.000 claims description 63
- 239000011159 matrix material Substances 0.000 claims description 44
- 230000008569 process Effects 0.000 claims description 42
- 125000004122 cyclic group Chemical group 0.000 claims description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 24
- 238000005070 sampling Methods 0.000 claims description 24
- 230000002829 reductive effect Effects 0.000 claims description 23
- 230000008859 change Effects 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 6
- 238000003491 array Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000009977 dual effect Effects 0.000 claims description 3
- 230000017105 transposition Effects 0.000 claims description 3
- 230000026676 system process Effects 0.000 claims 2
- 230000006872 improvement Effects 0.000 abstract description 9
- 239000000523 sample Substances 0.000 description 151
- 239000013598 vector Substances 0.000 description 44
- 230000008901 benefit Effects 0.000 description 25
- 230000001413 cellular effect Effects 0.000 description 21
- 230000035945 sensitivity Effects 0.000 description 20
- 238000013459 approach Methods 0.000 description 18
- 238000003860 storage Methods 0.000 description 18
- 230000000694 effects Effects 0.000 description 17
- 230000010363 phase shift Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000005562 fading Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000002596 correlated effect Effects 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 8
- 230000000670 limiting effect Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 238000005259 measurement Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 241001442234 Cosa Species 0.000 description 4
- 244000089409 Erythrina poeppigiana Species 0.000 description 4
- 101100221616 Halobacterium salinarum (strain ATCC 29341 / DSM 671 / R1) cosB gene Proteins 0.000 description 4
- 235000009776 Rathbunia alamosensis Nutrition 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000001268 conjugating effect Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 239000012723 sample buffer Substances 0.000 description 4
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 230000006735 deficit Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000002860 competitive effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000021615 conjugation Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000819 phase cycle Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 238000010561 standard procedure Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 1
- 101100536250 Homo sapiens TMEM120A gene Proteins 0.000 description 1
- 102100028548 Ion channel TACAN Human genes 0.000 description 1
- 102000005717 Myeloma Proteins Human genes 0.000 description 1
- 108010045503 Myeloma Proteins Proteins 0.000 description 1
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 1
- 241000545442 Radix Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000011449 brick Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000005433 ionosphere Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000004570 mortar (masonry) Substances 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000010587 phase diagram Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Position Fixing By Use Of Radio Waves (AREA)
- Radio Relay Systems (AREA)
- Circuits Of Receivers In General (AREA)
Abstract
Description
本發明係關於全球導航衛星系統(GNSS)領域,且確切而言本發明在一項實施例中係關於使用處於L5頻帶中之一現代L5信號之GNSS接收器。可用的GNSS系統眾多,包含美國的GPS (全球定位系統)、格洛納斯(GLONASS)、伽利略、北斗及現有或可在未來部署的區域性系統。美國GPS系統最初僅在L1頻帶中可用。現在,美國GPS系統包含L5頻帶中之GNSS信號,且伽利略系統包含以1191.79 MHz為中心之L5頻帶中之現代化GNSS信號(諸如E5A及E5B)。相對於L1頻帶中之GNSS信號而言,L5頻帶中之現代化GNSS信號具備一些優點,且該等優點中之某些優點在下文加以闡述。然而,在不在GNSS接收器中預先獲取L1 GNSS信號之情況下在一GNSS接收器中直接獲取L5頻帶GNSS信號已被視為太困難,且因此習用GNSS接收器採用首先獲取L1 GNSS信號之一技術,且此獲取提供用於獲取E5頻帶中之GNSS信號之資訊(諸如,時間資訊及都卜勒估計)。因此,支援GNSS L5信號之習用GNSS接收器使用接收L5信號及L1信號兩者之一射頻前端;此意味著此等GNSS接收器中存在多個射頻組件。此外,習用接收器必須儲存並使用L1 GNSS信號及L5 GNSS信號兩者之虛擬隨機雜訊(PRN)碼。The present invention relates to the field of global navigation satellite systems (GNSS), and more specifically to a GNSS receiver using a modern L5 signal in the L5 band in one embodiment. There are many GNSS systems available, including the US GPS (Global Positioning System), GLONASS, Galileo, BeiDou, and regional systems that are currently or may be deployed in the future. The US GPS system was originally available only in the L1 band. Now, the US GPS system includes GNSS signals in the L5 band, and the Galileo system includes modern GNSS signals (such as E5A and E5B) in the L5 band centered at 1191.79 MHz. Modern GNSS signals in the L5 band have some advantages over GNSS signals in the L1 band, and some of these advantages are explained below. However, it has been considered too difficult to directly acquire L5 band GNSS signals in a GNSS receiver without pre-acquiring L1 GNSS signals in the GNSS receiver, and therefore conventional GNSS receivers employ a technique of first acquiring L1 GNSS signals, and this acquisition provides information (e.g., time information and Doppler estimates) for acquiring GNSS signals in the E5 band. Therefore, conventional GNSS receivers that support GNSS L5 signals use an RF front end that receives both L5 signals and L1 signals; this means that there are multiple RF components in these GNSS receivers. In addition, the conventional receiver must store and use the PRN codes of both L1 GNSS signals and L5 GNSS signals.
本文中所闡述之各種態樣提供改良,此等改良可允許一GNSS接收器以比藉由在窄頻帶L1獲取更大的靈敏度及可靠性來在該GNSS接收器中直接接收、獲取、處理並使用僅L5頻帶GNSS信號,但在某些實施例中此等改良可用於習用接收器中來接收並處理L5頻帶GNSS信號以及一或多個額外GNSS頻帶(諸如,L1 GPS頻帶)。此等態樣可實施於各種實施例中,所述各種實施例可包含GNSS接收器或GNSS接收器之若干部分或者含有此接收器或此接收器之若干部分資料處理系統(諸如,智慧型電話),且可包含藉由此類裝置(例如,GNSS接收器等)實行之方法且可包含儲存電腦程式指令之非暫時性機器可讀媒體,電腦程式指令在由一資料處理系統執行時使得該資料處理系統實行本文中所闡述之該一或多個方法。The various aspects described herein provide improvements that may allow a GNSS receiver to directly receive, acquire, process and use only L5 band GNSS signals in the GNSS receiver with greater sensitivity and reliability than achieved in the narrow band L1, but in some embodiments such improvements may be used in conventional receivers to receive and process L5 band GNSS signals as well as one or more additional GNSS bands (e.g., the L1 GPS band). These aspects may be implemented in various embodiments, which may include a GNSS receiver or portions of a GNSS receiver or a data processing system (e.g., a smart phone) containing such a receiver or portions of such a receiver, and may include methods implemented by such a device (e.g., a GNSS receiver, etc.) and may include a non-transitory machine-readable medium storing computer program instructions, which, when executed by a data processing system, causes the data processing system to implement one or more of the methods described herein.
本發明之一項態樣係關於直接獲取L5頻帶GNSS信號。換言之,在此態樣中,一GNSS接收器在不試圖自L1頻帶GNSS信號獲取時間及頻率資訊之情況下直接獲取L5頻帶GNSS信號。術語「直接獲取(direct acquisition及directly acquiring)」旨在意指GNSS接收器接收L5頻帶GNSS信號且獲取該等信號以獲得自該等信號導出之時間及頻率資訊,而不是自L1頻帶GNSS信號獲取時間及頻率資訊。雖然蜂巢式電話輔助資料(在先前急速追蹤專利中闡述的時間或頻率相位鎖定)可用於GNSS接收器中,但不獲取L1頻帶GNSS信號且不將L1頻帶GNSS信號用於直接獲取L5頻帶GNSS信號之一GNSS接收器。因此,當GNSS接收器直接獲取L5頻帶GNSS信號時,GNSS接收器獲取L5頻帶GNSS信號以自該等信號獲得時間及頻率資訊,而不具有先前獲取L1頻帶GNSS信號之益處且不具有自L1頻帶GNSS信號獲得時間或頻率資訊之益處。One aspect of the present invention is directed to directly acquiring L5 band GNSS signals. In other words, in this aspect, a GNSS receiver directly acquires L5 band GNSS signals without attempting to acquire time and frequency information from L1 band GNSS signals. The terms "direct acquisition" and "directly acquiring" are intended to mean that a GNSS receiver receives L5 band GNSS signals and acquires the signals to obtain time and frequency information derived from the signals, rather than acquiring time and frequency information from L1 band GNSS signals. Although cellular phone aiding data (time or frequency phase lock as described in the prior rapid tracking patent) can be used in a GNSS receiver, one GNSS receiver does not acquire L1 band GNSS signals and does not use the L1 band GNSS signals to directly acquire L5 band GNSS signals. Therefore, when the GNSS receiver directly acquires L5 band GNSS signals, the GNSS receiver acquires the L5 band GNSS signals to obtain time and frequency information from the signals without the benefit of previously acquiring the L1 band GNSS signals and without the benefit of obtaining time or frequency information from the L1 band GNSS signals.
本發明之另一態樣係關於在一組一或多個應用處理器(AP)與一GNSS處理系統之間共用一快取記憶體(或在GNSS處理系統與一SOC或積體電路上之其他處理器之間共用其他記憶體)。此態樣提供獲取L5 GNSS信號時通常過大的記憶體需要之一解決方案,確切而言係藉由使用離散傅立葉變換(DFT)計算之方法。該一或多個應用處理器(或其他處理器)及GNSS處理系統可被一起實施於一單個半導體基板上之一單個單片式積體電路(IC)中且快取記憶體亦可位於同一積體電路上,該單個半導體基板上之單個單片式積體電路(IC)可被稱為一系統單晶片(SOC)。在此態樣中,應用處理器(或其他處理器)與GNSS處理系統之至少一獲取引擎(AE)共用其快取記憶體(或其他記憶體)。在一項實施例中,此共用可限於其中該獲取引擎最初獲取GNSS信號的(舉例而言,有或沒有來自一蜂巢式電話網路之輔助資料情況下的一開端)之該等情況。可在獲取階段回應於來自一應用程式(諸如,一地圖應用或其他應用)的對位置資料(諸如一經緯度)之一請求而將快取記憶體(可係該一或多個應用處理器之L1 (層級1)或L2 (層級2) SRAM快取記憶體之或由其他處理系統使用之其他記憶體)之一部分分配給獲取引擎。該分配可根據位置請求優先進行或不藉由系統之一作業系統(OS)或一IC上之韌體;若位置請求來自一低優先級背景常駐程式應用,則分配可暫時推遲直至快取記憶體中有足夠自由的記憶體可用為止。另一方面,若位置請求來自作為前景應用(且因此裝置之顯示器為一使用者展示地圖應用之使用者介面)之一地圖應用,則優先進行分配。在一項實施例中,將被分配之部分可來藉由判定快取記憶體中之哪些頁未受干預且儲存於一後備儲存器(諸如,主DRAM或更好是非揮發性記憶體(諸如,快閃記憶體)中)來識別。此等頁(例如,未受干預且儲存於一後備儲存器)可立即自快取記憶體(或其他記憶體)清除/刪除且然後分配給AE以用於儲存(舉例而言)假設資料或所產生GNSS PRN碼及/或GNSS PRN碼的自一DFT產生之碼頻譜中之一或多者。Another aspect of the invention relates to sharing a cache memory between a set of one or more application processors (APs) and a GNSS processing system (or sharing other memory between the GNSS processing system and other processors on a SOC or integrated circuit). This aspect provides a solution to the typically excessive memory requirements when acquiring L5 GNSS signals, specifically by using a discrete Fourier transform (DFT) calculation method. The one or more application processors (or other processors) and the GNSS processing system can be implemented together in a single monolithic integrated circuit (IC) on a single semiconductor substrate and the cache memory can also be located on the same integrated circuit. The single monolithic integrated circuit (IC) on the single semiconductor substrate can be referred to as a system on a chip (SOC). In this aspect, an application processor (or other processor) shares its cache memory (or other memory) with at least one acquisition engine (AE) of a GNSS processing system. In one embodiment, this sharing may be limited to those situations in which the acquisition engine initially acquires GNSS signals (e.g., at the beginning with or without auxiliary data from a cellular telephone network). A portion of cache memory (which may be L1 (level 1) or L2 (level 2) SRAM cache memory of the one or more application processors or other memory used by other processing systems) may be allocated to the acquisition engine during the acquisition phase in response to a request for location data (such as a latitude and longitude) from an application (e.g., a map application or other application). The allocation may be prioritized based on the location request or not by an operating system (OS) of the system or firmware on an IC; if the location request is from a low priority background resident application, the allocation may be temporarily deferred until sufficient free memory is available in the cache memory. On the other hand, if the location request comes from a map application that is the foreground application (and therefore the device's display is a user interface showing the map application to a user), then the allocation is prioritized. In one embodiment, the portion to be allocated can be identified by determining which pages in the cache are undisturbed and stored in a backup memory (e.g., main DRAM or, more preferably, non-volatile memory (e.g., flash memory)). Such pages (e.g., uninterrupted and stored in a backup memory) may be immediately cleared/deleted from the cache (or other memory) and then allocated to the AE for use in storing one or more of, for example, hypothetical data or generated GNSS PRN codes and/or code spectrum of GNSS PRN codes generated from a DFT.
根據此共用態樣之一種方法可包含在一GNSS接收器中實施之以下操作:自一積體電路上之一或多個應用處理器接收一請求以透過使用該積體電路上之一GNSS處理系統產生位置資料,該GNSS處理系統包含一獲取引擎(AE),該獲取引擎(AE)經組態以獲取複數個GNSS信號,該等GNSS信號中之每一者自一GNSS集群太空載具(SV)中之一者傳輸而來;識別積體電路上之一快取記憶體(或其他記憶體)之一部分並回應於產生位置資料之該請求而將該部分分配給該獲取引擎使用,而將快取記憶體(或其他記憶體)之一其餘部分分配給該一或多個應用處理器(或其他處理器),該分配由在該一或多個應用處理器上執行之一作業系統或由IC上之韌體實行;及由獲取引擎或該一或多個應用處理器將與GNSS信號獲取處理有關之資料儲存於已分配部分中。在一項實施例中,該方法可使用靜態隨機存取記憶體(SRAM)作為積體電路上之快取記憶體(或其他記憶體),且該獲取引擎可包含用於使用一時間抽取法且亦使用一頻率抽取法來實行快速傅立葉變換(FFT)運算(諸如,離散傅立葉變換(DFT)運算)之ASIC (特殊應用積體電路)硬體邏輯。在一項實施例中,該方法可進一步包含以下操作:在GNSS處理系統開始追蹤已自至少三個(3) GNSS SV獲取之GNSS信號之後撤銷分配已分配部分,該撤銷分配係回應於在一追蹤階段之前自該至少三個GNSS SV獲取GNSS信號而發生。在一項實施例中,GNSS處理系統包含一專用記憶體,該專用記憶體與快取記憶體(或其他記憶體)分離且專用於GNSS處理系統。在一項實施例中,耦合至快取記憶體(或其他記憶體)之一記憶體控制器可包含:一第一埠控制器,其用以控制對已分配給獲取引擎之部分之存取;及一第二埠控制器,其用以控制對快取記憶體(或其他記憶體)之其餘部分之存取。在一項實施例中,該獲取引擎實行自GNSS SV獲取GNSS信號且該獲取包括判定含有虛擬隨機雜訊(PRN)碼之所接收GNSS信號之主碼相位及頻率以使得能夠追蹤GNSS信號以由於該追蹤而生成與GNSS SV之虛擬距離。在該方法之一項實施例中,已分配部分用以儲存以下各項中之一或多者:(1) GNSS SV之虛擬隨機雜訊碼或(2)可能獲取之GNSS信號之識別符之假設以及可能獲取之GNSS信號之頻率之假設。在此方法之一項實施例中,該一或多個應用處理器可在一獲取階段開始之前至少針對在系統視野中之GNSS SV而產生GNSS PRN碼及/或自DFT產生GNSS PRN碼之碼頻譜;在此實施例之一個實施方案中,可產生且立即使用此等PRN碼及/或自DFT得到之其碼頻譜但不儲存此等碼,或另一選擇為可產生且暫時儲存此等PRN碼及/或自DFT得到之其碼頻譜,而在獲取及追蹤階段期間使用。在一項替代實施例中,該一或多個應用處理器可產生GNSS PRN碼且將該等GNSS PRN碼儲存於系統之DRAM記憶體中,且然後在開始獲取階段之前或回應於一位置請求而將該等碼複製至快取記憶體(或其他記憶體)中。在一項實施例中,為節約記憶體,系統可僅針對在視野中運行良好之GNSS SV來產生GNSS PRN碼及/或自DFT得到其碼頻譜。A method according to this common aspect may include the following operations implemented in a GNSS receiver: receiving a request from one or more application processors on an integrated circuit to generate position data by using a GNSS processing system on the integrated circuit, the GNSS processing system including an acquisition engine (AE), the acquisition engine (AE) being configured to acquire a plurality of GNSS signals, each of the GNSS signals being transmitted from one of a GNSS cluster space vehicle (SV); identifying the integrated circuit; A portion of a cache memory (or other memory) on the road is allocated to the acquisition engine for use in response to the request to generate location data, and a remaining portion of the cache memory (or other memory) is allocated to the one or more application processors (or other processors), the allocation being performed by an operating system executing on the one or more application processors or by firmware on the IC; and the acquisition engine or the one or more application processors storing data related to GNSS signal acquisition processing in the allocated portion. In one embodiment, the method may use static random access memory (SRAM) as a cache memory (or other memory) on the integrated circuit, and the acquisition engine may include ASIC (application specific integrated circuit) hardware logic for implementing a fast Fourier transform (FFT) operation (e.g., a discrete Fourier transform (DFT) operation) using a time decimation method and also using a frequency decimation method. In one embodiment, the method may further include the following operations: de-allocating the allocated portion after the GNSS processing system begins tracking GNSS signals that have been acquired from at least three (3) GNSS SVs, the de-allocation occurring in response to acquiring GNSS signals from the at least three GNSS SVs before a tracking phase. In one embodiment, the GNSS processing system includes a dedicated memory that is separate from the cache memory (or other memory) and dedicated to the GNSS processing system. In one embodiment, a memory controller coupled to the cache memory (or other memory) may include: a first port controller that controls access to the portion allocated to the acquisition engine; and a second port controller that controls access to the remaining portion of the cache memory (or other memory). In one embodiment, the acquisition engine implements acquisition of GNSS signals from a GNSS SV and the acquisition includes determining a primary code phase and frequency of a received GNSS signal containing a virtual random noise (PRN) code to enable tracking of the GNSS signal to generate a virtual range to the GNSS SV as a result of the tracking. In one embodiment of the method, a portion is allocated to store one or more of: (1) a virtual random noise code of the GNSS SV or (2) a hypothesis of an identifier of a possible acquired GNSS signal and a hypothesis of a frequency of the possible acquired GNSS signal. In one embodiment of this method, the one or more application processors may generate GNSS PRN codes and/or code spectra of GNSS PRN codes from DFT for at least the GNSS SVs in the system's field of view before the start of an acquisition phase; in one implementation scheme of this embodiment, such PRN codes and/or their code spectra obtained from DFT may be generated and used immediately but not stored, or alternatively, such PRN codes and/or their code spectra obtained from DFT may be generated and temporarily stored for use during the acquisition and tracking phases. In an alternative embodiment, the one or more application processors may generate GNSS PRN codes and store them in the system's DRAM memory, and then copy them to cache (or other memory) before starting the acquisition phase or in response to a position request. In one embodiment, to save memory, the system may generate GNSS PRN codes and/or derive their code spectra from DFT only for GNSS SVs that are operating well in view.
在一項實施例中,根據此共用態樣之一種系統可包含以下組件:一組一或多個應用處理器,其經組態以執行一作業系統(OS)以及一或多個應用程式,該組一或多個應用處理器實施於一積體電路(IC)中;一組一或多個匯流排,其耦合至該組一或多個應用處理器,該一或多個匯流排位於該積體電路上;一快取記憶體(或其他記憶體),其位於該積體電路上且耦合至該組一或多個匯流排並且耦合至該組一或多個應用處理器以儲存供作業系統使用或供該一或多個應用程式及其他記憶體(諸如,一或多個處理器使用之高頻寬數據機記憶體或其他記憶體,該一或多個處理器不在該組一或多個應用處理器中且亦可位於該IC上並且耦合至該一或多個匯流排)使用之資料;一匯流排介面,其耦合至該組一或多個匯流排,該匯流排介面將該組一或多個應用處理器耦合至在該積體電路外部之動態隨機存取記憶體(DRAM);一GNSS處理系統,其實施於該積體電路上,該GNSS處理系統包括一獲取引擎(AE)及一追蹤引擎(TE),該GNSS處理系統透過該一或多個匯流排耦合至該快取記憶體(或其他記憶體);及一記憶體控制器,其耦合至該快取記憶體(或其他記憶體)及該組一或多個應用處理器以及該GNSS處理系統,該記憶體控制器回應於來自作業系統(或其他軟體組件)之一或多個指令而將該快取記憶體(或其他記憶體)之一部分分配給AE使用以允許獲取GNSS信號。在一項實施例中,該快取記憶體可包含靜態隨機存取記憶體(SRAM),且該AE可包含ASIC硬體邏輯以使用一時間抽取法及一頻率抽取法兩者來實行離散傅立葉變換操作。在一項實施例中,該記憶體控制器可包含:一第一埠控制器,其用以控制對用於該AE之該部分之讀取及寫入;及一第二埠控制器,其用以控制對快取記憶體(或其他記憶體)之一其餘部分之讀取及寫入。在一項實施例中,該記憶體控制器可在GNSS處理系統開始追蹤已自至少三個GNSS SV獲取之GNSS信號之前(但在判定一位置資料(諸如,一緯度及一經度)之前)撤銷分配快取記憶體(或其他記憶體)中由AE使用之該部分。In one embodiment, a system according to this sharing mode may include the following components: a set of one or more application processors configured to execute an operating system (OS) and one or more applications, the set of one or more application processors implemented in an integrated circuit (IC); a set of one or more buses coupled to the set of one or more application processors, the one or more buses being located on the integrated circuit; a cache (or Other memory) located on the integrated circuit and coupled to the set of one or more buses and coupled to the set of one or more application processors to store for use by the operating system or for the one or more applications and other memory (e.g., high-bandwidth modem memory or other memory used by one or more processors that are not in the set of one or more application processors and may also be located on the IC and coupled to the one or more buses a bus interface coupled to the set of one or more buses, the bus interface coupling the set of one or more application processors to a dynamic random access memory (DRAM) outside the integrated circuit; a GNSS processing system implemented on the integrated circuit, the GNSS processing system including an acquisition engine (AE) and a tracking engine (TE), the GNSS processing system through the one or more buses A bus is coupled to the cache memory (or other memory); and a memory controller is coupled to the cache memory (or other memory) and the set of one or more application processors and the GNSS processing system, the memory controller is responsive to one or more instructions from the operating system (or other software component) to allocate a portion of the cache memory (or other memory) for use by the AE to allow acquisition of GNSS signals. In one embodiment, the cache memory may include static random access memory (SRAM), and the AE may include ASIC hardware logic to perform discrete Fourier transform operations using both a time sampling method and a frequency sampling method. In one embodiment, the memory controller may include: a first port controller for controlling reading and writing of the portion used for the AE; and a second port controller for controlling reading and writing of a remaining portion of the cache memory (or other memory). In one embodiment, the memory controller may de-allocate the portion of the cache memory (or other memory) used by the AE before the GNSS processing system begins tracking GNSS signals acquired from at least three GNSS SVs (but before determining a position data (e.g., a latitude and a longitude)).
可有助於減少一L5頻帶GNSS接收器中之記憶體使用之另一態樣係在獲取階段期間按需產生用於關聯至所接收GNSS信號的GNSS PRN碼及/或來自DFT之GNSS PRN碼之碼頻譜。在一項實施例中此,按需產生可在獲取及追蹤階段期間生成GNSS PRN碼及/或來自DFT的GNSS PRN碼之碼頻譜。舉例而言,在一項實施例中可在獲取及追蹤兩個階段期間產生但不儲存此等碼;在替代實施例中,可在獲取及追蹤兩個階段期間臨時且按需產生碼且儲存該等碼,且一旦判定一位置則不再儲存此等碼。Another aspect that can help reduce memory usage in an L5 band GNSS receiver is to generate code spectra of GNSS PRN codes and/or GNSS PRN codes from DFT for association to received GNSS signals on demand during the acquisition phase. In one embodiment, the on-demand generation can generate code spectra of GNSS PRN codes and/or GNSS PRN codes from DFT during the acquisition and tracking phases. For example, in one embodiment, such codes can be generated but not stored during both the acquisition and tracking phases; in an alternative embodiment, codes can be generated temporarily and on demand and stored during both the acquisition and tracking phases, and such codes are no longer stored once a position is determined.
本發明之另一態樣係關於使用陣列處理之一獲取關聯器。此陣列處理架構可先將經數位化GNSS樣本資料例如配置於一陣列中之列中,其中列按照時間配置於一基頻樣本記憶體中。對資料進行之DFT運算可生成一輸出,然後可在逆DFT運算之前不必旋轉或重新格式化或重新配置或轉置陣列中之資料之情況下處理藉由逆DFT運算處理該輸出。資料可經配置以使得in一組多個ALU中之每一ALU處理陣列中之一列或一行,藉此將處理分成可由DFT ALU中之每一者處理之離散片段,以使得一單個DFT ALU可以一原子處理操作在一個或幾個處理時脈循環中計算每一列或每一行,在一項實施例中該單個DFT ALU一旦收到指令要實行多個DFT運算則實行多個DFT運算。基頻樣本記憶體可被實施為含有經排序資料之陣列之一循環緩衝區。在一項實施例中,處理操作可係DFT同址計算,以使得自記憶體檢索一列(或一行)輸入資料並進行處理(使用一DFT),且然後將來自此處理之輸出作為輸入資料儲存回相同記憶體位置中(因此將輸入資料覆寫於該等記憶體位置中)。Another aspect of the invention relates to an acquisition correlator using array processing. The array processing architecture may first arrange the digitized GNSS sample data, for example, in rows in an array, where the rows are arranged in time in a baseband sample memory. A DFT operation performed on the data may generate an output, which may then be processed by an inverse DFT operation without rotating or reformatting or re-arranging or transposing the data in the array prior to the inverse DFT operation. The data may be arranged so that each ALU in a set of multiple ALUs processes a column or row in the array, thereby dividing the processing into discrete segments that may be processed by each of the DFT ALUs, so that a single DFT ALU may compute each column or row in one or more processing clock cycles as an atomic processing operation, and in one embodiment the single DFT ALU performs multiple DFT operations once it is instructed to do so. The baseband sample memory may be implemented as a loop buffer containing an array of sorted data. In one embodiment, the processing operation may be a DFT in-place computation such that a row (or column) of input data is retrieved from memory and processed (using a DFT), and the output from this processing is then stored back into the same memory locations as the input data (thus overwriting the input data in those memory locations).
在可使用一陣列處理架構之一項實施例中,一種用於處理GNSS信號之系統可包含以下組件:一射頻類比轉數位轉換器(ADC),其用以產生所接收GNSS信號之一數位表示;一基頻樣本記憶體,其用以將所接收GNSS信號之數位表示作為經數位化GNSS樣本資料儲存於N2個列(例如,1024列)及N1個行(例如,20行)中,該陣列以一列次序儲存於基頻樣本記憶體中,且該列次序含有在一時間週期(包含一第一時間週期及一第二時間週期)內接收到之經數位化GNSS樣本資料,以使得列次序中之一第一列含有在第一時間週期期間接收之經數位化GNSS樣本資料,且該列次序中位於該第一列之後的一第二列含有於在時間上處於該第一時間週期之後的第二時間週期期間接收之經數位化GNSS樣本資料,其中該基頻樣本記憶體耦合至RF ADC;及一組算術邏輯單元(ALU),其經組態以實行離散傅立葉變換(DFT)運算,該組ALU耦合至該基頻樣本記憶體且經組態以並行且同時地實行N1個DFT,其中N1個DFT中之每一者含有DFT中之N2個點且N1個DFT之輸出儲存於一部分樣本陣列中,且其中該組ALU經組態以然後實行N2個DFT,N2個DFT中之每一者含有來自部分樣本陣列之N1個點,該N2個DFT提供一輸出,該輸出儲存於按照行次序配置之一DFT結果陣列中。在一項實施例中,該基頻樣本記憶體被組態為儲存經數位化GNSS樣本資料之一循環記憶體緩衝區。在一項實施例中,N1個DFT使用相同運算及相同程式控制指令來使該組ALU對不同資料進行運算。在一項實施例中,隨時間推移連續地實行該N2個DFT。在一項實施例中,該循環樣本記憶體緩衝區儲存超過一毫秒之虛擬隨機GNSS信號之一個一以上訊框。在一項實施例中,該N1個DFT及該N2個DFT使用一時間抽取法,且N1係整數值5、10或20或40中之一者。在另一實施例中,N2經設定以使得N1×N2 = 20480 (或N1×N2大於20480)。在一項實施例中,自列次序至一行次序之一改變避免一重新排序或轉置演算法,且該改變係由經組態以產生此改變的N1個DFT後續接著N2個DFT之一組合而產生。在一項實施例中,一GNSS碼產生器經組態以產生一GNSS碼頻譜,且該組ALU對GNSS PRN碼實行一組DFT以提供一碼頻譜結果資料,該碼頻譜結果資料按照一行次序儲存於一碼頻譜記憶體中。在一項實施例中,該組ALU可經組態以將碼頻譜結果資料乘以儲存於DFT結果陣列中之樣本輸出以生成一積陣列。在一項實施例中,該組ALU可經組態以使用一頻率抽取法對該積陣列實行一逆DFT。在一項實施例中,逆DFT可包括:(1)在一第一階段中,利用共軛輸入之N2個DFT,N2個DFT中之每一者含有N1點;及(2)在處於第一階段之後的一第二階段中,N1個DFT,該N1個DFT中之每一者含有N2點。在一項實施例中,該基頻樣本記憶體可係一雙埠記憶體,其允許不同處理器或程序同時存取基頻樣本記憶體之不同部分。在一項實施例中,GNSS碼產生器可在一獲取階段期間當需要一虛擬隨機雜訊碼時針對在視野中之每一GNSS SV每毫秒重複地產生該虛擬隨機雜訊碼,且在使用之後不儲存一所產生虛擬隨機雜訊碼(及/或自DFT得到之其碼頻譜),且所產生之虛擬隨機雜訊碼可用於產生GNSS碼頻譜。在一項實施例中,GNSS碼頻譜在頻率及相位兩方面對準於在記憶體中之適當位置以和與所接收GNSS信號相關聯之碼相位與頻率移位假設匹配。在一項實施例中,可由CORDIC硬體實行此對準。In one embodiment in which an array processing architecture may be used, a system for processing GNSS signals may include the following components: an RF analog-to-digital converter (ADC) for generating a digital representation of a received GNSS signal; a baseband sample memory for storing the digital representation of the received GNSS signal as digitized GNSS sample data in N2 rows (e.g., 1024 rows) and N1 rows (e.g., 20 rows), the array being stored in a row order in the baseband sample memory; The baseband sample memory is a memory for storing digitized GNSS sample data received in a time period (including a first time period and a second time period) in a row sequence, such that a first row in the row sequence contains digitized GNSS sample data received during the first time period, and a second row in the row sequence that is located after the first row contains digitized GNSS sample data received during a second time period that is located after the first time period in time, wherein the baseband sample memory is coupled to an RF ADC; and an arithmetic logic unit (ALU) configured to perform discrete Fourier transform (DFT) operations, the ALU being coupled to the baseband sample memory and configured to perform N1 DFTs in parallel and simultaneously, wherein each of the N1 DFTs contains N2 points in the DFT and the outputs of the N1 DFTs are stored in a portion of the sample array, and wherein the ALU is configured to then perform N2 DFTs, each of the N2 DFTs contains N1 points from the portion of the sample array, the N2 DFTs providing an output that is stored in a DFT result array arranged in row order. In one embodiment, the baseband sample memory is configured as a cyclic memory buffer storing digitized GNSS sample data. In one embodiment, the N1 DFTs use the same operation and the same program control instructions to cause the set of ALUs to operate on different data. In one embodiment, the N2 DFTs are performed continuously over time. In one embodiment, the cyclic sample memory buffer stores more than one frame of a virtual random GNSS signal over one millisecond. In one embodiment, the N1 DFTs and the N2 DFTs use a time decimation method, and N1 is one of integer values 5, 10, 20, or 40. In another embodiment, N2 is set so that N1×N2=20480 (or N1×N2 is greater than 20480). In one embodiment, a change from column order to row order avoids a reordering or transposition algorithm, and the change is produced by a combination of N1 DFTs followed by N2 DFTs configured to produce the change. In one embodiment, a GNSS code generator is configured to produce a GNSS code spectrum, and the set of ALUs performs a set of DFTs on the GNSS PRN code to provide a code spectrum result data, which is stored in a code spectrum memory in a row order. In one embodiment, the ALU may be configured to multiply the code spectrum result data by the sample output stored in the DFT result array to generate a product array. In one embodiment, the ALU may be configured to perform an inverse DFT on the product array using a frequency decimation method. In one embodiment, the inverse DFT may include: (1) in a first stage, N2 DFTs using conjugate inputs, each of the N2 DFTs containing N1 points; and (2) in a second stage subsequent to the first stage, N1 DFTs, each of the N1 DFTs containing N2 points. In one embodiment, the baseband sample memory may be a dual-port memory that allows different processors or programs to access different portions of the baseband sample memory simultaneously. In one embodiment, the GNSS code generator may repeatedly generate a virtual random noise code for each GNSS SV in view every millisecond when a virtual random noise code is needed during an acquisition phase, and does not store a generated virtual random noise code (and/or its code spectrum obtained from DFT) after use, and the generated virtual random noise code may be used to generate a GNSS code spectrum. In one embodiment, the GNSS code spectrum is aligned in both frequency and phase to the appropriate location in memory to match the code phase and frequency shift assumptions associated with the received GNSS signal. In one embodiment, this alignment can be performed by CORDIC hardware.
本文中所闡述之GNSS接收器之一或多項實施例可實行使用一系列DFT之以下方法中之一者。在一項實施例中,一種方法可包含以下操作: 接收GNSS信號; 將所接收GNSS信號數位化並自一類比轉數位轉換器(ADC)提供GNSS樣本資料之一輸出,該GNSS樣本資料包含(1)一所接收GNSS信號之GNSS旁帶A樣本資料及(2)所接收GNSS信號之GNSS旁帶B樣本資料中之至少一者; 進行以下兩項中之至少一者:(1)對GNSS旁帶A樣本資料計算第一組DFT以提供第一組結果;及(2)對GNSS旁帶B樣本資料計算第二組DFT以提供第二組結果; 進行以下兩項中之至少一者:(1)對GNSS旁帶A主PRN碼資料計算第三組DFT,在該第三組DFT之前由於碼都卜勒及載波都卜勒而對GNSS旁帶A主PRN碼資料進行了調整,該GNSS旁帶A主PRN碼資料包含GNSS旁帶A中之兩個分量中之至少一者,該第三組DFT提供第三組結果;及(2)對GNSS旁帶B主PRN碼資料計算第四組DFT,在該第四組DFT之前由於碼都卜勒及載波都卜勒而對GNSS旁帶B主PRN碼資料進行了調整,該GNSS旁帶B主PRN碼資料包含GNSS旁帶B中之兩個分量中之至少一者,該第四組DFT提供第四組結果; 進行以下兩項中之至少一者:(1)使用該第一組結果之一積之複共軛及該第三組結果之複共軛之一DFT計算第一組關聯以提供第五組結果;及(2)使用該第二組結果之一積之複共軛及該第四組結果之複共軛之一DFT計算第二組關聯以提供第六組結果;及 對以下兩項中之至少一者求積分:(1)利用該GNSS旁帶A之至少一個先前和對該第五組結果求積分;及(2)利用該GNSS旁帶B之至少一個先前和來對該第六組結果求積分,其中該積分包含以下兩項中之至少一者:(1)將GNSS旁帶A分量之至少一個新的和儲存於一單個假設記憶體中及(2)將GNSS旁帶B分量之至少一個新的和儲存於該單個假設記憶體中。One or more embodiments of a GNSS receiver described herein may implement one of the following methods using a series of DFTs. In one embodiment, a method may include the following operations: Receive a GNSS signal; Digitize the received GNSS signal and provide an output of GNSS sample data from an analog-to-digital converter (ADC), the GNSS sample data including at least one of (1) GNSS sideband A sample data of a received GNSS signal and (2) GNSS sideband B sample data of the received GNSS signal; Perform at least one of the following: (1) calculate a first set of DFTs on the GNSS sideband A sample data to provide a first set of results; and (2) 2) Calculate a second set of DFTs on the GNSS sideband B sample data to provide a second set of results; Perform at least one of the following two items: (1) Calculate a third set of DFTs on the GNSS sideband A main PRN code data, before the third set of DFTs, the GNSS sideband A main PRN code data is adjusted due to code Doppler and carrier Doppler, and the GNSS sideband A main PRN code data includes at least one of the two components in GNSS sideband A, and the third set of DFTs provides a third set of results; and (2) Calculate a fourth set of DFTs on the GNSS sideband B main PRN code data DFT, before the fourth set of DFT, the GNSS sideband B main PRN code data is adjusted due to code Doppler and carrier Doppler, the GNSS sideband B main PRN code data includes at least one of the two components in GNSS sideband B, and the fourth set of DFT provides a fourth set of results; Perform at least one of the following two items: (1) use the complex conjugate of the product of the first set of results and the complex conjugate of the third set of results to calculate the first set of correlations to provide a fifth set of results; and (2) use the complex conjugate of the product of the second set of results and the complex conjugate of the fourth set of results to calculate the first set of correlations to provide a fifth set of results. A conjugate DFT is calculated to compute a second set of associations to provide a sixth set of results; and integrating at least one of the following: (1) integrating the fifth set of results using at least one previous sum of the GNSS sideband A; and (2) integrating the sixth set of results using at least one previous sum of the GNSS sideband B, wherein the integration includes at least one of the following: (1) storing at least one new sum of the GNSS sideband A components in a single hypothetical memory and (2) storing at least one new sum of the GNSS sideband B components in the single hypothetical memory.
此方法之一個實施方案可總結為(「情形1」): 1. 計算一旁帶A樣本之FFT; 2. 計算一旁帶B樣本之FFT; 3. 計算由於碼都卜勒及載波都卜勒(例如將搜尋之潛在都卜勒之一範圍)而被調整之至少一個旁帶A分量主碼之FFT; 4. 計算由於碼都卜勒及載波都卜勒而被調整之至少一個旁帶B分量主碼之FFT; 5. 對(a)自1計算之FFT (旁帶A樣本之FFT)與(b)自3計算之FFT (旁帶A分量之FFT)的積進行逆FFT (IFFT)來計算關聯; 6. 對(a)自2計算之FFT與(b)自4計算之FFT的積進行IFFT來計算關聯。One implementation of this method can be summarized as ("Case 1"): 1. Calculate the FFT of a sideband A sample; 2. Calculate the FFT of a sideband B sample; 3. Calculate the FFT of at least one sideband A component main code adjusted by code Doppler and carrier Doppler (e.g., a range of potential Dopplers to be searched); 4. Calculate the FFT of at least one sideband B component main code adjusted by code Doppler and carrier Doppler; 5. Calculate the correlation by performing an inverse FFT (IFFT) on the product of (a) the FFT calculated from 1 (FFT of sideband A samples) and (b) the FFT calculated from 3 (FFT of sideband A components); 6. The correlation is computed by taking an IFFT of the product of (a) the FFT computed from 2 and (b) the FFT computed from 4.
此實施方案可提供數個優點。舉例而言,此實施方案可對所接收旁帶樣本進行的FFT非常少,且可減小或消除將預先計算GNSS樣本頻譜自記憶體(例如DRAM或非揮發性記憶體)移動至頻域關聯引擎通常所需之大規模資料傳送。頻域關聯引擎可在所需之記憶體佔用面積低或小的同時藉由以一合理時脈速度再次使用引擎而係非常高效的。舉例而言,頻域關聯引擎可按照本文中所闡述之一管線架構在引擎內現場計算主碼及其頻譜(例如,在上文之求和「情形1」中之運算3及4中)。此外,對現場產生之碼應用碼都卜勒及載波都卜勒(例如,在上文之求和「情形1」中之運算3及4中)能減小輸入(所接收)之樣本FFT且亦提高碼都卜勒準確性。This implementation may provide several advantages. For example, this implementation may require very few FFTs on the received sideband samples and may reduce or eliminate the large data transfers typically required to move pre-computed GNSS sample spectra from memory (e.g., DRAM or non-volatile memory) to the frequency domain correlation engine. The frequency domain correlation engine may be very efficient by reusing the engine at a reasonable clock rate while requiring a low or small memory footprint. For example, the frequency domain correlation engine may calculate the master code and its spectrum in situ within the engine (e.g., in operations 3 and 4 in the summation "Case 1" above) according to a pipeline architecture described herein. Additionally, applying code Doppler and carrier Doppler to the field generated code (e.g., in operations 3 and 4 in the summation "Case 1" above) can reduce the input (received) sample FFT and also improve the code Doppler accuracy.
獲取(舉例而言) L5 GNSS信號之此實施方案存在許多組合及排列。然而此等組合及排列可不如以上「情形1」高效,原因在於需要(相對於「情形1」)更快處理時脈及/或更大記憶體或原因在於其具有較小之獲取靈敏度或需要一更長時間來獲取信號以達到一給定信號強度。可保留對「情形1」中之六項(6)操作之使用,但排列基於以下各項中之一或多者:(1)在何處及如何實行碼補償及載波補償,舉例而言:(a)載波都卜勒補償可係「擦除」所接收GNSS樣本或將本端產生(或預先計算)之PRN碼樣本進行倍乘;或(b)可藉由對碼頻譜進行一複數乘法(例如,參見附錄3)或藉由補償後關聯結果及其在記憶體中之積分(參見附錄1)來對所接收GNSS樣本(「輸入樣本」)或本地產生(或預先計算)之PRN碼樣本應用碼都卜勒調整;(2)是基於在視野中之GNSS SV而在獲取引擎(AE)中在本地現場產生碼頻譜,還是預先計算碼頻譜並將碼頻譜載入至AE;或(3)替代硬體架構(而非依序地進行時間抽取FFT及頻率抽取FFT),諸如用以減小每FFT之處理時脈之數目的並行FFT內核或較高基數內核。以下6個排列係可能排列之實例。There are many combinations and permutations of this implementation for acquiring (for example) L5 GNSS signals. However, these combinations and permutations may not be as efficient as "Case 1" above because they require faster processing clocks and/or more memory (relative to "Case 1") or because they have less acquisition sensitivity or require a longer time to acquire signals to reach a given signal strength. The use of the six (6) operations in "Case 1" may be retained, but the arrangement is based on one or more of the following: (1) where and how code compensation and carrier compensation are implemented, for example: (a) carrier Doppler compensation may be performed by "erasing" the received GNSS samples or multiplying the locally generated (or pre-calculated) PRN code samples; or (b) code Doppler adjustment may be applied to the received GNSS samples ("input samples") or locally generated (or pre-calculated) PRN code samples by performing a complex multiplication of the code spectrum (for example, see Appendix 3) or by correlating the result after compensation and integrating it in memory (see Appendix 1); (2) is it based on the GNSS in view? SV instead of generating the code spectrum locally in the acquisition engine (AE), or pre-calculating the code spectrum and loading it into the AE; or (3) alternative hardware architectures (rather than performing the time extraction FFT and frequency extraction FFT sequentially), such as parallel FFT kernels or higher radix kernels to reduce the number of processing clocks per FFT. The following 6 arrangements are examples of possible arrangements.
情形2 (將碼及載波都卜勒切換為樣本:需要更多輸入樣本FFT) 1. 對針對碼都卜勒及載波都卜勒而調整之旁帶A進行FFT 2. 對針對碼都卜勒及載波都卜勒而調整之旁帶B進行FFT 3. 對至少一個A分量主碼進行FFT 4. 對至少一個B分量主碼進行FFT 5. 藉由對整合至一單個假設記憶體中之1個積及3個積進行IFFT而關聯關聯 6. 藉由整合至一單個假設記憶體中之2個及4積進行IFFT而做出關聯Case 2 (Switch code and carrier Doppler to samples: more input sample FFTs are needed) 1. FFT of sideband A adjusted for code Doppler and carrier Doppler 2. FFT of sideband B adjusted for code Doppler and carrier Doppler 3. FFT of at least one A component main code 4. FFT of at least one B component main code 5. Correlate by IFFT of 1 and 3 products combined into a single hypothetical memory 6. Correlate by IFFT of 2 and 4 products combined into a single hypothetical memory
情形2B(與2相同,預先計算碼頻譜:需要更多記憶體及資料頻寬) 1. 對針對碼都卜勒及載波都卜勒而調整之旁帶A進行FFT 2. 對針對碼都卜勒及載波都卜勒而調整之旁帶B進行FFT 3. 獲得至少一個A分量主碼之預先計算FFT 4. 獲得至少一個B分量件主碼之預先計算FFT 5. 對整合至一單個假設記憶體中之1個積及3個積進行IFFT而做出關聯 6. 對整合至一單個假設記憶體中之2個積及4個積進行IFFT而做出關聯Case 2B (same as 2, pre-calculated code spectrum: requires more memory and data bandwidth) 1. FFT of sideband A adjusted for code Doppler and carrier Doppler 2. FFT of sideband B adjusted for code Doppler and carrier Doppler 3. Get at least one pre-calculated FFT of the A component master code 4. Get at least one pre-calculated FFT of the B component master code 5. IFFT and correlate 1 product and 3 products combined into a single hypothetical memory 6. IFFT and correlate 2 products and 4 products combined into a single hypothetical memory
情形3 (與2相同,碼都卜勒補償後關聯) 1. 對針對載波都卜勒而調整之旁帶A進行FFT 2. 對針對載波都卜勒而調整之旁帶B進行FFT 3. 對至少一個A分量主碼進行FFT 4. 對至少一個B分量主碼進行FFT 5. 對整合至一單個假設記憶體中並針對碼都卜勒而調整之1個積及3個積進行IFFT而做出關聯 6. 對整合至一單個假設記憶體中且針對碼都卜勒而調整之2個積及4個積進行IFFT而做出關聯Case 3 (same as 2, correlated after code Doppler compensation) 1. FFT of sideband A adjusted for carrier Doppler 2. FFT of sideband B adjusted for carrier Doppler 3. FFT of at least one A component main code 4. FFT of at least one B component main code 5. IFFT of 1 product and 3 products combined into a single hypothetical memory and adjusted for code Doppler and correlate 6. IFFT of 2 products and 4 products combined into a single hypothetical memory and adjusted for code Doppler and correlate
情形3B (與3相同,但預先計算碼頻譜) 1. 對針對載波都卜勒調整之旁帶A進行FFT 2. 對針對載波都卜勒調整之旁帶B進行FFT 3. 獲得至少一個A分量主碼之預先計算FFT 4. 獲得至少一個B分量主碼之預先計算FFT 5. 對整合至一單個假設記憶體中且針對碼都卜勒調整之1個積及3個積進行IFFT而做出關聯 6. 對整合至一單個假設記憶體中且針對碼都卜勒調整之2個積及4個積進行IFFT而做出關聯Case 3B (same as 3, but with pre-calculated code spectrum) 1. Perform FFT on sideband A adjusted for carrier Doppler 2. Perform FFT on sideband B adjusted for carrier Doppler 3. Obtain pre-calculated FFT of at least one A-component main code 4. Obtain pre-calculated FFT of at least one B-component main code 5. Perform IFFT on 1 and 3 products combined into a single hypothetical memory and adjusted for code Doppler and correlate 6. Perform IFFT on 2 and 4 products combined into a single hypothetical memory and adjusted for code Doppler and correlate
以下一組情形使用附錄1中所闡述之方法,該方法以若干個頻率(0、200、400、600、800)每毫秒計算輸入樣本旁帶樣本之FFT,且然後藉由選擇最接近次kHz FFT且然後移位達+/-N個樣本以獲得一超kHz補償來粗略估計樣本旁帶A或B頻譜。舉例而言,2450 Hz使用400Hz FFT且 使此FFT移位+2樣本以得到一組合的400Hz + 2kHz都卜勒補償。The following set of cases uses the method described in Appendix 1 which computes the FFT of the input sample sideband samples every millisecond at several frequencies (0, 200, 400, 600, 800) and then roughly estimates the sample sideband A or B spectrum by selecting the closest sub-kHz FFT and then shifting by +/-N samples to get an over-kHz offset. For example, 2450 Hz uses a 400Hz FFT and shifts this FFT by +2 samples to get a combined 400Hz + 2kHz Doppler offset.
情形4 (與附錄1中所闡述之方法相似) 1. 自在涵蓋一1 kHz範圍之一組頻率下針對載波都卜勒而調整之一組旁帶A樣本FFT中選出至少一個FFT,該一個FFT移位N個樣本以生成一近似載波都卜勒 2. 自在涵蓋一1 kHz範圍之一組頻率下針對載波都卜勒而調整之一組旁帶B樣本FFT選出至少一個FFT,該一個FFT移位N個樣本以生成一近似載波都卜勒 3. 對針對碼都卜勒調整之至少一個A分量主碼進行FFT 4. 對針對碼都卜勒調整之至少一個B分量主碼進行FFT 5. 對整合至一單個假設記憶體中之1個積及3個積進行IFFT而做出關聯 6. 對整合至一單個假設記憶體中之2個積及4個積進行IFFT而做出關聯Case 4 (similar to the method described in Appendix 1) 1. Select at least one FFT from a set of sideband A sample FFTs adjusted for carrier Doppler at a set of frequencies covering a 1 kHz range, the one FFT shifted by N samples to generate an approximate carrier Doppler 2. Select at least one FFT from a set of sideband B sample FFTs adjusted for carrier Doppler at a set of frequencies covering a 1 kHz range, the one FFT shifted by N samples to generate an approximate carrier Doppler 3. Perform FFT on at least one A component main code adjusted for code Doppler 4. Perform FFT on at least one B component main code adjusted for code Doppler 5. IFFT of 1 product and 3 products integrated into a single hypothetical memory to make a correlation 6. IFFT of 2 products and 4 products integrated into a single hypothetical memory to make a correlation
情形4A (與方法4相似,但預先計算碼頻譜及碼都卜勒後關聯) 1. 自在涵蓋一1 kHz範圍之一組頻率下針對載波都卜勒而調整之一組旁帶A樣本FFT選出至少一個FFT,該一個FFT移位達N個樣本以生成一近似載波都卜勒 2. 自在涵蓋一1 kHz範圍之一組頻率下針對載波都卜勒而調整之一組旁帶B樣本FFT選出至少一個FFT,該一個FFT移位達N個樣本以生成一近似載波都卜勒 3. 獲得至少一個A分量主碼之經預先計算FFT 4. 獲得至少一個B分量主碼之經預先計算FFT 5. 對整合至一單個假設記憶體中且針對碼都卜勒調整之1個積及3個積進行IFFT而做出關聯 6.對整合至一單個假設記憶體中且針對碼都卜勒調整之2個積及4個積進行IFFT而做出關聯Case 4A (similar to method 4, but with pre-calculated code spectrum and code Doppler post-correlation) 1. Select at least one FFT from a set of sideband A sample FFTs adjusted for carrier Doppler at a set of frequencies covering a 1 kHz range, the one FFT shifted by N samples to generate an approximate carrier Doppler 2. Select at least one FFT from a set of sideband B sample FFTs adjusted for carrier Doppler at a set of frequencies covering a 1 kHz range, the one FFT shifted by N samples to generate an approximate carrier Doppler 3. Obtain at least one pre-calculated FFT of the A component main code 4. Obtain at least one pre-calculated FFT of the B component main code 5. IFFT of 1 and 3 products integrated into a single hypothetical memory and adjusted for code Doppler is correlated 6. IFFT of 2 and 4 products integrated into a single hypothetical memory and adjusted for code Doppler is correlated
在本文中所闡述之實施例中之某些實施例中,針對碼都卜勒及載波都卜勒中之一者或兩者而做出調整或補償。本文中所闡述,可獨立地且不同階段實行此等調整。碼都卜勒調整係一本地產生之碼(或一預先計算碼)或對一所接收GNSS樣本碼進行調整以調整對碼(諸如,一主GNSS PRN碼)之都卜勒效應;舉例而言,在一搜尋或獲取階段期間,可對本地產生之碼或對所接收GNSS樣本碼做出多個可能的碼都卜勒調整以搜尋並獲取受都卜勒效應影響之一GNSS信號。載波都卜勒調整係對一信號之一載波頻率受到之都卜勒效應進行調整的一調整。載波都卜勒係所觀測到的由於衛星與接收器之間的相對運動而自傳輸頻率的頻率偏移且係自衛星及接收器振盪器之標稱值的偏移。碼都卜勒係所接收碼相位隨時間而發生之移位,其與載波都卜勒係同調的。在L5下,每碼碼片存在115個載波循環。因此,以碼片/秒為單位之碼都卜勒係載波都卜勒除以115。因此在一載波都卜勒為4321 Hz時,所接收碼相位將在一秒內移動37.57碼片。為了能接收到弱信號,必須針對多個主碼訊框對所接收信號對接收器之複本信號進行關聯。此需要必須根據載波都卜勒假設將每一傳入碼相位假設移位。此移位被稱為碼都卜勒。In some of the embodiments described herein, adjustments or compensations are made for one or both of Code Doppler and Carrier Doppler. As described herein, these adjustments may be performed independently and at different stages. Code Doppler adjustment is an adjustment made to a locally generated code (or a pre-calculated code) or to a received GNSS sample code to adjust for the Doppler effect of a code (e.g., a primary GNSS PRN code); for example, during a search or acquisition phase, multiple possible Code Doppler adjustments may be made to the locally generated code or to the received GNSS sample code to search for and acquire a GNSS signal affected by the Doppler effect. Carrier Doppler adjustment is an adjustment made to adjust for the Doppler effect on a carrier frequency of a signal. Carrier Doppler is the observed frequency deviation from the transmitted frequency due to relative motion between the satellite and the receiver and is the deviation from the nominal values of the satellite and receiver oscillators. Code Doppler is the shift in the received code phase over time and is coherent with the carrier Doppler. At L5, there are 115 carrier cycles per code chip. Therefore, the code Doppler in chips/second is the carrier Doppler divided by 115. So at a carrier Doppler of 4321 Hz, the received code phase will move 37.57 chips in one second. In order to be able to receive weak signals, the received signal must be correlated to the receiver's replica for multiple master code frames. This requires shifting each incoming code phase assumption based on the carrier Doppler assumption. This shift is called a Doppler shift.
本發明之另一態樣涉及使用來自一個GNSS SV之E5 GNSS信號中之主碼及/或副碼以基於該等GNSS信號導出碼相位資料或時間資料,且然後使用該資訊來估計來自其他GNSS SV之其他GNSS信號之碼相位以獲取來自該等其他GNSS SV之該等其他GNSS信號之碼相位。在此態樣中,GNSS接收器可採用可小於1 ms GNSS PRN碼時段且可偏離該1 ms GNSS PRN碼時段之一處理時段,且GNSS接收器可使用該處理來試圖在獲取其他GNSS信號之碼相位之前同調地求積分;舉例而言,GNSS接收器中之GNSS處理系統可每0.25毫秒自一循環記憶體緩衝區檢索一全1毫秒(ms)之經數位化GNSS樣本資料且對所檢索之資料實行一組DFT及逆DFT以針對每一頻段同調地求積分,且然後在下一處理時段重複此VFFDC程序,其中每一處理時段為0.25毫秒或一碼時段(即在一項實施例中,1 ms長)之某些其他分數。此可允許GNSS接收器在多個處理時段內重複地使用來自循環緩衝區之1毫秒資料以試圖使用藉由預先獲取GNSS信號中之至少一者之主碼或副碼相位而獲得之資訊對其他GNSS信號同調地求積分。在此實例中,根據預期會接收到衛星碼之近似時間格搜尋衛星碼,以使得減少由於與副碼相關聯之相位反轉所致的次毫秒同調對消損耗。在另一實施例中,接收器時脈可能已足夠準確(遠小於1 ms之誤差)且一優先位置可足夠眾所周知以在此精確時間獲取模式中允許處理所有GNSS信號。Another aspect of the present invention involves using the primary code and/or secondary code in the E5 GNSS signals from one GNSS SV to derive code phase data or time data based on those GNSS signals, and then using that information to estimate the code phases of other GNSS signals from other GNSS SVs to obtain the code phases of those other GNSS signals from those other GNSS SVs. In this aspect, a GNSS receiver may employ a processing period that may be less than and may be offset from a 1 ms GNSS PRN code period, and the GNSS receiver may use the processing to attempt to coherently integrate before acquiring the code phase of other GNSS signals; for example, a GNSS processing system in a GNSS receiver may retrieve a full 1 millisecond (ms) of digitized GNSS sample data from a cyclic memory buffer every 0.25 milliseconds and perform a set of DFTs and inverse DFTs on the retrieved data to coherently integrate for each frequency band, and then repeat this VFFDC procedure at the next processing period, where each processing period is 0.25 milliseconds or some other fraction of a code period (i.e., 1 ms long in one embodiment). This may allow a GNSS receiver to repeatedly use 1 millisecond of data from a recurring buffer over multiple processing periods in an attempt to coherently integrate other GNSS signals using information obtained by pre-acquiring the primary or secondary code phase of at least one of the GNSS signals. In this example, satellite codes are searched based on an approximate time grid at which they are expected to be received so as to reduce sub-millisecond coherence pair loss due to phase reversals associated with the secondary codes. In another embodiment, the receiver clock may already be accurate enough (much less than 1 ms error) and a priority position may be known enough to allow all GNSS signals to be processed in this precise time acquisition mode.
本發明之另一態樣涉及僅使用GNSS信號之兩個或四個分量之一子組(一選定分量)來在粗略時間獲取期間首先獲取該子組(諸如,四個分量中僅獲取一個分量),且然後獲取其餘分量。在一項實施例中,此選定分量係基於由於正負號或相位反轉所致之信號改變之一最低概率而選定,正負號或相位反轉係由於在該選定分量中使用之譯碼方案所致。在伽利略之E5 GNSS信號之情形中,E5BI分量由於正負號或相位反轉而發生信號改變之概率最低,且因此可用作選定分量來實行一粗略時間獲取或精確時間獲取,再試圖獲取及/或追蹤伽利略GNSS信號之其餘分量。此種僅使用分量之一子組可最初在開始一獲取(諸如,一粗略時間獲取)時進行,或作為在一習用獲取失敗之後的一後備操作模式或作為當關聯數目減小時更迅速地獲取一較強衛星之一方法,以允許一GNSS獲取引擎之一部分比在採用更多GNSS信號分量之情況下更迅速地且以比在採用更多GNSS信號分量之情況下更低的功率來搜尋諸多SV之一大頻率空間。Another aspect of the invention involves using only a subset (a selected component) of the two or four components of the GNSS signal to first acquire the subset (e.g., only one of the four components) during coarse time acquisition, and then acquire the remaining components. In one embodiment, this selected component is selected based on a lowest probability of a signal change due to a sign or phase reversal due to a coding scheme used in the selected component. In the case of Galileo's E5 GNSS signals, the E5BI component has the lowest probability of signal change due to sign or phase reversal and can therefore be used as the selected component to perform a coarse time acquisition or fine time acquisition before attempting to acquire and/or track the remaining components of the Galileo GNSS signal. This use of only a subset of the components may be done initially at the beginning of an acquisition (e.g., a coarse time acquisition), or as a fallback mode of operation after a practiced acquisition failure, or as a method to acquire a stronger satellite more quickly as the number of associations decreases, to allow a portion of a GNSS acquisition engine to search a large frequency space of many SVs more quickly and with lower power than if more GNSS signal components were employed.
本發明之另一態樣涉及減弱來自一些已知強干擾源(諸如,通常存在於例如機場或軍事基地周圍的航空無線電導航(ARN)信號)之干擾的影響。ARN信號(諸如,來自一戰術空中導航系統(DME/TACAN)之信號)通常為遠高於一雜訊本底之強脈衝信號,而GNSS信號通常低於雜訊本底。此外,ARN信號可對處於L5頻帶中之GNSS造成干擾。在一項實施例中,可藉由偵測高於雜訊本底之一信號源(舉例而言,偵測高於可比一雜訊本底高出數dB之一預定臨限值之一信號)且然後在頻域中移除該信號來減弱此干擾。可在信號獲取階段期間使用本文中所闡述之DFT陣列處理來識別干擾信號,且然後可透過一FIR (有限脈衝回應)濾波器處理該干擾信號以在時域關聯處理之前移除干擾信號。另一選擇為,由於每毫秒且在上旁帶及下旁帶中之每一者處實行輸入樣本頻譜,因此可在輸入資料頻譜中觀測到具有強干擾之頻率。Another aspect of the invention relates to reducing the effects of interference from some known strong interference sources, such as aeronautical radio navigation (ARN) signals that are typically present around, for example, airports or military bases. ARN signals, such as signals from a tactical air navigation system (DME/TACAN), are typically strong pulse signals that are well above a noise floor, while GNSS signals are typically below the noise floor. In addition, ARN signals can cause interference to GNSS in the L5 band. In one embodiment, the interference can be attenuated by detecting a signal source above the noise floor (for example, detecting a signal above a predetermined threshold that may be several dB above a noise floor) and then removing the signal in the frequency domain. The interference signal can be identified during the signal acquisition phase using the DFT array processing described herein, and then the interference signal can be processed through a FIR (finite impulse response) filter to remove the interference signal before time domain correlation processing. Alternatively, since the input sample spectrum is performed every millisecond and at each of the upper and lower sidebands, frequencies with strong interference may be observed in the input data spectrum.
本發明之另一態樣係關於藉由自一些DFT計算輸出但不儲存輸出來減少記憶體使用之方法。此方法可藉由不儲存來自DFT計算之選定輸出來減小積分或假設記憶體之大小。在一項實施例中,對輸出進行評估以判定是否保存該等輸出。當使用DFT方法來實行關聯時,可採用此方式。在此情形中,DFT在一毫秒內以所有碼假設生成關聯結果。若時段位置不確定性遠小於一毫秒(即全範圍),則僅需要對所估計位置周圍之一部分求積分並保存。Another aspect of the invention is a method for reducing memory usage by calculating outputs from some DFT calculations but not storing the outputs. This method can reduce the size of the integration or assumption memory by not storing selected outputs from the DFT calculations. In one embodiment, the outputs are evaluated to determine whether to save the outputs. This approach can be used when using the DFT method to perform correlation. In this case, the DFT generates correlation results with all code assumptions within one millisecond. If the time segment position uncertainty is much less than one millisecond (i.e., the full range), only a portion around the estimated position needs to be integrated and saved.
本文中所闡述之態樣及實施例可包含儲存可執行電腦程式指令之非暫時性機器可讀媒體,當該等電腦程式指令由該一或多個資料處理系統執行時可使得一或多個資料處理系統實行本文中所闡述之方法。該等指令可儲存於非揮發性記憶體(諸如,快閃記憶體)或揮發性動態隨機存取記憶體或其他形式之記憶體中。The aspects and embodiments described herein may include a non-transitory machine-readable medium storing executable computer program instructions that, when executed by the one or more data processing systems, cause the one or more data processing systems to perform the methods described herein. The instructions may be stored in non-volatile memory (e.g., flash memory) or volatile dynamic random access memory or other forms of memory.
以上發明內容不包含本發明中之所有實施例之一詳盡清單。可依據上文總結之各種態樣及實施例之所有適合組合且亦依據以下詳細闡述中所揭示之態樣及實施例實踐所有系統及方法。The above invention content does not include an exhaustive list of all embodiments of the present invention. All systems and methods can be implemented according to all suitable combinations of the various aspects and embodiments summarized above and also according to the aspects and embodiments disclosed in the following detailed description.
各種實施例及態樣將參考下文所論述之細節加以闡述,且附圖將圖解說明各種實施例。以下說明及圖式係說明性的並不應被闡釋為限制性的。闡述眾多具體細節以提供各種實施例之一透徹理解。然而,在一些例項中,眾所周知或習用的細節未加以闡述以提供對實施例之一簡潔論述。Various embodiments and aspects will be described with reference to the details discussed below, and the accompanying drawings will illustrate various embodiments. The following description and drawings are illustrative and should not be construed as limiting. Numerous specific details are set forth to provide a thorough understanding of various embodiments. However, in some instances, well-known or commonly used details are not set forth to provide a concise description of an embodiment.
在說明書中提及「一個實施例」或「一實施例」意指結合所述實施例而闡述之一特定的特徵、結構及特性可包含於至少一項實施例中。在說明書中各處出現之片語「在一項實施例中」並不一定全部皆指代同一實施例。包括硬體(例如電路系統、專用邏輯等)、軟體或硬體與軟體兩者之組合的處理邏輯實行下圖中所繪示之程序。儘管下文根據某些順序操作闡述程序,但應瞭解,所闡述之操作中之某些操作可按照一不同次序實行。此外,某些操作可並行地而非依序地實行。Mentioning "one embodiment" or "an embodiment" in the specification means that a specific feature, structure, and characteristic described in conjunction with the embodiment may be included in at least one embodiment. The phrase "in one embodiment" appearing in various places in the specification does not necessarily refer to the same embodiment. The processing logic including hardware (such as circuit systems, dedicated logic, etc.), software, or a combination of hardware and software implements the procedures shown in the figure below. Although the following describes the procedures according to certain sequential operations, it should be understood that some of the operations described may be performed in a different order. In addition, some operations may be performed in parallel rather than sequentially.
本文中所闡述之實施例之一項態樣係關於在一或多個應用處理器與一GNSS處理系統之間共用快取記憶體。在闡述此等共用實施例之前,將參考圖1提供先前技術中之一先前架構之一說明。圖1展示包含透過一匯流排14耦合之一或多個應用處理器12與一GNSS處理器20之一系統10,匯流排14亦耦合至系統主記憶體,該系統主記憶體係動態隨機存取記憶體(DRAM) 24。系統10包含一或多個輸入/輸出(I/O)裝置26 (諸如,一或多個觸控螢幕、揚聲器、麥克風)以及一或多個感測器(諸如,相機、面部偵測感測器等)。系統10亦包含一蜂巢式電話數據機及處理器16,蜂巢式電話數據機及處理器16可包含其自身的快取記憶體,該快取記憶體可為SRAM 16A。蜂巢式電話數據機與處理器16耦合至蜂巢式電話RF組件17以透過天線18接收蜂巢式電話信號。GNSS處理器20經組態以接收並處理在L1頻帶及L5頻帶兩者中之GNSS信號。此外,GNSS射頻(RF)組件21經組態以透過天線22A及天線22B接收在L1頻帶及L5頻帶中之GNSS信號,且GNSS RF組件21包含一或多個RF混頻器及RF至中間頻率降頻轉換器且包含一RF本地振盪器。此等GNSS信號由GNSS處理器20處理,GNSS處理器20包含其自身的專用處理器記憶體作為GNSS處理器20之一部分。GNSS處理器不使用快取記憶體12A或共用由一或多個應用處理器12使用之快取記憶體12A,一或多個應用處理器12使用此項技術中已知之技術來利用一快取記憶體。GNSS處理器接收並處理GNSS信號且透過匯流排14將位置輸出(諸如,經緯度輸出)提供至一或多個應用處理器12。GNSS處理器在不利用快取記憶體12A之情況下接收並處理GNSS信號,且需要兩個分離的GNSS天線22A及天線22B以及在該兩個GNSS天線22A及22B處開始之兩個分離的GNSS RF路徑。One aspect of the embodiments described herein relates to sharing cache memory between one or more application processors and a GNSS processing system. Before describing these sharing embodiments, an illustration of a prior architecture in the prior art will be provided with reference to FIG. 1 . FIG. 1 shows a system 10 including one or more application processors 12 and a GNSS processor 20 coupled via a bus 14, which is also coupled to system main memory, which is dynamic random access memory (DRAM) 24. The system 10 includes one or more input/output (I/O) devices 26 (e.g., one or more touch screens, speakers, microphones) and one or more sensors (e.g., cameras, facial detection sensors, etc.). The system 10 also includes a cellular modem and processor 16, which may include its own cache memory, which may be SRAM 16A. The cellular modem and processor 16 are coupled to a cellular phone RF component 17 to receive cellular phone signals via an antenna 18. The GNSS processor 20 is configured to receive and process GNSS signals in both the L1 band and the L5 band. In addition, the GNSS radio frequency (RF) component 21 is configured to receive GNSS signals in the L1 band and the L5 band via antenna 22A and antenna 22B, and the GNSS RF component 21 includes one or more RF mixers and RF to intermediate frequency down-converters and includes an RF local oscillator. These GNSS signals are processed by the GNSS processor 20, which includes its own dedicated processor memory as part of the GNSS processor 20. The GNSS processor does not use the cache 12A or shares the cache 12A used by one or more application processors 12, which utilize a cache using techniques known in the art. The GNSS processor receives and processes the GNSS signals and provides position outputs (e.g., latitude and longitude outputs) to one or more application processors 12 via bus 14. The GNSS processor receives and processes the GNSS signals without utilizing cache memory 12A and requires two separate GNSS antennas 22A and 22B and two separate GNSS RF paths starting at the two GNSS antennas 22A and 22B.
圖2展示一系統之一實例,該系統中之快取記憶體在一或多個應用處理器與一GNSS處理系統之間共用。圖2中所展示之系統50包含一系統單晶片(SOC) 52,系統單晶片(SOC) 52包含一或多個應用處理器66及一快取記憶體70以及一GNSS處理系統68。在一項實施例中,SOC 52可係前置於一積體電路之基板中之一單個單片式半導體裝置,該積體電路包含圖2中所展示之SOC 52之周界內所展示之所有組件。SOC 52可包含控制對快取記憶體70 (或其他記憶體)之存取之一記憶體控制器72,快取記憶體70耦合至一或多個應用處理器66且耦合至GNSS處理系統68。因此,記憶體控制器72可仲裁快取記憶體70之使用以允許GNSS處理系統68以及一或多個應用處理器66兩者皆使用快取記憶體,在一項實施例中該快取記憶體可被實施為SRAM記憶體。在一項實施例中,記憶體控制器72可將快取記憶體70之一部分分配給GNSS處理系統使用,且允許一或多個應用處理器66使用快取記憶體70之其餘部分。在一項實施例中,快取記憶體70可用於儲存程式碼或程式指令以及由處理系統操作之資料。如下文進一步闡述,當GNSS處理系統68之獲取引擎獲取GNSS信號時,該獲取引擎可使用快取記憶體來儲存例如在獲取階段期間使用之假設記憶體中之假設,或可使用快取記憶體70來儲存針對GNSS信號而產生之PRN碼(及/或來自DFT之其碼頻譜)。GNSS處理系統68可透過匯流排74耦合至該一或多個應用處理器66。該一或多個應用處理器66以及GNSS處理系統68亦可透過匯流排74耦合至蜂巢式電話數據機與處理器76。在一項實施例中,匯流排74係SOC 52上之一組匯流排。SOC 52亦包含一匯流排介面78,匯流排介面78允許SOC 52耦合至在SOC 52外部之一系統匯流排54。SOC 52外部存在數個其他組件,且其包含GNSS射頻組件63,在圖2中所展示之實例中,GNSS射頻組件63經組態以僅在L5寬帶(WB)頻帶中操作以僅接收並處理圖2中所展示之實施例中之L5寬帶(WB) GNSS信號。術語或片語L5 WB頻帶或L5 WB信號或L5 WB GNSS意指包含或指代現代化GNSS信號及現代化GNSS系統(例如,SV及接收器集群),該等現代化GNSS系統在以1191.795 MHz為中心之一現代化頻帶下操作,且具有10.23 MHz之一碼片速率或具有顯著高於原有碼片速率或1.023 MHz之GPS L1之碼片速率,且此等現代化GNSS系統包含(舉例而言)美國L5 GPS系統、歐洲E5伽利略系統、中國北斗/指南B2系統、格洛納斯K2及QZSS。蜂巢式電話數據機與處理器76耦合至一蜂巢式電話射頻組件64以接收蜂巢式電話信號且傳輸蜂巢式電話信號。DRAM 56耦合至匯流排54且可儲存使用者資料及應用程式以及一作業系統。另外,除DRAM 56之外,系統50亦可包含非揮發性記憶體57,諸如快閃記憶體。非揮發性記憶體57可為系統50儲存使用者資料及應用程式以及作業系統。系統50亦可包含各種輸入/輸出裝置,該等各種輸入/輸出裝置可透過一或多個I/O控制器58與系統之其餘部分介接。輸入/輸出裝置可包含一或多個感測器62及其他輸入/輸出裝置60。舉例而言,感測器可包含以下各項中之一或多者:一3軸加速度計、三軸陀螺儀、環境光感測器(ALS)、氣壓感測器、磁力儀、一或多個相機等。另外,系統50可包含其他射頻組件62,諸如藍芽、Wi-Fi等。現在將參考圖3提供用於作業系統50之一方法。FIG2 shows an example of a system in which cache memory is shared between one or more application processors and a GNSS processing system. The system 50 shown in FIG2 includes a system-on-chip (SOC) 52 including one or more application processors 66 and a cache memory 70 and a GNSS processing system 68. In one embodiment, the SOC 52 may be a single monolithic semiconductor device pre-positioned in a substrate of an integrated circuit that includes all of the components shown within the perimeter of the SOC 52 shown in FIG2. The SOC 52 may include a memory controller 72 that controls access to a cache 70 (or other memory) that is coupled to the one or more application processors 66 and to the GNSS processing system 68. Thus, the memory controller 72 may arbitrate use of the cache 70 to allow both the GNSS processing system 68 and the one or more application processors 66 to use the cache, which may be implemented as SRAM memory in one embodiment. In one embodiment, the memory controller 72 may allocate a portion of the cache 70 for use by the GNSS processing system and allow the one or more application processors 66 to use the remainder of the cache 70. In one embodiment, cache memory 70 may be used to store program code or program instructions and data operated by the processing system. As further described below, when an acquisition engine of GNSS processing system 68 acquires GNSS signals, the acquisition engine may use cache memory to store, for example, assumptions in an assumption memory used during the acquisition phase, or may use cache memory 70 to store PRN codes (and/or their code spectra from DFT) generated for the GNSS signals. GNSS processing system 68 may be coupled to the one or more application processors 66 via bus 74. The one or more application processors 66 and the GNSS processing system 68 may also be coupled to a cellular modem and processor 76 via a bus 74. In one embodiment, the bus 74 is a set of buses on the SOC 52. The SOC 52 also includes a bus interface 78 that allows the SOC 52 to be coupled to a system bus 54 that is external to the SOC 52. There are several other components external to the SOC 52, and they include the GNSS RF component 63, which in the example shown in FIG. 2 is configured to operate only in the L5 wideband (WB) band to receive and process only L5 wideband (WB) GNSS signals in the embodiment shown in FIG. 2 . The term or phrase L5 WB band or L5 WB signal or L5 WB GNSS is meant to include or refer to modern GNSS signals and modern GNSS systems (e.g., SVs and receiver clusters) operating in a modern frequency band centered at 1191.795 MHz and having a chip rate of 10.23 MHz or having a chip rate significantly higher than the original chip rate or GPS L1 of 1.023 MHz, and these modern GNSS systems include, for example, the U.S. L5 GPS system, the European E5 Galileo system, the Chinese Beidou/Guanzhi B2 system, GLONASS K2, and QZSS. The cellular phone modem and processor 76 are coupled to a cellular phone RF assembly 64 to receive cellular phone signals and transmit cellular phone signals. DRAM 56 is coupled to bus 54 and can store user data and applications as well as an operating system. In addition, in addition to DRAM 56, system 50 may also include non-volatile memory 57, such as flash memory. Non-volatile memory 57 can store user data and applications as well as an operating system for system 50. System 50 may also include various input/output devices, which can interface with the rest of the system through one or more I/O controllers 58. The input/output devices may include one or more sensors 62 and other input/output devices 60. For example, the sensor may include one or more of the following: a 3-axis accelerometer, a 3-axis gyroscope, an ambient light sensor (ALS), a barometric pressure sensor, a magnetometer, one or more cameras, etc. In addition, the system 50 may include other RF components 62, such as Bluetooth, Wi-Fi, etc. A method for operating the system 50 will now be provided with reference to FIG. 3 .
系統50在操作101中(圖3中所展示)可自一應用接收一請求以判定一位置。此請求可來自一前景應用或來自一背景應用。舉例而言,在前景且因此向使用者顯示一地圖之一使用者介面的一地圖應用請求一位置,且此請求可使得GNSS處理系統68被啟動。另一選擇為,一常駐程式背景程序可做出對一位置之一請求。請求之本質可判定一優先級以使記憶體控制器72判定如何及何時將快取記憶體70之一部分分配給GNSS處理系統68使用。舉例而言,在某些實施例中,一前景應用對一位置之請求可使「將快取記憶體70之一部分分配給GNSS處理系統68使用」成為一高優先級任務,從而使得儘可能迅速地分配所述部分。另一選擇為,一背景應用對一位置之請求可使「記憶體控制器72分配快取記憶體70之一部分」成為一推遲程序或任務,從而給予記憶體控制器72更多時間來分配快取記憶體70之一部分。The system 50 may receive a request from an application to determine a location in operation 101 (shown in FIG. 3 ). The request may come from a foreground application or from a background application. For example, a map application in a user interface that is in the foreground and therefore displays a map to the user requests a location, and this request may cause the GNSS processing system 68 to be activated. Alternatively, a resident background process may make a request for a location. The nature of the request may determine a priority for the memory controller 72 to determine how and when to allocate a portion of the cache 70 for use by the GNSS processing system 68. For example, in some embodiments, a request for a location by a foreground application may cause "allocating a portion of cache memory 70 for use by the GNSS processing system 68" to be a high priority task, so that the portion is allocated as quickly as possible. Alternatively, a request for a location by a background application may cause "allocating a portion of cache memory 70 by the memory controller 72" to be a deferred process or task, thereby giving the memory controller 72 more time to allocate a portion of cache memory 70.
在操作103中,GNSS處理系統68可自例如蜂巢式電話數據機與處理器76接收輔助資料。在一項實施例中,在一段時間內關於在視野中之衛星的一衛星曆書或其他資料源可由系統50接收並儲存以供以後由GNSS處理系統68使用。在操作105中,基於在視野中的衛星或太空載具(SV) (舉例而言,來自一所接收之衛星曆書),GNSS處理系統68可為在視野中之該等GNSS SV產生虛擬隨機雜訊(PRN)碼,及/或自DFT產生該等虛擬隨機雜訊碼之碼頻譜(例如,參見圖6中之碼頻譜記憶體263)。在一項實施例中,在處理GNSS信號之獲取及追蹤階段期間,GNSS處理系統68可按需產生此等碼且使用此等碼但不儲存此等碼。在另一實施例中,在處理GNSS信號之獲取及追蹤階段期間,GNSS處理系統68可按需產生此等碼及/或自DFT產生此等碼之碼頻譜(例如,參見圖6中之碼頻譜記憶體263)且使用此等碼及/或來自DFT的此等碼之碼頻譜(例如,參見圖6中之碼頻譜記憶體263)但亦儲存此等碼及/或其碼頻譜,但追蹤階段一經完成,則不再儲存此等碼。在一項實施例中,可產生碼頻譜(自在視野中之GNSS SV之GNSS PRN碼產生)但不儲存(超過約1毫秒),且碼頻譜可在所接收及所儲存(舉例而言,在一循環記憶體緩衝區中)之GNSS樣本資料之每一毫秒(ms)被反覆地重複產生;因此在一第一ms中,藉由將一碼都卜勒(例如,時間移位)及一載波頻率都卜勒調整(例如,參見圖6及圖9D)應用於所產生之GNSS主PRN碼來產生一碼頻譜,再進行DFT (舉例而言,藉由DFT ALU 261),且然後在一第二ms中(在第一ms之後的下一毫秒)產生一新碼頻譜。在產生碼頻譜之前(舉例而言,透過圖6中之DFT ALU 261)應用碼都卜勒及載波頻率調整之一益處在於,由於E5 GNSS信號之碼都卜勒速率是高的,因此碼頻譜無法被預先計算或甚至無法在後續毫秒內使用,且因此每一毫秒間隔皆應將碼都卜勒移位以維持高關聯。在一項實施例中,若記憶體可用,則可儲存經碼都卜勒移位之碼頻譜達短的時間週期內,以減小計算資源的使用。按需產生此等碼(其繼續直至判定一位置資料為止)而不長期儲存或不進行任何儲存可減小GNSS處理系統68使用之記憶體量。類似地,與一或多個應用處理器66共用快取記憶體70亦可減少GNSS處理系統68對記憶體之使用。在操作107中,含有GNSS處理系統及一或多個應用處理器之積體電路上之快取記憶體之一部分(諸如,SRAM記憶體)可例如由記憶體控制器72來分配。然後,此可允許GNSS處理系統68中之獲取引擎至少在獲取階段期間使用所分配部分。In operation 103, the GNSS processing system 68 may receive auxiliary data from, for example, a cellular modem and processor 76. In one embodiment, a satellite almanac or other data source regarding satellites in view over a period of time may be received by the system 50 and stored for later use by the GNSS processing system 68. In operation 105, based on the satellites or space vehicles (SVs) in view (e.g., from a received satellite almanac), the GNSS processing system 68 may generate virtual random noise (PRN) codes for the GNSS SVs in view and/or generate code spectra of the virtual random noise codes from DFT (e.g., see code spectrum memory 263 in FIG. 6 ). In one embodiment, the GNSS processing system 68 may generate such codes as needed and use such codes without storing such codes during the acquisition and tracking phases of processing GNSS signals. In another embodiment, during the acquisition and tracking phase of processing GNSS signals, the GNSS processing system 68 may generate such codes and/or code spectra of such codes from DFT as needed (e.g., see code spectrum memory 263 in FIG. 6 ) and use such codes and/or code spectra of such codes from DFT (e.g., see code spectrum memory 263 in FIG. 6 ) but also store such codes and/or their code spectra, but once the tracking phase is completed, such codes are no longer stored. In one embodiment, a code spectrum may be generated (generated from the GNSS PRN codes of the GNSS SVs in view) but not stored (for more than about 1 ms), and the code spectrum may be repeatedly generated every millisecond (ms) of the GNSS sample data received and stored (e.g., in a circular memory buffer); thus, in a first ms, a code spectrum is generated by applying a code Doppler (e.g., time shift) and a carrier frequency Doppler adjustment (e.g., see FIGS. 6 and 9D ) to the generated GNSS master PRN code, then performing a DFT (e.g., by DFT ALU 261), and then a new code spectrum is generated in a second ms (the next ms after the first ms). One benefit of applying code Doppler and carrier frequency adjustments prior to generating the code spectrum (e.g., by the DFT ALU 261 in FIG. 6 ) is that, because the code Doppler rate of the E5 GNSS signal is high, the code spectrum cannot be pre-computed or even used in subsequent milliseconds, and therefore the code should be Doppler shifted every millisecond interval to maintain high correlation. In one embodiment, if memory is available, the Doppler shifted code spectrum can be stored for a short period of time to reduce the use of computational resources. Generating these codes on demand (which continues until a position data is determined) without long-term storage or without any storage can reduce the amount of memory used by the GNSS processing system 68. Similarly, sharing cache memory 70 with one or more application processors 66 may also reduce memory usage by the GNSS processing system 68. In operation 107, a portion of cache memory (e.g., SRAM memory) on an integrated circuit containing the GNSS processing system and one or more application processors may be allocated, for example, by the memory controller 72. This may then allow an acquisition engine in the GNSS processing system 68 to use the allocated portion, at least during the acquisition phase.
獲取階段通常涉及判定所獲取PRN碼之頻率及主碼相位以及已傳輸該等所獲取PRN碼之衛星之識別符。當一關聯運算指示一本地產生之PRN碼與一所接收PRN碼之間匹配時,則獲取PRN碼。在一項實施例中,在操作109中,GNSS處理系統中之獲取引擎使用所分配部分來儲存假設資料及/或GNSS PRN碼。然後在操作111中,獲取引擎獲取一或多個GNSS信號以允許GNSS處理系統中之一追蹤引擎追蹤所獲取GNSS信號,藉此判定距已傳輸已由獲取引擎獲取之GNSS信號之GNSS SV之虛擬距離。在一項實施例中,在操作113中,在追蹤階段開始之後,可撤銷分配快取記憶體的部分。舉例而言,記憶體控制器72可撤銷分配已含有假設資料的部分,但若GNSS PRN碼及/或其來自DFT (例如,參見下文對碼頻譜記憶體263之說明)之碼頻譜已儲存於快取記憶體中,則保留GNSS PRN碼及/或來自DFT的GNSS PRN碼之碼頻譜以用於追蹤。在不儲存而是在使用期間臨時產生PRN碼及/或其來自DFT之碼頻譜(例如,參見下文對碼頻譜記憶體263之說明)的一實施例中,則撤銷分配快取記憶體中由獲取引擎使用之部分可係一完全撤銷分配,從而釋放快取記憶體70以供一或多個應用處理器66使用。然後在操作115中,GNSS處理系統68可導出虛擬距離且可使用該虛擬距離及GNSS SV中星曆表資料來判定系統(諸如,系統50)之位置資料。The acquisition phase typically involves determining the frequency and master code phase of the acquired PRN code and the identifier of the satellite that has transmitted the acquired PRN code. When a correlation operation indicates a match between a locally generated PRN code and a received PRN code, the PRN code is acquired. In one embodiment, in operation 109, an acquisition engine in the GNSS processing system uses the allocated portion to store hypothetical data and/or GNSS PRN codes. Then in operation 111, the acquisition engine acquires one or more GNSS signals to allow a tracking engine in the GNSS processing system to track the acquired GNSS signals, thereby determining the virtual distance from the GNSS SV that has transmitted the GNSS signal acquired by the acquisition engine. In one embodiment, portions of the cache memory may be de-allocated after the tracking phase begins in operation 113. For example, the memory controller 72 may de-allocate portions that already contain hypothetical data, but if GNSS PRN codes and/or code spectra thereof from DFT (e.g., see the description of code spectrum memory 263 below) are already stored in the cache memory, the GNSS PRN codes and/or code spectra of the GNSS PRN codes from DFT are retained for tracking. In an embodiment where the PRN code and/or its code spectrum from the DFT is not stored but is generated on the fly during use (e.g., see the description of the code spectrum memory 263 below), then the de-allocation of the portion of the cache used by the acquisition engine may be a complete de-allocation, thereby freeing the cache 70 for use by one or more application processors 66. Then in operation 115, the GNSS processing system 68 may derive the virtual range and may use the virtual range and the ephemeris data in the GNSS SV to determine the position data of the system (e.g., system 50).
在一項實施例中,GNSS處理系統68可包含一專用記憶體,該專用記憶體與快取記憶體70分離且專供GNSS處理系統使用。在一項實施例中,記憶體控制器72可包含:一第一埠控制器,其用於控制快取記憶體70的用於獲取引擎之部分之讀取及寫入;及一第二埠控制器,其用於控制快取記憶體70之一其餘部分之讀取及寫入。在一項實施例中,在請求位置資料時(例如,基於關於SV之健康之資訊及關於視野中SV之資訊),可僅對視野中的運行良好之GNSS SV實行產生GNSS PRN碼及/或依據DFT產生GNSS PRN碼之碼頻譜。此選擇性地產生GNSS PRN碼及/或自DFT產生GNSS PRN碼之碼頻譜而在追蹤階段之後或在獲取及追蹤階段期間不保存該等碼(除管線處理邏輯中之暫存器及緩衝區之外記憶體的)可減少GNSS處理系統對記憶體之使用。管線處理邏輯可包含在一個或幾個時脈循環期間暫時地儲存碼及碼頻譜的暫存器及緩衝區。在一項實施例中,GNSS處理系統68可使用下文所闡述之陣列處理架構(諸如,圖6、圖7、圖8及圖9中所展示之架構)以藉由例如使用現場DFT演算法來額外減少對GNSS處理系統記憶體之使用。In one embodiment, the GNSS processing system 68 may include a dedicated memory that is separate from the cache memory 70 and dedicated to the GNSS processing system. In one embodiment, the memory controller 72 may include: a first port controller for controlling the reading and writing of the portion of the cache memory 70 used for the acquisition engine; and a second port controller for controlling the reading and writing of the remaining portion of the cache memory 70. In one embodiment, when requesting position data (e.g., based on information about the health of the SV and information about the SVs in view), the generation of GNSS PRN codes and/or the generation of code spectra of GNSS PRN codes based on DFT may be performed only for healthy GNSS SVs in view. This selective generation of GNSS PRN codes and/or code spectra of GNSS PRN codes from DFT without storing such codes (except for registers and buffers in pipeline processing logic) after the tracking phase or during the acquisition and tracking phase can reduce the memory usage of the GNSS processing system. The pipeline processing logic can include registers and buffers that temporarily store codes and code spectra during one or several clock cycles. In one embodiment, the GNSS processing system 68 may use the array processing architecture described below (e.g., the architectures shown in FIGS. 6 , 7 , 8 , and 9 ) to additionally reduce GNSS processing system memory usage by, for example, using an in-situ DFT algorithm.
在一項實施例中,作業系統(或處理器韌體)可基於關於儲存在快取記憶體中之資料之資訊(可被稱為後設資料)來實行將快取記憶體之部分分配給GNSS處理系統。舉例而言,此後設資料可指示儲存於快取記憶體中之資料在將快取記憶體之一部分分配給獲取引擎使用之前是否「受干預」(例如,在儲存於快取記憶體中時已發生改變),或是否已儲存於一後備儲存器中(諸如,非揮發性儲存器(例如,快閃記憶體)或甚至DRAM記憶體)。舉例而言,若在將快取記憶體之一部分分配給獲取引擎使用之前,快取記憶體正在儲存電腦程式指令或已儲存於非揮發性儲存器中之碼,且此等電腦程式指令在處於快取記憶體內時尚未被修改,則可將快取記憶體之該部分分配給獲取引擎,不必將該部分中之資料向外寫入至DRAM記憶體或向外寫入至非揮發性儲存器。此可允許作業系統(或處理器韌體)迅速地清除快取記憶體之一部分,以使得可將該部分迅速地分配給GNSS處理系統之獲取引擎使用。在圖2中所展示之實例中,GNSS處理系統與一或多個應用處理器(AP)共用一記憶體(例如快取記憶體70);在替代實施例中,GNSS處理系統可與IC上之其他處理系統(例如一或多個其他處理器)共用其他記憶體。在此替代性實施例中,GNSS處理系統共用另一記憶體且不使用或共用一或多個AP之快取記憶體。所述另一記憶體及GNSS處理系統以及其他處理系統可全部皆位於同一IC (例如,亦包含一或多個AP以及一或多個AP之快取記憶體之一SOC)上。其他處理系統可係使用與一或多個AP所使用之快取記憶體分離之其他記憶體之一或多個數據機處理器或圖形處理器或碼,且此分離之(在同一晶片上)其他記憶體亦可係支援高頻資料存取(讀取及寫入)之兩埠(「雙埠」)式記憶體。本文中所闡述,記憶體控制器可當GNSS處理系統及其他處理系統兩者皆意圖同時存取其他記憶體時對其他記憶體之存取做出仲裁。在此替代性實施例之一項實施方案中,該另一記憶體可係其他處理系統中之一或多者之處理器本地儲存器,且除了當GNSS處理系統需要使用該處理器本地儲存器以外,此其他處理系統中之一或多者排他地使用其處理器本地儲存器。In one embodiment, the operating system (or processor firmware) may implement the allocation of portions of cache memory to the GNSS processing system based on information about the data stored in the cache memory, which may be referred to as metadata. For example, this metadata may indicate whether the data stored in the cache memory was "interfered with" (e.g., changed while stored in the cache memory) before a portion of the cache memory was allocated for use by the acquisition engine, or whether it was stored in a backing store (e.g., non-volatile storage (e.g., flash memory) or even DRAM memory). For example, if a portion of the cache memory is storing computer program instructions or code that has been stored in non-volatile storage before the portion is allocated for use by the acquisition engine, and the computer program instructions have not been modified while in the cache memory, the portion of the cache memory can be allocated to the acquisition engine without having to write the data in the portion out to DRAM memory or out to non-volatile storage. This can allow the operating system (or processor firmware) to quickly clear a portion of the cache memory so that it can be quickly allocated for use by the acquisition engine of the GNSS processing system. In the example shown in FIG. 2 , the GNSS processing system shares a memory (e.g., cache memory 70) with one or more application processors (APs); in an alternative embodiment, the GNSS processing system may share other memory with other processing systems on the IC (e.g., one or more other processors). In this alternative embodiment, the GNSS processing system shares another memory and does not use or share the cache memory of one or more APs. The other memory and the GNSS processing system and other processing systems may all be located on the same IC (e.g., a SOC that also includes one or more APs and the cache memory of one or more APs). The other processing system may be one or more modem processors or graphics processors or code that uses other memory separate from the cache memory used by one or more APs, and this separate (on the same chip) other memory may also be a two-port ("dual-port") type memory that supports high-frequency data access (read and write). As described herein, the memory controller may arbitrate access to the other memory when both the GNSS processing system and the other processing system attempt to access the other memory simultaneously. In one implementation of this alternative embodiment, the other memory may be a processor local memory of one or more of the other processing systems, and the one or more of the other processing systems uses its processor local memory exclusively except when the GNSS processing system needs to use the processor local memory.
本發明之另一態樣涉及將一陣列處理架構與DFT一起使用以獲取並追蹤例如來自E5 GNSS SV之GNSS信號。此態樣在圖4、圖5A、圖5B、圖6、圖7、圖8、圖9A至圖9D及圖10中予以展示且現在將參考該等圖進行闡述。圖4展示一GNSS接收器之一部分150之一實例,該GNSS接收器接收GNSS信號並在進行一類比轉數位轉換之後將該等GNSS信號儲存於二維(2D)基頻樣本陣列中。GNSS接收器可包含一GNSS射頻(RF)前端153,GNSS射頻(RF)前端153透過耦合至GNSS RF前端153之一天線151接收GNSS信號。在一項實施例中,GNSS RF前端153僅接收L5 WB GNSS信號。Another aspect of the invention involves using an array processing architecture with DFT to acquire and track GNSS signals, such as from an E5 GNSS SV. This aspect is shown in FIGS. 4, 5A, 5B, 6, 7, 8, 9A-9D, and 10 and will now be described with reference thereto. FIG. 4 shows an example of a portion 150 of a GNSS receiver that receives GNSS signals and stores the GNSS signals in a two-dimensional (2D) baseband sample array after performing an analog-to-digital conversion. The GNSS receiver may include a GNSS radio frequency (RF) front end 153 that receives GNSS signals via an antenna 151 coupled to the GNSS RF front end 153. In one embodiment, the GNSS RF front end 153 only receives L5 WB GNSS signals.
圖12展示可在GNSS RF前端153之一項實施例中使用之組件及架構之一實例。如圖12中所展示,GNSS接收器包含位於一ASIC (其可係SOC 52之一部分)上之一RF前端模組701及一數位前端703;RF前端模組701可與含有數位前端703之ASIC分離。RF前端模組701可被實施於一RF積體電路(IC)中,該RF積體電路耦合至經調諧以接收L5 WB GNSS信號之一GNSS天線707;GNSS天線707通常在晶片外且因此不位於RF IC上。GNSS天線707接收GNSS信號並將該等信號提供至一帶通濾波器709,帶通濾波器709經組態以使以1192 MHz為中心且一帶通頻寬為51 MHz之信號通過,且因此介於約1166.5 MHz與1217.5 MHz之間的GNSS信號穿過帶通濾波器709。帶通濾波器709之輸出耦合至LNA 711以將經帶通濾波之GNSS信號提供至LNA 711。在一項實施例中,GNSS天線707經調諧以僅接收L5 WB GNSS頻率信號。RF前端模組可包含一低雜訊放大器(LNA) 711,低雜訊放大器711經調諧以僅針對L5 WB頻帶且因此經最佳化以接收該L5 WB頻帶,且圖12中所展示之GNSS接收器中不存在接收其他GNSS信號(例如,L1 GPS)之其他LNA。LNA 711之輸出可由一帶通濾波器713濾波且來自該濾波器713之輸出在含有數位前端703之ASIC上之放大器715上被放大,且然後一ADC 717轉換器產生經數位化GNSS樣本資料,然後在一項實施例中處理該經數位化GNSS樣本資料以產生經數位化GNSS樣本資料之兩個串流:一個係GNSS旁帶A,且另一個係GNSS旁帶B。時脈產生鎖相迴路719及時脈分頻器723及725產生時脈信號,該等時脈信號由ADC 717以及CIC抽取器721及729使用以產生經數位化GNSS樣本資料,該經數位化GNSS樣本資料具有高達四個GNSS信號分量(例如E5AI、E5AQ、E5BI及E5BQ)。降頻轉換器727將I信號與Q信號分離,且旁帶分割降頻轉換器731將上旁帶與下旁帶分離以提供GNSS樣本資料以儲存於一基頻樣本記憶體(諸如圖6中之基頻樣本記憶體253)。在圖12中所展示之GNSS接收器之一項實施例中,GNSS接收器具有自一LNA (例如LNA 711)透過一或多個濾波器(例如帶通濾波器713)及/或一或多個增益級(例如,放大器715)至類比轉數位轉換器(ADC 717)之一直接連接,且此GNSS接收器不具有RF混頻器,且因此RF前端模組701中不存在RF混頻器且數位前端703中不存在RF混頻器。此外,此GNSS接收器不具有RF參考本地振盪器(例如,不具有鎖相迴路)且在ADC (例如ADC 717)之前在RF信號路徑中不進行降頻轉換(頻率)。在習用GNSS接收器中,一RF參考本地振盪器以及一或多個RF混頻器用於實行在ADC之前在RF信號路徑中進行RF降頻轉換。FIG12 shows an example of components and architecture that may be used in an embodiment of the GNSS RF front end 153. As shown in FIG12, the GNSS receiver includes an RF front end module 701 and a digital front end 703 located on an ASIC (which may be part of the SOC 52); the RF front end module 701 may be separate from the ASIC containing the digital front end 703. The RF front end module 701 may be implemented in an RF integrated circuit (IC) coupled to a GNSS antenna 707 tuned to receive L5 WB GNSS signals; the GNSS antenna 707 is typically off-chip and therefore not located on the RF IC. GNSS antenna 707 receives GNSS signals and provides them to a bandpass filter 709, which is configured to pass signals centered at 1192 MHz and having a bandpass bandwidth of 51 MHz, and thus GNSS signals between approximately 1166.5 MHz and 1217.5 MHz pass through bandpass filter 709. The output of bandpass filter 709 is coupled to LNA 711 to provide the bandpass filtered GNSS signals to LNA 711. In one embodiment, GNSS antenna 707 is tuned to receive only L5 WB GNSS frequency signals. The RF front end module may include a low noise amplifier (LNA) 711 that is tuned for and therefore optimized to receive the L5 WB band only, and no other LNA that receives other GNSS signals (e.g., L1 GPS) is present in the GNSS receiver shown in Figure 12. The output of the LNA 711 may be filtered by a band pass filter 713 and the output from the filter 713 is amplified on an amplifier 715 on the ASIC containing the digital front end 703, and then an ADC 717 converter produces digitized GNSS sample data, which is then processed in one embodiment to produce two streams of digitized GNSS sample data: one is GNSS sideband A, and the other is GNSS sideband B. The clock generation phase locked loop 719 and the clock dividers 723 and 725 generate clock signals which are used by the ADC 717 and the CIC extractors 721 and 729 to generate digitized GNSS sample data having up to four GNSS signal components (e.g., E5AI, E5AQ, E5BI, and E5BQ). The downconverter 727 separates the I signal from the Q signal, and the sideband splitting downconverter 731 separates the upper sideband from the lower sideband to provide GNSS sample data for storage in a baseband sample memory (e.g., baseband sample memory 253 in FIG. 6 ). In one embodiment of the GNSS receiver shown in FIG12 , the GNSS receiver has a direct connection from an LNA (e.g., LNA 711) through one or more filters (e.g., bandpass filter 713) and/or one or more gain stages (e.g., amplifier 715) to an analog-to-digital converter (ADC 717), and this GNSS receiver does not have an RF mixer, and thus no RF mixer is present in the RF front end module 701 and no RF mixer is present in the digital front end 703. In addition, this GNSS receiver does not have an RF reference local oscillator (e.g., does not have a phase-locked loop) and no down-conversion (frequency) is performed in the RF signal path before the ADC (e.g., ADC 717). In conventional GNSS receivers, an RF reference local oscillator and one or more RF mixers are used to implement RF down-conversion in the RF signal path before the ADC.
返回參考圖4,可將來自GNSS RF前端153的輸出提供至一射頻(RF)類比轉數位轉換器(ADC) 155,射頻(RF)類比轉數位轉換器(ADC) 155可自經數位化GNSS信號產生經數位化GNSS樣本資料。在一項實施例中,來自RF ADC 155的輸出可儲存於一基頻樣本陣列中,諸如圖4中所展示的基頻樣本陣列157。在一項實施例中,基頻樣本陣列157可具有N2行或更多列及N1行以提供一N2×N1陣列(N2×N1)。陣列中之樣本數目可經組態以使得其滿足奈奎斯準則以提供足夠數目的樣本。若在一項實施例中,N1 = 20且N2 = 1024,則隨時間推移存在20,480個樣本(例如,1毫秒或略微多於1 ms(諸如1.05 ms)),此可滿足奈奎斯準則。RF ADC 155經組態以隨時間推移重複地自GNSS RF前端153接收類比樣本並將該等類比樣本轉換成經數位化GNSS樣本以儲存於陣列157中。舉例而言,RF ADC可重複地轉換GNSS信號之樣本並將其儲存於陣列157中。在一項實施例中,陣列157可被實施為儲存經數位化樣本的一循環記憶體緩衝區;此項技術中已知,循環記憶體緩衝區可使用一寫入指針來指示陣列中的下一寫入位置且使用一讀取指針來自指示下一讀取位置。當ADC 155提供將儲存於循環緩衝區中的一輸出時使用寫入指針,且當ALU讀取下一組輸入以供處理時使用讀取指針。陣列157可將資料提供至一組算術邏輯單元(ALU) 159,該組算術邏輯單元159經組態以實行DFT及逆DFT以獲取且在一項實施例中追蹤GNSS信號,且圖6、圖7、圖8及圖9展示ALU 159之一實施例。在闡述此等ALU 159之前,現在將參考圖5A及圖5B提供使用此陣列處理架構之一方法。圖5A及圖5B中所展示之方法可使用圖6中所展示之陣列處理架構。Referring back to FIG. 4 , the output from the GNSS RF front end 153 may be provided to a radio frequency (RF) analog-to-digital converter (ADC) 155, which may generate digitized GNSS sample data from the digitized GNSS signal. In one embodiment, the output from the RF ADC 155 may be stored in a baseband sample array, such as the baseband sample array 157 shown in FIG. 4 . In one embodiment, the baseband sample array 157 may have N2 rows or more and N1 rows to provide an N2×N1 array (N2×N1). The number of samples in the array may be configured so that it satisfies the Nyquist criterion to provide a sufficient number of samples. If, in one embodiment, N1 = 20 and N2 = 1024, there are 20,480 samples over time (e.g., 1 millisecond or slightly more than 1 ms (e.g., 1.05 ms)), which may satisfy the Nyquist criterion. The RF ADC 155 is configured to repeatedly receive analog samples from the GNSS RF front end 153 over time and convert the analog samples into digitized GNSS samples for storage in the array 157. For example, the RF ADC may repeatedly convert samples of the GNSS signal and store them in the array 157. In one embodiment, array 157 may be implemented as a loop memory buffer that stores digitized samples; as is known in the art, a loop memory buffer may use a write pointer to indicate the next write location in the array and a read pointer to indicate the next read location. The write pointer is used when ADC 155 provides an output to be stored in the loop buffer, and the read pointer is used when the ALU reads the next set of inputs for processing. The array 157 may provide data to an arithmetic logic unit (ALU) 159 which is configured to perform DFT and inverse DFT to acquire and in one embodiment track GNSS signals, and FIGS. 6 , 7 , 8 , and 9 show an embodiment of the ALU 159. Before describing these ALUs 159, a method of using this array processing architecture will now be provided with reference to FIGS. 5A and 5B . The method shown in FIGS. 5A and 5B may use the array processing architecture shown in FIG. 6 .
在圖5A中所展示之操作201中,經數位化GNSS樣本資料儲存於二維記憶體陣列中,該二維記憶體陣列可為含有略微大於1毫秒訊框之GNSS信號資料(諸如1.05或1.25毫秒之GNSS信號資料)的一循環緩衝區(諸如,圖6中之記憶體253)。GNSS信號中之E5 GNSS PRN碼資料之一個訊框的長度為1.0毫秒。可在輸入資料被覆寫之前依據計算該資料之頻譜(經由DFT)所需之時間來判定超出1毫秒之額外記憶體。因此,一較快DFT意味著超出1毫秒之一較短額外時間足矣。在一項實施例中,將記憶體陣列中之資料格式化成使得連續列含有連續時間樣本。舉例而言,第一列可含有自時間週期t1至t20之樣本且第二列可含有自時間週期t21至t40之樣本。圖4中所展示之陣列157展示此一陣列之一實例,在一項實施例中,該陣列可儲存於圖6中之基頻樣本記憶體253中。在一項實施例中,此等最佳化之目的係將實行使用頻域運算實施之關聯程序所需之時脈數目最小化:即輸入樣本DFT乘以針對載波頻率調整之碼樣本之複共軛的積的逆DFT生成在載波頻率假設下之所有可能的碼假設下之輸入樣本之關聯。此處所定義之此單個步驟被稱為作為頻域關聯(FDC)的一種形式之極快頻域關聯(VFFDC)。透過此等運算將資料流最佳化能減小實行關聯所需之時脈週期之數目。優點在於就一給定系統時脈而言,可在1毫秒內檢查到之載波頻率估計或假設之數目增大。此外,減少時脈意味著可放鬆系統時序需要,從而允許一晶片設計更可靠或一設計可在一較低電壓下操作以減小功率消耗或時脈更快以達成更大通量。另一選擇為,可採用實行FDC之一方法,該方法需要更多時脈但需要一較高時脈頻率。可使用一矩陣組態(諸如陣列157)減小實行FDC所需之時脈,藉此樣本及碼頻譜之輸出經排序以使得實行積之複共軛之IDFT所需之時脈可減小。然後在操作203中,一GNSS處理系統(諸如,圖6中所展示之GNSS處理系統或2中所展示之GNSS處理系統68)可自二維記憶體陣列檢索GNSS基頻資料並將所檢索之GNSS基頻資料載入至一組DFT ALU中。舉例而言,該組DFT ALU可係一獲取引擎中之一組四個ASIC硬體DFT ALU,其中DFT ALU中之每一者可回應於一單個程式指令而在每一DFT ALU中實行20個並行DFT運算。在一項實施例中,該組DFT ALU可係圖6中所展示之DFT ALU 255。在操作205中,GNSS處理系統可針對每一預期GNSS信號源(諸如,已知在視野中之每一組E5或L5或B2 GNSS SV)而產生PRN碼資料(或另一選擇為自儲存器檢索此PRN碼資料)及/或自DFT產生PRN碼資料之碼頻譜。一旦產生PRN碼資料,則可將該PRN碼資料時間移位且頻率移位,並且亦增加樣本內插(例如,藉由添加一零來填充碼中之最後位元)以產生碼資料,該碼資料由一組DFT (舉例而言,使用圖6中之DFT ALU 261)操作以產生碼頻譜資料,可將碼頻譜資料儲存於一碼頻譜陣列(諸如,圖6中所展示之碼頻譜記憶體263)中。在一項實施例中,碼產生器259可實行操作205以產生碼陣列資料,然後圖6中所展示之DFT ALU 261可處理該碼陣列資料以產生碼頻譜陣列(按照行次序),該碼頻譜陣列暫時儲存於碼頻譜記憶體263中。In operation 201 shown in FIG. 5A , digitized GNSS sample data is stored in a two-dimensional memory array, which may be a circular buffer (e.g., memory 253 in FIG. 6 ) containing GNSS signal data slightly larger than a 1 millisecond frame (e.g., 1.05 or 1.25 milliseconds of GNSS signal data). The length of a frame of E5 GNSS PRN code data in a GNSS signal is 1.0 milliseconds. The additional memory beyond 1 millisecond may be determined based on the time required to calculate the spectrum of the data (via DFT) before the input data is overwritten. Therefore, a faster DFT means that a shorter additional time beyond 1 millisecond is sufficient. In one embodiment, the data in the memory array is formatted so that consecutive rows contain consecutive time samples. For example, the first row may contain samples from time period t1 to t20 and the second row may contain samples from time period t21 to t40. The array 157 shown in FIG4 shows an example of such an array, which in one embodiment may be stored in the baseband sample memory 253 in FIG6. In one embodiment, the purpose of these optimizations is to minimize the number of clock cycles required to perform a correlation procedure that is performed using frequency domain operations: i.e., the inverse DFT of the product of the DFT of the input samples multiplied by the complex conjugate of the code samples adjusted for the carrier frequency produces a correlation of the input samples under all possible code hypotheses under the carrier frequency hypothesis. This single step defined herein is referred to as Very Fast Frequency Domain Correlation (VFFDC) as a form of Frequency Domain Correlation (FDC). Optimizing the data stream through these operations can reduce the number of clock cycles required to perform the correlation. The advantage is that for a given system clock, the number of carrier frequency estimates or hypotheses that can be checked within 1 millisecond is increased. Additionally, reducing the clock means that system timing requirements can be relaxed, allowing a chip design to be more reliable or a design to operate at a lower voltage to reduce power consumption or clock faster to achieve greater throughput. Alternatively, a method of implementing FDC that requires more clocks but requires a higher clock frequency can be used. The clock required to implement FDC can be reduced using a matrix configuration (such as array 157), whereby the output of the sample and code spectrum is ordered so that the clock required to implement the IDFT of the complex conjugate of the product can be reduced. Then, in operation 203, a GNSS processing system (e.g., the GNSS processing system shown in FIG. 6 or the GNSS processing system 68 shown in FIG. 2 ) may retrieve the GNSS baseband data from the two-dimensional memory array and load the retrieved GNSS baseband data into a set of DFT ALUs. For example, the set of DFT ALUs may be a set of four ASIC hardware DFT ALUs in an acquisition engine, wherein each of the DFT ALUs may respond to a single program instruction and implement 20 parallel DFT operations in each DFT ALU. In one embodiment, the set of DFT ALUs may be the DFT ALU 255 shown in FIG. 6 . In operation 205, the GNSS processing system may generate PRN code data (or alternatively retrieve such PRN code data from memory) and/or generate a code spectrum of the PRN code data from the DFT for each expected GNSS signal source (e.g., each set of E5 or L5 or B2 GNSS SVs known to be in view). Once the PRN code data is generated, the PRN code data may be time shifted and frequency shifted, and sample interpolation may also be added (e.g., by adding a zero to fill the last bit in the code) to generate code data, which is operated on by a set of DFTs (e.g., using the DFT ALU 261 in FIG. 6 ) to generate code spectrum data, which may be stored in a code spectrum array (e.g., the code spectrum memory 263 shown in FIG. 6 ). In one embodiment, the code generator 259 may perform operation 205 to generate code array data, and then the DFT ALU 261 shown in FIG. 6 may process the code array data to generate a code spectrum array (in row order), which is temporarily stored in the code spectrum memory 263.
應注意,E5頻帶信號上之碼都卜勒遠快於L1頻帶中之碼都卜勒。此碼都卜勒係由載波循環對碼片之比率縮放之載波都卜勒。在L1下,每碼片存在1540個載波循環。在L5下,舉例而言,每碼片存在116個載波循環。因此,在L5下之碼片數目快13.28倍,此意味著E5頻帶中之關聯需要更快地更新碼相位以在PRN碼之連續訊框內適應一致關聯。此意味著通常不可能預先計算此效應。一替代性解決方案係先對關聯結果應用碼都卜勒效應再添加製假設記憶體。可將儲存位址移位以抵消碼都卜勒,但當將移位量化成假設數目時此導致某些損耗,通常大約2個假設/碼片。因此,在產生碼頻譜之前對所產生碼應用碼都卜勒係較佳的。另一最佳化方案係將載波都卜勒倍乘至所產生碼上以與輸入樣本中之載波資訊匹配。如此一來,每毫秒僅需針對每一旁帶及/或中心頻帶實行一次輸入樣本之DFT,且相同輸入頻譜可用於在該毫秒內進行之所有關聯。It should be noted that the code Doppler on the E5 band signal is much faster than the code Doppler in the L1 band. This code Doppler is a carrier Doppler scaled by the ratio of carrier cycles to chips. Under L1, there are 1540 carrier cycles per chip. Under L5, for example, there are 116 carrier cycles per chip. Therefore, the number of chips under L5 is 13.28 times faster, which means that the correlation in the E5 band needs to update the code phase faster to accommodate consistent correlations within consecutive frames of the PRN code. This means that it is generally impossible to pre-calculate this effect. An alternative solution is to apply the code Doppler effect to the correlation results first and then add the assumption memory. The storage locations can be shifted to counteract the code Doppler, but this results in some loss when the shift is quantized into a number of hypotheses, typically about 2 hypotheses/chip. Therefore, it is better to apply the code Doppler to the generated code before generating the code spectrum. Another optimization scheme is to multiply the carrier Doppler onto the generated code to match the carrier information in the input samples. In this way, the DFT of the input samples only needs to be performed once per millisecond for each sideband and/or centerband, and the same input spectrum can be used for all correlations performed within that millisecond.
在操作207中,一組DFT ALU(諸如,圖6中所展示之DFT ALU 255)可,使用一時間抽取法對所載入的GNSS基頻資料同時實行多個DFT且將儲存結果於一頻域結果記憶體(諸如,圖6中所展示之記憶體257)中。在圖6中所展示之實例中,由DFT ALU 255實行之操作207產生一陣列,該陣列配置成一行次序且儲存於記憶體257中,且可檢索此記憶體257中之資料以提供圖6中所展示之一輸出258。操作209中之輸出258可乘以儲存於碼頻譜記憶體(諸如,碼頻譜記憶體263)中之碼頻譜;在圖6中所展示之實例中,乘法器265實行操作209之此乘法且生成資料之一積陣列。然後在操作211中,可使用一頻率抽取法對積陣列中之資料實行一組逆DFT,且此等DFT可使用共軛輸入來生成逆DFT。在一項實施例中,圖6中所展示之逆DFT ALU 267可實行操作211,且可在圖6中所展示之一關聯後處理操作器269中處理來自逆DFT ALU 267之輸出,且然後在操作213中將輸出儲存於一記憶體中,該記憶體可被稱為一積分記憶體(諸如,圖6中所展示之記憶體271)在一項實施例中,該積分記憶體可在獲取階段期間儲存假設資料。在一項實施例中,此積分記憶體可處於快取記憶體(例如,快取記憶體70)的分配給GNSS處理系統之獲取引擎使用之一部分中,該GNSS處理系統包含圖6中之陣列關聯器。然後,GNSS處理系統可藉由判定所獲取PRN碼之頻率來實行操作215,該等所獲取PRN碼識別已傳輸該等所獲取PRN碼之GNSS SV。一旦確認已自一特定GNSS SV獲取GNSS信號,然後可藉由進入對該等已獲取GNSS信號之追蹤模式來針對已獲取之每一GNSS SV之信號實行操作217。在一項實施例中,追蹤模式可使用習用關聯器或諸如DFT等其他技術來判定與所獲取及所追蹤GNSS SV之虛擬距離。此被展示為圖5B中之操作219。然後,GNSS處理系統可使用所判定虛擬距離來導出GNSS接收器之一位置,即藉由使用所追蹤GNSS SV之虛擬距離(具有星曆表資料)來導出位置(例如,GNSS接收器之一緯度及一經度),如此項技術中已知。In operation 207, a set of DFT ALUs (e.g., DFT ALU 255 shown in FIG. 6) may perform multiple DFTs on the loaded GNSS baseband data simultaneously using a time extraction method and store the results in a frequency domain result memory (e.g., memory 257 shown in FIG. 6). In the example shown in FIG. 6, operation 207 performed by DFT ALU 255 generates an array, which is arranged in a row order and stored in memory 257, and the data in this memory 257 may be retrieved to provide an output 258 shown in FIG. 6. The output 258 in operation 209 may be multiplied by the code spectrum stored in a code spectrum memory (e.g., code spectrum memory 263); in the example shown in FIG6 , multiplier 265 performs this multiplication of operation 209 and generates a product array of data. Then in operation 211 , a set of inverse DFTs may be performed on the data in the product array using a frequency decimation method, and these DFTs may use conjugate inputs to generate inverse DFTs. In one embodiment, the inverse DFT ALU 267 shown in FIG. 6 may perform operation 211, and the output from the inverse DFT ALU 267 may be processed in an associated post-processing operator 269 shown in FIG. 6, and then stored in a memory, which may be referred to as an integration memory (e.g., memory 271 shown in FIG. 6), in operation 213. In one embodiment, the integration memory may store hypothetical data during the acquisition phase. In one embodiment, this integrated memory may be in a portion of a cache (e.g., cache 70) allocated for use by an acquisition engine of a GNSS processing system including the array correlator of FIG. 6. The GNSS processing system may then perform operation 215 by determining the frequency of acquired PRN codes that identify the GNSS SV that transmitted the acquired PRN codes. Once it is determined that GNSS signals have been acquired from a particular GNSS SV, operation 217 may then be performed for each GNSS SV's signal that has been acquired by entering a tracking mode for the acquired GNSS signals. In one embodiment, the tracking mode may use a conventional correlator or other techniques such as DFT to determine the virtual distance to the acquired and tracked GNSS SV. This is shown as operation 219 in Figure 5B. The GNSS processing system may then use the determined virtual distance to derive a position of the GNSS receiver, i.e., by using the virtual distance of the tracked GNSS SV (with ephemeris data) to derive the position (e.g., a latitude and a longitude of the GNSS receiver), as is known in the art.
圖6展示可實行圖5A及圖5B中所展示之方法之一快速頻域關聯器架構之一實例。記憶體253可係儲存經數位化GNSS信號之N2×N1樣本之一循環緩衝區記憶體。在一項實施例中,記憶體253可係儲存1.05或1.25 ms之GNSS樣本資料之兩個循環記憶體緩衝區;此等循環記憶體緩衝區中之一者可儲存GNSS旁帶A樣本資料且另一者可儲存GNSS旁帶B樣本資料。可使用以下方法將兩個不同旁帶分離且然後儲存。為得到上旁帶(例如E5B或B2B),將GNSS樣本資料數位地載波下移位(針對以1191.795 MHz為中心之取樣器)達例如15.345 MHz (且因此現在將表示最初為1207.14 MHz之樣本資料中之資訊),且然後藉由一低通濾波器對經移位樣本資料進行濾波以擷取+/- 10.23 MHz之資料頻寬,且然後使經濾波樣本資料自一寬帶樣本下降至一較低取樣率以供圖6中所展示之管線中進行處理。為得到下旁帶(例如,E5A或B2A或L5或QZSS),將GNSS樣本資料數位地載波上移(針對以1191.795 MHz為中心之樣本)達例如15.345 MHz (且因此現在將表示最初為1176.45 MHz之樣本資料中之資訊),且然後藉由一低通濾波器(LPF)對經移位資料進行濾波以擷取+/-10.23 Hz之資料頻寬,且然後使經濾波資料自一寬帶樣本下降至一較低取樣率以供在圖6中所展示之管線中進行處理。DFT ALU 255自記憶體253檢索資料並在DFT ALU 255中實行一組DFT;圖7展示DFT ALU 255內之組件之一實例。在圖7中所展示之實例中,存在兩個DFT階段。第一階段使用N1個DTF,該N1個DTF中之每一者基於包含來自陣列301之一相位因數輸入之輸入及來自記憶體253之資料之輸入對1024個點進行運算,該來自記憶體253之資料可類似於圖4中之陣列157中所展示之資料。至此陣列之輸入係可例如由一類比轉數位轉換器(諸如,圖4中所展示之RF ADC 155)提供之輸入251。圖7展示一組20個DFT運算,該20個DFT運算中之三者被展示為運算303、304及306。可將此等運算之結果儲存於一部分結果樣本陣列308中,部分結果樣本陣列308繼而提供用作第二階段之一輸入之一輸出,在該第二階段中存在N2個DFT;此N2個DFT運算包含圖7中所展示之兩個運算313及315。此等N2個DFT之輸入中之一者係來自一陣列311之一組相位因數。來自圖7中所展示之第二階段中之此等DFT運算之輸出儲存於一FFT結果陣列257中,且資料係按照一行次序儲存,該行次序與記憶體253中儲存資料之列次序反向。此反向允許在不必轉置或以其他方式將資料重新格式化之情況下為逆DFT運算準備資料,諸如由逆DFT ALU 267實行之該等運算。FIG6 shows an example of a fast frequency domain correlator architecture that can implement the method shown in FIG5A and FIG5B. Memory 253 can be a cyclic buffer memory that stores N2×N1 samples of digitized GNSS signals. In one embodiment, memory 253 can be two cyclic memory buffers that store 1.05 or 1.25 ms of GNSS sample data; one of these cyclic memory buffers can store GNSS sideband A sample data and the other can store GNSS sideband B sample data. The following method can be used to separate the two different sidebands and then store them. To obtain the upper sideband (e.g. E5B or B2B), the GNSS sample data is digitally ground-shifted down (for a sampler centered at 1191.795 MHz) by, for example, 15.345 MHz (and so will now represent information in sample data that was originally at 1207.14 MHz), and then filtered by a low-pass filter to capture a data bandwidth of +/- 10.23 MHz, and then the filtered sample data is dropped from a wideband sample to a lower sampling rate for processing in the pipeline shown in FIG6 . To obtain the lower sideband (e.g., E5A or B2A or L5 or QZSS), the GNSS sample data is digitally ground shifted up (for samples centered at 1191.795 MHz) by, for example, 15.345 MHz (and so will now represent information in sample data that was originally at 1176.45 MHz), and then the shifted data is filtered by a low pass filter (LPF) to capture a data bandwidth of +/-10.23 Hz, and then the filtered data is downsampled from a wideband sample to a lower sampling rate for processing in the pipeline shown in FIG. 6 . DFT ALU 255 retrieves data from memory 253 and performs a set of DFTs in DFT ALU 255; FIG. 7 shows an example of components within DFT ALU 255. In the example shown in FIG. 7, there are two DFT stages. The first stage uses N1 DTFs, each of which operates on 1024 points based on inputs including a phase factor input from array 301 and data from memory 253, which may be similar to the data shown in array 157 in FIG. 4. The input to the array is input 251, which may be provided, for example, by an analog-to-digital converter (e.g., RF ADC 155 shown in FIG. 4). FIG7 shows a set of 20 DFT operations, three of which are shown as operations 303, 304, and 306. The results of these operations may be stored in a portion of a result sample array 308, which in turn provides an output that is used as an input to a second stage in which there are N2 DFTs; these N2 DFT operations include the two operations 313 and 315 shown in FIG7. One of the inputs to these N2 DFTs is a set of phase factors from an array 311. The output from these DFT operations in the second stage shown in Figure 7 is stored in an FFT result array 257, and the data is stored in a row order that is the reverse of the column order in which the data is stored in memory 253. This reversal allows the data to be prepared for inverse DFT operations, such as those performed by inverse DFT ALU 267, without having to transpose or otherwise reformat the data.
圖8展示逆DFT ALU 267之一實施例。在圖8中所展示之實例中,逆DFT ALU可包含自來自乘法器265之積陣列接收資料之兩個DFT運算階段。第一階段可包含N2個DFT運算,該N2個DFT運算使用來自由乘法器265 (具有共軛輸入)產生之積陣列之資料且亦使用來自一相位因數陣列351之相位因數以產生輸出,所述輸出可儲存於一第一級樣本陣列361中。對20個資料點實行圖8中之N2個DFT運算中之每一者。圖8展示總共N2個DFT運算中之兩者:DFT運算355及357。在圖8中所展示之實例中,DFT運算之第二階段使用N1個DFT運算,該N1個DFT運算中之每一者對N2個點進行運算;圖8展示此等運算之三者363、365及367,三個運算363、365及367中之每一者自第一級樣本陣列361接收一行資料。第二階段中之此等DFT運算亦自相位因數陣列353接收一相位因數輸入,且第二階段中之此等DFT運算生成,可圖8中所展示之後處理器371中對該20個輸出進行後處理。可將後處理之結果儲存於積分陣列373中,積分陣列373可與圖6中所展示之積分記憶體271相同。來自陣列301及311 (在圖7中)以及陣列351及353 (在圖8中)之相位因數規定每一基數(FFT之每一階段上之20/16/8 DFT)所需之相移量。在一項實施例中,使用此等相移量來將一20480點DFT分解成多個基數階段 – 20/16/8 DFT,此基於一DFT之一FFT實施方案。相位因數亦被稱為一FFT之「旋轉因數」。FIG8 shows one embodiment of an inverse DFT ALU 267. In the example shown in FIG8, the inverse DFT ALU may include two stages of DFT operations that receive data from the product array from multiplier 265. The first stage may include N2 DFT operations that use data from the product array produced by multiplier 265 (with conjugate inputs) and also use phase factors from a phase factor array 351 to produce outputs that may be stored in a first stage sample array 361. Each of the N2 DFT operations in FIG8 is performed for 20 data points. FIG8 shows two of the total N2 DFT operations: DFT operations 355 and 357. In the example shown in FIG8 , the second stage of the DFT operation uses N1 DFT operations, each of which operates on N2 points; FIG8 shows three of these operations 363, 365, and 367, each of which receives a row of data from the first stage sample array 361. These DFT operations in the second stage also receive a phase factor input from the phase factor array 353, and these DFT operations in the second stage generate 20 outputs that can be post-processed in the post-processor 371 shown in FIG8 . The results of the post-processing can be stored in the integration array 373, which can be the same as the integration memory 271 shown in FIG6 . The phase factors from arrays 301 and 311 (in FIG. 7 ) and arrays 351 and 353 (in FIG. 8 ) specify the phase shift required for each basis (20/16/8 DFT at each stage of the FFT). In one embodiment, these phase shifts are used to decompose a 20480 point DFT into multiple basis stages - 20/16/8 DFT, which is an FFT implementation based on a DFT. Phase factors are also called "rotation factors" of an FFT.
圖9A、圖9B、圖9C及圖9D展示可產生譜碼之一譜碼產生器(及其部分)之一實例,該等譜碼儲存於碼頻譜記憶體(諸如,圖6及圖8中之碼頻譜記憶體263)中。在一項實施例中,在GNSS處理系統獲取並追蹤在視野中之GNSS SV時,圖9D中所展示之產生器259及DFT ALU 261可僅針對此等GNSS SV按需且臨時產生PRN碼及/或自DFT產生PRN碼之碼頻譜,但不儲存(短暫地儲存於處理管線中之暫存器及緩衝區中達幾個時脈循環除外)所產生之PRN碼及/或其來自DFT之碼頻譜;此可藉由減少操作GNSS處理系統所需之記憶體量來提高由GNSS處理系統使用之記憶體。在替代實施例中,譜碼產生器可僅針對在視野中之GNSS SV按需產生PRN碼及/或自DFT產生PRN碼之碼頻譜,但在獲取及追蹤階段期間儲存該等碼直至判定一或多個位置(諸如,一或多個經緯度值)為止。此後,可自儲存器刪除PRN碼及/或其來自DFT之碼頻譜以允許儲存器用於其他用途。在一項實施例中,如圖9D中所展示,碼頻譜產生器259可使用一多項式型產生器402 (圖9A中所展示)來針對在視野中之每一GNSS SV自一碼種401產生PRN碼。然後,可使用一組可程式化係數來在時間移位器404中使所產生之PRN碼時間移位(基於該等係數),且然後可藉由可使用CORDIC相位旋轉之一頻率移位器來使所產生且經時間移位之PRN碼頻率移位,CORDIC相位旋轉中之3次旋轉被展示為CORDIC相位旋轉408、410及412。相位旋轉可基於一可程式化相位分割輸入406。然後,又一組CORDIC相位旋轉(包含相位旋轉417、419及421)可生成一輸出,然後由與對經數位化GNSS樣本資料實行之DFT運算相同之DFT運算(在一項實施例中,圖6中之DFT ALU 261實行)來處理該輸出。然後,在一項實施例中將DFT運算之結果(在一項實施例中,由圖6中之DFT ALU 261實行)儲存於碼頻譜記憶體中,諸如圖6中所展示之碼頻譜記憶體263。9A, 9B, 9C and 9D show an example of a spectrum code generator (and portions thereof) that can generate spectrum codes that are stored in a code spectrum memory (e.g., code spectrum memory 263 in FIGS. 6 and 8). In one embodiment, when the GNSS processing system acquires and tracks GNSS SVs in view, the generator 259 and DFT ALU 261 shown in Figure 9D may generate PRN codes and/or code spectra of PRN codes from DFT on-demand and temporarily only for such GNSS SVs, but do not store (except temporarily stored in registers and buffers in the processing pipeline for a few clock cycles) the generated PRN codes and/or their code spectra from DFT; this can increase the memory used by the GNSS processing system by reducing the amount of memory required to operate the GNSS processing system. In an alternative embodiment, the code spectrum generator may generate PRN codes and/or code spectra of PRN codes from DFT only on demand for GNSS SVs in view, but store the codes during the acquisition and tracking phase until one or more positions (e.g., one or more longitude and latitude values) are determined. Thereafter, the PRN codes and/or their code spectra from DFT may be deleted from memory to allow the memory to be used for other purposes. In one embodiment, as shown in FIG. 9D , the code spectrum generator 259 may use a polynomial type generator 402 (shown in FIG. 9A ) to generate PRN codes from a code seed 401 for each GNSS SV in view. The generated PRN code may then be time shifted in time shifter 404 using a set of programmable coefficients (based on the coefficients), and the generated and time shifted PRN code may then be frequency shifted by a frequency shifter that may use CORDIC phase rotations, three of which are shown as CORDIC phase rotations 408, 410, and 412. The phase rotations may be based on a programmable phase division input 406. Another set of CORDIC phase rotations (including phase rotations 417, 419, and 421) may then generate an output that is then processed by the same DFT operation (implemented by DFT ALU 261 in FIG. 6 in one embodiment) as that performed on the digitized GNSS sample data. Then, in one embodiment, the result of the DFT operation (in one embodiment, performed by the DFT ALU 261 in FIG. 6 ) is stored in a code spectrum memory, such as the code spectrum memory 263 shown in FIG. 6 .
圖9A中展示多項式型產生器402之一項實施例。此實施例可用於實行圖9B及圖9C中所展示之方法。若已預先計算,則此產生器402包含例如自一查找表檢索之兩個經計算(或經預先計算)碼前移矩陣501及502。舉例而言,對於伽利略E5A及E5B信號之四個分量中之每一者而言,存在一對應碼種及主碼多項式資料;此資訊此項技術中係眾所周知的且在GNSS集群之源之ICD中發佈。產生器402可藉由使用所計算碼前移矩陣501及502在一單個時脈循環內產生主PRN碼位元中之2個以上位元;參見圖9B中之操作955及957。如圖9A中所展示,所計算碼前移矩陣501包含一第一輸入,該第一輸入接收可作為一給定GNSS集群及一給定GNSS信號分量之主碼多項式資料之產生器多項式503;且包含一第二輸入,該第二輸入接收自暫存器515饋送回之一值;且包含一輸出,該輸出係去向多工器(MUX) 511之一第一輸入。去向MUX 511之一第二輸入507係一恆定初始值,全部為1 (14個位元,在一項實施例中該14個位元中之每一者被設定為值1);此第二輸入507僅用於來自暫存器515之初始輸出上,且此後MUX 511選擇第一輸入(去向MUX 511)作為來自MUX 511之輸出,且將該輸出儲存於暫存器515 (其可係一時脈控制式暫存器)中,以使得在下一時脈循環上將來自MUX 511之最後輸出饋送回至碼前移矩陣501之第二輸入且亦提供為XOR邏輯閘519之一第一輸入。來自MUX 511的饋送回至(碼前移矩陣501之)第二輸入之輸出乘以碼前移矩陣501中之恆定值(自產生器多項式503導出)以產生來自碼前移矩陣501之下一輸出,且透過MUX 511傳遞該下一輸出並儲存於暫存器515中;在每一時脈循環上(或另一選擇為在一組幾個時脈循環中)重複饋送回來自暫存器515之輸出且在碼前移矩陣501中之對該輸出與恆定值實行一矩陣乘法的此程序,以在每一時脈循環中針對給定GNSS集群(例如,伽利略E5)及給定GNSS信號分量(例如,E5AI)產生主PRN碼之N個位元。在一項實施例中,N可大於2,諸如10個或14個位元。因此,產生器402可在一個時脈循環或幾個時脈循環內迅速地產生主GNSS PRN碼之諸多(例如,N個)位元。在圖9A中所展示之實例中,來自暫存器515之輸出處產生14個位元,但XOR邏輯閘519 (其實行一互斥或邏輯操作)僅使用最後10個位元。碼前移矩陣502之使用方式與碼前移矩陣501之使用類似。碼前移矩陣501及碼前移矩陣502 (在一項實施例中)經預先計算以針對一給定GNSS集群及GNSS信號分量以及該給定集群中之一GNSS SV之一給定種而基於矩陣中之值及來自暫存器515及517之先前輸出產生(在XOR邏輯閘519之輸出處)來自該GNSS SV之該GNSS信號分量之主GNSS PRN碼之下N個位元(N個位元之一「前移」)。Matlab附錄包含可形成且使用此等預先計算碼前移矩陣之一碼產生器402之一實例,該實例呈眾所周知之Matlab碼形式。在一項實施例中,可藉由將含有主多項式資料之一原始矩陣相乘N次以在每一時脈循環內在PRN碼中提供N個前移位元來預先計算(或在運行時計算)經預先計算碼前移矩陣。舉例而言,若期望N=3之一前移,則將原始矩陣(「A」)相乘3次(A*A*A)以為PRN碼中之下3個位元之輸出之N=3個位元提供一碼前移矩陣。如圖9A中所展示,所計算碼前移矩陣502包含一第一輸入,該第一輸入接收產生器多項式505,產生器多項式505可係一給定GNSS集群及一給定GNSS信號分量之主碼多項式資料;且包含一第二輸入,該第二輸入接收自暫存器517饋送回之一值;且包含一輸出,該輸出係去向MUX 513之一第一輸入。去向MUX 513之一第二輸入509係給定GNSS集群中之一對應GNSS SV之一種子值。此種子值僅用於來自多工器513且來自暫存器517之初始輸出且此後MUX 513選擇第一輸入(去向MUX 513)作為MUX 513之輸出,且該輸出儲存於暫存器517 (其可係一時脈控制式暫存器)中,以使得在下一時脈循環上將來自MUX 513之最後輸出饋送回至碼前移矩陣502之第二輸入且亦提供為去向XOR邏輯閘519之一第二輸入。將來自MUX 513的饋送回至(碼前移矩陣502之)第二輸入之輸出乘以(在一矩陣乘法運算中)碼前移矩陣502中之預先計算值以自該碼前移矩陣502產生下一輸出,且透過MUX 513傳遞該下一輸出並儲存於暫存器517中。在每一時脈循環上,藉由XOR邏輯閘519對來自暫存器515及517之輸出進行互斥或運算以給出10個新位元(即PRN碼之10位元前移);在當前時脈循環內將14位元輸出舍位以給出10個新位元。碼前移十位524可選擇舍位。然後,XOR邏輯閘521對來自XOR邏輯閘519之輸出及來自一給定GNSS SV之給定GNSS信號分量之副碼位元523實行一互斥或運算以自在XOR邏輯閘519之輸出處產生之碼「擦除」或「移除」副碼。左移位邏輯527、增加取樣邏輯區塊529及左移位邏輯533與暫存器526及531一起進一步處理所產生之主PRN碼以按照一特定取樣率提供可與所接收GNSS樣本「對準」之碼樣本,以使得取樣率匹配且可對準。移位邏輯可用於移位或移動至PRN碼之不同部分。將來自左移位邏輯533之輸出提供至圖9D中所展示之碼頻譜處理管線中之時間移位器404。One embodiment of a polynomial type generator 402 is shown in FIG. 9A . This embodiment may be used to implement the methods shown in FIG. 9B and FIG. 9C . This generator 402 includes two calculated (or pre-calculated) code advance matrices 501 and 502 retrieved, for example, from a lookup table, if pre-calculated. For example, for each of the four components of the Galileo E5A and E5B signals, there is a corresponding code type and master code polynomial data; this information is well known in the art and published in the ICD of the source of the GNSS constellation. The generator 402 may generate more than 2 of the master PRN code bits within a single clock cycle by using the calculated code advance matrices 501 and 502; see operations 955 and 957 in FIG. 9B . As shown in FIG. 9A , the calculated code-forwarding matrix 501 includes a first input that receives a generator polynomial 503 that can be used as master code polynomial data for a given GNSS cluster and a given GNSS signal component; and includes a second input that receives a value fed back from a register 515; and includes an output that is a first input to a multiplexer (MUX) 511. A second input 507 to MUX 511 is a constant initial value, all 1s (14 bits, each of the 14 bits is set to a value of 1 in one embodiment); this second input 507 is only used for the initial output from register 515, and thereafter MUX 511 selects the first input (to MUX 511) as the output from MUX 511, and stores the output in register 515 (which can be a clock-controlled register) so that on the next clock cycle the final output from MUX 511 is fed back to the second input of the code advance matrix 501 and is also provided as a first input of the XOR logic gate 519. The output from MUX 511 fed back to the second input (of code-forward matrix 501) is multiplied by the constant value in code-forward matrix 501 (derived from generator polynomial 503) to generate the next output from code-forward matrix 501 and is passed through MUX The next output is passed to 511 and stored in register 515; this process of feeding back the output from register 515 and performing a matrix multiplication of the output with a constant value in code advance matrix 501 is repeated on each clock cycle (or alternatively in a group of several clock cycles) to generate N bits of the main PRN code for a given GNSS cluster (e.g., Galileo E5) and a given GNSS signal component (e.g., E5AI) in each clock cycle. In one embodiment, N may be greater than 2, such as 10 or 14 bits. Thus, generator 402 can quickly generate multiple (e.g., N) bits of the primary GNSS PRN code within one clock cycle or a few clock cycles. In the example shown in FIG. 9A , 14 bits are generated from the output of register 515 , but XOR logic gate 519 (which implements an exclusive or logic operation) only uses the last 10 bits. The use of code forward matrix 502 is similar to the use of code forward matrix 501 . Code forward matrices 501 and 502 are (in one embodiment) pre-calculated to generate (at the output of XOR logic gate 519) N bits below the primary GNSS PRN code of the GNSS signal component from the GNSS SV in the given cluster for a given GNSS cluster and GNSS signal component and a given seed of a GNSS SV in the given cluster (a "shift" of N bits) based on the values in the matrices and the previous outputs from registers 515 and 517. The Matlab Appendix contains an example of a code generator 402 that can form and use these pre-calculated code forward matrices, in the form of well-known Matlab codes. In one embodiment, a pre-calculated code shift matrix may be pre-calculated (or calculated on the fly) by multiplying an original matrix containing the principal polynomial data N times to provide N shifted bits in the PRN code within each clock cycle. For example, if a shift of N=3 is desired, the original matrix ("A") is multiplied 3 times (A*A*A) to provide a code shift matrix of N=3 bits for the output of the next 3 bits in the PRN code. 9A , the calculated code forward matrix 502 includes a first input that receives the generator polynomial 505, which may be the master code polynomial data for a given GNSS cluster and a given GNSS signal component, and includes a second input that receives a value fed back from register 517, and includes an output that is a first input to MUX 513. A second input 509 to MUX 513 is a seed value for a corresponding GNSS SV in the given GNSS cluster. This seed value is only used for the initial output from multiplexer 513 and from register 517 and thereafter MUX 513 selects the first input (going to MUX 513) as the output of MUX 513 and the output is stored in register 517 (which may be a clock-controlled register) so that on the next clock cycle the final output from MUX 513 is fed back to the second input of the code advance matrix 502 and is also provided as a second input to the XOR logic gate 519. The output from MUX 513 fed back to the second input (of code advance matrix 502) is multiplied (in a matrix multiplication operation) by the pre-calculated value in code advance matrix 502 to produce the next output from the code advance matrix 502, and the next output is passed through MUX 513 and stored in register 517. On each clock cycle, the outputs from registers 515 and 517 are mutually exclusive-ORed by XOR logic gate 519 to give 10 new bits (i.e., 10-bit advance of the PRN code); the 14-bit output is truncated within the current clock cycle to give 10 new bits. Code advance by ten 524 can be truncated optionally. XOR logic gate 521 then performs an exclusive OR operation on the output from XOR logic gate 519 and the secondary code bits 523 from a given GNSS signal component of a given GNSS SV to "erase" or "remove" the secondary code from the code generated at the output of XOR logic gate 519. Left shift logic 527, increase sampling logic block 529 and left shift logic 533 along with registers 526 and 531 further process the generated primary PRN code to provide code samples that can be "aligned" with the received GNSS samples at a specific sampling rate so that the sampling rates match and can be aligned. Shift logic can be used to shift or move to different parts of the PRN code. The output from the left shift logic 533 is provided to the time shifter 404 in the code spectrum processing pipeline shown in Figure 9D.
圖9B及圖9C展示用於操作碼產生器402之一方法。在操作951中,一GNSS處理系統例如依據習用輔助資料(諸如,一GNSS衛星曆書之一最近下載版本)或依據呈方程式形式之星曆表資料來判定在視野中之GNSS SV。在一項實施例中,在視野中之GNSS SV可僅限於L5 WB GNSS SV,諸如伽利略E5 GNSS集群、US L5 GNSS集群及中國北斗/指南針B2集群中之一或多者。然後在操作953中,GNSS處理系統可針對來自在視野中之一GNSS SV之每一GNSS信號分量(例如,一伽利略E5 GNSS SV之E5AI及E5BI)判定一碼種及一碼產生器多項式(其可係該信號分量之一組已知係數)以產生該GNSS信號分量之一主PRN碼。然後在操作955中,計算一G1碼前移矩陣(或已預先計算且自非揮發性記憶體中之一查找表檢索),且在操作957中,計算一G2碼前移矩陣(或已預先計算且自非揮發性記憶體中之一查找表檢索)。在一項實施例中,G1碼前移矩陣及G2碼前移矩陣中之每一者藉由將主碼多項式資料之一原始矩陣相乘N次來預先計算,其中N表示將產生之碼位元之一所期望數目。舉例而言,若碼「前移」量係主PRN碼資料之10個位元,則將原始矩陣相乘(自乘)十次以形成一10位元碼前移矩陣。在一項實施例中,碼「前移」量係在一個時脈循環內產生之主PRN碼資料之位元數目,因此若N = 10,則碼產生器每一時脈循環產生主PRN碼資料之10個新位元。在檢索(若已預先計算)或計算G1碼前移矩陣及G2碼前移矩陣之後,然後方法可在操作959中繼續。在操作959中,系統使用初始向量(全部1)來提供第一G1輸出(因此第一G1輸出係全部1之初始向量)且系統使用碼種來提供第一G2輸出(因此第一G2輸出係碼種);在操作961中,該系統對第一G1輸出及第一G2輸出實行一互斥或運算以提供該第一組N位元PRN碼資料。在操作961之後,在操作969、971及973中處理該第一組N-位元PRN碼資料(隨著經由9X (自圖9B及圖9C中所展示之操作961至操作969)繼續進行處理)且在操作963、965、967、969、971、973及975之迴路中產生所有後續數組N位元PRN碼前移。在操作963中,將G1輸出(例如,來自圖9A中之暫存器515)饋送回至G1碼前移矩陣且將G2輸出(例如,來自圖9A中之暫存器517)饋送回至G2碼前移矩陣。然後在操作965中,將最後G1輸出(例如,來自暫存器515) 與G1碼前移矩陣相乘以產生下一G1輸出,且將最後G2輸出(例如,來自暫存器517)與G2碼前移矩陣相乘以產生下一G2輸出。在操作967中,對G1輸出及G2輸出進行互斥或運算(例如,在圖9A中之XOR邏輯閘519中)。在操作969中,對來自XOR邏輯閘519之碼輸出(例如,在XOR邏輯閘521中)與預期副碼位元(例如,副碼位元523)進行互斥或運算以自該碼輸出擦除或移除副碼。然後在操作971及973中,產生碼樣本並將該等碼樣本提供至其餘碼頻譜處理管線。此等操作準備碼樣本,以使得其取樣率可與所接收GNSS樣本資料之取樣率匹配。操作975判定是否繼續產生GNSS主PRN碼資料。在一項實施例中,當完成所有所需GNSS信號之追蹤時,則可終止產生PRN碼資料,但若需要此追蹤則程序在操作963至操作975之迴路中繼續。9B and 9C show a method for the opcode generator 402. In operation 951, a GNSS processing system determines the GNSS SVs in view, for example based on learned auxiliary data (e.g., a recently downloaded version of a GNSS satellite almanac) or based on almanac data in the form of equations. In one embodiment, the GNSS SVs in view may be limited to L5 WB GNSS SVs, such as one or more of the Galileo E5 GNSS cluster, the US L5 GNSS cluster, and the Chinese Beidou/Compass B2 cluster. Then in operation 953, the GNSS processing system may determine a code type and a code generator polynomial (which may be a set of known coefficients for the signal component) for each GNSS signal component from a GNSS SV in view (e.g., E5AI and E5BI of a Galileo E5 GNSS SV) to generate a primary PRN code for the GNSS signal component. Then in operation 955, a G1 code forward matrix is calculated (or pre-calculated and retrieved from a lookup table in non-volatile memory), and in operation 957, a G2 code forward matrix is calculated (or pre-calculated and retrieved from a lookup table in non-volatile memory). In one embodiment, each of the G1 code shift matrix and the G2 code shift matrix is pre-calculated by multiplying an original matrix of the main code polynomial data N times, where N represents a desired number of code bits to be generated. For example, if the code "shift" amount is 10 bits of the main PRN code data, the original matrix is multiplied (squared) ten times to form a 10-bit code shift matrix. In one embodiment, the code "shift" amount is the number of bits of the main PRN code data generated in one clock cycle, so if N = 10, the code generator generates 10 new bits of main PRN code data every clock cycle. After retrieving (if pre-calculated) or calculating the G1 code forward matrix and the G2 code forward matrix, the method can then continue in operation 959. In operation 959, the system uses the initial vector (all 1s) to provide a first G1 output (so the first G1 output is the initial vector of all 1s) and the system uses the code seed to provide a first G2 output (so the first G2 output is the code seed); in operation 961, the system performs an exclusive or operation on the first G1 output and the first G2 output to provide the first set of N-bit PRN code data. After operation 961, the first set of N-bit PRN code data is processed in operations 969, 971, and 973 (as processing continues through 9X (from operation 961 to operation 969 shown in Figures 9B and 9C)) and all subsequent sets of N-bit PRN code shifts are generated in the loop of operations 963, 965, 967, 969, 971, 973, and 975. In operation 963, the G1 output (e.g., from register 515 in Figure 9A) is fed back to the G1 code shift matrix and the G2 output (e.g., from register 517 in Figure 9A) is fed back to the G2 code shift matrix. Then in operation 965, the last G1 output (e.g., from register 515) is multiplied with the G1 code forward matrix to produce the next G1 output, and the last G2 output (e.g., from register 517) is multiplied with the G2 code forward matrix to produce the next G2 output. In operation 967, the G1 output and the G2 output are mutually exclusive or operated (e.g., in XOR logic gate 519 in FIG. 9A). In operation 969, the code output from XOR logic gate 519 (e.g., in XOR logic gate 521) and the expected secondary code bit (e.g., secondary code bit 523) are mutually exclusive or operated to erase or remove the secondary code from the code output. Then in operations 971 and 973, code samples are generated and provided to the residual code spectrum processing pipeline. These operations prepare the code samples so that their sampling rate can match the sampling rate of the received GNSS sample data. Operation 975 determines whether to continue to generate GNSS main PRN code data. In one embodiment, when tracking of all required GNSS signals is completed, the generation of PRN code data can be terminated, but if such tracking is required, the process continues in the loop from operation 963 to operation 975.
圖10展示一GNSS處理系統之一實例,該GNSS處理系統可用於實行本文中所闡述之方法或可用於實施本文中所闡述之系統。GNSS處理系統450可被實施於其自身的積體電路(諸如,一導航晶片451)上,或者可為一晶片架構上之一系統(其為諸如一智慧型電話或平板電腦等一更大系統之一部分)的一部分。GNSS處理系統450可包含處理邏輯,諸如一ARM處理器466,ARM處理器466使用ARM程式及資料記憶體467來控制GNSS處理系統450之操作。此外,GNSS處理系統450可包含可與圖4中所展示之RF ADC 155類似之一RF ADC 465。GNSS處理系統450亦可包含時脈鎖相迴路產生與閘控電路系統464以使用鎖相迴路且為GNSS處理系統450中之其他操作產生時脈。GNSS處理系統450可包含邏輯模組及記憶體兩者以實行本文中所闡述之獲取及追蹤程序。舉例而言,邏輯模組457可包含一獲取引擎458,獲取引擎458可包含一組DFT與逆DFT處理器或ALU以實行本文中所闡述之DFT運算。另外,邏輯模組457可包含一數位前端460,數位前端460可位於所有數位E5 GNSS前端中以在RF ADC 465之前及之後提供處理。邏輯模組457亦可包含複數個衛星信號產生器(諸如衛星信號產生器459),該複數個衛星信號產生器基於可例如自一蜂巢資料通信網路接收之輔助資料來產生為在視野中之GNSS衛星(SV)之GNSS PRN碼。邏輯模組457亦可包含一時基與控制模組461以及一記憶體介面與匯流排控制模組462以允許GNSS處理系統耦合至一或多個應用處理器。邏輯模組457可耦合至用以儲存呈各種資料結構之各種資料之一或多個記憶體,舉例而言該一或多個記憶體包含基頻樣本記憶體468、獲取引擎命令記憶體469、FFT程式記憶體470、FFT常數記憶體471、FFT變數記憶體472、FFT結果記憶體473、碼頻譜產生記憶體474、同調積分記憶體475、IFFT記憶體476、IFFT記憶體477、IFFT變數記憶體478及非同調積分記憶體479。此等記憶體可與邏輯模組457一起使用以實行本文中所闡述之操作。將瞭解,替代性架構可使用與圖10中所展示不同的處理器及記憶體配置。FIG. 10 shows an example of a GNSS processing system that may be used to implement the methods described herein or may be used to implement the systems described herein. The GNSS processing system 450 may be implemented on its own integrated circuit (e.g., a navigation chip 451) or may be part of a system on a chip architecture that is part of a larger system such as a smart phone or tablet computer. The GNSS processing system 450 may include processing logic such as an ARM processor 466 that uses ARM programs and data memory 467 to control the operation of the GNSS processing system 450. In addition, the GNSS processing system 450 may include an RF ADC 465 that may be similar to the RF ADC 155 shown in FIG. 4. The GNSS processing system 450 may also include a clock phase-locked loop generation and gating circuitry 464 to use the phase-locked loop and generate clocks for other operations in the GNSS processing system 450. The GNSS processing system 450 may include both logic modules and memory to implement the acquisition and tracking procedures described herein. For example, the logic module 457 may include an acquisition engine 458, which may include a set of DFT and inverse DFT processors or ALUs to implement the DFT operations described herein. In addition, the logic module 457 may include a digital front end 460, which may be located in all digital E5 GNSS front ends to provide processing before and after the RF ADC 465. The logic module 457 may also include a plurality of satellite signal generators (such as satellite signal generator 459) that generate GNSS PRN codes for GNSS satellites (SVs) in view based on auxiliary data that may be received, for example, from a cellular data communication network. The logic module 457 may also include a timing and control module 461 and a memory interface and bus control module 462 to allow the GNSS processing system to be coupled to one or more application processors. The logic module 457 may be coupled to one or more memories for storing various data in various data structures, for example, the one or more memories include a baseband sample memory 468, an acquisition engine command memory 469, an FFT program memory 470, an FFT constant memory 471, an FFT variable memory 472, an FFT result memory 473, a code spectrum generation memory 474, a coherent integral memory 475, an IFFT memory 476, an IFFT memory 477, an IFFT variable memory 478, and an incoherent integral memory 479. Such memories may be used with logic module 457 to perform the operations described herein. It will be appreciated that alternative architectures may use different processor and memory configurations than shown in FIG. 10 .
在另一實施例中,藉由並行地實行多個核運算來減少實行DFT運算所需之時脈。舉例而言,若將取樣率選擇為2^N (例如,N=14),則可利用具有7個階段之一基數4內核來實施DFT。每一階段之每一步驟現場處理4個樣本。假定僅雙埠記憶體,在每循環進行一次讀取及寫入之情況下,階段所需之時脈為4*4096,且7個階段則需要114,688個時脈。圖6中所展示之VFFDC可在大約4096個時脈內達成一DFT。為達成類似效能,可並行地實施32個內核,以使得可在512個時脈內完成一階段,且將在3584個時脈內完成7個階段。然而,此方法將需要能夠並行地達到32個輸入樣本。因此,VFFDC之優點係在僅並行地讀取10個記憶體之情況下可達成一低時脈速率。另一實施例係使用一4倍高的時脈速率,且則僅需要並行的8個內核,此將並行記憶體讀取需要減小至每時脈8個輸入/輸出。VFFDC之優點係既維持一低時脈速率亦維持低並行記憶體讀取/寫入組態。由於系統可以一低時脈速度操作且在低電壓下達成可靠的時序,因此此一最佳化應允許低功率消耗。In another embodiment, the clocks required to perform the DFT operation are reduced by performing multiple core operations in parallel. For example, if the sampling rate is chosen to be 2^N (e.g., N=14), a radix-4 core with 7 stages can be used to implement the DFT. Each step of each stage processes 4 samples in real time. Assuming only dual-port memory, with one read and write per cycle, the clocks required for the stage are 4*4096, and 7 stages require 114,688 clocks. The VFFDC shown in Figure 6 can achieve a DFT in approximately 4096 clocks. To achieve similar performance, 32 cores could be implemented in parallel so that one stage could be completed in 512 clocks, and 7 stages would be completed in 3584 clocks. However, this approach would require being able to reach 32 input samples in parallel. Thus, the advantage of VFFDC is that a low clock rate can be achieved while only reading 10 memories in parallel. Another embodiment uses a 4 times higher clock rate, and then only requires 8 cores in parallel, which reduces the parallel memory read requirement to 8 inputs/outputs per clock. The advantage of VFFDC is that both a low clock rate and a low parallel memory read/write configuration can be maintained. This optimization should allow low power consumption since the system can operate at a low clock speed and achieve reliable timing at low voltage.
在一項實施例中,VFFDC實施具有最低記憶體需要之一處理鏈。每一毫秒,對輸入樣本進行兩次DFT,一次DFT針對E5之上旁帶及下旁帶中之每一者。然後針對每一衛星信號之每一分量(E5 4個、L5 2個且未來的B2 4個),進行包含碼都卜勒及載波頻率效應之一次DFT,以使得不必對輸入樣本應用一不同DFT來移除載波頻率假設。然後,進行另一DFT以對輸入與碼頻譜之積實施逆DFT。因此,每毫秒DFT之總數目係2 + 2*N個通道*M個分量,其中第一個2係原始輸入DFT且第二個2係製成碼頻譜及頻譜積之IDFT。每通道高達4個分量之22個通道,此係2 + 2*(22*4) = 178次DFT/毫秒。若預先計算碼頻譜DFT,則輸入樣本必須對每一PRN之每一頻率係唯一的。在該情形中,DFT之數目係(2*M*N) = 176,其中M=4且N=22。然而,此需要一記憶體來儲存碼頻譜。在每一IFFT之後且在更新假設記憶體之前,此一系統將亦需要一方法來產生碼都卜勒。因此,即使替代方案係幾乎相同數目個DFT,但其仍需要額外記憶體且可每毫秒具有較高功率消耗來將碼頻譜DFT移動至AE。舉例而言,以每毫秒20480個假設為例,所需要之一匯流排速率將為22個通道*4個分量*碼頻譜之I、Q之2個位元組*20480個假設*8個位元/位元組28M位元/毫秒=28G位元/秒。此一組態將幾乎不可能實施。因此,現場計算能力使得該系統可實現。In one embodiment, VFFDC implements a processing chain with minimal memory requirements. Every millisecond, two DFTs are performed on the input samples, one for each of the upper and lower sidebands of E5. Then for each component of each satellite signal (4 for E5, 2 for L5, and 4 for B2 in the future), a DFT is performed that includes code Doppler and carrier frequency effects so that a different DFT does not have to be applied to the input samples to remove the carrier frequency assumption. Then, another DFT is performed to perform an inverse DFT on the product of the input and code spectrum. Therefore, the total number of DFTs per millisecond is 2 + 2*N channels*M components, where the first 2 are the original input DFTs and the second 2 are the IDFTs that make the code spectrum and the spectral product. Up to 22 channels with 4 components per channel, this is 2 + 2*(22*4) = 178 DFTs/ms. If the code spectrum DFT is calculated in advance, the input samples must be unique for each frequency of each PRN. In this case, the number of DFTs is (2*M*N) = 176, where M=4 and N=22. However, this requires a memory to store the code spectrum. Such a system will also need a method to generate the code Doppler after each IFFT and before updating the assumption memory. Therefore, even if the alternative is almost the same number of DFTs, it still requires additional memory and may have higher power consumption per millisecond to move the code spectrum DFT to the AE. For example, with 20480 assumptions per millisecond, a required bus rate would be 22 channels * 4 components * 2 bytes of I, Q of the code spectrum * 20480 assumptions * 8 bits/byte 28Mbit/millisecond = 28Gbit/second. This configuration would be almost impossible to implement. Therefore, on-site computing power makes the system feasible.
減少系統記憶之另一最佳化方案係允許將E5頻帶信號(如伽利略E5)之所有四個分量及未來的B2皆處理至一單個假設記憶體中以進行長時間集成,以克服由於蜂巢式電話中之高系統損耗及/或因植物或使用者身體對信號之衰減造成之高損耗而產生的微弱信號B2之公共領域介面控制檔案僅闡述下旁帶,但其他技術論文建議上旁帶信號結構將在2019年底或之後可用。因此,僅具有一個旁帶之GPS L5將僅具有兩個分量,而E5及B2將具有4個分量:上旁帶及下旁帶中之每一者上各有兩個。Another optimization to reduce system memory is to allow all four components of the E5 band signal (such as Galileo E5) and future B2 to be processed into a single hypothetical memory for long-term integration to overcome weak signals due to high system losses in cellular phones and/or high losses due to attenuation of the signal by foliage or the user's body. The public domain interface control files for B2 only describe the lower sideband, but other technical papers suggest that the upper sideband signal structure will be available by the end of 2019 or later. Therefore, GPS L5, which has only one sideband, will have only two components, while E5 and B2 will have 4 components: two on each of the upper and lower sidebands.
對每一毫秒碼關聯之和同調地求積分之主要挑戰係減小由於在1 ms時段處之相位反轉所致的對消損耗。若所接收信號之主碼相位可經估計為大約0.5 ms或小於0.5 ms,可在時間上將所接收信號頻譜與所估計碼相位至少部分地對準,以使得避免次毫秒對消。圖11展示可提供精確時間同調積分之一實施例。The main challenge of coherently integrating the sum of each millisecond code correlation is to reduce the cancellation loss due to phase reversal at 1 ms time segments. If the primary code phase of the received signal can be estimated to be approximately 0.5 ms or less, the received signal spectrum can be at least partially aligned in time with the estimated code phase so that sub-millisecond cancellation is avoided. FIG. 11 shows an embodiment that can provide accurate time coherent integration.
在一項實施例中估計候選信號之預期部分主(ms長)碼相位需要精確時間及初始位置兩方面的知識。此項技術中已知,精確時間可自一第一所接收信號之副碼相位導出或可自一精細時間源導出。此估計可為圖11中之操作601。In one embodiment, estimating the expected partial primary (ms long) code phase of the candidate signal requires knowledge of both precise time and initial position. As is known in the art, precise time can be derived from the secondary code phase of a first received signal or can be derived from a precise time source. This estimation can be operation 601 in FIG. 11 .
一旦將主碼相位不確定性減小至遠低於1 ms,則可藉由將所接收之1 ms信號之時段與預期自每一SV接收到碼之時間至少部分地對準來解決次毫秒對消問題。此意味著每毫秒必須計算複數個所接收信號頻譜、在時間上錯開以與主碼頻譜匹配且因此減小次ms同調對消的程度。Once the primary code phase uncertainty is reduced to well below 1 ms, the sub-millisecond cancellation problem can be solved by at least partially aligning the time segments of the received 1 ms signal with the time at which the code is expected to be received from each SV. This means that multiple received signal spectra must be calculated every millisecond, staggered in time to match the primary code spectrum and thus reduce the extent of sub-ms coherence cancellation.
搜尋次序可確立在每一部分相位偏移處將搜尋哪些SV、其信號分量及都卜勒格。此被展示為圖11中之操作603。由於長同調積分生成較大的靈敏度,因此可優先使用E5Aq及E5Bq引示信號,此乃因E5Aq及E5Bq引示信號具有100 ms長之副碼且無資料位元反轉。在一項實施例中,若預測並移除導航訊息符號則亦可使用E5Ai及E5Bi,因此消除或減少其各別同調對消損耗。應注意,雖然預期所有信號之主碼相位跨越一毫秒不均勻地分佈,但將可能出現僅可用於一給定信號之處理槽係次最佳的情形。無論如何,將始終可避免在一副碼位元反轉情形中信號之第一½ ms將與第二½ ms對消的最差情形。The search order can determine which SVs, their signal components, and Dopplers will be searched at each partial phase offset. This is shown as operation 603 in Figure 11. Since the long coherent integration generates greater sensitivity, the E5Aq and E5Bq pilot signals can be used preferentially because the E5Aq and E5Bq pilot signals have 100 ms long secondary codes and no data bit inversion. In one embodiment, if the navigation message symbol is predicted and removed, E5Ai and E5Bi can also be used, thereby eliminating or reducing their respective coherent pair consumption losses. It should be noted that although the main code phase of all signals is expected to be unevenly distributed across one millisecond, it may be possible that the processing slot that can be used for only a given signal is suboptimal. Regardless, the worst case scenario where the first ½ ms of the signal cancels out the second ½ ms in a subcode bit inversion situation will always be avoided.
在本發明之一項實施例中,將每毫秒計算M 1ms信號頻譜,每一頻譜偏移達1/M ms。舉例而言,若M=4,則每0.25 ms,藉由FFT關聯(例如,使用圖6中所展示之VFFDC架構)處理一全1 ms (或多於1 ms)之所接收且經數位化之GNSS樣本資料,因此在此情形中處理時段被分離且偏移(一個距下一個)達0.25 ms且所接收GNSS樣本資料亦偏移達0.25 ms。在此實例中,在相對時間0.0 ms處之一第一處理時段將對在操作605中產生之1 ms之GNSS樣本資料處理FFT關聯。該等關聯被展示為圖11中之操作607。在相對時間0.25 ms處之一第二處理時段將使用在相對時間0.25處(操作605)結束的1 ms之GNSS樣本資料來處理FFT關聯(操作607)且偏離先前1 ms之GNSS樣本資料達0.25 ms。在相對時間0.5 ms處之一第三處理時段將處理FFT關聯(607)使用在相對時間0.5 ms處(操作605)結束之1 ms之GNSS樣本資料且偏離先前1 ms達0.25 ms。因此操作605、607及609在一1 ms時間間隔期間重複四次。在一替代的更靈敏之實施例中,將計算信號頻譜以與每一預期衛星碼相位僅可能貼近地對凖。In one embodiment of the invention, M 1ms signal spectra are calculated every millisecond, each spectrum offset by 1/M ms. For example, if M=4, then every 0.25 ms, a full 1 ms (or more than 1 ms) of received and digitized GNSS sample data is processed by FFT correlation (e.g., using the VFFDC architecture shown in FIG. 6 ), so in this case the processing time periods are separated and offset (one from the next) by 0.25 ms and the received GNSS sample data are also offset by 0.25 ms. In this example, a first processing time period at relative time 0.0 ms will process the FFT correlation on the 1 ms of GNSS sample data generated in operation 605. These correlations are shown as operation 607 in FIG. 11 . A second processing period at 0.25 ms relative time will process the FFT correlation (operation 607) using 1 ms of GNSS sample data ending at 0.25 ms relative time (operation 605) and offset from the previous 1 ms by 0.25 ms. A third processing period at 0.5 ms relative time will process the FFT correlation (607) using 1 ms of GNSS sample data ending at 0.5 ms relative time (operation 605) and offset from the previous 1 ms by 0.25 ms. Thus operations 605, 607 and 609 are repeated four times during a 1 ms time interval. In an alternative more sensitive embodiment, the signal spectrum is calculated to align as closely as possible with each expected satellite code phase.
在粗略時間模式之情形中,必須每毫秒產生且對準候選信號碼(所接收GNSS樣本資料)及其相關聯頻譜,並使用VFFDC或類似基於FFT來與信號頻譜關聯。In the case of coarse time mode, candidate signal codes (received GNSS sample data) and their associated spectra must be generated and aligned every millisecond and correlated with the signal spectrum using VFFDC or similar FFT-based methods.
當生成此等所得關聯時,必須在每一SV頻帶及頻段專用之同調假設記憶體中對該等所得關聯求和,其中移除與副碼相關聯之相位反轉。此被展示為操作607。此程序需要計算全1 ms關聯,但碼相位不確定性遠小於1 ms。然而,僅全PN碼中可能含有一關聯峰值之部分必須儲存於假設記憶體中。When these resulting correlations are generated, they must be summed in a coherence hypothesis memory dedicated to each SV band and segment, with the phase reversals associated with the secondary code removed. This is shown as operation 607. This procedure requires the calculation of full 1 ms correlations, but the code phase uncertainty is much less than 1 ms. However, only the portion of the full PN code that may contain a correlation peak must be stored in the hypothesis memory.
在副碼時段邊界處,或在某些情形中更經常的是,必須將同調假設記憶體非同調地求和成非同調假設記憶體,非同調假設記憶體係同調假設記憶體之鏡像但僅含有量值資訊且可因此保留出記憶體之一半。此被展示為操作611。At the sub-code period boundary, or more often in some cases, the coherent hypothesis memory must be summed incoherently into a non-coherent hypothesis memory that is a mirror image of the coherent hypothesis memory but contains only magnitude information and may therefore reserve half of the memory. This is shown as operation 611.
圖11中之程序在操作613中繼續進行(藉由返回至操作605),直至一關聯峰值升高至高於雜訊本底為止。一旦關聯峰值以足夠的置信度升高至高於雜訊本底,則報告搜尋結果且對特定所關注SV之獲取搜尋可中止,朝向搜尋次序中之下一SV為得到其部分碼相位。該搜尋亦可在一預設時間間隔之後超時且可報告一搜尋故障。The process in FIG. 11 continues in operation 613 (by returning to operation 605) until a correlation peak rises above the noise floor. Once the correlation peak rises above the noise floor with sufficient confidence, the search result is reported and the acquisition search for the particular SV of interest may be terminated, toward the next SV in the search order to obtain its partial code phase. The search may also time out after a preset time interval and a search failure may be reported.
圖11展示如何可與近似時間格對準地搜尋衛星碼之一方法之一實例,預期在該等近似時間格中接收到該等衛星碼,以使得可減小由於相位反轉所致的次毫秒同調對消損耗。可基於一組初始資訊實行此搜尋,在一項實施例中該組初始資訊可包含以下各項中之至少兩者:(1)自至少一個GNSS SV接收之一所主碼或副碼信號之一碼相位;(2)基於一或多個時間源估計之一GNSS時間,所估計之GNSS時間不確定性經估計(例如,基於源之已知準確性)或已知在小於實際的GNSS時間之+/-0.5毫秒內;及(3) GNSS接收器之一大致位置。使用此初始組,可實行圖11中之操作601。實際上,此初始組給予系統GNSS時間之一估計值以使得能夠使用GNSS時間進行獲取。FIG. 11 shows an example of a method of how a satellite code may be searched in alignment with an approximate time grid in which the satellite codes are expected to be received so that sub-millisecond coherence pair loss due to phase reversal may be reduced. This search may be performed based on an initial set of information, which in one embodiment may include at least two of the following: (1) a code phase of a primary or secondary code signal received from at least one GNSS SV; (2) a GNSS time estimated based on one or more time sources, the estimated GNSS time uncertainty being estimated (e.g., based on the known accuracy of the sources) or known to be within +/- 0.5 milliseconds of the actual GNSS time; and (3) an approximate position of the GNSS receiver. Using this initial set, operation 601 in FIG. 11 may be performed. In effect, this initial set gives the system an estimate of GNSS time to enable acquisition using GNSS time.
一機器可讀媒體包含用於以可由一機器(例如,一電腦)讀取之一形式儲存資訊之任何機構。舉例而言,一機器可讀媒體包含唯讀記憶體(「ROM」)、隨機存取記憶體(「RAM」)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置等。A machine-readable medium includes any mechanism for storing information in a form that can be read by a machine (e.g., a computer). For example, a machine-readable medium includes read-only memory ("ROM"), random access memory ("RAM"), disk storage media, optical storage media, flash memory devices, etc.
一製品可用於儲存程式碼。儲存程式碼之一製品可體現為但不限於一或多個記憶體(例如,一或多個快閃記憶體,隨機存取記憶體(靜態隨機存取記憶體、動態隨機存取記憶體或其他隨機存取記憶體))、光碟、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡或適合於儲存電子指令之其他類型的機器可讀媒體。亦可藉由體現為傳播媒介(例如,經由一通信鏈路(例如,一網路連接))之資料信號將程式碼自一遠端電腦(例如,一伺服器)下載至一請求電腦(例如,一用戶端)。An article of manufacture may be used to store program code. An article of manufacture storing program code may be embodied in, but not limited to, one or more memories (e.g., one or more flash memories, random access memory (static random access memory, dynamic random access memory, or other random access memory)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards, or other types of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by data signals embodied in a transmission medium (e.g., via a communication link (e.g., a network connection)).
在前述說明書中,已闡述具體例示性實施例。顯然可對該等實施例做出各種修改,而此並不背離以下申請專利範圍中所陳述之較寬廣精神及範疇。因此,應將本說明書及圖式視為具有說明性意義而非限制性意義。附錄
以下附錄提供與一些實施例有關之進一步資訊。此等實施例係GNSS接收器、GNSS接收器之部分、用於操作此類接收器或部分之方法以及that可使得執行此等方法之非暫時性機器可讀媒體的非限制性實例。亦附上一「Matlab」碼附錄,且該「Matlab」碼附錄以眾所周知的Matlab碼形式提供本文中所闡述之各種組件之實施方案之實例。
附錄1
附錄
此附錄提供關於本發明之各種實施例及態樣的進一步資訊,但不旨在限制隨附申請案主體中之任何申請專利範圍之範疇。
用於可商業化之現代化GNSS信號追蹤之一全數位接收器架構
發明人:Paul Conflitti、Paul McBurney、Mark Moeglein及Greg Turetzky背景
SnapTrack在1995至1999年間開發之輔助GPS (例如,參見美國專利第5,663,734號及5,812,087號)在全世界範圍內將GNSS追蹤帶入行動電話。當時,GPS係僅一運行之GNSS集群,且L1 C/A信號係僅一開放民用之信號。L1 C/A信號之簡單性(具有一1 MHz碼片速率及一50 BPS導航訊息)及CDMA2000蜂巢式系統之態樣形成適合一行動電話之兩個接收器策略之一組合,其中其共用一振盪器,且網路之同步性質使得可以極大的準確性自基地台至行動裝置傳遞時間及頻率。亦使得可為行動裝置提供輔助資料,以使得其不需要直接自衛星讀取該輔助資料,因此節約大量時間及處理電力且極大地提高靈敏度。>此等相同因素亦使得能夠進行高級前向鏈路三邊量測(AFLT),從而自同步CDMA2000蜂巢式網路之基地台之有效地形成一虛擬衛星網路。隨著一包含伽利略(歐洲)、北斗/指南針(中國)及一現代化GPS在內之GNSS集群激增,現代蜂巢式網路(包含4G及5G)以及現代GNSS系統之複雜性已不斷發展。此等三個集群全部在L5頻帶交匯且共用頻譜。GPS L5係以1176.45 MHz為中心之一10.23MHz擴展頻寬信號。伽利略及北斗兩者皆使用一altBOC碼將信號能量擴展至兩個旁帶中。伽利略之兩個旁帶(A旁帶及B旁帶)之中心處於距其中心頻率(1191.795 MHZ)+/-15.345 MHz的1176.45 MHz及1207.14 MHz處。使用一10.23MHz碼對其進行類似地調變。最終,北斗具有實際上與伽利略相同頻率的信號,具有相同長度擴展碼。印度及日本亦具有在此頻帶中發展並傳輸之區域性系統。日本系統QZSS使用一非常類似GPS之信號。印度系統具有BOC調變以及一規律中心頻率,但其亦具有以1176.45 MHz為中心之一窄頻信號。因此,GPS、北斗、伽利略、QZSS及IRNSS全部具有在1176.45 MHz L5A頻帶下之信號。此外,伽利略與北斗具有以1207.14 MHz為中心之相似信號,將稱為L5B頻帶。格洛納斯亦具有在1176.45 MHz及1202.025 MHz下之類似提議信號。
實際上,存在兩組具有某些共同性質之現代化信號,其中某些在L1下,如E1B及E1C;且這些在L5處,如E5及B2。其主要差異在於碼片速率及碼長度。
在此列舉在L5下之此等現代化寬頻GNSS信號相對於以往信號或處於其他頻帶中之信號之某些關鍵優點:
1.與GPS L1 C/A相比,碼長度增加了10倍,以進一步減輕互關聯性且每一SV廣播之多達4個不同信號被設計為彼此正交。遺憾的是,此等信號中之大多數使用相同的10,230晶片碼長度及10.23MHz之碼片速率,因此在一個信號被直接接收而另一個信號相對弱/間接的信號之間仍然存在相互關聯之可能性。
2.全部信號皆處於相同頻帶中,從而使得可利用一單個RF前端追蹤全部信號。
3.引示碼使得可增強靈敏度,以在受阻信號環境中進行追蹤。
4.伽利略及北斗之AltBOC(15,10)信號提供發射分集,以改良抗衰落性及改良抗多路徑性。
5.資料與引示通道正交。此產生以下優點:
a. 當組合信號時(確切而言非同調地組合信號時),改良一SNR。
b. 能夠同調地追蹤主要受振盪器穩定性及使用者動態限制之引示通道。
c. 可利用一純PLL而不是一Costas迴路來追蹤。此避免移除資料位元反轉之平方損耗,且允許使用+/-180度之全鑑別器範圍。
6.在資料通道上對資料進行高級譯碼以減小位元誤差速率。此允許以一較低SNR提取資料,從而提高利用較弱信號確定精細時間之能力。
7.具有重疊碼之副碼改變主碼訊框。此藉由移除恆定相位序列減小碼之前的相互關聯。二次編碼亦允許自副碼相位精確地確定GNSS時間,且當接收器時脈不確定性小於副碼之持續時間時,可以極大絕對準確性設定時脈。
8.高碼片速率。較高碼片速率使關聯峰值變窄以減小多路徑及相互關聯。
9.在1毫秒內完成之碼。此允許一更快獲取且達成使用循環卷積之可實現FFT方法。此達成可商業化之現代化-唯一GNSSS接收器(COVIMOGR)。碼越長,獲取成本越大。在L1下之現代化碼通常更長且因此更難直接獲取。
此等現代化GNSS信號(擴展碼及更高碼片速率)之關鍵優點亦比以往接收器面臨之挑戰更大,但現代關聯器硬體可輕鬆應對此等挑戰,此將在本文中之另一個實施例中加以闡述。接收器製造商計劃首先獲取L1頻帶信號(GPS C/A碼、伽利略E1、北斗B1或B1C或格洛納斯FDMA)且然後轉變為L5追蹤,此乃因當時間不確定性為大約1 ms時追蹤更長碼之計算負荷可令人怯步。
某些人已提出頻域關聯來解決此直接獲取寬頻10.23 MHz信號之問題。然而,這樣做之策略依賴於實質性FFT硬體,包含比諸如行動電話、腕帶甚至車輛導航等商業上可行之消費型應用多得多之記憶體。
行動電話網路同步 雖然本文所闡述之實施例適合於獨立GNSS接收器,但認識到GNSS接收器之最重要市場實際上是作為較大行動裝置(例如蜂巢式電話)之組件。行動網路之複雜性及資料攜載能力已得到實質上提高,但與高通公司2G及3G技術相關聯之此等網路可靠地可用的時間甚至頻率同步雖然仍受支持但將不再保證用於4G及5G系統。
因此,通常不再支援高通公司用於基站測距之AFLT技術,而多集群GNSS追蹤已在某種程度上取代了該技術。而且,在撰寫本文時,用於幫助同步此等網路之精細定時輔助尚未普遍使用。因此,任何在商業上可行之直接L5獲取策略(即不使用L1 GPS)必須允許顯著的時間不確定性甚至頻率不確定性,且亦允許存在精細時間及頻率輔助將不可用的可能性。在蜂巢式資料(例如,網際網路)可用之情況下,時間傳送協定(諸如,NTP及SNTP)通常可限定此時間不確定性。限定頻率不確定性係蜂巢式載波頻率,蜂巢式載波頻率本身亦受到網路類型及網路實施方案之可用性及變化影響。因此,任何具現代化AGNSS能力之設計必須允許不同初始時間及頻率不確定性。
直接L5A獲取之益處 僅追蹤L5優於自L1轉變為L5之某些關鍵益處包含:
1.減少一個RF前端,包含昂貴天線、LNA及SAW濾波器。
此亦實質上減小整合難度。
2.可得到靈敏度得到提高及抗衰落性之信號。
3.實質上減小遠近相互關聯獲取問題。
4.減小擁堵及擾亂易感性。
某些缺點包含:
1.目前為止,支援現代化信號之SV較少。預計在未來幾年內此差距將迅速減小。
2.複雜性增大,在獲取時尤其如此。衰退
將PfL1
定義為L1頻率上有大到足以導致一載波追蹤損耗之概率,同樣將PfL5
定義為L5上存在一載波追蹤損耗之概率。
PfL1
及PfL5
藉由信號路徑相關,但獨立於不同的預期C/No。通常,當將L5處之資料及引示能量同步組合時,L5信號有望增強3dB,從而使PfL5
<PfL1
。
在一衰落環境中在L1處獲取信號本質上將係不可靠的,因此若接收器天線處於一局部零位中,則無法在L5處獲取信號,更不用無法進行追蹤。
在任何給定時刻,Pacq
變成1-PfL1
。Ptrack在其後,最初且用於重新獲取(1-PfL1
)*(1-PfL5
)。
在直接獲取情形中,Pacq
僅為(1-PfL5
)。然而,就信號處理及記憶體兩方面而言,直接獲取大約要複雜一個數量級,且在無L1載波輔助之情況下維持載波追蹤也同樣可能會更加困難。
因此,在所有Rician及Rayleigh衰落場景中,直接獲取可靠性皆明顯變大,對於具有實質性主體阻塞、線性天線及混亂環境之消費型應用而言尤其如此。然而,在最惡劣環境中追蹤L1及L5信號會產生傳輸分集增益。然而,考慮到L5下之碼追蹤相對不準確及L1信號弱,損耗並不明顯,尤其是在主GNSS集群之L5頻帶信號達到完全可操作性之後。
與在L5下追蹤複數個可分離信號相關聯之分集增益亦使得L1追蹤不太重要。雖然自額外載波獲得某些效能增益,但其實質上小於在L5下自額外載波獲得之增益。
以具有複數個可分離波瓣之伽利略E5 altBoc信號為例。若一接收器僅追蹤E5A
及E5B
,但只需要一者或另一者來保持其載波平滑及增量位置解之連續性,則可將PslipE5AB
定義為PslipE5A
*PslipE5B
。在例如PslipE5A
=PslipE5B
=0.001之情形中,PslipE5AB
將係0.000001。雖然追蹤E1確實可提供更大載波追蹤可靠性,但藉由限制對E1的獲取及再次獲取以及E1處較弱信號以及較低精確性碼,該增益在某種程度上會無效。E5信號包含比兩個主波瓣低大約10dB之3個額外波瓣,從而提供進一步使得不需要獲取或追蹤E1之一額外分集形式。
顯然,對於L5-I及L5-Q信號而言,可用傳輸分集較少,且因此L1及L2C追蹤仍可十分有意義,尤其在支援L5之衛星集群擴大之前。此亦可使得沿著射線路徑更好地局部量測電離層TEC。長遠來看,具有預期可用B2B信號之北斗更類似於伽利略。
本發明實施例之說明 下圖闡述根據本文中所闡述的本發明之一方面之一項實施例之一個可能數位信號處理前端。
天線–>濾波器–> LNA –> RF降頻轉換器(自1189MHz至具有+/-54 MHz BW之DC)。在108Mhz下取樣會生成同相(realC = cosine)及正交(imagC – sine)樣本。頻寬自L5中心頻率1191.795MHz之+/-54Mhz伸展。
GNSS接收器前端信號處理流程圖
旁帶A係居中向下15*1.023 Mhz,且旁帶B居中向上15*1.023 Mhz。
因此產生一15*1.023 Mhz數位本地振盪器。稱其為旁帶SB。
藉由進行一頻率移位將在-15*1.023MHz下之下旁帶A移位至DC:
Ai = real * cos(SB) – imag * sin(SB)
Aq = imag * cos(SB) + real * sin (SB)
然後對信號進行低通濾波且利用一時脈分頻器自100 Mhz抽取至16.384 Mz。
類似地,藉由進行一頻率移位將15*1.023MHz之上旁帶B移位至DC:
Bi = real * cos(SB) + imag * sin(SB)
Bq = imag * cos(SB) - real * sin (SB)
然後對信號進行低通濾波且利用一時脈分頻器自108Mhz抽取至20.46MHz。抽取器僅為在一毫秒內自108,000個樣本生成20,460個時脈之一時脈分頻器。
獲取及追蹤模式 可商業化之一直接獲取寬頻GNSS接收器應根據獲取及追蹤程序之狀態而有效地使用其有限的資源。不具有最小資料連接性之應用必須可使用「空中搜尋」模式,但是更有趣的情形是此時輔助資料可用且不需要自衛星信號導出。輔助資訊之此等片段可大致分類成接收器時脈設定(時間)、振盪器訓練(頻率)、初始位置、衛星位置及衛星時脈資訊(星曆表)。根據所有此等輔助形式之品質,在一項個實施例中,本文所闡述之可商業上化現代化唯一GNSS接收器(COVIMOGR)應該能夠獲取信號並儘可能快地導出其所需之輔助資訊。
為此,闡述三種不同的獲取模式:
1.空中搜尋:上文所闡述之一個關鍵輔助組件實際上缺失且因此接收器必須「空中搜尋」所有已知集群之所有信號。此係最不吸引人之情形,此乃因在連接世界中其用例已減少。在此意義上,其係模式2之一減速拓寬版本。
2.粗略時間:已知接收器時脈時間處於幾秒內,但未達到0.5 ms (越準確越好)且有適度準確之初始位置可用。在此模式中,直接獲取頗具挑戰性,此乃因L5下之大多數信號皆為寬頻信號,其毫秒級碼比L1-C/A長一個數量級。就COVIMOGR而言,試圖使用時域關聯器庫直接與此等信號進行關聯無法計算,特別是對於必須在受阻環境中進行獲取且具有通常針對商用的非最佳天線的接收器而言。
3.精確時間:在可獲得足夠準確輔助資訊之情況下,一旦獲取一第一衛星信號或接收到精細時間輔助,每一衛星之毫秒碼相位之不確定性通常可下降到大約100微秒或小於100微秒。在此種情形中,在一精確時間模式下闡述信號處理以達到最大靈敏度及最小資源分配。精確時間源可為已獲取及/或追蹤之初始一或多個信號,或其可基於網路之輔助或其組合。
一旦自每一SV獲取信號,則將該信號傳遞給一追蹤引擎,該追蹤引擎負責讀取導航訊息資料並提供正在進行之虛擬距離、都卜勒及載波相位量測。另外,其可讀取副碼之相位,從而使得可將毫秒碼相位延伸至所有SV之虛擬距離,此對於精確時間獲取模式而言係一關鍵益處。
粗略時間模式中之信號處理 對於最複雜情形,本文中將闡述伽利略E5雙旁帶altBOC碼之獲取。亦將說明處理單頻帶北斗及GPS信號之替代方案。每一毫秒,支援altBOC之每一SV現在具有20460個樣本,每一A旁帶及B旁帶下為I及Q。
藉由E5 (一個1PPM振盪器)及獲取輔助資訊,希望涵蓋1PPM = 1191Hz,例如1200Hz之振盪器頻率不確定性。由於在資料及引示通道上皆進行現代化信號二次譯碼,因此在一項個實施例中,僅非同調積分與粗略時間一起使用。一較長同調積分將觀測到相位反轉,從而抵消積分能量超過一毫秒。就1毫秒積分而言,500 Hz之頻率步進將導致2dB之sinX/X損耗。
此外,A頻帶及B頻帶上之碼在移位至低IF之後每碼片不對準116.5個載波週期。因此,應針對長期關聯性校正此種不對準。通常,積分時間受積分1/2時間/頻率搜尋單元所花費時間之限制,其中頻率誤差為頻率搜尋步長之一半。積分比此時間長意味著能量自一個碼搜尋格拖至下一碼搜尋格,而限制了積分有效性。
碼模糊 = 載波頻率誤差/每晶片之載波循環/每晶片之胞元* dt (秒)解決恢復若干個dB所需之一給定dt之頻率誤差且將拖影限制至½胞元,得到250毫秒,
頻率誤差= ½ *每碼片之載波循環/20460個胞元/10230個碼片/dt= ½*116.5*10230/20460/0.25 = 116.5Hz
[注意:使用20460個胞元對舊的16384假定進行數學重做]
然後頻率步長編程頻率誤差之兩倍,因此頻率步長為約233 Hz。
為在步長為~233 Hz之情況下涵蓋+/-1PPM = 1191*2 = 2383Hz,需要約10個頻段。針對此實例之目的,假定與未知使用者運動、使用者位置孔使用者時脈相關聯之頻率不確定性可以忽略不計。
注意:混頻器一詞用於表示一通道,該通道有效地實行輸入信號之時域關聯,每一正被搜尋之現代化衛星至多具有四個碼。其使用FFT實行關聯。關聯 = 逆FFT (樣本FFT*碼FFT之複共軛)。每一關聯假設之振幅整合於假設記憶體中。此等混合以涵蓋整個頻率不確定性範圍。
欲在1秒內搜尋在視野中之所有SV意味著~24*10個頻率,每一頻率為0.25秒之積分時間。此將需要60個分離混頻器。認為此數目對於至少某些實施例而言太高。因此在一項實施例中可將積分時間減小至0.1秒。此僅需要24個混頻器。然而,每一混頻器必須混合E5信號之四個分量中之每一者。 此意味著在一項實施例中並行進行96個FFT。每一FFT必須標稱地具有20480(胞元)*16位元(I或Q字大小)*2(針對每一I,Q) = 0.625百萬位元。乘96得到60百萬位元= 7.5百萬位元組。
除FFT記憶體之外,每一混頻器需要一記憶體來對非同調或同調碼假設記憶體求積分。在一項實施例中,假定8個位元/胞元之一非常緊湊表示。在一項實施例中,此需要每毫秒移出與振幅之非同調積分相關聯之線性增加之雜訊本底平均值的一方法。方便地,可將每一混頻器處20460個胞元假設之所有4個碼之功率積分到同一記憶體中,以進行非同調積分。因此每一混頻器需要20460個位元組,且一總假設記憶體可為:假設記憶體= 20460個胞元/混頻器*24個混頻器*8個位元/胞元=3.74百萬位元= 0.468百萬位元組。
在將稱為雙緩衝區之一項實施例中,每毫秒將經取樣資料複製至每一混頻器中且分兩個階段進行處理,如下文所展示
頂層時序影像
在另一實施例中,一循環緩衝區可被用以將信號緩衝區記憶體減少近兩倍。然而,與僅在1MS中完成相比,將需要實質上更快的信號處理。
本發明之較佳實施例利用FFT實行關聯,其中關聯=逆FFT (樣本FFT*碼FFT之複共軛)。將每一關聯假設之振幅整合於假設記憶體中。
在上文所闡述之第一實施例之階段1中,計算樣本之FFT。可在所有混頻器中使用此等FFT。由於此時正在運行一減小數目之FFT,因此可在階段1中節約電力。實際上,儘管借用通道之FFT資源中之某些資源來產生樣本之FFT,但通道在階段1中不起作用。通常在階段1中實行8個FFT:對通道A及通道B兩者之輸入樣本之0Hz、250Hz、500Hz及750Hz載波擦除版本中之每一者皆進行一個FFT。
在階段2中,將樣本FFT (所接收GNSS樣本資料之FFT)與碼FFFT (本地產生之GNSS SV PRN碼之FFT)複數相乘且然後實行逆FFT (IFFT)。IFFT實際上等效於一FFT。在設置週期中臨時計算碼之FFT,或預先計算碼之FFT並將其儲存於非揮發性RAM或ROM中。
為將計算最小化,可在某些實施例中使用以下改良。
1) 首先在250 Hz、500 Hz及750 Hz此三個遞增頻率下對樣本進行載波擦除以生成包含0Hz之原始樣本之4組樣本。然後對此4個樣本序列實行FFT以生成4個FFT。在階段2中,當必須對樣本序列應用一特定都卜勒以擦除都卜勒時,則應用一FFT技巧。即,藉由將FFT移位+/-N個格來獲得+/-N*1 kHz之另一遞增頻率移位。舉例而言,為達到4321 Hz之一搜尋頻率,將兩個遞增頻率方法組合以逼近總所期望都卜勒。首先選擇250Hz FFT,此乃因其最接近次kHz部分。然後將此FFT移位4個頻段以得到4250Hz之一總移位。將使用750Hz移位-5個頻段:-5000+750=-4250來建構-4321之一負頻率。如此一來,在階段1中,所有混頻器不需要在頻率混合下計算特定都卜勒之FFT。由於混頻器之數目係高的,因此此將FFT之總數目減少了幾乎一半。
a. 在另一種方法中,自0 Hz及500 Hz之FFT內插250 Hz及750 Hz都卜勒之FFT。
2) 在長積分之前或自記憶體預先計算碼FFT。可在長非同調積分程序之始終使用此等碼。藉由零碼相位偏移開始來產生該碼。生成一除數以在20360個樣本時脈中產生10230個碼時脈。在碼時脈發生一改變之間的樣本碼保持恆定。為抵消一速率為載波都卜勒除以116.5個循環之碼都卜勒(當旁帶A及旁帶B移位至中心1191.795Hz時),有以下幾個選項:
a. 最簡單的為碼胞元積分器,其與移動芯片數目乘以碼假設數目與每毫秒芯片的比率有關。(舉例而言,20460/10230=2)。如此一來,每一毫秒之目標假設記憶體位址根據該速率積分移位。舉例而言,若都卜勒為4321Hz,則100毫秒內之胞元數目係(4321/116.5)*(20460/10230)*0.1 = 7.418個胞元。此意味著一毫秒關聯與積分之間的偏移將自零變為幾乎7.5 胞元,平均分佈於100毫秒內。此外,每次使用相同碼零相位FFT。
b. 最差情形係每毫秒重新進行20360碼序列,其中20360至10230碼時脈分頻器之起始碼相位具有一穩定增加相位。然後每毫秒更新碼FFT。
c. 另一種相對簡單方法係使用另一FFT屬性,其中時域中之一時間移位T等於將一零相位FFT與複指數e(-jwT)
相乘,其中w係每個格處之頻率,T係藉由除以每秒之碼片數目轉換成秒之碼片之時間移位。可將此複數乘法歸為樣本FFT乘以碼FFT之複共軛的乘法步驟。
d. 另一種方法係使用第一種方法之分數碼偏移來對毗鄰振幅進行插值,以抵消按整數值改變之碼偏移時之間的碼偏移。
即使進行此等多改良,實行16384或20480採樣FFT所需之時脈數量仍然很高。即使使用雙埠記憶體,高效實施仍可能需要約11.5萬個時脈,此比100 Mhz初始採樣時脈在1毫秒內之約100,000個時脈還多。若不加速,則意味著需要96個FFT並行運行,且所需之記憶體巨大且對於COVIMOGR而言可能難以處理。通常,指令之下限係每階段之時脈數目乘以階段數目。對於一基數N FFT,每階段之時脈數目係樣本大小除以N。階段數目是樣本大小以N為底之對數。例如,基數2及樣本大小16384,每階段之時脈係8192且階段數目係14。因此,最小時脈係14*8182 = 114666。對於基數4而言,每階段之時脈數目為4096且階段為7,總共28672。
此下界還假定基數運算本身(包含記憶體元素之一複雜組合乘以一組複雜旋轉因子)可級聯為一單個指令。此係一合理假設,此乃因積體電路可基於電晶體之速度以及在一定電壓及時脈速率下之傳播可預測性而在一單個時脈中實行若干次運算。
因此,增大基數能夠減小時脈。然而,限制係記憶體尋址電路系統提取及寫入之能力。對於相當常見之一雙埠記憶體而言,基數4實施方案無法並行地提取4個複雜元素,而是要花費4個時脈。在一定意義上,失去了較高基數之優點。
為實現其中僅現代化信號之現代化獲取可與以往獲取方法競爭之可實現設計,一某些實施例可以使用以下突破:
1) 實現基於FFT之方法係記憶體密集型,
a. 應考慮使用系統記憶體而非專用記憶體之一能力。如此一來,記憶體不再係一沉沒成本,此乃因其可經分配以供獲取之用且然後當獲取完成時或當GNSS接收器不在運行中時再次用於其他目的。因此,在一GNSS處理系統與可位於同一積體電路(IC)上之另一系統之間共用一記憶體,以使得共用記憶體與GNSS接收器及另一系統全部皆位於同一IC,該IC可係一系統單晶片(SOC)。
b. 應考慮有效地管線處理FFT資來料減少記憶體使用之方法。下文在極快頻域關聯(VFFDC)章節中闡述此實施例。
2) 在一項實施例中,意識到需要高數目個有效FFT來實現在具有高系統損耗(由於高NF、高天線損耗、信號衰落或阻塞)之大規模市場GNSS接收器中實現一快速獲取,可在一毫秒內重複使用一快速FFT引擎多次,且可使用通用系統記憶體以使得僅使用低數目個物理FFT引擎,從而使得對記憶體之需要很小。此一快速FFT是自一通用FFT架構重構而成,因此FFT可被進一步並行化,且每一並行子FFT皆可使用其自身之記憶體進行更新。
a. 另一選擇為,可採用可並行提取高數目個字之定製記憶體設計。如此一來,可並行地實行數個基數。舉例而言,假定可在一單個時脈循環內提取32組I、Q。此允許將8基數-4計算並行化。如此一來,每階段之時脈除以8。因此完整而言,可在4096(時脈/階段)/8 (並行基數-4)*7 (階段) = 3584 時脈內實行20460 FFT。在系統時脈為一100Mhz之情況下,每毫秒有100000個時脈,且此允許在一毫秒內重新使用FFT 27次。若一混頻器需要88個FFT,則將僅需要4個物理FFT。注意,此一低時脈速率允許一低功率系統,此乃因最大記憶體及DSP時脈以今天的標準看相當低。
b. 另一選擇為,可使用一高時脈。一4倍高之時脈將使得減少至一單個FFT。此帶來了在設計中混合時控速率之缺點,且因此增大緩衝及分階段之額外負擔。
c. 最後,可使用管線式VFFDC設計(此係較佳實施例),該設計可將複製需要最小化,且在每一階段將並行運算最大化。
3) 儘管FFT記憶體可減少及重新使用,但其餘假設記憶體則主導著其餘設計。
a. 儘管全E5信號比以往L1 CA信號強6dB以上,但非同調積分是提高SNR之最有效方法,而無需求助於關於次級譯碼及資料位元之多種假設,此等假設會每毫秒生成隨機相位反轉。相反,由於資料位元,L1 C/A具有相似的隨機相位反轉,但間隔明顯更長(20毫秒)。此特徵係藉由對L1 C/A進行同調積分來達成一更快SNR改良的特徵。從某些大眾市場裝置來看,僅對以往信號進行非同調積分不夠的,此乃因其實際上無法積分足夠長時間。
i. 考慮其需要將SNR提高16dB才能克服系統損耗的一目標裝置。
1. 使用E5,組合信號之4個分量:A資料(Ai)、A引示(Aq)、B資料(Bi)及B引示(Bq),在1毫秒內該信號比L1 C/A強幾乎6.5dB。以1毫秒積分非同調地進行積分達100毫秒生成(超過1MS C/A) 6.5dB + 1.5dB*log(100,base2) = 6.5+(1.5*6.64)=10dB + 6.5=16.5dB的一增益。考慮到1毫秒樣本緩衝區中之某些相位反轉形成大約1dB之損耗,相對於1ms之GPS L1-C/A而言,獲得16.5dB-1dB = 15.5dB之增益。[(存在1毫秒樣本緩衝區內之σ相位及<2dB之相位反轉相關聯之某些損耗)]。組合意味著為A旁帶及B旁帶保持一單獨樣本緩衝區,此乃因將其相加在一起將使雜訊加倍且擦除與每一旁帶相關聯之3dB增益。此計算沒有考慮到由雙旁帶信號提供之傳輸分集之優點。存在於室內及城市峽谷中之典型瑞利衰落環境中,特別是對於直接信號路徑而言,此傳輸分集可將衰落電阻提高大約10dB或大於10dB,從而使信號獲取、追蹤及導航資料符號串流之讀取實質上更可靠。
2. 對於L1 C/A,利用粗略時間進行之一般情形獲取意味著最長同調間隔接近10毫秒(此係20毫秒之資料位元間隔之一半)。在此情形中,一個10毫秒之樣本可完全避免相位反轉,而毗鄰10毫秒之樣本在最壞情形下之相位對準可能會幾乎丟失。
a. 藉由10毫秒同調,現在將頻率步長減小至幾乎50Hz。為將頻率損耗降低至與針對E5方法而闡述的相同之位準,採取25Hz步長。此意味著涵蓋相同+/-1PPM所需之頻率數目係每SV 2 *1575/25 + 1 = 127。注意,E5僅需要9個(差係積分時間之10倍,即10 = 10毫秒/1毫秒且有1.3的因子= 1575/1192,這使E5的頻率更低)。
b. 為在損耗後達成16dB之相同靈敏度,具有10毫秒同調窗之L1 C/A搜尋之靈敏度增益模型在前10毫秒內為10dB,然後在此等10毫秒積分之非同調積分下,靈敏度提高1.5每個加倍。將積分時間保持在100毫秒意味著積分時間將加倍,達到20、40、80,然後是20/160 = .125。加倍數目係5.56,且非同調增益為1.5 * 3.125 = 4.69dB,因此總SNR增益為10dB + 4.49 – 1.5dB(對於10毫秒窗中之一者之相位反轉損耗,平均損耗為2dB)= 13.2 dB,類似於但小於E5情形。
c. 這表明關於L1 C / A對相干積分更敏感的看法是不正確的,因為更簡單的非相干方法和獲取整個信號可以具有相同或更好的靈敏度。
d. 現在來檢查假設記憶體之大小以及其如何在E5與L1 C/A之間比較。使用E5,有24個通道並行運行。因此,在每晶片之兩個樣本處假設記憶體之大小係20*20460*8個位元= 3.12M位元。注意E5之所有4分量整合至相同假設記憶體中,此乃因其全部具有相同碼相位假設。
i. 注意:當信號行進穿過太空時,由於每碼片之載波週期數目不同(A處為115個週期,B處為118個週期,在與1191.795MHz對應之中心處為116.5個週期)這一事實,旁帶A與旁帶B之間存在相位分散。碼片之相對相位差係
1. delChips = codeDoppler B – codeDoppler A = (Satellite Doppler) *dt * [1/115 – 1/118] = Doppler * dt * (118 – 115) / (115*118) = 3*Doppler*dt / 13570。注意亦存在一小的相對電離層分散,大約係一個載波循環。
2.由於行進時間平均約為80毫秒,且由於衛星運動而產生之最大都卜勒為5kHz,因此增量碼片為:
delChips = 3*5000*0.08/13570=0.088碼片
3.因此,當A之codeDoppler比B時,假設記憶體中自1毫秒振幅至振幅總和之碼映射可對A通道施加14個胞元之一特殊偏移(假定每10230個碼片16384個胞元)。
4.由於兩個旁帶皆移位至中心,因此在代表處理時間之dt內其具有相同碼速率。
5.注意:若振盪器偏移非常高,則都卜勒可更大。在此情形中,在行進時間內兩個旁帶之間的差更大且需要補償。
a. 一種解決方案係在HW中補償振盪器。維持一SW表,其中接收器正在瞭解之偏移對溫度係固定的,且可測量速度固定中之誤差,就如在位置固定中如何瞭解時間偏移一樣。在該情形中,可利用基於硬體之頻率移位移除頻率偏移,以自樣本資料移除頻率誤差。如此一來,在兩個旁帶之間的碼都卜勒差異中僅可觀測到衛星都卜勒。
6.注意:若兩個旁帶是利用單獨IF產生,則對用於SNR改良之時間積分而言,碼都卜勒差異不常見。在該情形中,需要對碼都卜勒差異進行補償。
ii. 現在論述L1 C/A之假設記憶體:若達成相同搜尋功率,則意味著每SV有127個頻率,且在一秒內具有相同的24顆衛星,這意味著每秒有3048個頻段。
假定亦搜尋了每一頻率100毫秒,則意味著正在搜尋305個並發頻率。假定典型取樣接近碼片速率之兩倍,且因此每毫秒大約2046個樣本。因此,假設之總數為2046*305,且8位= 4.875百萬位元,此實際上高於E5情形。可以幾種方式減小此數目。首先考慮相同的碼胞元與碼片比率。此將樣本時脈為1.6384 MHz而不是2.046 Mhz。此將假設記憶體減小至3.904百萬位元,3.904百萬位元仍係較大的。下一步是將頻率步長自25Hz降低至50Hz,並接受另一1.5dB之頻率步長損耗至13.2-1.5 = 11.7dB。此將記憶體減半。使用50Hz之原始2.046Mhz取樣時脈可產生一半頻率且因此產生2.4375百萬位元,2.4375百萬位元現在比E5之2.816百萬位元小一點,而L1 C/A的靈敏度降低了幾乎5dB。(16.5-11.7=4.8dB)。此沒有考慮到伽利略信號傳輸分集之額外優勢,而導致使用E5 A + B獲取之信號實質上更具抗衰落性。若保守地估計此改良為6dB,則COVIMOGR在粗略獲取模式中比L1粗略獲取碼至少多11dB之優勢。COVIMOGR之優勢在精確時間獲取模式中得以擴展,其中同調積分進一步提高了現代化信號追蹤靈敏度。
iii. 此實例表明,即使在粗略時間獲取情形中,具有非常高效FFT引擎之E5可具有比基於L1 C/A之接收器及具有類似假設記憶體更高之靈敏度。
較佳實施例–VFFDC 粗略時間獲取處理時間線
精確時間獲取處理時間線
上圖中所闡述之管線導向型架構使得能夠顯著加快FFT通量且減少工作記憶體及信號記憶體中兩方面之記憶體使用,從而使假設記憶體成為單個最大記憶體存使用。實際上,如上圖所圖解說明,在粗略時間模式與精確時間獲取模式之間流程將略有不同。
與典型FFT技術相比,VFFDC性能之加速及記憶體減少來自於適當階段化之組合、關注記憶體管理之細節以及應用最近的「時間抽取」(DIT)式FFT及「頻率抽取」(DIF)式FFT。
下圖繪示極快頻域關聯器(VFFDC)架構之高階視圖。將更詳細地闡述此圖中之方塊中之數個方塊。
極快頻域關聯器(VFFDC)架構圖
FFT處理器架構
(四個並行IVFFT運算)
逆FFT處理器架構
(四個並行IVFFT運算)
下圖提供獲取關聯器處理之一詳細端對端時間線視圖。
獲取關聯器陣列處理圖
VFFDC流程
下圖進一步闡述GNSS碼產生器。較佳實施例係自其基礎多項式表示產生每一碼,對其進行適當地移位及成形,然後每毫秒將其變換到頻域。然而,有幾種可能實施方案可實現記憶體減少目標中之諸多目標,而無需藉助每毫秒完全重新產生碼頻譜。舉例而言,可每追蹤工作階段僅產生一次時域碼。在另一實例中,可儲存且視需要略微調整碼頻譜記憶體。在另一實施例中,當儲存資源可用時可使用此等快取記憶方法,否則沒有必要。
FFT處理器架構
(四個並行FFT運算)
注:為產生碼頻譜,以4個GNSS碼產生器來取代基頻樣本記憶體。
VFFT N2×N1程序流程
逆FFT處理器架構
注:在詳細設計程序期間,將同時定義互連網路以及映射至硬體之演算法以及每一區塊之指令集定義。
逆VFFT N2×N1演算法
注意,在此實施例中,在所有混頻器重新使用之兩個工作記憶體緩衝區中對信號資料及碼資料兩者臨時執行FFT。將信號資料保存於持續時間長於1 ms之一循環緩衝區中,以使得可在緩衝區之寫入指標趕上FFT之讀取指標針之前執行FFT程序,從而在基頻樣本記憶體中比先前所闡述之雙緩衝實施例節約幾乎兩倍。除此之外,在此實施例中,GNSS碼係臨時產生,因此在預先儲存之GNSS碼頻譜記憶體上節約大約100倍。可將此等10,230位元碼緊湊地以10,230個位元儲存於時域中,但是一旦變換為頻域,其大小擴大為包含一複雜非二進制表示。注意實際上每SV存在四個碼。可簡單地儲存此等碼中之某些碼,但其最簡單地被儲存為其多項式表示。因此此係出於記憶體效率考慮之較佳實施例。雖然每毫秒變換所需之每一碼將FFT處理量本質上增加幾乎兩倍(僅碼頻譜之同相支路經歷FFT處理之第一階段),但在此實施例中為減小固有記憶體及I/O值得如此做。當將DIF共軛FFT用於逆FFT時會生成進一步增益,以使得使用儲存乘法程序結果之同一緩衝區按列次序執行逆DIF程序(時域資料按列次序保存且頻域資料按行次序保存)。
注意,根據奈奎斯準則,提議對N = 20,460個樣本實行此等FFT,將其分解為一組N1 = 20個第一級DFT。(10或40亦可用於N1。選擇20作為一設計決策。)此剩下N2 = 1024點DIT/DIF FFT之下一階段,此可使用整數算術(兩個基數8及一個最終基數16)在另外三個階段中高速地實施。
由於此處理具有管線性質,因此可在50微秒內針對在視野中之所有SV在100 MHz之頻段下利用僅比取樣時脈稍快之一處理時脈輕鬆地完成,此意味著該循環緩衝區僅需要大約1.05毫秒長(21483個樣本,作為I之4個位元及q之4個位元儲存),從而節約功率且最重要的是節約晶片上RAM。
一項實施例之VFFT細節 a. 將一N點DFT分解成一N1
點DFT及對N2
點之N1
個並行FFT i. FFT點之總數目係N = N1
*N2
,其中 N1
<< N2
ii.係藉由將FFT處理分解成對N2
個點之N1
個並行FFT後續接著N1點DFT之一組合階段而對N點VFFT-DIT演算法架構進行速度最佳化。使用陣列處理方法同時實行N1
個並行FFT以將FFT處理時間加速N1
倍。 iii.通過將FFT處理分解為具有N1
點DFT之第一階段,後續接著N2
點之N1
個並行FFT,可對N點VFFT-DIF演算法架構進行速度最佳化。使用數組處理方法並發執行N1
個並行FFT,以將FFT處理時間加快多達N1
倍。 iv.可藉由在VFFT之前使輸入陣列共軛並在VFFT之後使輸出陣列共軛來進行一VFFT-DIF逆運算。 b. 使用陣列處理方法來同時處理N1
個並行FFT。所有FFT進行相同處理,使用相同程式控制指令但使用來自陣列之一不同資料集(一向量)。 c. 在重組/分解階段可對2之非冪個點進行一DFT。 在1個指令循環中使用N1
個並行常數交叉乘法器及加法器進行成此DFT。因此,需要N2
個週期來完成VFFT的第一階段/最後階段。 d. 使用3個階段來實行N2
點FFT,其中在2個階段中係基數-8且第一/最後階段係基數-16。 i. 基數-16級不需要WN
相移,此減小複雜性且勻出前/後VFFT運算之時間。 ii. 僅基數-8級需要相移因數。鑒於韌體每指令循環僅自記憶體選擇1個元素,因此每N2
點FFT僅需要1個相移器硬體。由於同時有N1
個並行FFT在運算,因此在硬體中需要N1
個相移器且全部共用相同相移量。 iii. FFT之每一階段需要完成N2
個循環,因此3個階段需完成3*N2
個循環。 iv. 每一階段上之處理速率受雙埠變數記憶體之讀取及寫入存取限制。每一處理循環包含一讀取及寫入存取,其允許分別針對基數8階段或基數16階段進行8或16個指令之固件循環。這種設計利用了幾乎100%之可用讀取及寫入記憶體頻寬,且因此可能對於給定實際硬體限制而言係最高效的。 v. ASIC庫中通常可用雙埠記憶體,但更高埠的記憶體不可用。因此,為了設計可移植性,此實施例使用單埠及雙埠存儲器,且目前為止不需要位元組存取能力(並非在每一ASIC庫中始終支援)。 e. 關聯性後處理運算是即時實行的,無需儲存,且可能在幾個額外處理循環中管線化,但是在韌體迴路內沒有額外循環。在1個指令循環中對全列向量實行此等運算。 f. 變數記憶體在VFFT之最後階段可能會降低精確性。然後可在處理器之暫存器內以較高精確性實行關聯後處理運算。可將結果儲存於假設記憶體中之前縮減回至較低精確性。因此,變數記憶體不需要高精確性(目標係8-位元/I/Q-分量)。 g. 可對積分量值使用區塊浮動點,以將精確性降低至無正負號之8位元。量值壓縮亦可包括在應用區塊浮動點轉換之前減去區塊中之最小值。 h. 在至少某些實施例中,可在整個設計中使用基於Cordic之相移器,而不是複數乘法器及sin/cos表。 i. Cordic硬體大約係複數乘法器面積(成本)之1/4,且Cordic相位圖表之精確性通常比sin/cos表低。 ii. Cordic演算法會在雜訊本底附近產生幾個小相位調變雜散(PM),而不是像經量化sin/cos表方法那樣使用1個或2個主要振幅調變諧波雜散(AM)。Cordic的無雜散動態範圍大大增大,此允許信號精確性減小但效能相同。 iii. Cordic硬體之唯一缺點是穿過串行級之長傳播延遲。由於每一級內之條件邏輯,無法跨越各個級進行算術邏輯最佳化。可需要藉由暫存器管線級處理超出時序預算之過大延遲,且任何額外群組延遲皆必須納入信號處理演算法中。 應注意,雖然本設計之闡述假定按照列次序讀取資料以將定址最佳化,但亦可容易地按照行次序讀取資料,且得到類似結果。 較強信號之較低功率獲取之經減小複雜性關聯器。 儘管與一單個旁帶分量(I或Q)相比,使用E5之兩個旁帶之兩個分量允許SNR增大高達6dB,但在某些情況下,較佳的是使用能夠在合理時間量內獲取一較強信號之一較低功率組態。在另一情況下,接收器可需要自一導航訊息讀取一些資訊,該導航訊息僅可自一子組信號分量獲得。該資訊例如可係一周時間戳記或被解釋為分數同步之一時間標記之一特定相變。或者其可能係完整性資訊。舉例而言,其可係曆書或星曆表資訊或差分校正資訊。在需要讀取某則資訊以加速進一步獲取及追蹤之情形中,那些可能最快提供此資訊之彼等信號被優先考慮。
考慮以下一獲取情形:當位於一停車庫內時接通接收器時,此時所有信號皆被阻擋。接收器不知道此車庫狀況,且將可能會基於信號非常弱之情形而啟用一搜尋策略。此種策略需要將信號之所有分量進行較長時間之積分,並提供最大靈敏度。雖然此方法有利於獲取弱信號,但當接收器最終離開車庫時,恢復更強信號係較慢的,此乃因其在每一個搜尋頻率上花費之時間更多。在此種情形中,具有第二並行搜尋引擎是有益的,或者分配某些搜尋資源以使用一更短積分週期來尋找更強信號,以使得可更快地搜尋每一頻段,從而允許接收器在一較短時間內涵蓋更多頻率。
此外,考慮時間未知之一獲取。網際網路上之典型網絡時間協定(NTP)準確性介於約5 ms至100ms範圍內。在某些情形中,僅一選定GNSS信號分量之訊框同步即可能夠提供精細時間。在此種情形中,搜尋該信號分量將是最高初始優先級,直至追蹤到該信號且有把握地設定時脈為止。
一旦有把握地設定時脈,該信號可能會被解除優先級,而傾向於上面包含較少資料之一信號分量,且因此具有更高追蹤靈敏度。
可使用一靈活關聯方法來最快地獲取強信號。首先,關聯資源可係可組態的,以使得一個通道可搜尋一個至四個信號分量。若一單個通道不能釋放未使用資源,則資源將會閒置,且延長獲取時間。舉例而言,若一通道經組態以能夠搜尋四個分量,且僅使用一單個分量,則其他三個資源將不可用。
因此,此實施例之第一部分是識別基本搜尋單元係一個信號分量之關聯,例如E5BI。對於頻域方法,此意味著執行樣本之FFT、碼之FFT、樣本頻譜與碼頻譜之複共軛之一相乘以及乘積之一IFFT。關聯之總數目係在碼訊框長度(名義上為1MS)中VFFDC資源可被重新使用之次數。然後,通道概念包含選擇一個至四個分量來與具有四個分量之E5及B2信號匹配之能力。在此情形中,通道數目應與硬體在於一個訊框(在此情形中為1毫秒)中可執行之關聯數目之能力匹配。
舉例而言,若有能力在一毫秒內執行88次全關聯,則在每一通道僅使用一個分量時,通道之最大數目應為88。舉例而言,若在多達4個分量之情況下僅界定22個通道,則拖只使用一單個分量,將有3個分量閒置。
此實施例之一第二部分是選擇具有最小搜尋損耗之分量。在現代化信號具有1毫秒之訊框長度及4至100毫秒之重疊碼或副碼(其位元改變與訊框同步)之情況下,每一訊框皆可存在自1至-1或自-1至1的正負號改變。一般而言,該等重疊碼以接近50%之一速率形成相位反轉。在不發生相位反轉之兩個連續訊框上,當訊框點或時段或或訊框重新開始時,實行與一隨機毫秒輸入樣本相位同步的一毫秒週期之非同調積分之程序沒有損耗。相反,若訊框時段位於毫秒之中心且發生相位反轉,則將發生對消,而導致該毫秒之關聯非常小。
利用基於FFT之關聯,不可能將毫秒關聯分成兩部分,即潛在相位反轉時段元之前之部分及時段之後之部分。接收器以一任意選定開始時間在一整個毫秒之接收信號上操作。在獲取程序之此個階段處,每一衛星信號具有一明顯不同且未知之相位。此乃因毫秒樣本與自零相位開始之一全毫秒碼樣本關聯,且不可能基於其他相位應用一分離。相反,利用傳統時域關聯方法,可為不同碼相位估計選擇一不同輸入樣本組合,使得時段出現在毫秒緩衝區之邊緣處。如此一來,在進行積分期間,同相及二次和具有相同相位。然而,對於現代化信號,此種對每一碼相位假設進行單獨關聯之方法在商業上不可行,此乃因它要麼需要太多硬體,進而增大功耗及大小,要麼相反在減少硬體之情況下太慢。
因此,一毫秒關聯之非同調積分之代價是在毫秒樣本中存在與時段相位相關聯之一損耗。當相位接近毫秒邊緣或重疊碼沒有相位反轉時,該損耗係小的。當相位接近毫秒之中心且發生相位反轉時,損耗較高。在後一種情形中,損耗實際上是無限的。在前一種情形中,損耗較小。一般而言,當在重疊碼之持續時間之上進行積分時,最差情形下之損耗小於3dB,此乃因相位反轉之一概率為大約50%,則失去一半關聯,但是剩餘關聯沒有此種相位損失。失去一半功率意味著失去3dB。
現已發現,資料通道E5BI具有0001之重疊碼。副碼每4個訊框4毫秒重複一次。資料符號在重疊碼之邊界處形成額外相位反轉。因此,考慮5個位元之交替資料符號序列0、1、0、1、0。重疊碼及資料符號之組合將生成以下重疊碼相位序列,其中0表示相位0且1表示相位180度。
0001 1110 0001 1110 0001
現在關注相位反轉,即序列之導數:0001 0001 0001 0001 0001
20個符號上僅有5個相位反轉,因此一相位反轉之概率為25%。
相反,考慮北斗上之資料通道B2AI。其重疊碼係00010。或者或許可提供相位轉變由00010規定之一圖]。
現在考慮相同5個資料位元01010。重疊碼與資料符號之所得的組合生成此序列:
00010 11101 00010 11101 00010
現在看相位反轉,即導數00011 10011 10011 10011 10011
25個位元中存在15個相位反轉。在此改變之概率係15/25 = 60%。因此,B2AI之dB之最大損耗係3dB & 0.6 = 1.8dB,
然而,E5BI之dB之最大損耗係3db * 0.25 = 0.75dB,相比之下其將損耗限制達1.05dB。
因此,為利用固定的搜尋資源量來改良實際的獲取時間,一實施例可達成一單個分量搜尋(藉由試圖在一段時間內僅獲取該單個分量來僅搜尋該單個分量),且在每一系統上選擇具有最低相位反轉概率之分量。對於伽利略E5而言,該最佳分量係E5BI。共用記憶體
COVIMOGR =商業可行現代化僅GNSS接收器
可用於實現一商業上可行現代化僅GNSS接收器(COVIMOGR)之另一方法是藉由重新使用系統記憶體來減少專用記憶體。考慮將COVIMOGR整合在系統單晶片(SOC)中之情形,在該系統中已經有大型SRAM及DRAM以及其他處理系統。
COVIMOGR SOC組件包含但不限於數位前端(DFE)、使用頻域關聯之獲取引擎(AE)、使用時域之追蹤引擎(TE)、使用時域之再次獲取引擎(RE)以及控制AE、TE、RE所需之最小CPU/RAM/ROM。
AE所需之記憶體量取決於其相對於訊框週期之效率,對於L5頻帶中之現代化信號而言,該效率通常為1毫秒:例如,若需要88個完整頻率(混頻器)且若關聯引擎需要4500個時脈循環,且每毫秒有108000個時脈循環可用,則每一關聯引擎每毫秒可被使用24次。此意味著AE中需要至少4個關聯引擎。在此情形中,需要用於4個引擎之記憶體。一般而言,此記憶體必須專用於AE,此乃因其在每一時脈循環必須係可用的且因任何記憶體仲裁而減慢。
SOC架構可包含以下物項:
1. 一組應用處理器(AP),諸如四個。此等通常具有可變速度。
2. 一通用IO、通向晶片外系統之輸入輸出介面以及用於晶片上通信之IO。
3. 一硬體抽象化層,其含有硬體控件、作業系統(OS)及仲裁通信匯流排,以使得所有區塊可被組態且經由OS通信。此區塊含有其自己的CPU或在系統中之一個AP上運行
4. 一組功能,其被置於SOC上且此等功能中之每一者可藉由一處理系統實行,該處理系統包含可與一GNSS處理系統共用之一本地處理記憶體。
5. 一GNSS處理系統(例如,COVIMOGR),其本身係另一功能。其可具有一獲取引擎、一追蹤引擎、一再次獲取引擎、一數位前端、一最小CPU、一最小SRAM及一最小NV-ROM。
6. 一大型SRAM區塊,其可經由通信匯流排用於系統且亦用於一或多個其他功能,在此情形中,其連接至COVIMOGR。
7. 一DRAM,其係一般用途非揮發性記憶體。
考慮下文所展示之系統單晶片(SOC)。其可係一單個單片式晶粒或多個晶粒之一系統。在此考慮除DRAM之外的全部元件皆位於同一晶粒上且DRAM係經由通信匯流排連接之第二晶粒。
為了減小COVIMOGR之大小且尤其是減小AE之SRAM之大小,可使用AE中之專用記憶體及SOC SRAM之一組合。在一較佳實施例中,經由一直接匯流排與SOC共用針對非同調積分及/或同調積分之假設記憶體,以使得COVIMOGR可對SOC SRAM之某些部分進行尋址且不會減速。
1. AP自一應用得到一請求以判定一GNSS位置。
2. HAL識別SRAM之一設定部分並將其分配給COVIMOGR。經分配記憶體必須具有一讀取/寫入控制器,該讀取/寫入控制器可獨立於其他記憶體片而操作以能夠由AE使用但無需頻繁爭奪/仲裁。
3. 當GNSS接收器作用時,COVIMOGR 使用位於AE中之記憶體。
4. 請求GNSS之應用終止或閒置
5. OS發信號通知HAL以關斷GNSS。
6. HAL通知COVIMOGR關斷。
7. 將SRAM中分配給COVIMOGR之片(例如,頁)返還給系統。
如此一來,由於AE中所需之記憶體被共用而不是專用於AE以僅供AE使用,因此可減小COVIMOGR所需之總SRAM。為進一步減小AE中之記憶體,AE中或GNSS處理系統中之記憶體中之至少某些可與SOC上之其他處理系統共用。另一選項係當GNSS碼頻譜儲存於SOC DRAM中作為一組預先計算表時,當系統被更新時將該組預先計算表程式化至DRAM中。另一選擇為,AP或甚至COVIMOGR上之一程式可在背景或甚至在GNSS工作階段開始時計算碼及/或碼頻譜。作為參考,L5之碼數目係63,E5係50,且B2係63。QZSS包含2且EGNOS包含2。此係180個PRN。然而,L5具有兩個碼/PRN,E5具有4個碼/PRN,B2具有4個碼/PRN。因此,碼之總數目係586。每一碼係10230個位元。儲存所有碼需要5,994,780個位元,其係約734k位元組。在碼頻譜儲存為實數碼之情形中,儲存取決於AE所使用之取樣率。由於獨立地搜尋每一分量,因此碼對於每一分量皆係實數。此碼之DFT係一對稱複共軛。此意味著在DFT之中點附近反射之複數對具有相同實數值,但若為虛數值則為負。在讀取記憶體之後所需之總值為2N,然而N/2係對稱複共軛。因此,需要N個唯一值,HW可自N個唯一值中建構所有值。假定所需之位元數目進一步減少,而損耗卻最小。在一較佳實施例中,8個位元或1位元組用於儲存實數部分且8個位元用於儲存虛數部分。
對於20,480,000的采樣率(以每毫秒10,230,000碼片為單位,每個芯片僅兩個樣本),用於儲存所有預先計算碼頻譜之位元組數目約為碼位元數目之2倍。因此,586個碼*20480位元組/碼= 11,632,640個位元組 = 11.360百萬位元組。
可以若干種方式減小此量:應用可週期性地評估在太空中運行良好衛星中當前哪些碼正在作用。然後,可達成所儲存碼或碼頻譜之一顯著減小。舉例而言,每衛星每系統存在多於50個有效PRN。然而,在某一時間一般來說不多於30,且更可能在空間中僅24個經分配PRN。此將允許將記憶體減小超過一半。
在另一方案中,在GNSS在作用時將預先計算碼頻譜移動至SRAM之一扇區,如此一來:
1. AP自一應用得到一請求以判定一GNSS位置。
2. HAL識別SRAM之一設定部分以儲存碼頻譜且將其分配給COVIMOGR。經分配記憶體必須具有可獨立於其他記憶體片操作之一讀取/寫入控制器以能夠由AE使用而無需頻繁競爭/仲裁。
3. HAL將碼複製至分配給碼頻譜之SRAM中且為COVIMOGR賦予預先計算碼頻譜之基址以及每一碼之系統、PRN及分量。
4. 當GNSS接收器在作用時COVIMOGR自AE中提取碼頻譜且樣本頻譜乘以碼頻譜之複共軛之步驟中使用碼頻譜。
5. 請求GNSS之應用終止
6. OS發信號通知HAL關斷GNSS。
7. HAL通知COVIMOGR關斷。
8. 將分配給COVIMOGR之SRAM片返還給系統。
在另一實施例中,使用在SOC AP上運行之一背景應用基於空間中之當前PRN計算有效碼頻譜。
1. 一背景應用週期性地計算所有系統之有效PRN且將其儲存於DRAM中。
2. AP自一應用得到一請求以判定一GNSS位置。
3. HAL識別SRAM中用於儲存碼頻譜之一設定部分且該部分分配給COVIMOGR。
4. HAL將碼複製至分配給碼頻譜之SRAM中且為COVIMOGR賦予預先計算碼頻譜之基址以及每一碼之系統、PRN及分量。
5. 當GNSS接收器在作用時COVIMOGR自AE中之SRAM提取碼頻譜且在樣本頻譜乘以碼頻譜之複共軛之步驟中使用該碼頻譜。
6. 請求GNSS之應用終止
7. OS發信號通知HAL關斷GNSS。
8. HAL通知COVIMOGR關斷。
9. 將分配給COVIMOGR之SRAM之片返還給系統。
在一項實施例中,進一步減小COVIMOGR之成本之一方法係在AP上計算儘可能多的GNSS功能。分配給COVIMOGR之CPU/RAM/ROM可係最小組態以允許全控制各種HW引擎/組件:AE、TE、RE、DFE。此等系統將需要一可靠方法來發送控制設定、請求服務及讀取結果。舉例而言,AE將具有一介面以請求搜尋一系統中之一具體PRN。結果之得到速度快達每一毫秒。然而,系統經設計以在內部緩衝其結果以允許一較低中斷速率,諸如20毫秒每區塊一次。追蹤引擎可以類似更新速率操作:週期性寫入及讀取,大約每20毫秒每一衛星一次。
在此實施例中,COVIMOGR之工作係服務於此等中斷,寫入下一更新且然後將資料格式化並將資料送至經分配AP。
在一項實施例中該程序可係:
1. AP自一應用得到一請求以判定一GNSS位置。
2. HAL識別一AP以運行COVIMOGR之高階軟體。
3.將COVIMOGR之GNSS應用碼自DRAM複製至一執行記憶體區塊中,該執行記憶體區塊可能係SRAM。
4. HAL識別用於AE之其他SRAM片
5. HAL識別碼頻譜且將碼頻譜複製至用於AE之SRAM片
6.應用啟用COVIMOGR且指示用於AE之記憶體資訊。
7.應用通知COVIMOGR CPU要搜尋哪些衛星。
8. COVIMOGR控制AE開始搜尋。
9. COVIMOGR CPU服務於AE搜尋結果。
10.已找到信號開始追蹤TE。
11.根據自上次追蹤以來之時間,在TE或RE中重新獲取TE中丟失之已找到信號。在RE中重新搜尋最近丟失之機密資料。
12. COVIMOGR偵測到置信追蹤,並在一可組態量測間隔(例如一秒鐘)內匯總碼及頻率資訊,以實現將準確量測結果發送至在AP上運行之COVIMOGR SW。
13. COVIMOGR擦除資料位元以追蹤資料,以50至100個位元等一可組態緩衝區大小緩衝資料,然後將資料發送至在AP上運行之COVIMOGR SW。
14.自轉變為時間戳記及星曆表資料之經解碼符號獲悉準確時間。
15.藉由AP上之COVIMOGR SW判定位置/速度時脈偏移及漂移。
16.提煉搜尋資料,更新可觀測PRN及其預期的碼相位及頻率。將資料發送至COVIMGR上之CPU。
17. COVIMOGR上之SW將衛星自AE中移除,並針對一低功率維護模式轉變為在TE中搜尋。
18.若COVIMOGR由於信號阻擋狀況而丟失衛星,則在消除任何阻擋狀況之後立即重複進行重新獲取或初始獲取以找到衛星。
19.終止請求GNSS之應用
20. OS發信號通知HAL關斷GNSS。
21. HAL通知COVIMOGR關斷。
22.將分配給COVIMOGR之SRAM片返還給系統。
應注意,在個節省功率及SRAM之另一實施例中,若在初始獲取及時脈設定之後不需要進行持續操作,則COVIMOGR亦可將SOC SRAM之一部分釋放回給SOC。在此一情形下,若信號丟失且時脈設定降低大約100微秒,則COVIMOGR可請求重新獲取所需之SRAM區塊,最高為初始獲取之全部量。
載波及碼產生選項: 在一項實施例中,可使用以下元件提高一COVIMOGR之靈敏度
1.以達成最佳SNR之一方式組合現代化信號之所有分量。
a. 旁帶A及旁帶B應自單獨通道處理,而非組合處理。試圖將旁帶組合在一起以將輸入樣本之FFT數目係誘人的。但考慮具有一經接收SNR之一個旁帶上之一PRN。若將其與另一旁帶組合,則SNR將降低幾乎3dB,從而失去使用所有分量之益處。
b. 可以兩種不同方式自同一通道使一特定旁帶之資料與引示通道關聯:單獨或同調。分別關聯意味著將實值(即不是複合的)碼乘以同相和正交信號輸入分量,且以此方式並行搜尋引示及資料碼。同調關聯意味著將複合碼與實部中之資料通道碼與虛部中之引示通道碼相乘。然而,由於引示及資料通道之未知相對相位,當兩個碼處於不同相位時,必須測試一第二個假設。這可藉由改變分量中之一者之正負號來進行。實際上有四種可能性,但若對一訊框關聯結果求平方,則僅存在兩種。實際上,要麼在每一碼假設中選擇最強功率(或振幅),要麼將兩者相加。對於更強信號,同調方法存在某些益處,但其要求同時計算兩個假設,且在積分至假設存儲器中之前加以比較。對於較弱信號,優勢較小,此乃因很難選擇正確假設且此程序因選擇較大估計值而增大雜訊。
c. 當預先計算時碼,同調方法之成本更高,此乃因同調碼不像實數碼那樣複合對稱,因此需要雙倍儲存。
d. 一較佳實施例是將資料與引示碼混合作為兩個旁帶之實數碼,且在對一個訊框求平方之後進行組合。
2.使用同調積分直至主碼序列之訊框長度,且然後在多個訊框上非同調地對功率(或振幅)求積分,以使得SNR在每一碼假設下幾乎線性地增長。
a. 此程序可由於載波頻率對準而使用碼轉換之精確處置,在本文中將稱為碼都卜勒。在自衛星至接收器之傳播期間,根據載波頻率與碼片速率之間的關係,每一旁帶之碼都卜勒係不同。對於處於1176.45Mhz之下旁帶而言,每碼片存在16個循環。對於處於1207.14Mhz之上旁帶而言,每晶片存在118個循環。較佳實施例係將每一旁帶移位至1191.795MHz之共同中心頻率。藉由以下方式找到一旁帶A通道:將一中心對應於此原始中心頻率之基頻信號移位15*1.023MHz之BOC頻率 = 14.345Mhz,應用一低濾波器,且然後抽取至大約20.48Mhz之一頻寬,該頻寬含有旁帶A之主波瓣。以一類似程序找到一旁帶B通道,但下移15.345Mhz。
b. 藉由將旁帶移位至一共同頻率,各別碼相對於彼此以116.5個載波循環/碼片之一速率轉換。
c. 單獨地處置在傳輸期間及在積分期間之碼都卜勒之效應。傳輸時間之一估計值(平均大約75毫秒)(藉由計算在固定之後自衛星至已知接收器位置之真實傳輸時間而判定)乘以碼都卜勒(其係載波都卜勒除以載波循環/碼片之負數)來大致估算傳輸部分。根據不同循環/碼片,兩個通道之到達碼相位將存在一差異。然而效應係小的,且當以大步長(諸如,½碼片)搜尋時可忽略。一基於衛星運動之都卜勒為5kHz且一傳輸時間為80毫秒,最差情形下之差異係約0.08碼片。在諸多情形中,可基於一近似接收器時間及位置預先計算每一SV之一相當煩準確範圍估計,從而使此補償態樣更準確。
d. 在兩個旁帶使用116.5個載波循環/碼片之情況下,可將在積分期間之碼都卜勒效應精確計算為都卜勒估計乘以積分時間。
e. 以數種方式來進行此補償:
i. 碼樣本在DFT之前可進行時間移位,以使得在積分週期開始時整合振幅對應於碼假設。以dt*載波都卜勒/116.5牢計算該移位。移位分解為整數及分數碼片。此移位成為碼產生器之初始相位,碼產生器在輸入樣本達一毫秒之樣本時間處生成碼估計。將此方法稱為移位碼樣本方法。此方法僅在每毫秒計算碼頻譜時才可能的。
ii. 在初始相位為零之情況下產生碼樣本,且然後藉由將頻譜與一頻率相依複雜序列相乘來修改碼頻譜。此方法使用以下性質:時間移位序列之FFT等於未經移位序列之FFT乘以一頻率相依複指數及e^(jwT)之自變數,其中w係FFT之每一元素處之角頻率且T係時間移位固定量。此被稱為經修改零相位頻譜方法。此方法對基於零初始相位碼序列而預先計算及臨時所計算碼頻譜兩者皆起到良好作用。
iii. 可在關聯之後補償碼都卜勒移位。將在一零初始相位碼頻譜下生成之關聯目的假設移位以做出補償。可使用一粗略方法及精細方法。
1.在粗略方法中,藉由乘以一毫秒內之輸入樣本除以一毫秒內之碼片來來將碼片之碼都卜勒移位轉換成碼假設。舉例而言,在一樣本/秒為20480之情況下,將1.5碼片之一碼移位轉換成1.5*20480/1020 = 3.0個胞元之一假設移位。因此,當載波都卜勒為負時將零相位下之當前關聯結果與第三碼假設相加,或當都卜勒為正時將當前關聯結果與最終假設相加減去3個胞元。
2.在一精細方法中,使用以上同一種方法來識別整數碼假設偏移。然後使用分數移位來縮放零初始相位關聯之兩個相近結果。舉例而言,若分數相位為0.5個碼片,則在假設零下添加至假設記憶體之關聯值為胞元3及胞元4處之零初始相位關聯之值的一半。其他更新將相等地移位。
f. 作為將假設記憶體最小化之一方法,將所有分量皆積分至一單個記憶體中。可在添加至假設記憶體之前利用一簡單移位(如應用至關聯結果之碼都卜勒)來補償在傳輸期間出現的旁帶之間的偏移。
g. 由於將兩個旁帶移位至共同中心頻率,因此每一旁帶皆存在積分期間之碼都卜勒效應。
3.以最小頻率偏移應用載波都卜勒。此處之情景係將利用使用三個DFT步驟之頻域方法來實行關聯以生成關聯=IFFT [FFTsamples*FFTcode’],其中FFTsamples係輸入樣本之DFT,FFTcode’係碼樣本之DFT之複共軛,且IFFT係兩個FFT之積之逆DFT。IFFT實際上係一後面還要除以IFFT中之樣本數目的FFT。FFT意味著快速傅立葉變換作為一高效方法來實施離散傅立葉變換(DFT)。VFFDC方法以採用FFT及IFFT程序之對稱之一方式對3個FFT實行組合在進行乘法及複共軛。VFFDC亦可藉由對信號輸入樣本或碼樣本處理旁帶來抵消旁帶程序對各別載波頻率之影響,此影響被稱為載波都卜勒。選擇影響DFT運算之總數目。
a. 由於衛星相對於接收器之運動所致的所接收頻率自每一衛星之標稱偏離之範圍係約+/-5Khz加上振盪器之頻率偏移。若振盪器的一頻率偏移對溫度的曲線是已知的,則可在進行關聯之前對輸入樣本應用一頻率移位來消除其大多數效應。然而,即使一般而言可預先計算其餘衛星運動相依頻率偏移,所有衛星仍不具有一共同值且必須根據接收器時間及位置不確定性針對每一衛星搜尋一特定值範圍。
b. 可基本上以兩種方式中之一種處置此衛星特有都卜勒
i. 利用一頻率差運算來自輸入樣本移除都卜勒,以使得所得的樣本具有一零頻率偏移。然後將此等經修改樣本與亦具有零頻率偏移之碼樣本關聯。此方法被稱為下移輸入樣本方法(DISM)。使用三角量測功能藉由頻率源B實行複雜序列A之一向下頻率移位:sin(a-b) = sinA cosB - cosA sinB,且cos(a-b) = cosA cosB + sinA sinB,其中A表示輸入樣本之頻率且B表示將移除之載波頻率。sin及cos分別表示虛數部分及實數部分。
a. 此方法需要將搜尋之每一頻率之一組唯一輸入樣本。此將FFT之數目增大唯一頻率之數目。當使用兩個旁帶之分量時,必須形成兩個旁帶輸入樣本之DFT,此亦使FFT之數目加倍。在此可進行某些最佳化。
i. 以步長大小與積分時間相當之一組離散頻率執行兩個旁帶之DFT。一較長積分時間需要較小步長,而一較短時間可使用較大步長。對於一較長積分時間,設定步長大小,其中兩個步長之間的最大頻率誤差之碼都卜勒誤差等於樣本時鐘之一半。舉例而言,若積分時間係100毫秒以得到所期望SNR以達到10dB之一微弱信號改良,則得到20480000之樣本時脈之頻率誤差係½ = df / 116.5 * 0.1 * 20480 / 10230。Df = 0.5*116.5 / 0.1 * 10230/20480 = 291 Hz。因此,搜尋步長可係此量之兩倍,此乃因582 Hz之一步長之間的最大誤差係291 Hz。針對一短積分時間,步長大小經選擇以將與兩個步長之間的最大頻率誤差之sinX/X誤差相關聯之損耗最小化。針對一1毫秒積分,sinX/X在X=500 Hz時在一損耗為4dB時係0.63,且在X=250 Hz時在一損耗為0.9dB之情況下為0.9。
ii. 為減少樣本FFT之數目,生成一組經載波降頻移位輸入樣本,其頻率步長與積分時間相關。
1.針對用於快速搜尋強衛星之10毫秒積分時間,sinX/X設定步長。在此情形中,選擇0及500Hz之兩個頻率以將頻率誤差限制在250 Hz。然後有4個樣本FFT:2個用於A,2個用於B。例如,若一通道需要2200 Hz之都卜勒,則選擇0Hz之FFT,且將所得FFT移位2個格以生成2 kHz之頻移。頻率誤差被限制於200Hz,其具有小於0.9dB之一損耗。此乃因一1毫秒積分具有0Hz、200Hz、400Hz、600Hz及800Hz之一損耗。
2.針對可得到11.5dB之250毫秒之一積分時間,½樣本時脈最大碼都卜勒誤差之df係116 Hz。因此,一步長大小四捨五入至幾乎兩倍,即250Hz。使用降頻移位輸入樣本方法來生成移除0、250Hz、500Hz及750Hz之輸入樣本。在此情形中,現在存在8個樣本FFT,4用於A且4個用於B。針對期望一2200 Hz載波頻率之一通道,選擇250 Hz FFT並將其移位2個格以生成2250 Hz之一載波擦除。
ii. 利用一頻率相加運算將都卜勒與碼樣本相加,以使得所得的碼樣本具有與預期衛星都卜勒頻率相同之頻率。此方法被稱為升頻移位碼樣本方法(UCSM)。其使用三角量測功能來藉由頻率產生器B對複雜序列A實行一升頻頻率移位:sin(a+b) = sinA cosB + cosA sinB,cos(a+b) = cosA cosB - sinA sinB,其中A表示碼樣本之頻率且B表示將加上之載波頻率。sin及cos分別表示虛數部分及實數部分。注意,在藉由將所得的碼頻譜移位來應對碼都卜勒之情形中,碼樣本可以零相位開始,或於在時域中應對碼都卜勒之情形中碼樣本可以一非零初始相位開始。
利用22個通道對實行頻域關聯之可能性求和,其中每一通道可處理4個分量:2用於旁帶A且2用於旁帶B:
選項1:利用降頻移位方法對輸入樣本應用載波都卜勒且對碼樣本應用碼都卜勒:關聯= IFFT [FFT (樣本*都卜勒) * FFT (具有非零相位之碼樣本)’]。當使用所有分量時,每通道具有
• 2個樣本FFT,用於A及B
• 4個碼FFT,每一碼一個
• 4個IFFT,每一碼一個
總= 10/頻率
針對所有通道:22 * 10 = 220個FFT/毫秒
選項2:利用升頻移位方法應用載波都卜勒且在非零初始條件下對碼樣本應用碼都卜勒:關聯 = IFFT [ FFT (樣本) * FFT (藉由載波都卜勒升頻移位而具有非零相位之碼樣本)’]。現在樣本FFT是所有通道所共同的。So 因此將此放在一單獨池中。當使用所有分量時,每通道具有
• 4個碼FFT,每一碼一個
• 4個IFFT,每一碼一個
• 總共= 8/頻率
• 針對所有通道:22 * 8 + A及B之2個樣本FFT = 178 FFT/毫秒
選項3:使用降頻移位方法將載波都卜勒應用於一組預設載波都卜勒之輸入樣本,且使用經預先計算碼頻譜以及應用頻域碼都卜勒方法。關聯 = IFFT [ FFT (樣本*都卜勒) * FFT (具有零相位之碼樣本)*e^(jwT)]。假定最長積分時間需要200 Hz之都卜勒步長。S因此存在針對A及B之10個樣本FFT,其中步長為0 Hz、200 Hz、400 Hz、600 Hz、800Hz。當使用所有分量時,每通道具有
• 讀取4個經預先計算碼頻譜,每一碼一個
• 4個IFFT,每一碼一個
• 總= 4/頻率
• 針對所有通道:22 * 4 + 10 = 98 FFT/毫秒
選項3之困難在於關聯引擎應極快存取預先計算碼頻譜。其必須讀取22*4*20480個位元組/毫秒= 1.76百萬位元組/毫秒。此為使用選項2之動機,在選項2中,在碼頻譜功率之計算與系統複雜性之間進行權衡以在接近2G位元組/秒之速度檢索預先計算之碼頻譜。
即時碼頻譜產生器(較佳實施例,選項2)
3.即時碼頻譜產生器
a.在先前處理週期期間在每一獲取關聯器通道之前即時對每一碼序列實行VFFT (注意,可在具有108 MHz時脈之~40 us內對碼序列實行VFFT)
b.碼產生器基於所關注GNSS衛星之14位元碼種生成10個碼片/循環。
i. 碼產生器存在10對多項式。
ii. 碼產生器多項式可程式化以允許在未來GNSS信號中改變。
c.將多相位脈衝形濾波器應用於碼序列以達到具有在一小部分碼片週期內之解析度之一可調整時間移位。
i. 由於雙極(+|- 1)調變碼序列,可以簡單實施方案達到較高脈衝形狀準確性。另外,雙極調變碼序列無雜訊,脈衝成形濾波器係數可具有較高準確性且具有更多術語,且係數可程式化以允許脈衝回應在數位前端中發生任何改變。
ii. 可使用簡單實施方案達到較高內插精確性。增加取樣速率(Nu
)可較高以有效時間移位上之較精細精確性。舉例而言,在Nu
=8之情況下,存在1/8碼片解析度,其具有2樣本/碼片;此係以一4相位濾波器實現。Nu
之較高值容易實施。
iii. 此脈衝成形器硬體中實行整數數目個碼片之時間移位
iv. 每毫秒之時間提前經計算且應用於基於通道之都卜勒時間移位假設之硬體中。
v. 一替代方法係在頻域中在VFFT輸出處以頻段上之一相移應用時間移位再儲存至碼頻譜記憶體中。此方法在VFFT 20點相移器及20點DFT之後可在硬體中需要一額外20點複雜相移器作為一額外處理管線級;因此,最後一級韌體迴路中有總共3個處理管線操作。
vi. 由於BOC (15,10)信號之上旁帶及下旁帶之碼頻譜單獨且獨立地即時產生,因此可在駐留持續時間(駐留持續時間係積分時間)內每毫秒對每一碼頻譜應用一不同時間移位。由於不相等都卜勒時間移位、電離層發散及天線相位不穩定性,此設計能力允許校正上旁帶及下旁帶上之不同時間移位。此等時間移位差可在碼頻譜產生時更對準,此然後允許在關聯後處理中在上旁帶及下旁帶之同調相加期間進行相長組合。
d.在VFFT之前對經成形碼序列應用頻率移位
i. 頻率移位器提供一較寬頻率範圍及任何頻率步長而不需要旋轉及內插頻段值後FFT。此為衛星搜尋策略提供最大靈活性
ii. 來自脈衝形狀濾波器之輸入係無雜訊且相對低精確性;因此,一頻率移位器之一理想位置。
iii. 頻率移位器具有並行用於20個樣本/循環之基於Cordic之相位旋轉器及一共同相位累加器;20個相位旋轉器中之每一者應用一不同相位偏移
iv. 應該可組合頻率移位器之相移值與VFFT-DIT之第一階段之相移值。此將允許一個Cordic相移器進行相移求和。
v. 在硬體中計算並應用每毫秒之相位前移以在幾毫秒駐留持續時間內維持相位連續性。
e.對時間及頻率移位碼序列實行一20480點VFFT-DIT
i. 由與基頻樣本VFFT相同之處理器實行。
ii. 碼頻譜及基頻頻譜之N=20480所得頻段可頻帶對稱地經舍位至一較小量以達到對碼頻譜之最終「磚牆型」濾波(無偽信號失真之1 kHz轉變頻帶)。
1.可提供20k、18k、16K、14k之一可程式化選項,從而實現樣本/晶片、關聯脈衝寬度及假設記憶體字大小之不同選項。
iii. 數位前端及基頻樣本記憶體可經設計以達到20,480 kHz取樣率及全主負荷處理,從而使得簡單且更準確地處理GNSS信號。不需要磚牆型所有非線性濾波器。
iv. 僅需要多出25%之VFFT變數記憶體,此25%係總核心區域之小部分。
以上所繪示之粗略時間獲取模式旨在針對將獲取之每一SV之碼相位不確定性> +/= 0.5ms的情形。最後報告步驟可報告碼相位及都卜勒而不是碼相位及載波相位。
CORDIC (協調旋轉數位電腦)演算法 下圖展示Cordic相位旋轉將在碼頻譜產生程序中發生,以隨時間推移將碼頻譜與連續 1ms樣本緩衝區對準。
副碼相位判定 一旦主次毫秒碼相位已知,則獲取程序可藉由判定副碼相位及移位至同調積分得到更大靈敏度。然而,此可在追蹤迴路中使用通常在此項技術中眾所周知之技術進行,此超出本發明之範疇。然而,應注意在此情形中,將所追蹤所有SV之副碼相位邊界饋送回至獲取引擎中以在精確時間模式中輔助獲取後續衛星。 PAUL MCBURNEY 8
在精確時間獲取模式下之同調積分假設記憶體之組織: 下表展示在L5下GPS、北斗及伽利略之所有信號分量上之已知副碼之長度。一般來說,在同調積分時靈敏度可提高每倍3dB per且在非同調積分時提高每倍1.5dB。因此,下表展示相對於非同步積分與同調積分相關聯之理論增益,該同調積分與每一各別信號分量之副碼同步。
10:系統 12:應用處理器 12A:快取記憶體 14:匯流排 16:處理器 16A:靜態隨機存取記憶體 17:蜂巢式電話射頻組件 18:天線 20:全球導航衛星系統處理器 21:全球導航衛星系統射頻組件 22A:天線/全球導航衛星系統天線 22B:天線/全球導航衛星系統天線 24:動態隨機存取記憶體 26:輸入/輸出裝置 50:系統/作業系統 52:系統單晶片 54:系統匯流排/匯流排 56:動態隨機存取記憶體 57:非揮發性記憶體 58:輸入/輸出控制器 60:輸入/輸出裝置 62:感測器/射頻組件 63:全球導航衛星系統射頻組件 64:蜂巢式電話射頻組件 66:應用處理器 68:全球導航衛星系統處理系統 70:快取記憶體 72:記憶體控制器 74:匯流排 76:處理器 78:匯流排介面 101:操作 103:操作 105:操作 107:操作 109:操作 111:操作 113:操作 115:操作 150:部分 151:天線 153:全球導航衛星系統射頻前端 155:射頻類比轉數位轉換器 157:基頻樣本陣列/陣列 159:算術邏輯單元 201:操作 203:操作 205:操作 207:操作 209:操作 211:操作 213:操作 215:操作 217:操作 219:操作 251:輸入 253:基頻樣本記憶體/記憶體 255:離散傅立葉變換算術邏輯單元 257:記憶體/快速傅立葉變換結果陣列 258:輸出 259:碼產生器 261:離散傅立葉變換算術邏輯單元 263:碼頻譜記憶體 265:乘法器 267:逆離散傅立葉變換算術邏輯單元 269:關聯後處理操作器 271:記憶體/積分記憶體 301:陣列 303:運算 304:運算 306:運算 308:部分結果樣本陣列 311:陣列 313:運算 315:運算 351:相位因數陣列 353:相位因數陣列/陣列 355:離散傅立葉變換運算 357:離散傅立葉變換運算 361:第一級樣本陣列 363:運算 365:運算 367:運算 371:後處理器 373:積分陣列 401:碼種 402:多項式型產生器 404:時間移位器 406:可程式化相位分割輸入 408:CORDIC相位旋轉 410:CORDIC相位旋轉 412:CORDIC相位旋轉 415:CORDIC相位圖 417:相位旋轉 419:相位旋轉 421:相位旋轉 450:全球導航衛星系統處理系統 451:導航晶片 453:全球導航衛星系統接收器碼 457:邏輯模組 458:獲取引擎 459:衛星信號產生器 460:數位前端 461:時基與控制模組 462:匯流排控制模組 463:追蹤引擎 464:時脈鎖相迴路產生與閘控電路系統 465:射頻類比轉數位轉換器 466:ARM處理器 467:ARM程式及資料記憶體 468:基頻樣本記憶體 469:獲取引擎命令記憶體 470:快速傅立葉變換程式記憶體 471:快速傅立葉變換常數記憶體 472:快速傅立葉變換變數記憶體 473:快速傅立葉變換結果記憶體 474:碼頻譜產生記憶體 475:同調積分記憶體 476:逆快速傅立葉變換記憶體 477:逆快速傅立葉變換記憶體 478:逆快速傅立葉變換變數記憶體 479:非同調積分記憶體 501:碼前移矩陣 502:碼前移矩陣 503:產生器多項式 505:產生器多項式 507:第二輸入 509:第二輸入 511:多工器 515:暫存器 517:暫存器 519:XOR邏輯閘 521:XOR邏輯閘 523:副碼位元 524:碼前移十位 526:暫存器 527:左移位邏輯 529:增加取樣邏輯區塊 531:暫存器 533:左移位邏輯 601:操作 603:操作 605:操作 607:操作 609:操作 611:操作 613:操作 701:射頻前端模組 703:數位前端 707:全球導航衛星系統天線 709:帶通濾波器 711:低雜訊放大器 713:帶通濾波器 715:放大器 717:類比轉數位轉換器 719:時脈產生鎖相迴路 721:CIC抽取器 723:時脈分頻器 725:時脈分頻器 727:降頻轉換器 729:CIC抽取器 731:旁帶分割降頻轉換器 951:操作 953:操作 955:操作 957:操作 959:操作 961:操作 963:操作 965:操作 967:操作 969:操作 971:操作 973:操作 975:操作10: System 12: Application processor 12A: Cache memory 14: Bus 16: Processor 16A: Static random access memory 17: Cell phone RF module 18: Antenna 20: Global navigation satellite system processor 21: Global navigation satellite system RF module 22A: Antenna/Global navigation satellite System antenna 22B: Antenna/GNSS system antenna 24: Dynamic random access memory 26: Input/output device 50: System/operating system 52: System on chip 54: System bus/bus 56: Dynamic random access memory 57: Non-volatile memory 58: Input/output control = 60: Input/output device 62: Sensor/RF component 63: Global navigation satellite system RF component 64: Cell phone RF component 66: Application processor 68: Global navigation satellite system processing system 70: Cache memory 72: Memory controller 74: Bus 76: Processor 78: Bus interface 101: Operation 103: Operation 105: Operation 107: Operation 109: Operation 111: Operation 113: Operation 115: Operation 150: Part 151: Antenna 153: Global navigation satellite system RF front end 155: RF analog-to-digital converter 157: Baseband sample This array/array 159: Arithmetic logic unit 201: Operation 203: Operation 205: Operation 207: Operation 209: Operation 211: Operation 213: Operation 215: Operation 217: Operation 219: Operation 251: Input 253: Baseband sample memory/memory 255: Discrete Fourier Transform Arithmetic Logic Unit 257: Memory/FFT Result Array 258: Output 259: Code Generator 261: Discrete Fourier Transform Arithmetic Logic Unit 263: Code Spectrum Memory 265: Multiplier 267: Inverse Discrete Fourier Transform Arithmetic Logic Unit 269: Correlation Post-Processing Operator 271: Memory/Integral Memory 301: Array 303: Operation 304: Operation 306: Operation 308: Partial Result Sample Array 311: Array 313: Operation 315: Operation 351: Phase Factor Array 353: Phase Factor Array/Array 355: Discrete Fourier Transform =Transformation operation 357: Discrete Fourier transform operation 361: First stage sample array 363: Operation 365: Operation 367: Operation 371: Postprocessor 373: Integral array 401: Code type 402: Polynomial type generator 404: Time shifter 406: Programmable phase division input 408 :CORDIC phase rotation 410:CORDIC phase rotation 412:CORDIC phase rotation 415:CORDIC phase diagram 417:Phase rotation 419:Phase rotation 421:Phase rotation 450:Global navigation satellite system processing system 451:Navigation chip 453:Global navigation satellite system receiver code 457:Logic module 458:Acquisition engine 459:Satellite signal generator 460:Digital front end 461:Timing and control module 462:Bus control module 463:Tracking engine 464:Clock phase-locked loop generation and gate control circuit system 465:RF analog-to-digital conversion Converter 466: ARM processor 467: ARM program and data memory 468: Baseband sample memory 469: Acquisition engine command memory 470: Fast Fourier transform program memory 471: Fast Fourier transform constant memory 472: Fast Fourier transform variable memory 473: Fast Fourier transform 474: Code spectrum generation memory 475: Coherent integral memory 476: IFFT memory 477: IFFT memory 478: IFFT variable memory 479: Non-coherent integral memory 501: Code forward matrix 502: Code forward matrix Array 503: Generator polynomial 505: Generator polynomial 507: Second input 509: Second input 511: Multiplexer 515: Register 517: Register 519: XOR logic gate 521: XOR logic gate 523: Secondary code bit 524: Code shifted forward by ten bits 526: Register 527: Left shift logic 529: Add sampling logic block 531: Register 533: Left shift logic 601: Operation 603: Operation 605: Operation 607: Operation 609: Operation 611: Operation 613: Operation 701: RF front end module 703: Digital front end 707: Full GNSS antenna 709: Bandpass filter 711: Low noise amplifier 713: Bandpass filter 715: Amplifier 717: Analog-to-digital converter 719: Clock generation phase-locked loop 721: CIC decimator 723: Clock divider 725: Clock divider 727: Down converter 729: CIC decimator 731: Sideband splitting down converter 951: Operation 953: Operation 955: Operation 957: Operation 959: Operation 961: Operation 963: Operation 965: Operation 967: Operation 969: Operation 971: Operation 973: Operation 975: Operation
本發明是藉由舉例來圖解說明且不限於附圖中的各個圖,在附圖中相似參考指示類似元件。The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
圖1係展示包含一GNSS處理器及一或多個應用處理器之一資料處理系統之一實例之一方塊圖。FIG. 1 is a block diagram showing an example of a data processing system including a GNSS processor and one or more application processors.
圖2係展示包含一GNSS處理系統以及一或多個應用處理器以及一快取記憶體之一實施例之一實例之一方塊圖。FIG. 2 is a block diagram showing an example of an embodiment including a GNSS processing system and one or more application processors and a cache memory.
圖3係圖解說明根據一項實施例的在一或多個應用處理器與一GNSS處理器之間共用一快取記憶體之一方法之一流程圖。FIG. 3 is a flow chart illustrating a method for sharing a cache memory between one or more application processors and a GNSS processor according to an embodiment.
圖4展示根據一項實施例的將所接收GNSS信號數位化之一GNSS接收器之一前端之一實例。FIG. 4 shows an example of a front end of a GNSS receiver that digitizes received GNSS signals according to an embodiment.
圖5A及圖5B展示根據一項實施例的使用具有若干次DFT之陣列處理之一方法之一實例。5A and 5B show an example of a method using array processing with several DFTs according to an embodiment.
圖6係圖解說明根據一項實施例的使用陣列處理之一頻域關聯器架構之一方塊圖。FIG6 is a block diagram illustrating a frequency domain correlator architecture using array processing according to an embodiment.
圖7以方塊圖形式展示根據一項實施例的用於實行陣列處理之處理組件之一實例。FIG. 7 illustrates, in block diagram form, an example of a processing component for performing array processing according to one embodiment.
圖8以方塊圖形式展示根據一項實施例的用於實行陣列處理之其他處理組件之一實例。FIG8 illustrates, in block diagram form, an example of other processing components for performing array processing according to one embodiment.
圖9A、圖9B、圖9C及圖9D展示可用於產生一PRN碼頻譜以用於圖6、圖7及圖8中所展示之陣列處理架構的處理組件及一方法之一實例。9A, 9B, 9C and 9D show an example of processing components and a method that may be used to generate a PRN code spectrum for use with the array processing architecture shown in FIGS. 6, 7 and 8.
圖10展示可用於一GNSS接收器之一項實施例中之組件之一實例。FIG. 10 shows an example of components that may be used in an embodiment of a GNSS receiver.
圖11係展示根據一項實施例之一方法之一流程圖。FIG. 11 is a flow chart showing a method according to an embodiment.
圖12以方塊圖形式展示一僅含L5 WB頻帶之GNSS接收器之一實例。FIG. 12 shows an example of a GNSS receiver with only L5 WB band in block diagram form.
50:系統/作業系統 50: System/Operating System
52:系統單晶片 52: System on Chip
54:系統匯流排/匯流排 54: System bus/bus
56:動態隨機存取記憶體 56: Dynamic random access memory
57:非揮發性記憶體 57: Non-volatile memory
58:輸入/輸出控制器 58: Input/output controller
60:輸入/輸出裝置 60: Input/output device
62:感測器/射頻組件 62: Sensor/RF components
63:全球導航衛星系統射頻組件 63: Global Navigation Satellite System Radio Frequency Components
64:蜂巢式電話射頻組件 64: Cellular phone RF components
66:應用處理器 66: Application Processor
68:全球導航衛星系統處理系統 68: Global Navigation Satellite System Processing System
70:快取記憶體 70: Cache memory
72:記憶體控制器 72:Memory controller
74:匯流排 74:Bus
76:處理器 76: Processor
78:匯流排介面 78: Bus interface
Claims (67)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962915510P | 2019-10-15 | 2019-10-15 | |
| US62/915,510 | 2019-10-15 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202124994A TW202124994A (en) | 2021-07-01 |
| TWI870481B true TWI870481B (en) | 2025-01-21 |
Family
ID=77908525
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW109135794A TWI870481B (en) | 2019-10-15 | 2020-10-15 | Modernized global navigation satellite system receivers |
| TW114106835A TW202526363A (en) | 2019-10-15 | 2020-10-15 | Modernized global navigation satellite system receivers |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW114106835A TW202526363A (en) | 2019-10-15 | 2020-10-15 | Modernized global navigation satellite system receivers |
Country Status (1)
| Country | Link |
|---|---|
| TW (2) | TWI870481B (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN119148122A (en) * | 2024-08-30 | 2024-12-17 | 南京理工大学 | FPGA-based rapid radar tracking signal detection and data communication device |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090213006A1 (en) * | 2008-02-21 | 2009-08-27 | Texas Instruments Incorporated | Gnss receiver with reduced storage requirements |
| WO2014106125A1 (en) * | 2012-12-28 | 2014-07-03 | Richard Rudow | Gnss receiver positioning system |
| US20150156038A1 (en) * | 2010-06-07 | 2015-06-04 | Qualcomm Incorproated | Communication devices for generating and using a matrix-mapped sequence |
| US20160245923A1 (en) * | 2008-12-11 | 2016-08-25 | Hemisphere Gnss Inc. | Global navigation satellite system superband processing device and method |
| US20170350985A1 (en) * | 2016-06-06 | 2017-12-07 | Brian G. Agee | Blind despreading of civil GNSS signals for resilient PNT applications |
| EP3249429B1 (en) * | 2016-05-27 | 2019-05-01 | Centre National d'Etudes Spatiales | Adaptive antenna assembly for improving precision of a gnss receiver in a perturbated environment |
-
2020
- 2020-10-15 TW TW109135794A patent/TWI870481B/en active
- 2020-10-15 TW TW114106835A patent/TW202526363A/en unknown
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090213006A1 (en) * | 2008-02-21 | 2009-08-27 | Texas Instruments Incorporated | Gnss receiver with reduced storage requirements |
| US20160245923A1 (en) * | 2008-12-11 | 2016-08-25 | Hemisphere Gnss Inc. | Global navigation satellite system superband processing device and method |
| US20150156038A1 (en) * | 2010-06-07 | 2015-06-04 | Qualcomm Incorproated | Communication devices for generating and using a matrix-mapped sequence |
| WO2014106125A1 (en) * | 2012-12-28 | 2014-07-03 | Richard Rudow | Gnss receiver positioning system |
| EP3249429B1 (en) * | 2016-05-27 | 2019-05-01 | Centre National d'Etudes Spatiales | Adaptive antenna assembly for improving precision of a gnss receiver in a perturbated environment |
| US20170350985A1 (en) * | 2016-06-06 | 2017-12-07 | Brian G. Agee | Blind despreading of civil GNSS signals for resilient PNT applications |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202124994A (en) | 2021-07-01 |
| TW202526363A (en) | 2025-07-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20230288574A1 (en) | Modernized global navigation satellite system (gnss) receivers and commercially viable consumer grade gnss receivers | |
| CN101093254B (en) | GPS receiver and method for processing GPS signals | |
| JP4422337B2 (en) | High speed and high sensitivity GPS receiver | |
| US8138972B2 (en) | Signal processing system for satellite positioning signals | |
| CN101356449B (en) | Method and apparatus for performing signal correlation for signals received from satellites in multiple satellite systems | |
| Leclère et al. | Acquisition of modern GNSS signals using a modified parallel code-phase search architecture | |
| US20170139053A1 (en) | Simultaneous signal reception device of different satellite navigation systems | |
| US20070164901A1 (en) | Multi-function device with positioning system and shared processor | |
| US8369386B2 (en) | Receiver, signal processing method and program | |
| JPH11513787A (en) | GPS receiver and method for processing GPS signals | |
| CN101946188A (en) | Handle the satellite radio signal that is received | |
| WO2021247584A9 (en) | Modernized consumer grade gnss secondary code acquisition and signal tracking | |
| JP4154609B2 (en) | Satellite signal reception processing apparatus and satellite signal reception processing method | |
| KR101147942B1 (en) | Method and apparatus for code space search in a receiver | |
| TWI870481B (en) | Modernized global navigation satellite system receivers | |
| US7936846B2 (en) | Low gate count sequential multitap correlator | |
| Pany et al. | On the state-of-the-art of real-time GNSS signal acquisition—A comparison of time and frequency domain methods | |
| TW202219549A (en) | Modernized global navigation satellite system receivers | |
| JP2003258682A (en) | Matched filter device, correlation detection method, and receiving device | |
| US20240125942A1 (en) | Methods and Devices for Performing Mini-Batch Discrete Fourier Transforms for Tracking Satellite Signals | |
| HK1155228B (en) | Method and apparatus for acquisition, tracking, and sub-microsecond time transfer using weak gps/gnss signals |