基于DSP+FPGA的數字導彈飛控計算機設計
摘要:針對在舵機、導引頭、慣導等彈上設備日益數字化的趨勢下飛控系統的需求,提出了一種基于DSP+FPGA結構的通用飛控計算機平臺。DSP+FPGA結構能發(fā)揮兩種處理芯片各自的優(yōu)勢,而且具有良好的通用性和擴展性。針對多個(gè)外部設備數據同步問(wèn)題,采用2個(gè)雙端口RAM交替工作的方法,保證各彈上設備數據幀的同步和完整連續。通過(guò)半實(shí)物仿真系統的驗證,飛控計算機性能良好,性能滿(mǎn)足設計要求。
本文引用地址:http://dyxdggzs.com/article/201610/309283.htm關(guān)鍵詞:DSP+FPGA;數字式飛控計算機;雙端口RAM;數據同步
飛控計算機是現代導彈制導與控制系統的核心裝置,其性能的好壞直接關(guān)系到精確制導的精度和殺傷目標的概率。近年來(lái)舵機、導引頭、慣導等彈載設備日益向著(zhù)數字化方向發(fā)展,因此設計一種能兼容多數字式設備的通用飛控計算機平臺尤為重要。傳統的單處理器核心飛控計算機難以在多通道異步數據收發(fā)的同時(shí)保證數據處理速度,難以滿(mǎn)足現代導彈的要求。本文提出了一種基于DSP+FPGA結構,對外接口為422的通用數字飛控計算機平臺。此平臺能充分發(fā)揮DSP的運算速度,實(shí)現飛控算法。采用基于FPGA的雙RAM緩沖機制,能很好地解決異步串行數據實(shí)時(shí)同步數據處理問(wèn)題,滿(mǎn)足飛控系統需求。
1 設計思想和工作原理
1.1 設計思想
對于單DSP核心的飛控計算機,要收發(fā)多路異步串行數據就會(huì )占用多路中斷,導致中斷響應不及時(shí)造成數據丟失。同時(shí)多路中斷也會(huì )影響到數據傳輸的實(shí)時(shí)性。飛控計算機對數據的完整性和實(shí)時(shí)性要求較高,傳統單DSP核心不能滿(mǎn)足彈上多數字式設備的要求。由于FPGA具有強大的并行處理能力,所以采用增加一片FPGA用于異步串行數據的收發(fā)的方法彌補單DSP核心的缺陷。DSP+FPGA的結構能將DSP從繁瑣的外部接口管理中解放出來(lái),充分發(fā)揮DSP的運算優(yōu)勢,提高運算效率的同時(shí)易于維護和擴展。
1.2 飛控計算機工作原理
飛控計算機的一般工作過(guò)程如下:飛控計算機上電之后進(jìn)行自檢,向載機發(fā)出“導彈存在”指令。飛控計算機接收載機的裝訂信息,完成初始對準,并且向載機發(fā)出“允許發(fā)射”指令。當導引頭探測到目標向飛控計算機發(fā)出導引數據時(shí),飛控計算機向載機發(fā)出“目標截獲”指令。載機經(jīng)過(guò)判斷決策,向飛控計算機給出“發(fā)射”指令。發(fā)射之后,飛控計算機進(jìn)行飛行時(shí)間計時(shí),并開(kāi)始按照已有的控制率,結合慣導和導引頭輸入進(jìn)行飛控解算,得出四路舵機控制信號信號,控制導彈運動(dòng);并將接收到慣導數據、導引頭數據、舵控量等內容組成遙測信息,發(fā)送給觀(guān)測人員。
2 結構和硬件設計
根據飛控計算機工作原理,它具備以下功能:
能夠收發(fā)裝訂、慣導、導引頭和遙測等數據;
能夠實(shí)現導引率,完成導航數據解算功能;
能夠控制執行機構——舵機。
RS422通信協(xié)議具有抗干擾能力強,傳輸距離遠,實(shí)現簡(jiǎn)單的特點(diǎn),已經(jīng)被各種數字設備廣泛采用。本彈載機對外通信接口均采用422通信協(xié)議。根據飛控計算機的功能可以得出,此系統至少應該包含裝訂、慣導、導引頭、遙測數據的收發(fā)和舵機控制5路數據通信。由于彈載機工作時(shí)收發(fā)“導彈存在”、“目標截獲”、“允許發(fā)射”等開(kāi)關(guān)量,還需要開(kāi)關(guān)量的輸入輸出。故FPGA對外的接口共包括5路RS422和8位DIO通信接口。系統結構簡(jiǎn)圖如圖1所示(圖中XINTF接口和雙端口RAM的說(shuō)明見(jiàn)本文第4部分)。

