<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP在捷聯(lián)慣性制導(dǎo)技術(shù)中的應(yīng)用

          基于DSP在捷聯(lián)慣性制導(dǎo)技術(shù)中的應(yīng)用

          作者: 時(shí)間:2012-08-14 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257291.htm

          系統(tǒng)中的計(jì)算機(jī)模塊電路一般由狀態(tài)監(jiān)控、系統(tǒng)恢復(fù)和計(jì)算機(jī)電路組成。本模塊電路示意圖見圖3所示。該模塊是全系統(tǒng)的核心,而C32 更是核心中的核心。因此,有必要對(duì)其進(jìn)行專門的監(jiān)控,以保證其正常運(yùn)行。設(shè)計(jì)時(shí)可通過狀態(tài)監(jiān)控電路來對(duì)C32 和電源進(jìn)行監(jiān)控,以防因偶然情況出現(xiàn)死循環(huán)、程序偏離預(yù)定流程而導(dǎo)致系統(tǒng)失效。


          系統(tǒng)是歷史信息敏感型系統(tǒng),如果系統(tǒng)因故重啟后沒有歷史信息,其后的導(dǎo)航計(jì)算就沒什么意義。所以有必要對(duì)系統(tǒng)運(yùn)行的一些重要信息進(jìn)行保存,以便重啟后能迅速接替以前的工作。為此,本系統(tǒng)采用了兩條措施:第一是使用高速自動(dòng)存儲(chǔ)E2PROM對(duì)數(shù)據(jù)存儲(chǔ)器中的重要數(shù)據(jù)進(jìn)行自動(dòng)備份;第二是使用一個(gè)具有備份電源的實(shí)時(shí)時(shí)鐘芯片來記錄從上一次導(dǎo)航數(shù)據(jù)保存時(shí)刻到重啟后讀取導(dǎo)航歷史信息之間的時(shí)間長(zhǎng)度。該實(shí)時(shí)時(shí)鐘芯片在主電源掉電后能利用備份電源提供幾十秒的電能。系統(tǒng)恢復(fù)電路就由上述兩個(gè)芯片構(gòu)成。

          計(jì)算機(jī)電路是本模塊的核心電路,它由C32 、SRAM、FLASHROM和CPLD構(gòu)成。為提高性能,該電路采用32位數(shù)據(jù)總線和24位地址總線。同時(shí),由于C32被設(shè)置成了微機(jī)工作模式,因而具有自主引導(dǎo)功能。系統(tǒng)程序固化在FLASHROM中,SRAM則用作數(shù)據(jù)存儲(chǔ)器。將CPLD作為C32和外圍芯片的接口可實(shí)現(xiàn)很多邏輯電路功能。外圍芯片與C32的連接需要有一個(gè)唯一的I/O地址,因此在CPLD中設(shè)計(jì)的I/O地址分配電路可為每個(gè)外圍芯片分配一個(gè)I/O地址。另外,C32本身的外部中斷源只有四級(jí)(個(gè)),而系統(tǒng)中需要通過中斷來執(zhí)行的程序又不止四個(gè),故采用中斷和查詢相結(jié)合的辦法來解決這個(gè)問題。由于同一級(jí)中斷中包括好幾個(gè)中斷源,這樣,在該級(jí)中斷響應(yīng)時(shí)再對(duì)具體的中斷源進(jìn)行查詢即可確定需要具體響應(yīng)哪個(gè)中斷源。因此,在CPLD中設(shè)計(jì)了中斷分配電路。對(duì)于啟動(dòng)和運(yùn)行時(shí)間都很嚴(yán)格的中斷源來說,可由各種頻率的時(shí)鐘信號(hào)來對(duì)其進(jìn)行觸發(fā)。所以,CPLD中還設(shè)計(jì)了時(shí)鐘分頻電路,即用系統(tǒng)的精確時(shí)鐘來分頻以產(chǎn)生所需的各種頻率時(shí)鐘。

          對(duì)于I/O地址分配電路、中斷分配電路和時(shí)鐘分頻電路,如果用標(biāo)準(zhǔn)邏輯器件(74系列或54系列)來實(shí)現(xiàn),將需要很多芯片,這樣一方面將使電路部分的體積和功耗增加;另一方面也會(huì)使電路的規(guī)模擴(kuò)大、復(fù)雜性增加、可靠性下降。因此,這三個(gè)電路可用CPLD(復(fù)雜可編程器件)來實(shí)現(xiàn)。為了充分利用CPLD 的靈活性,系統(tǒng)中其它的一些邏輯電路也被放到這里。這樣,在一片170mm×170mm的小芯片
          中就可實(shí)現(xiàn)系統(tǒng)所需的大量邏輯功能。

          3.3 系統(tǒng)程序設(shè)計(jì)

          導(dǎo)航、制導(dǎo)計(jì)算都屬于實(shí)時(shí)計(jì)算。要實(shí)現(xiàn)這一要求,軟件就必須結(jié)合硬件來進(jìn)行設(shè)計(jì),以充分發(fā)揮硬件的功能。本設(shè)計(jì)充分利用了系統(tǒng)的中斷功能,并以中斷為主來進(jìn)行程序設(shè)計(jì),以使系統(tǒng)中各個(gè)部分的具體功能都可通過中斷程序來實(shí)現(xiàn)。其系統(tǒng)工作過程如下:

          加電開機(jī)→FLASH中的程序調(diào)入內(nèi)存→系統(tǒng)初始化、自檢→導(dǎo)航信息恢復(fù)→安裝中斷程序→打開中斷→待機(jī)。

          該系統(tǒng)的軟件包括主程序、子程序和各中斷響應(yīng)程序等部分。

          其中主程序是系統(tǒng)程序的框架,重要的初始化參數(shù)主要在主程序中定義,主程序通過調(diào)用子程序來完成系統(tǒng)初始化、自檢、導(dǎo)航信息恢復(fù)、系統(tǒng)配置、中斷程序配置等功能。其中,系統(tǒng)自檢程序主要檢測(cè)CPU、SRAM以及各接口芯片的工作是否正常。引導(dǎo)程序主要根據(jù)系統(tǒng)硬件中存儲(chǔ)的狀態(tài)信息來確定導(dǎo)航計(jì)算的起點(diǎn)。主要狀態(tài)信息有:系統(tǒng)是加電開機(jī)還是死機(jī)后重新啟動(dòng),以及上一次保存數(shù)據(jù)與當(dāng)前的時(shí)間間隔等。根據(jù)系統(tǒng)硬件中保存的狀態(tài)信息和非易失存儲(chǔ)器中保存的導(dǎo)航信息可確定當(dāng)前導(dǎo)航計(jì)算的基準(zhǔn)點(diǎn)。系統(tǒng)主程序流程如圖4所示。

          子程序主要用來完成一些特定的功能,包括導(dǎo)航子程序、控制子程序、通訊子程序和卡爾曼濾波子程序等。

          中斷程序由硬件中斷觸發(fā),除完成現(xiàn)場(chǎng)保護(hù)和硬件信息處理外,還可根據(jù)需要調(diào)用導(dǎo)航子程序、控制子程序、通訊子程序、狀態(tài)監(jiān)控子程序、卡爾曼濾波程序等,同時(shí)在處理完成后恢復(fù)現(xiàn)場(chǎng)并向主程序返回?cái)?shù)據(jù)。



          4 結(jié)束語(yǔ)

          捷聯(lián)是一種很有應(yīng)用價(jià)值的方法,隨著計(jì)算機(jī)技術(shù)的發(fā)展,該技術(shù)將迅速應(yīng)用于各種戰(zhàn)術(shù)武器中。本文并不企圖在理論上進(jìn)行創(chuàng)新,而是在技術(shù)上謀求好的實(shí)現(xiàn)方法。實(shí)驗(yàn)證明:用DSP芯片對(duì)慣性器件的信息進(jìn)行處理,并用可編程器件進(jìn)行邏輯電路的實(shí)現(xiàn),可簡(jiǎn)化系統(tǒng)電路,提高系統(tǒng)的運(yùn)算性能以及可靠性和靈活性。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: DSP 慣性制導(dǎo) Flash

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();