激光陀螺作為捷聯(lián)慣性導(dǎo)航系統(tǒng)的核心器件,,其性能遠(yuǎn)優(yōu)越于傳統(tǒng)的機(jī)電陀螺,,已廣泛應(yīng)用于海、陸,、空,、天等軍用和民用導(dǎo)航領(lǐng)域。
在激光陀螺捷聯(lián)慣導(dǎo)系統(tǒng)中,慣性儀表(激光陀螺和加速度計(jì))直接“捆綁”在載體上,,所承受的力學(xué)環(huán)境要比平臺(tái)惡劣,。在某些軍用環(huán)境所要求承受的強(qiáng)烈振動(dòng)條件下,由于慣性組合體在力和運(yùn)動(dòng)的激勵(lì)下產(chǎn)生多項(xiàng)誤差,,系統(tǒng)姿態(tài)和位置誤差增長(zhǎng)較快,。研究表明,這些誤差項(xiàng)有一部分具有較好的補(bǔ)償性,,可以通過誤差補(bǔ)償減小或消除部分誤差,,從而提高系統(tǒng)在強(qiáng)振動(dòng)下的精度。這就需要將慣性儀表在振動(dòng)環(huán)境下的輸出數(shù)據(jù)高速采集并保存下來,,然后在PC機(jī)上進(jìn)行離線仿真以確定和分離各項(xiàng)誤差系數(shù),。由于數(shù)據(jù)量龐大,無法直接存儲(chǔ)在導(dǎo)航計(jì)算機(jī)中:例如以8 kHz對(duì)慣性儀表輸出進(jìn)行采樣,,每秒的數(shù)據(jù)量約為200 K字節(jié),。而原有捷聯(lián)慣導(dǎo)系統(tǒng)采用RS422接口與外部通訊,其最大波特率為1 M,。不足以將高速數(shù)據(jù)傳送給PC機(jī)保存下來,。因此,有必要在導(dǎo)航計(jì)算機(jī)外圍擴(kuò)展更高速的USB接口,,以實(shí)現(xiàn)導(dǎo)航計(jì)算機(jī)和PC機(jī)之間的高速通訊,。USB接口(Universal Serial Bus)是一種通用的高速串行通訊接口。USB2.0理論傳輸速度可達(dá)到480 Mb/s,,可以很好地解決數(shù)據(jù)在慣導(dǎo)系統(tǒng)與PC機(jī)之間的高速互傳問題,。
1 激光陀螺捷聯(lián)慣導(dǎo)系統(tǒng)的USB接口設(shè)計(jì)
1.1 USB接口芯片CY7C68013A
CY7C68013A是CYPRESS公司最新推出的USB2.O控制器,它既負(fù)責(zé)USB事務(wù)處理也兼具微處理器的控制功能,,還可作為USB外部芯片的主控芯片,,其小巧的體積及較高的性價(jià)比使得該芯片在各種USB設(shè)備上得到了廣泛的應(yīng)用。該芯片包括帶16KB片上RAM的高速8051單片機(jī),、4KBFIFO存儲(chǔ)器以及通用可編程接口(GPIF),、串行接口引擎(SIE)和USB2.0收發(fā)器,6條可編程控制輸出線,,9條地址輸出線和6條通用的準(zhǔn)備輸入線。數(shù)據(jù)線寬度可設(shè)為8位也可設(shè)為16位,,方便與不同的CPU接口,。圖1是CY7C68013A的內(nèi)部結(jié)構(gòu)功能框圖。
由于CY7C68013A硬件邏輯并不復(fù)雜,,加上可以充分利用FPGA的靈活性,,在導(dǎo)航計(jì)算機(jī)外圍擴(kuò)展CY7C68013A的線路板設(shè)計(jì)工作相對(duì)簡(jiǎn)單,將CY7C68013A的總線和控制信號(hào)與DSP導(dǎo)航計(jì)算機(jī)的FPGA相應(yīng)引腳正確相連即可。
USB接口的軟件設(shè)計(jì)要復(fù)雜一些,,主要是編寫CY7C68013A自身的固件程序,。
1.2 CY7C68013A的固件程序設(shè)計(jì)
CY7C68013A的固件程序主要用于USB芯片的端點(diǎn)配置、頻率設(shè)置,、數(shù)據(jù)寬度,、可編程標(biāo)志定義、中斷定義及特定功能的8051程序編寫等,。固件程序主要完成如圖2所示的任務(wù)流程,。
在上述固件程序當(dāng)中,CY7C68013A的初始化子程序TD_Init()的開發(fā)按照以下步驟進(jìn)行:按圖3中的規(guī)則配置端點(diǎn),;使CY7C68013A工作在SLAVE FIFO模式,,選擇BULK傳輸,使用3個(gè)端點(diǎn)EP2,、EP4和EP6,,全部采用雙緩沖方式;3個(gè)端點(diǎn)FIFO標(biāo)志分別定義為:FLGA為EP2的4字節(jié)接收可編程標(biāo)志,,F(xiàn)IGB為EP6的滿標(biāo)志,,F(xiàn)LGC為EP2的空標(biāo)志;數(shù)據(jù)寬度設(shè)為16位,。
1.3 丟幀問題及解決措施
在導(dǎo)航計(jì)算機(jī)與PC機(jī)間通過USB接口進(jìn)行了雙向高速通訊測(cè)試,。測(cè)試方法如下:PC機(jī)向?qū)Ш接?jì)算機(jī)傳輸一個(gè)數(shù)據(jù)包,導(dǎo)航計(jì)算機(jī)接收后回傳,,PC機(jī)接收后進(jìn)行正確性校驗(yàn),、傳輸、回傳和校驗(yàn)過程循環(huán)進(jìn)行,。測(cè)試中發(fā)現(xiàn)偶爾有丟幀現(xiàn)象出現(xiàn),。嘗試改變上位機(jī)中數(shù)據(jù)采集與后臺(tái)實(shí)時(shí)寫內(nèi)存線程的優(yōu)先級(jí)和改變CY7C68013A的端點(diǎn)大小及緩沖級(jí)別(如三緩沖、四緩沖)來解決這個(gè)問題,,但是丟幀現(xiàn)象依然存在,。
經(jīng)過較長(zhǎng)時(shí)間的分析與驗(yàn)證,找到了問題所在:PC機(jī)中運(yùn)行的Windows操作系統(tǒng)是一個(gè)多任務(wù)的操作系統(tǒng),,同時(shí)運(yùn)行著多個(gè)進(jìn)程,,系統(tǒng)在給每個(gè)進(jìn)程分配時(shí)間片時(shí)也是有一定的優(yōu)先級(jí)的,優(yōu)先級(jí)高的進(jìn)程占用時(shí)間片較多,,如果PC機(jī)在執(zhí)行某些其他進(jìn)程時(shí)占用時(shí)間超過了一定的限度,,就可能導(dǎo)致該讀出的數(shù)據(jù)沒有及時(shí)讀出,而下一幀數(shù)據(jù)又已送到緩沖區(qū),,覆蓋前一幀數(shù)據(jù),,從而造成丟幀,。
解決丟幀的辦法是在DSP的內(nèi)存中設(shè)置一個(gè)圓形緩沖區(qū),如果發(fā)現(xiàn)IN型端點(diǎn)的FIFO已滿(說明PC機(jī)未及時(shí)讀走FIFO中數(shù)據(jù)),,則將本幀數(shù)據(jù)存入圓形緩沖區(qū)里,,直到FIFO完全為空。
圓形緩沖區(qū)的結(jié)構(gòu)如圖4所示,。
在圖4中,,sptr為寫入數(shù)據(jù)指針,dptr為發(fā)送數(shù)據(jù)指針,。整個(gè)圓形緩沖區(qū)的大小設(shè)置為256 K字(32位),。若按8 K的數(shù)據(jù)存入速率,可以保存8 s數(shù)據(jù),。在PC機(jī)不能及時(shí)讀取IN端點(diǎn)FIFO數(shù)據(jù)的情況下,,這個(gè)圓形緩沖區(qū)可以起到很好的緩沖作用。
在程序執(zhí)行的初始時(shí)刻,,設(shè)置指針sptr等于dptr,。當(dāng)IN端點(diǎn)FIFO滿時(shí),DSP將數(shù)據(jù)按指針sptr存入圓形緩沖區(qū),,sptr隨之遞增,,而dptr保持不變。當(dāng)IN端點(diǎn)FIFO空時(shí),,DSP仍將數(shù)據(jù)按指針sptr存入圓形緩沖區(qū),,sptr隨之加1。但此時(shí)將從dptr指針處發(fā)送兩幀數(shù)據(jù)到FIFO中,,這種dptr追趕sptr的機(jī)制,,將保證圓形緩沖區(qū)不出現(xiàn)溢出現(xiàn)象:即不會(huì)出現(xiàn)sptr超過dptr一圈以上的情況。
1.4 通訊系統(tǒng)軟件整體設(shè)計(jì)
遵循軟件設(shè)計(jì)中盡量較少使用中斷的原則,,這里只使用1個(gè)4 K中斷,,其他三路信號(hào)都采用查詢方式,中斷分配如圖5所示,。
圖6為主程序流程,。USB從管道0接收PC機(jī)發(fā)來的命令,命令寫入EP2端點(diǎn)中,,此時(shí)在INT7管腳上產(chǎn)生USB中斷,。DSP通過查詢INT7中斷,將EP2中的命令及數(shù)據(jù)讀出,,對(duì)命令進(jìn)行解析,,并執(zhí)行相應(yīng)的指令工作。非周期指令執(zhí)行完后,,將接收數(shù)據(jù)寫入EP4端點(diǎn),,PC機(jī)從管道1中將數(shù)據(jù)取走;周期指令執(zhí)行完后,,將接收數(shù)據(jù)寫入EP6端點(diǎn),,PC機(jī)從管道2中將數(shù)據(jù)取走。
圖7中的4 K中斷流程主要完成陀螺和加速度計(jì)脈沖及溫度數(shù)據(jù)的采集工作,,并向EP6端點(diǎn)寫入,。
2 通訊效果測(cè)試
將激光陀螺慣性導(dǎo)航系統(tǒng)固定于振動(dòng)模擬臺(tái),按照軍用環(huán)境的要求進(jìn)行了近千小時(shí)的振動(dòng)實(shí)驗(yàn),。實(shí)驗(yàn)過程中導(dǎo)航計(jì)算機(jī)高速采集慣性儀表在振動(dòng)環(huán)境下的輸出數(shù)據(jù),,并通過USB接口傳輸給PC機(jī)并保存下來。
當(dāng)圓形緩沖區(qū)的兩個(gè)指針各自達(dá)到最大位置后將從0地址重新開始,,長(zhǎng)時(shí)間雙向通訊的測(cè)試結(jié)果表明:將采用上述方法后的輸出數(shù)據(jù)與串口輸出數(shù)據(jù)進(jìn)行比對(duì),,發(fā)現(xiàn)無丟幀現(xiàn)象產(chǎn)生。在導(dǎo)航計(jì)算機(jī)上進(jìn)行離線仿真以確定和分離各項(xiàng)誤差系數(shù),,通過實(shí)時(shí)誤差補(bǔ)償減小了部分誤差,,從而提高了系統(tǒng)在強(qiáng)振動(dòng)下的精度。當(dāng)然,,PC機(jī)在與導(dǎo)航計(jì)算機(jī)的數(shù)據(jù)傳輸過程中,,建議盡量減少運(yùn)行的任務(wù)數(shù)量,特別是占用CPU時(shí)間較多的任務(wù),,如殺毒,、音頻視頻解碼等。
3 結(jié)論
本文將基于CY7C68013A的USB接口技術(shù)應(yīng)用于慣導(dǎo)系統(tǒng)數(shù)據(jù)通信,,創(chuàng)新性的設(shè)立圓形緩沖區(qū)解決了USB接口數(shù)據(jù)傳輸過程中的丟幀問題,。近千小時(shí)測(cè)試結(jié)果表明:上述USB接口通訊裝置可實(shí)現(xiàn)導(dǎo)航計(jì)算機(jī)和PC機(jī)間高速實(shí)時(shí)數(shù)據(jù)傳輸且期間無丟幀現(xiàn)象發(fā)生,表明該裝置具有良好的穩(wěn)定性與可靠性,。