摘 要: 以TI公司的TMS320C6416芯片為例,,設(shè)計實(shí)現(xiàn)了基于獨(dú)立DSP芯片的通用衛(wèi)星導(dǎo)航接收機(jī)平臺,說明了如何通過單獨(dú)的DSP平臺實(shí)現(xiàn)中頻衛(wèi)星信號的采集,、程序和數(shù)據(jù)的存儲,、線程調(diào)度等功能,以及如何支持多星座衛(wèi)星導(dǎo)航接收機(jī)擴(kuò)展,。實(shí)驗(yàn)結(jié)果表明,,根據(jù)本方案實(shí)現(xiàn)的平臺能夠很好地實(shí)現(xiàn)實(shí)時衛(wèi)星導(dǎo)航軟件接收機(jī)的功能。
關(guān)鍵詞: DSP,; 衛(wèi)星導(dǎo)航,; 軟件接收機(jī); 多星座
目前,,衛(wèi)星定位系統(tǒng)的應(yīng)用越來越廣泛,,中國、歐盟和日本等國都在積極發(fā)展自己獨(dú)立的衛(wèi)星定位系統(tǒng),。自1980年第一臺商品GPS信號接收機(jī)問世以來,,GPS信號接收機(jī)不斷更新?lián)Q代,,目前的衛(wèi)星導(dǎo)航接收機(jī)主要由專用集成芯片(ASIC)搭建而成,擁有集成度高,、速度快的優(yōu)點(diǎn),。但隨著衛(wèi)星導(dǎo)航系統(tǒng)現(xiàn)代化的開展,,在軌飛行的導(dǎo)航衛(wèi)星日漸增多,衛(wèi)星導(dǎo)航應(yīng)用趨于多樣化,固定的硬件結(jié)構(gòu)難以完成快速系統(tǒng)更新,,暴露出硬件接收靈活度低,、升級昂貴的弱點(diǎn),。而軟件接收機(jī)通常是通過下變頻芯片將衛(wèi)星導(dǎo)航信號降到較低的中頻,,然后通過模數(shù)轉(zhuǎn)換器對信號進(jìn)行數(shù)字化,接收機(jī)的捕獲,、跟蹤,、定位等功能則由軟件在通用的信號處理平臺上實(shí)現(xiàn),易于在現(xiàn)有系統(tǒng)的基礎(chǔ)上進(jìn)行性能升級和功能擴(kuò)展,。
從目前研究現(xiàn)狀來看,,軟件接收機(jī)的實(shí)現(xiàn)大多基于PC機(jī)或FPGA/DSP組合平臺[1]。而FPGA平臺雖然是一個可編程的平臺,,但其靈活性和擴(kuò)展性與純軟件相比仍然有所欠缺,,而DSP通常在此平臺中僅實(shí)現(xiàn)定位解算功能。因此,,實(shí)現(xiàn)基于獨(dú)立DSP平臺的通用衛(wèi)星導(dǎo)航接收機(jī)是一項(xiàng)十分有意義的工作,,可以極大程度地擴(kuò)展軟件接收機(jī)的靈活性。本文主要探討基于獨(dú)立DSP的軟件接收機(jī)平臺結(jié)構(gòu)設(shè)計,,討論如何在現(xiàn)有DSP平臺上提供多星座衛(wèi)星導(dǎo)航軟件接收機(jī)支持,,同時分析系統(tǒng)自舉引導(dǎo)功能的實(shí)現(xiàn)和基于DSP/BIOS操作系統(tǒng)的軟件接收機(jī)任務(wù)調(diào)度管理。
1 接收機(jī)平臺結(jié)構(gòu)設(shè)計
GNSS軟件接收機(jī)平臺采用模塊化設(shè)計,,可以分為中頻數(shù)據(jù)采集模塊,、數(shù)據(jù)存儲模塊、結(jié)果輸出模塊和電源及復(fù)位模塊,。本文所設(shè)計的衛(wèi)星導(dǎo)航接收機(jī)硬件系統(tǒng)原理框圖如圖1所示。
基本的工作原理:由射頻前端GP2015對天線接收的信號進(jìn)行下變頻,,輸出模擬中頻信號,,ADC對中頻信號進(jìn)行采樣和量化,然后傳輸?shù)絋MS320C6416 DSP進(jìn)行相關(guān)的運(yùn)算處理,,完成衛(wèi)星信號的捕獲,、跟蹤和定位解算等功能,最后將解算的結(jié)果通過輸出模塊傳送到顯示終端顯示定位結(jié)果及相關(guān)信息,。
1.1 TMS320C6416簡介
TMS320C6416是TI公司推出的高性能定點(diǎn)DSP[2],,其時鐘頻率可達(dá)1 GHz,,最高處理能力為8 000 MIPS,軟件與C62X完全兼容,,采用先進(jìn)的甚長指令結(jié)構(gòu)(VLIW)的DSP內(nèi)核有6個ALU(32/40 bit),,每個時鐘周期可以執(zhí)行8條指令,所有指令都可以條件執(zhí)行,。該DSP采用二級緩存結(jié)構(gòu),,一級緩存(L1)由128 Kbit的程序緩存和128 Kbit的數(shù)據(jù)緩存組成,二級緩存(L2)為8 Mbit,,有2個擴(kuò)展存儲器接口(EMIF),,1個為64 bit(EMIFA),1個為16 bit(EMIFB),,可以提供64條獨(dú)立的DMA通道[3],。
本系統(tǒng)使用50 MHz有源晶振作為DSP的外部輸入時鐘,內(nèi)部鎖相環(huán)使用×20模式(CLKMODE1=1,CLKMODE0=0),,系統(tǒng)的主頻為1 GHz,。
1.2 多星座數(shù)據(jù)采集模塊
為了使軟件接收機(jī)能夠支持多衛(wèi)星導(dǎo)航星座的中頻數(shù)據(jù)采集與處理功能,本系統(tǒng)同時提供了模擬中頻采集接口和數(shù)字中頻采集接口,2個接口可以同時使用,,也可以任選其一,,從而使系統(tǒng)具備較高的軟件可擴(kuò)展性。多星座中頻數(shù)據(jù)采集模塊的原理框圖如圖2所示,。
在本系統(tǒng)的設(shè)計中,,采用ADI公司的高速A/D轉(zhuǎn)換器AD9283實(shí)現(xiàn)模擬中頻信號到數(shù)字中頻信號的轉(zhuǎn)化。由于接收到的衛(wèi)星導(dǎo)航信號能量比噪聲信號能量低約為20 dB,,因此量化位數(shù)的高低對檢測衛(wèi)星導(dǎo)航信號的影響是有限的,,若采用高位數(shù)量化會增加數(shù)據(jù)運(yùn)算量和系統(tǒng)的復(fù)雜度,通常的商用接收機(jī)大多采用1 bit或2 bit量化,。本設(shè)計中量化位數(shù)為1 bit和2 bit可選配置,。經(jīng)過ADC數(shù)字化的中頻信號送到DSP的McBSP0和McBSP2端口,并隨后觸發(fā)EDMA事件,完成數(shù)據(jù)拷貝和緩存[4],。與此同時,采樣時鐘作為McBSP口的外部時鐘同步輸入信號,,將8 bit同步減法計數(shù)器74HC40103D設(shè)計成32進(jìn)制計數(shù)器對采樣時鐘進(jìn)行分頻來產(chǎn)生幀同步信號,實(shí)現(xiàn)串并數(shù)據(jù)轉(zhuǎn)換,。為避免因負(fù)載過多時鐘驅(qū)動能力不足,,采用了可配置時鐘驅(qū)動芯片CY2308作為時鐘驅(qū)動。圖3所示為多星座數(shù)據(jù)采集的硬件連接原理圖,。
為避免數(shù)據(jù)丟失,,采用乒乓緩存的方法緩沖采集到的數(shù)據(jù)流,在DSP的片上內(nèi)存為每個McBSP通道開設(shè)乒緩沖區(qū)和乓緩沖區(qū)。以12 MHz、1 bit采樣為例,,在片上內(nèi)存開辟2個30 KB的數(shù)據(jù)緩沖區(qū),,即每個緩沖區(qū)能夠存放20 ms的數(shù)據(jù)。系統(tǒng)運(yùn)行后,,EDMA控制器先將McBSP0采集到的數(shù)據(jù)寫入乒緩沖區(qū),,20 ms后乒緩沖區(qū)滿,EDMA控制器向CPU發(fā)出中斷請求,,對緩沖區(qū)數(shù)據(jù)進(jìn)行運(yùn)算處理,。同時,EDMA向乓緩沖區(qū)寫數(shù)據(jù),,這樣通過不斷的乒乓切換完成數(shù)據(jù)的緩沖存儲,。
1.3 查找表數(shù)據(jù)存儲管理
在捕獲、跟蹤中需要用到大量查找表,,為了降低接收機(jī)的啟動時間,,直接把這些數(shù)據(jù)表格作為固件燒入到Flash中,而不用每次都由DSP通過程序重新生成,。所有查找表需要約15 MB的空間,,為了降低存儲空間,使用LZW無損壓縮算法進(jìn)行壓縮至約2 MB,。系統(tǒng)初始化時,DSP先讀取Flash中的數(shù)據(jù)表格,,然后執(zhí)行解壓程序?qū)ζ浣鈮海⒋嬗谄獾腟DRAM中提供給接收機(jī)做運(yùn)算時調(diào)用,。
本設(shè)計中使用了2片4 MB×32位的SDRAM芯片MT48LC4M32并聯(lián)連接到DSP的EMIFA口,,把程序運(yùn)行過程中對實(shí)時性要求較低的數(shù)據(jù)段和查找表分配到SDRAM中??偩€運(yùn)行在166 MHz的高速狀態(tài),,由專用的可配置的時鐘芯片ICS525對50 MHz的時鐘倍頻產(chǎn)生。
1.4 定位結(jié)果輸出模塊
衛(wèi)星導(dǎo)航接收機(jī)需要周期性地輸出定位結(jié)果以及其他相關(guān)信息,,通常輸出速率為1 Hz~5 Hz,,DSP的串行接口McBSP即可滿足要求。為了能夠?qū)⒔Y(jié)果在顯示設(shè)備上顯示,,數(shù)據(jù)的輸出需要兼容NMEA0183協(xié)議,,因此需要將McBSP口擴(kuò)展成符合RS-232標(biāo)準(zhǔn)的異步串行接口。
將DSP的McBSP端口的工作模式設(shè)為SPI模式作為主設(shè)備,,直接與MAX3111進(jìn)行連接,,DSP通過執(zhí)行相關(guān)的指令,設(shè)置MAX3111的相關(guān)控制字,,完成波特率、數(shù)據(jù)位,、奇偶校驗(yàn)等的設(shè)定,,然后向MAX3111輸出有效信息,,利用其片內(nèi)的轉(zhuǎn)換器實(shí)現(xiàn)UART到RS-232格式及電平的轉(zhuǎn)換,從而實(shí)現(xiàn)DSP與RS-232設(shè)備進(jìn)行異步數(shù)據(jù)傳輸,。
2 系統(tǒng)軟件結(jié)構(gòu)設(shè)計
2.1多星座接收機(jī)軟件設(shè)計
在多星座軟件接收機(jī)中,,對于來自多個不同星座的中頻數(shù)據(jù)的一部分軟件處理模塊可能是相同的。例如,,對于GPS導(dǎo)航接收機(jī)和Galileo導(dǎo)航接收機(jī)可以采用共同的定位模塊,。與單星座的軟件接收機(jī)相比,多星座的軟件接收機(jī)可能會有多個EDMA/McBSP的中斷處理程序和信號跟蹤處理模塊,。因此,,在針對多星座接收機(jī)的軟件設(shè)計中,對這些模塊的處理需要額外進(jìn)行,。軟件接收機(jī)的結(jié)果輸出如圖4所示,。
2.2 自舉引導(dǎo)功能的實(shí)現(xiàn)
為了保證接收機(jī)能夠脫離主機(jī)獨(dú)立工作,本設(shè)計采用ROM自舉加載模式,,接收機(jī)程序作為固件存儲在外部的非易失存儲器Flash中,,DSP復(fù)位后,先把外部存儲的程序加載到片上高速內(nèi)存中,,然后順序執(zhí)行片上RAM中的程序,。由于C64x只自動復(fù)制1 KB到片上內(nèi)存,而接收機(jī)的程序遠(yuǎn)遠(yuǎn)大于這個數(shù)量,,所以需要采用二級程序加載的方法,。二級程序加載按照如下方式進(jìn)行:
編寫二次引導(dǎo)程序代碼,然后燒寫到Flash中,。系統(tǒng)復(fù)位后,,DSP將通過EDMA控制器按照默認(rèn)的時序自動二次引導(dǎo)代碼加載到片上內(nèi)存的首地址中,傳輸完成后CPU從首地址開始執(zhí)行這段二次引導(dǎo)程序,。二次引導(dǎo)代碼首先配置EMIFB的相關(guān)寄存器,使其工作在16 bit總線時序下,,然后將衛(wèi)星導(dǎo)航接收機(jī)相關(guān)程序加載到CPU的片上指定空間。當(dāng)二次引導(dǎo)程序執(zhí)行完畢后自動跳轉(zhuǎn)到主程序的入口處,,開始執(zhí)行軟件接收機(jī)的相關(guān)程序,。
值得注意的是本設(shè)計中Flash采用16 bit數(shù)據(jù)線,所以EMIFB的地址線的最低位BEA1沒有連接到Flash芯片地址線的最低位A-1,,而C64x在ROM加載模式下是使用默認(rèn)時序8 bit加載,,即在自加載情況下EMIFB不能訪問本設(shè)計中Flash的奇地址。為了保證自加載成功,,需要對二次引導(dǎo)程序生成的二進(jìn)制(.bin)文件進(jìn)行修改,,將有效數(shù)據(jù)存放在偶地址單元,在奇地址單元填充任意數(shù)據(jù)。圖5所示為16 bit Flash與DSP的連接及自舉示意圖,。
2.3 接收機(jī)任務(wù)調(diào)度設(shè)計
軟件接收機(jī)程序是在CCS3.1開發(fā)環(huán)境下用C語言開發(fā)移植完成的,。由于DSP平臺資源有限,為了滿足實(shí)時性,,TI公司的DSP/BIOS操作系統(tǒng)將應(yīng)用程序按線程結(jié)構(gòu)化設(shè)計,,每個線程完成1個模塊化的功能,并允許高優(yōu)先級線程搶占低優(yōu)先級線程以及線程間的同步和通信[5],。把接收機(jī)的跟蹤,、捕獲、定位等功能模塊設(shè)置成相互獨(dú)立的線程,,線程之間的切換通過硬件中斷或軟件中斷來實(shí)現(xiàn),,并根據(jù)實(shí)時性要求為各個線程分配優(yōu)先級,其中跟蹤優(yōu)先級最高,,捕獲優(yōu)先級最低,,定位線程通過周期(PRD)函數(shù)來實(shí)現(xiàn),優(yōu)先級介于跟蹤和捕獲之間,。軟件接收機(jī)各個線程的功能以及它們之間的關(guān)系如下:
(1) 數(shù)據(jù)采集硬件中斷
EDMA觸發(fā)的硬件中斷具有最高優(yōu)先級,。該中斷由McBSP端口產(chǎn)生,并通過EDMA中斷觸發(fā),,每20 ms中斷1次,。中斷響應(yīng)程序中主要完成乒乓緩沖區(qū)的切換和數(shù)據(jù)拷貝工作。中斷處理完成后,,會立刻觸發(fā)跟蹤軟中斷,,以保證及時完成衛(wèi)星信號的跟蹤。
(2) 信號處理軟中斷
跟蹤線程軟中斷處理程序如果發(fā)現(xiàn)有需要跟蹤的導(dǎo)航衛(wèi)星,,則對緩沖區(qū)中的數(shù)據(jù)進(jìn)行跟蹤運(yùn)算,。跟蹤線程結(jié)束后,會根據(jù)當(dāng)前DSP處理器占用情況分時隙調(diào)用捕獲軟中斷,。跟蹤線程具有最高的軟中斷優(yōu)先級,。該中斷執(zhí)行時間與同時跟蹤的衛(wèi)星數(shù)量有關(guān)。
捕獲線程中斷處理程序可被所有其他線程搶占,,當(dāng)所有高優(yōu)先級的線程執(zhí)行完畢后,,捕獲才能繼續(xù)執(zhí)行。捕獲線程對緩沖區(qū)數(shù)據(jù)進(jìn)行捕獲處理,,將已捕獲的衛(wèi)星信息告知系統(tǒng),,以在下一次硬件中斷后對其進(jìn)行跟蹤,在DSP平臺的平均執(zhí)行時間為50 ms,。
(3) 定位線程周期中斷
定位周期線程執(zhí)行1次定位解算任務(wù),,并將定位結(jié)果寫入專門開辟的緩沖區(qū)中,,隨后EDMA控制器會自動將結(jié)果通過McBSP1端口傳輸?shù)斤@示設(shè)備。該中斷的優(yōu)先級高于捕獲線程,,但低于跟蹤線程,,在DSP平臺的平均執(zhí)行時間為3 ms,。
圖6所示為軟件接收機(jī)各線程之間的調(diào)度流程框圖,。
3 實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)中,將接收機(jī)平臺設(shè)置為12 MHz,,1 bit采樣,,通過射頻前端與GPS天線相連,實(shí)時接收GPS衛(wèi)星信號,,利用RTDX技術(shù)通過JTAG口將結(jié)果傳輸?shù)街鳈C(jī)進(jìn)行顯示,。根據(jù)對各線程運(yùn)算量的分析和實(shí)驗(yàn)驗(yàn)證可知,基于獨(dú)立DSP的衛(wèi)星導(dǎo)航接收機(jī)平臺可以很好地完成6~10顆衛(wèi)星的實(shí)時跟蹤,并能準(zhǔn)確定位,。圖7所示為對應(yīng)的電子地圖結(jié)果,。除此之外,本文所提到的多星座軟件接收機(jī)也開展了仿真試驗(yàn)測試,,目前能夠?qū)γ總€星座系統(tǒng)實(shí)現(xiàn)4~5顆衛(wèi)星的實(shí)時跟蹤,,其性能仍需進(jìn)一步提高。
本文詳細(xì)介紹了基于單顆高速定點(diǎn)DSP的實(shí)時衛(wèi)星導(dǎo)航軟件接收機(jī)平臺的設(shè)計實(shí)現(xiàn),。提供了詳細(xì)的硬件平臺結(jié)構(gòu)設(shè)計方案,,闡述了系統(tǒng)上電自加載功能的實(shí)現(xiàn)方法以及接收機(jī)軟件任務(wù)調(diào)度流程。根據(jù)本方案實(shí)現(xiàn)的衛(wèi)星導(dǎo)航軟件接收機(jī)具有低成本,、低功耗,、通用性好、功能可升級擴(kuò)展等優(yōu)點(diǎn),。
參考文獻(xiàn)
[1] 李方慧,王飛,何佩錕. TMS320C6000系列DSPs原理與應(yīng)用[M](第二版).北京:電子工業(yè)出版社,,2003.
[2] LEDVINA B M, POWELL S P, KINTNER P M, et al. A 12-channel real-timer GPS L1 software receiver[C]. ION GPS 2003. Portland, OR, 2003. 679-688.
[3] Texas Instruments. TMS320C6414T/15T/16T fixed-point digital signal processors[EB/OL].Dallas,Texas: SPRS226J, Texas Instruments, http:// www.ti.com. 2006.
[4] Texas Instruments.TMS320C6000 DSP enhanced direct memory access(EDMA)controller reference guide[J].Dallas, Texas: SPRU234, Texas Instruments,2003.
[5] Texas Instruments. DSP/BIOS user′s guide[J]. Dallas, Texas: SPRU423D, Texas Instruments, 2004.