摘 要:在GPS芯片或者其他信號處理芯片中,經常需要做移動相位進行相關的運算,用硬件來實現這樣的運算是相當耗資源的,但有時候也不可避免。基于此,在傳統的采取循環移位寄存器存儲數據并且移位來進行相關運算的基礎上提出一種新的方案,考慮到FPGA有大量現成的Block RAM可以利用,所以采用Block RAM來存儲數據并且通過改變Block RAM地址來進行相關運算,理論和實踐證明,該方法達到了同樣的目的并且更加經濟有效,節省了大量資源。
關鍵詞:循環移位寄存器;FPGA;Block RAM;GPS
中圖分類號:TP368.1文獻標識碼:B
文章編號:1004-373X(2008)22-175-03
Improved Scheme of GPS Correlator Based on FPGA
ZHANG Dan,ZHAO Yong
(School of Computer Information Engineering,Shenzhen Graduate School,Peking University,Shenzhen,518055,China)
Abstract:In the GPS chip or other signal processing chips,some mobility of phase to correlate operation,sometimes,it is quite wasteful and inevitable to use the hardware realize the operation.A new scheme based on the traditional idea which uses the cycle shift registers to store data and shift the phase to do correlate operation.Considering the abundant free Block RAM in FPGA,the Block RAM is used to store our data and change the address of the Block RAM to do some correlate operation.Theory and experiment prove that this method is right and more economic and proficient,as well as saving abundant resource.
Keywords:cycle shift registers;FPGA;Block RAM;GPS
隨著美國聯邦通信委員會所制定的E911(Enhanced 911)安全條款,規定在2005年年底之前,所有新推出的手機都需配備簡易的定位功能,以方便救助單位及時找到通話者的位置,日本政府2004年宣布,將GPS接受功能列為3G手機的基本規格,并表示2007年4月后上市的手機,均配備GPS接收功能,盡管現在集成GPS功能的手機還沒進入主流市場,但是將來的3G手機的中高端機型會普遍集成GPS功能[1]。伴隨著這樣一種時代背景,GPS接收機芯片產業如雨后春筍般呈現出一種蓬勃發展的局面。
在高動態的GPS接收機中,為了跟蹤和解碼GPS信號,首先要在短時間內快速捕獲到GPS信號,將捕獲到的GPS信號傳遞給跟蹤過程,再通過跟蹤過程解調便可得到衛星的導航電文,所以怎樣快速捕獲到衛星信號是GPS接收機的一個最重要的問題之一。而在這個過程中,相關器部分占據了非常重要的位置,是最耗資源最耗時間的部分,一般GPS接收機具有多個相關通道[2],每個相關通道主要由載波鎖定環路和C/A碼延時鎖定環路組成,載波鎖定環路用來跟蹤衛星信號載波頻率和載波相位,達到載波同步,C/A碼延時鎖定環路用來使本地碼相位與接收機的GPS衛星信號中的C/A碼相位保持同相,以實現對衛星信號的解擴和偽距離測量[3]。本文研究的重點就是C/A碼延時鎖定環路中的數據存儲問題。
傳統的GPS的基帶處理芯片中的相關器[4],是在不同頻點,通過移動本地碼相位與衛星信號進行相關計算。當在該頻點在每個碼相位都進行了相關計算之后,再改變頻點重復做這樣的相關運算,本文從節省FPGA資源方面考慮,對該模塊進行了改進。
1 循環移位寄存器存儲、移相方案
GPS發送的衛星信號包括了載波、導航電文、偽隨機碼(C/A碼和P碼)[5],其中C/A碼作為民用偽隨機碼是本文研究的對象,它的周期為1 ms,在1 ms內有1 023個碼片。因為C/A碼的是基于GOLD序列產生的,所以C/A碼在每個周期有1 023種序列,由于1 023不是基2或者基4的數據,并不利于分塊復用處理,故需要對本地C/A碼以及輸入數據進行補“0”操作,構成1 024位[6]。
因為希望更加精確地捕獲和跟蹤衛星信號,對本地C/A碼進行4倍采樣,擴展到4 096位,傳統的本地生成的C/A碼是一種循環移位寄存器的存儲方式,即每次移動完1個碼片,計算完相關數據之后,4 096個碼片就向左移動一個碼片,最高位補到最低位。直到完成了所有移位,其基本結構如圖1所示[7,8]。

這種方法的優點是結構簡單易懂,設計也相應很簡單,但是非常消耗FPGA資源,根據這種方法得到的仿真波形圖和綜合電路圖如圖2和圖3所示。

