摘 要:在GPS芯片或者其他信號處理芯片中,經(jīng)常需要做移動相位進行相關(guān)的運算,用硬件來實現(xiàn)這樣的運算是相當耗資源的,但有時候也不可避免?;诖耍趥鹘y(tǒng)的采取循環(huán)移位寄存器存儲數(shù)據(jù)并且移位來進行相關(guān)運算的基礎(chǔ)上提出一種新的方案,考慮到FPGA有大量現(xiàn)成的Block RAM可以利用,所以采用Block RAM來存儲數(shù)據(jù)并且通過改變Block RAM地址來進行相關(guān)運算,理論和實踐證明,該方法達到了同樣的目的并且更加經(jīng)濟有效,節(jié)省了大量資源。
關(guān)鍵詞:循環(huán)移位寄存器;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
隨著美國聯(lián)邦通信委員會所制定的E911(Enhanced 911)安全條款,規(guī)定在2005年年底之前,所有新推出的手機都需配備簡易的定位功能,以方便救助單位及時找到通話者的位置,日本政府2004年宣布,將GPS接受功能列為3G手機的基本規(guī)格,并表示2007年4月后上市的手機,均配備GPS接收功能,盡管現(xiàn)在集成GPS功能的手機還沒進入主流市場,但是將來的3G手機的中高端機型會普遍集成GPS功能[1]。伴隨著這樣一種時代背景,GPS接收機芯片產(chǎn)業(yè)如雨后春筍般呈現(xiàn)出一種蓬勃發(fā)展的局面。
在高動態(tài)的GPS接收機中,為了跟蹤和解碼GPS信號,首先要在短時間內(nèi)快速捕獲到GPS信號,將捕獲到的GPS信號傳遞給跟蹤過程,再通過跟蹤過程解調(diào)便可得到衛(wèi)星的導(dǎo)航電文,所以怎樣快速捕獲到衛(wèi)星信號是GPS接收機的一個最重要的問題之一。而在這個過程中,相關(guān)器部分占據(jù)了非常重要的位置,是最耗資源最耗時間的部分,一般GPS接收機具有多個相關(guān)通道[2],每個相關(guān)通道主要由載波鎖定環(huán)路和C/A碼延時鎖定環(huán)路組成,載波鎖定環(huán)路用來跟蹤衛(wèi)星信號載波頻率和載波相位,達到載波同步,C/A碼延時鎖定環(huán)路用來使本地碼相位與接收機的GPS衛(wèi)星信號中的C/A碼相位保持同相,以實現(xiàn)對衛(wèi)星信號的解擴和偽距離測量[3]。本文研究的重點就是C/A碼延時鎖定環(huán)路中的數(shù)據(jù)存儲問題。
傳統(tǒng)的GPS的基帶處理芯片中的相關(guān)器[4],是在不同頻點,通過移動本地碼相位與衛(wèi)星信號進行相關(guān)計算。當在該頻點在每個碼相位都進行了相關(guān)計算之后,再改變頻點重復(fù)做這樣的相關(guān)運算,本文從節(jié)省FPGA資源方面考慮,對該模塊進行了改進。
1 循環(huán)移位寄存器存儲、移相方案
GPS發(fā)送的衛(wèi)星信號包括了載波、導(dǎo)航電文、偽隨機碼(C/A碼和P碼)[5],其中C/A碼作為民用偽隨機碼是本文研究的對象,它的周期為1 ms,在1 ms內(nèi)有1 023個碼片。因為C/A碼的是基于GOLD序列產(chǎn)生的,所以C/A碼在每個周期有1 023種序列,由于1 023不是基2或者基4的數(shù)據(jù),并不利于分塊復(fù)用處理,故需要對本地C/A碼以及輸入數(shù)據(jù)進行補“0”操作,構(gòu)成1 024位[6]。
因為希望更加精確地捕獲和跟蹤衛(wèi)星信號,對本地C/A碼進行4倍采樣,擴展到4 096位,傳統(tǒng)的本地生成的C/A碼是一種循環(huán)移位寄存器的存儲方式,即每次移動完1個碼片,計算完相關(guān)數(shù)據(jù)之后,4 096個碼片就向左移動一個碼片,最高位補到最低位。直到完成了所有移位,其基本結(jié)構(gòu)如圖1所示[7,8]。
這種方法的優(yōu)點是結(jié)構(gòu)簡單易懂,設(shè)計也相應(yīng)很簡單,但是非常消耗FPGA資源,根據(jù)這種方法得到的仿真波形圖和綜合電路圖如圖2和圖3所示。
根據(jù)循環(huán)移位寄存器存儲、移相方案,用XILINX ISE綜合得到的Resource Usage Report如圖4所示。該模塊的接口超出了FPGA資源,但和其他模塊連接的時候就不會有這樣的問題,所以可以不用考慮。由該報表可以看出此種方案沒有消耗FPGA的Block RAM資源,但是消耗的Slices資源有2 353個之多。
2 Block RAM存儲、變址方案
根據(jù)采用循環(huán)移位寄存器存儲數(shù)據(jù)并且移位來進行相關(guān)運算的方案綜合后的結(jié)果可以看到,這種方法需要移動4 096次碼相位,消耗的資源相當大,但XILINX FPGA器件提供的片內(nèi)的RAM可直接使用,而不必使用寄存器來構(gòu)成存儲空間,從而大大提高了FPGA的利用率。在XILINX FPGA產(chǎn)品中[9],根據(jù)型號的不同,提供2種RAM 結(jié)構(gòu): 分布式RAM和Block RAM。
如圖5所示Block RAM存儲器按列排列,左邊從0列開始,每隔12 列CLB 排列1個Block RAM存儲器。每個Block RAM是一個完全同步的雙端口RAM,每個端口都有獨立的控制信號, 本文正是采用了FPGA現(xiàn)成資源Block RAM實現(xiàn),用32個寬度為1深度為256的RAM完成。其中前32×128個數(shù)和后32×128個數(shù)是一樣的,即后面32×128的對前面數(shù)據(jù)的復(fù)制,這種方法不需要再移動數(shù)據(jù),而是采取改變地址的方式進行。同樣也需要改變4 096次地址,其結(jié)構(gòu)框圖如圖6所示。
Block RAM寫入邏輯的寫地址用13位二進制數(shù)表示,其中高8位選定行(256行),低5位選定列(32列),這個過程需要對計數(shù)器進行譯碼產(chǎn)生32個列選擇使能信號,使數(shù)據(jù)從左到右依次導(dǎo)入到RAM中。
Block RAM讀出邏輯:剛開始從第1列第1行開始按照蛇行順序讀取數(shù)據(jù),即第1次讀出的4 096個數(shù)據(jù)是從第1行第1列數(shù)據(jù)到第128行第32列數(shù)據(jù),進行完1次相關(guān)運算;第二次讀出的4 096個數(shù)據(jù)是從第2行第1列數(shù)據(jù)到第129行第1列數(shù)據(jù),再進行1次相關(guān)運算,第三次讀出的4 096個數(shù)據(jù)是從第3行第1列數(shù)據(jù)到第129行第2列數(shù)據(jù),完成1次相關(guān)運算…這樣依次進行下去,每進行完1次相關(guān)計算后,改變1次行地址和列地址再進行下次相關(guān)計算,直到改變4 096次地址結(jié)束該點頻率的所有相位相關(guān)計算,得出峰值最大點的碼相位。
根據(jù)以上討論,采取Block RAM存儲、變址方案,同樣可以實現(xiàn)移動本地C/A碼4 096個碼相位與接收到的衛(wèi)星信號進行相關(guān)計算。用Modelsim仿真的結(jié)果如圖7所示。
根據(jù)采取的FPGA提供的Block RAM來存儲數(shù)據(jù)、改變地址達到循環(huán)移位的方案,用XILINX ISE綜合后得到的Resource Usage Report如圖8所示。
對比2種不同方案得到的綜合報表,可以看到,第一種方案即采用循環(huán)移位寄存器來存儲數(shù)據(jù)并且移位來進行相關(guān)運算的方案沒有消耗FPGA的Block RAM資源,但是消耗的Slices資源有2353。而第二種方案采取FPGA現(xiàn)有的Block RAM存儲、變址方案,消耗了32個Block RAM,但消耗的Slices資源只有271個,比第一種方案節(jié)約了將近90%的資源。
3 結(jié) 語
雖然兩種方法都實現(xiàn)了我們的目的,但是對比兩種方案的綜合報告,可以看出,基于循環(huán)寄存器移位方案在綜合后用掉了XILINX FPGA器件大量的Slices資源,而充分考慮FPGA器件結(jié)構(gòu),選擇資源占用最少、效率最高的實現(xiàn)方法,用其自帶的存儲器Block RAM設(shè)計,則僅用相當少的Slices資源。明顯后一種設(shè)計可以充分節(jié)省現(xiàn)有的FPGA資源,設(shè)計出容量更大的存儲器,且更經(jīng)濟、有效。 所以理論和實踐都證明,該方法可行。該方法同樣適用于其他相關(guān)運算的芯片設(shè)計。
參考文獻
[1]巴曉輝,李金海,陳杰.世界主流GPS芯片介紹[J].今日電子,2007(3):44-48.
[2]薛雅娟.GPS接收機數(shù)字基帶信號處理算法研究[D].成都:成都理工大學,2007.
[3]干國強,邱致和.導(dǎo)航與定位[M].北京:國防工業(yè)出版社,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實現(xiàn)[D].北京:中國科學院研究生院,2005.
[7]儲鐘圻.數(shù)字衛(wèi)星通信[M].北京:機械工業(yè)出版社,2006.
[8]羅宇平.GPS信號的快速捕獲與跟蹤方案的研究[J].電子信息工程,2007.
[9]佚名.FPGA平臺架構(gòu)用于復(fù)雜嵌入式系統(tǒng).http://www.eeworld.com.cn/designarticles/embed/200712/17144.html.
[10]佚名.基于查找表結(jié)構(gòu)(LUT)的FPGA結(jié)構(gòu).http://www.fpga.com.cn/advance/structures/lut.htm.
[11]劉華珠,陳雪芳,黃海云.基于FPGA技術(shù)的DRAM分時存取方法.現(xiàn)代電子技術(shù),2005,28(10):111-112,115.
作者簡介 張 丹 男,1980年出生,四川仁壽人,北京大學深圳研究生院信息工程學院碩士研究生。主要研究方向為數(shù)字ASIC,F(xiàn)PGA。
趙 勇 男,加拿大Concordia University電氣工程系博士后,北京大學信息科學技術(shù)學院副教授。主要從事視頻壓縮以及移動視頻終端、基于CDMA的視頻傳輸系統(tǒng),以及智能手機的研究開發(fā)工作。