基于DSP的內嵌PCI總線的衛(wèi)星信號仿真器設計方案
3.3 衛(wèi)星信號仿真器應用程序框圖及相應PCI驅動的關鍵代碼分析
根據(jù)仿真器的總體設計,需要在PC機上實現(xiàn)二個功能模塊;
數(shù)字信號處理模塊該模塊是仿真器的核心模塊,實時仿真導航電文,計算衛(wèi)星偽距、各通道的頻率字和碼控制字等。
通信模塊 該模塊主要是將PC機計算得到的相關信息通過PCI傳遞給DSP。
考慮到整個仿真器數(shù)據(jù)要求的實時性,通過中斷函數(shù)實現(xiàn)PC機中的程序傳輸數(shù)據(jù),當DSP需要數(shù)據(jù)時,通過RSTSRC寄存器INTREQ位寫1產(chǎn)生一個中斷信號發(fā)送給PC機,但要使該中斷有效,必須要求主機狀態(tài)寄存器(HSR)中的INTAM位為0。因此在上位機程序中,初始化階段必須把該中斷使能位打開。應用程序的結構如圖7所示。
中斷處理步驟如下:
(1)應用程序打開中斷使能,系統(tǒng)等待中斷;
(2)如果中斷到來,則清除中斷標志,取消中斷源;
(3)在中斷函數(shù)中執(zhí)行數(shù)據(jù)傳輸;
(4)數(shù)據(jù)傳輸完后給DSP發(fā)中斷,實現(xiàn)與DSP的握手;
(5)重新開啟中斷源。
第(2)步和第(5)步在中斷使能函數(shù)中實現(xiàn)。
中斷響應函數(shù)的關鍵代碼如下:
PCI主機給DSP發(fā)中斷是通過將HDCR寄存器的DSPINT位置1實現(xiàn)的,要注意產(chǎn)生該中斷的有效前提條件是PCI的中斷使能寄存器(PCIIEN)HOSTSW位被使能,即HOSTSW=1。
為了便于使用PCI的驅動函數(shù)和以后驅動程序發(fā)布的需要,將驅動函數(shù)封裝在動態(tài)鏈接庫DLL中,它們中主要函數(shù)的關鍵代碼如下:
為了使PC機能夠正確地捕獲到由DSP傳來的中斷,在動態(tài)鏈接的DSP6416_IntEnable()函數(shù)中,必須設置內核模式下的中斷傳輸命令,因為它的優(yōu)先級比用戶模式下的中斷響應函數(shù)高,因而一旦DSP產(chǎn)生中斷,首先執(zhí)行的是內核模式下的中斷傳輸命令。由于DSP6416內嵌PCI產(chǎn)生的中斷屬于電平敏感中斷,如果不清除中斷它將一直有效,這將會導致中斷響應函數(shù)不斷執(zhí)行而死機。因此,必須在中斷使能函數(shù)設置中斷傳輸命令。在該例中,先從HSR中讀取一個DWORD,然后在中斷傳輸命令中設置CMD_MASK位。如果前面從HSR中讀出的值為0x04,則屏蔽DSP所產(chǎn)生的中斷,否則不執(zhí)行屏蔽命令,然后在中斷傳輸命令中向DSP的RSTSRC寫入0x10清除中斷。圖6中用到的關閉中斷使能和關閉設備2個函數(shù)可分別通過調用WinDriver中 WDC_IntDisable(),WDC_PciDe_viceClose(),WDC_DriverClose()的函數(shù)等實現(xiàn)。此外,調用這些函數(shù)之前要判斷中斷是否存在,設備是否打開,否則會出現(xiàn)嚴重錯誤。
3.4 衛(wèi)星信號仿真器實驗驗證
設置衛(wèi)星信號仿真器場景:用戶位置為北緯60°0000,東經(jīng)100°0000,高程300 m,靜止狀態(tài)。GG24接收機的解算結果如圖8所示。
GG24接收機解算結果是北緯59°5959.867 52,東經(jīng)99°5957.636 24,高程為308.02 m,與設置的場景,即北緯60°0000,東經(jīng)100°0000,高程300 m相當吻合。因此,這說明了仿真器的正確性和有效性。
4 結 語
在此設計的基于DSP6416內嵌PCI數(shù)據(jù)傳輸硬件平臺和驅動開發(fā)方案已用于多模衛(wèi)星信號仿真器中,該方案數(shù)據(jù)傳輸穩(wěn)定,速度快(可達115 MB/s),采用WinDriver軟件工具包開發(fā)DSP6416內嵌的PCI設備驅動程序,不但可以極大地縮短開發(fā)周期,而且還提高了衛(wèi)星信號仿真器的開發(fā)效率和整體性能。 function ImgZoom(Id)//重新設置圖片大小 防止撐破表格 { var w = $(Id).width; var m = 650; if(w
評論