基于獨立DSP平臺的實時衛星導航接收機的設計
2 系統軟件結構設計
2.1多星座接收機軟件設計
在多星座軟件接收機中,對于來自多個不同星座的中頻數據的一部分軟件處理模塊可能是相同的。例如,對于GPS導航接收機和Galileo導航接收機可以采用共同的定位模塊。與單星座的軟件接收機相比,多星座的軟件接收機可能會有多個EDMA/McBSP的中斷處理程序和信號跟蹤處理模塊。因此,在針對多星座接收機的軟件設計中,對這些模塊的處理需要額外進行。軟件接收機的結果輸出如圖4所示。 本文引用地址:http://www.104case.com/article/152134.htm
2.2 自舉引導功能的實現
為了保證接收機能夠脫離主機獨立工作,本設計采用ROM自舉加載模式,接收機程序作為固件存儲在外部的非易失存儲器Flash中,DSP復位后,先把外部存儲的程序加載到片上高速內存中,然后順序執行片上RAM中的程序。由于C64x只自動復制1 KB到片上內存,而接收機的程序遠遠大于這個數量,所以需要采用二級程序加載的方法。二級程序加載按照如下方式進行:
編寫二次引導程序代碼,然后燒寫到Flash中。系統復位后,DSP將通過EDMA控制器按照默認的時序自動二次引導代碼加載到片上內存的首地址中,傳輸完成后CPU從首地址開始執行這段二次引導程序。二次引導代碼首先配置EMIFB的相關寄存器,使其工作在16 bit總線時序下,然后將衛星導航接收機相關程序加載到CPU的片上指定空間。當二次引導程序執行完畢后自動跳轉到主程序的入口處,開始執行軟件接收機的相關程序。
值得注意的是本設計中Flash采用16 bit數據線,所以EMIFB的地址線的最低位BEA1沒有連接到Flash芯片地址線的最低位A-1,而C64x在ROM加載模式下是使用默認時序8 bit加載,即在自加載情況下EMIFB不能訪問本設計中Flash的奇地址。為了保證自加載成功,需要對二次引導程序生成的二進制(.bin)文件進行修改,將有效數據存放在偶地址單元,在奇地址單元填充任意數據。圖5所示為16 bit Flash與DSP的連接及自舉示意圖。
2.3 接收機任務調度設計
軟件接收機程序是在CCS3.1開發環境下用C語言開發移植完成的。由于DSP平臺資源有限,為了滿足實時性,TI公司的DSP/BIOS操作系統將應用程序按線程結構化設計,每個線程完成1個模塊化的功能,并允許高優先級線程搶占低優先級線程以及線程間的同步和通信[5]。把接收機的跟蹤、捕獲、定位等功能模塊設置成相互獨立的線程,線程之間的切換通過硬件中斷或軟件中斷來實現,并根據實時性要求為各個線程分配優先級,其中跟蹤優先級最高,捕獲優先級最低,定位線程通過周期(PRD)函數來實現,優先級介于跟蹤和捕獲之間。軟件接收機各個線程的功能以及它們之間的關系如下:
(1) 數據采集硬件中斷
EDMA觸發的硬件中斷具有最高優先級。該中斷由McBSP端口產生,并通過EDMA中斷觸發,每20 ms中斷1次。中斷響應程序中主要完成乒乓緩沖區的切換和數據拷貝工作。中斷處理完成后,會立刻觸發跟蹤軟中斷,以保證及時完成衛星信號的跟蹤。
(2) 信號處理軟中斷
跟蹤線程軟中斷處理程序如果發現有需要跟蹤的導航衛星,則對緩沖區中的數據進行跟蹤運算。跟蹤線程結束后,會根據當前DSP處理器占用情況分時隙調用捕獲軟中斷。跟蹤線程具有最高的軟中斷優先級。該中斷執行時間與同時跟蹤的衛星數量有關。
捕獲線程中斷處理程序可被所有其他線程搶占,當所有高優先級的線程執行完畢后,捕獲才能繼續執行。捕獲線程對緩沖區數據進行捕獲處理,將已捕獲的衛星信息告知系統,以在下一次硬件中斷后對其進行跟蹤,在DSP平臺的平均執行時間為50 ms。
評論