DSP選用TI公司的高性能浮點(diǎn)處理器TMS320F28335,150 MHz主頻,性能相比于2812有大幅提升,廣泛應用于控制系統。FPGA選用ALTERA的Cyclone II系列,完全滿(mǎn)足應用需求。DSP+FPGA組成的最小系統主要由電源、復位電路、晶振、燒寫(xiě)接口等部分組成。電源芯片選用TPS7 67D301PWP,可以為DSP提供3.3 V的工作電壓和1.9 V的內核電壓;FPGA的內核電壓由ASM1117-1.2穩壓得到。DSP復位芯片采用MAX809S,晶振采用30 MHz的有源晶振;FPGA用50 MHz的有源晶振。配置芯片選用EPCS1,容量為1M bits,用AS模式燒寫(xiě)。
對外的RS422接口采用MAX3491協(xié)議芯片實(shí)現。MAX3491將FPGA的TTL電平轉換成422差分電平,和彈上設備通信。由于FPGA引腳的驅動(dòng)能力弱,因此對外的8位DIO采用74LN244芯片,增強驅動(dòng)能力。
3 軟件設計
DSP通過(guò)XINTF接口與FPGA通信。DSP將地址傳遞給FPGA,FPGA經(jīng)過(guò)地址譯碼操作對應外部設備數據。
3.1 FPGA軟件設計
FPGA主要功能是完成5路RS422串口數據的同時(shí)收發(fā)操作開(kāi)關(guān)量的輸入和輸出,并和DSP交換數據。FPGA可使用進(jìn)程語(yǔ)句實(shí)現并行運行,對各外設的操作都是實(shí)時(shí)并行的,相互之間沒(méi)有影響。
3.1.1 串口通信
先將時(shí)鐘通過(guò)分頻得到8倍于波特率的串口時(shí)鐘。數據接收時(shí),根據串口通信的特點(diǎn),首先判斷低電平起始位。檢測到起始位之后,按照嚴格地每八個(gè)時(shí)鐘一位的關(guān)系采集一個(gè)字節8位的電平。由于噪聲的存在可能會(huì )導致采集到的瞬時(shí)電平有誤,此時(shí)采用表決機制,即在8個(gè)時(shí)鐘期間采樣3次,以其中2次相同的電平為準。實(shí)驗證明,表決機制能極大排除隨即噪聲干擾,降低串行通信的誤碼率。接收到數據之后存儲在對應的雙端口RAM中,等待DSP讀取。串口數據接受流程如圖2所示。

數據發(fā)送時(shí)先從雙端口RAM中讀出需要發(fā)送的數據,按照串口時(shí)鐘,先發(fā)送起始位(低電平),再依次通過(guò)移位寄存器將8位的數據轉換成串行的‘0’/‘1’發(fā)出。主要由下面語(yǔ)句實(shí)現:
txd=txd_buf(0);
txd_buf(6 downto 0)=txd_buf(7 downto 1);
其中txd是要發(fā)送的1位邏輯電平,txd_buf中存儲著(zhù)將要發(fā)送的數據。發(fā)送流程如圖3所示。

將按照上述流程設計的程序在FPGA中進(jìn)行測試。將FPGA串口和PC機連接,采用115 200波特率連續工作3分鐘,收發(fā)均無(wú)錯誤字節。
3.1.2 雙RAM緩沖機制
由于串口外設的波特率是115 200,屬于低速外設,因此在串口數據和DSP之間采用雙端口RAM作為緩沖區。由于此FPGA上自帶片上RAM,因此可以利用開(kāi)發(fā)環(huán)境自帶的IP核生成片上雙端口RAM,不用額外增加片外RAM器件(圖1)。雙端口RAM的實(shí)體定義和讀寫(xiě)時(shí)序:


將每個(gè)RAM中的最后一個(gè)字節作為反映RAM存儲狀態(tài)的狀態(tài)字。RAM的狀態(tài)字代表的含義如下:

bit0:1-串口接收到新數據幀 0-無(wú)新數據幀;
bit1:1-數據已經(jīng)被讀取 0-數據未被讀取;
慣導和導引頭向彈載機每6 ms傳輸一幀數據,將數據存儲到雙端口RAM中,同時(shí)將bit0置‘1’,bit1清零,即RAM狀態(tài)為“新數據幀未被讀取”。由于慣導和導引頭的數據不同步,因此DSP每1ms就查詢(xún)一次RAM的狀態(tài)字。若接收到新的數據幀(bit0=1),則讀取RAM數據,并將“數據被讀取”位置1(bit1=1)。這樣,慣導和導引頭給DSP發(fā)送的數據延遲不超過(guò)1 ms,可以認為慣導和導引頭的數據是實(shí)時(shí)同步的。
在串口接收數據期間,如果串口和DSP在同一時(shí)間操作RAM,可能導致DSP讀取到幀錯亂的數據。為了保證數據幀的完整,不使兩者同時(shí)讀取RAM,采用雙RAM緩沖機制,即為每個(gè)串口配置2個(gè)雙端口RAM的作為緩沖,如圖5所示。串口數據接收程序通過(guò)查詢(xún)RAMa和RAMb的狀態(tài)字,若bit1=1,則將接收到的數據幀存儲到對應的RAM中,完成之后將bit0置1,bit1清0,這個(gè)周期為6 ms。與此同時(shí),DSP每1 ms查詢(xún)一次RAMa和RAMb,若bit0為1,則讀取對應RAM中的數據幀,同時(shí)將bit0清0。bit1置1。串口數據發(fā)送過(guò)程與接收類(lèi)似,數據傳輸方向相反。