根據循環移位寄存器存儲、移相方案,用XILINX ISE綜合得到的Resource Usage Report如圖4所示。該模塊的接口超出了FPGA資源,但和其他模塊連接的時候就不會有這樣的問題,所以可以不用考慮。由該報表可以看出此種方案沒有消耗FPGA的Block RAM資源,但是消耗的Slices資源有2 353個之多。
2 Block RAM存儲、變址方案
根據采用循環移位寄存器存儲數據并且移位來進行相關運算的方案綜合后的結果可以看到,這種方法需要移動4 096次碼相位,消耗的資源相當大,但XILINX FPGA器件提供的片內的RAM可直接使用,而不必使用寄存器來構成存儲空間,從而大大提高了FPGA的利用率。在XILINX FPGA產品中[9],根據型號的不同,提供2種RAM 結構: 分布式RAM和Block RAM。
如圖5所示Block RAM存儲器按列排列,左邊從0列開始,每隔12 列CLB 排列1個Block RAM存儲器。每個Block RAM是一個完全同步的雙端口RAM,每個端口都有獨立的控制信號, 本文正是采用了FPGA現成資源Block RAM實現,用32個寬度為1深度為256的RAM完成。其中前32×128個數和后32×128個數是一樣的,即后面32×128的對前面數據的復制,這種方法不需要再移動數據,而是采取改變地址的方式進行。同樣也需要改變4 096次地址,其結構框圖如圖6所示。

Block RAM寫入邏輯的寫地址用13位二進制數表示,其中高8位選定行(256行),低5位選定列(32列),這個過程需要對計數器進行譯碼產生32個列選擇使能信號,使數據從左到右依次導入到RAM中。
Block RAM讀出邏輯:剛開始從第1列第1行開始按照蛇行順序讀取數據,即第1次讀出的4 096個數據是從第1行第1列數據到第128行第32列數據,進行完1次相關運算;第二次讀出的4 096個數據是從第2行第1列數據到第129行第1列數據,再進行1次相關運算,第三次讀出的4 096個數據是從第3行第1列數據到第129行第2列數據,完成1次相關運算…這樣依次進行下去,每進行完1次相關計算后,改變1次行地址和列地址再進行下次相關計算,直到改變4 096次地址結束該點頻率的所有相位相關計算,得出峰值最大點的碼相位。
根據以上討論,采取Block RAM存儲、變址方案,同樣可以實現移動本地C/A碼4 096個碼相位與接收到的衛星信號進行相關計算。用Modelsim仿真的結果如圖7所示。

根據采取的FPGA提供的Block RAM來存儲數據、改變地址達到循環移位的方案,用XILINX ISE綜合后得到的Resource Usage Report如圖8所示。

對比2種不同方案得到的綜合報表,可以看到,第一種方案即采用循環移位寄存器來存儲數據并且移位來進行相關運算的方案沒有消耗FPGA的Block RAM資源,但是消耗的Slices資源有2353。而第二種方案采取FPGA現有的Block RAM存儲、變址方案,消耗了32個Block RAM,但消耗的Slices資源只有271個,比第一種方案節約了將近90%的資源。
3 結 語
雖然兩種方法都實現了我們的目的,但是對比兩種方案的綜合報告,可以看出,基于循環寄存器移位方案在綜合后用掉了XILINX FPGA器件大量的Slices資源,而充分考慮FPGA器件結構,選擇資源占用最少、效率最高的實現方法,用其自帶的存儲器Block RAM設計,則僅用相當少的Slices資源。明顯后一種設計可以充分節省現有的FPGA資源,設計出容量更大的存儲器,且更經濟、有效。 所以理論和實踐都證明,該方法可行。該方法同樣適用于其他相關運算的芯片設計。
參考文獻
[1]巴曉輝,李金海,陳杰.世界主流GPS芯片介紹[J].今日電子,2007(3):44-48.
[2]薛雅娟.GPS接收機數字基帶信號處理算法研究[D].成都:成都理工大學,2007.
[3]干國強,邱致和.導航與定位[M].北京:國防工業出版社,2001.
[4]Elliott D Kaplan,Christopher J Hegarty.Unders tanding GPS Principles and Application[M].Second Edition.2007.
[5]Jeremy Allnutt.Satellite Communications[M].Second Edition.2005.
[6]魏敬法.GPS信號快速捕獲的FPGA實現[D].北京:中國科學院研究生院,2005.
[7]儲鐘圻.數字衛星通信[M].北京:機械工業出版社,2006.
[8]羅宇平.GPS信號的快速捕獲與跟蹤方案的研究[J].電子信息工程,2007.
[9]佚名.FPGA平臺架構用于復雜嵌入式系統.http://www.eeworld.com.cn/designarticles/embed/200712/17144.html.
[10]佚名.基于查找表結構(LUT)的FPGA結構.http://www.fpga.com.cn/advance/structures/lut.htm.
[11]劉華珠,陳雪芳,黃海云.基于FPGA技術的DRAM分時存取方法.現代電子技術,2005,28(10):111-112,115.
作者簡介 張 丹 男,1980年出生,四川仁壽人,北京大學深圳研究生院信息工程學院碩士研究生。主要研究方向為數字ASIC,FPGA。
趙 勇 男,加拿大Concordia University電氣工程系博士后,北京大學信息科學技術學院副教授。主要從事視頻壓縮以及移動視頻終端、基于CDMA的視頻傳輸系統,以及智能手機的研究開發工作。