采用雙RAM緩沖機制,使得串口和DSP不在同一時(shí)間訪(fǎng)問(wèn)同一RAM區,避免了錯幀和丟幀,同時(shí)保證了數據傳輸的實(shí)時(shí)性。
3.2 DSP軟件設計
DSP軟件設計采用模塊化設計方式,分為應用層和底層軟件兩部分。應用層軟件主要實(shí)現飛控流程和飛控算法;底層軟件主要實(shí)現數據格式的轉換,以便通過(guò)DSP總線(xiàn)和FPGA進(jìn)行數據交換。
3.2.1 應用層軟件設計
外部的慣導和導引頭6 ms產(chǎn)生一次數據,DSP開(kāi)啟1ms的定時(shí)器中斷,在中斷中每1 ms查詢(xún)一次雙端口RAM的狀態(tài)字,判斷是否有新數據產(chǎn)生,這樣采集的數據延遲不會(huì )超過(guò)1 ms。飛控解算的周期為6 ms,遙測數據發(fā)送的周期為12 ms,在定時(shí)器中斷程序中完成飛控解算和遙測數據發(fā)送。
中斷服務(wù)程序每1 ms運行一次,每次首先查詢(xún)導引頭和慣導有沒(méi)有更新數據,再讀取新數據存儲在全局結構體里。每6ms用全局結構體里得到的新數據解算一次飛控指令,得到舵機的輸出角度,輸出舵控指令,控制舵機。流程如圖6所示。

3.2.2 底層軟件設計
DSP底層軟件主要完成外部數據交換和數據格式的轉換。DSP通過(guò)XINTF產(chǎn)生讀寫(xiě)時(shí)序(圖2圖3所示時(shí)序),FPGA也設計與之相匹配的時(shí)序完成兩者之間的數據交換。
DSP應用層軟件使用的是浮點(diǎn)數,而DSP和FPGA之間只能傳遞二進(jìn)制數,因此需要按照IEEE標準進(jìn)行浮點(diǎn)數和二進(jìn)制數之間的轉換。根據IEEE標準,可以用32位,即8個(gè)字節表示一個(gè)浮點(diǎn)數。如果將代表浮點(diǎn)數的4個(gè)字節組合成32位的整型數inte32,進(jìn)行強制類(lèi)型轉換皆可以得到浮點(diǎn)數,轉換函數如下:

將浮點(diǎn)數轉換成整型數的方法與此類(lèi)似。底層軟件按照上述方法實(shí)現數據轉換,供應用層調用。
4 系統驗證
彈載機實(shí)物設汁制作完成之后可以利用半實(shí)物仿真平臺進(jìn)行測試,該半實(shí)物仿真平臺由上位機、慣導、舵機和三軸轉臺組成。如圖上位機的作用是模擬導彈動(dòng)力學(xué)模型和導引頭信息,并控制三軸轉臺運動(dòng)模擬導彈姿態(tài)。導彈的運動(dòng)信息由慣導測量之后發(fā)送給飛控計算機,飛控計算機根據運動(dòng)信息解算出舵機控制量控制舵機轉動(dòng),同時(shí)將遙測數據發(fā)送給上位機。上位機采集舵機反饋的實(shí)際角度,將其代入導彈動(dòng)力學(xué)模型,計算導彈姿態(tài),控制三軸轉臺,這樣就形成了完整的半實(shí)物仿真回路。

仿真實(shí)驗中,首先不接入飛控計算機,由仿真計算機中的控制系統數學(xué)模型直接實(shí)現控制算法,所得導彈運動(dòng)軌跡如圖8所示;將飛控計算機接入仿真回路,由飛控計算機實(shí)現制導控制算法所得運動(dòng)軌跡如圖9所示。
由圖8和圖9的對比可以看出,飛控計算機接入之后飛控系統工作正常,導彈飛行軌跡基本一致,飛控計算機控制效果理想。
5 結論
文中提出了一種基于DSP+FPGA的飛控計算機設計方法,在半實(shí)物仿真系統中驗證了其性能,滿(mǎn)足設計要求。解決了在多數字彈上設備存在情況下的數據幀實(shí)時(shí)同步問(wèn)題。由于FPGA可以通過(guò)編程實(shí)現各種時(shí)序,所以此飛控計算機可以擴展為除了RS422外部接口外的其他多種數字設備接口,滿(mǎn)足模塊化、通用化的實(shí)際應用需求。
評論