一種基于FPGA+DSP的通用飛控計(jì)算機(jī)平臺(tái)設(shè)計(jì)
將按照上述流程設(shè)計(jì)的程序在FPGA中進(jìn)行測(cè)試。將FPGA串口和PC機(jī)連接,采用115 200波特率連續(xù)工作3分鐘,收發(fā)均無錯(cuò)誤字節(jié)。
本文引用地址:http://m.butianyuan.cn/article/249384.htm3.1.2 雙RAM緩沖機(jī)制
由于串口外設(shè)的波特率是115 200,屬于低速外設(shè),因此在串口數(shù)據(jù)和DSP之間采用雙端口RAM作為緩沖區(qū)。由于此FPGA上自帶片上RAM,因此可以利用開發(fā)環(huán)境自帶的IP核生成片上雙端口RAM,不用額外增加片外RAM器件(圖1)。雙端口RAM的實(shí)體定義和讀寫時(shí)序:
將每個(gè)RAM中的最后一個(gè)字節(jié)作為反映RAM存儲(chǔ)狀態(tài)的狀態(tài)字。RAM的狀態(tài)字代表的含義如下:
bit0:1-串口接收到新數(shù)據(jù)幀 0-無新數(shù)據(jù)幀;
bit1:1-數(shù)據(jù)已經(jīng)被讀取 0-數(shù)據(jù)未被讀取;
慣導(dǎo)和導(dǎo)引頭向彈載機(jī)每6 ms傳輸一幀數(shù)據(jù),將數(shù)據(jù)存儲(chǔ)到雙端口RAM中,同時(shí)將bit0置‘1’,bit1清零,即RAM狀態(tài)為“新數(shù)據(jù)幀未被讀取”。由于慣導(dǎo)和導(dǎo)引頭的數(shù)據(jù)不同步,因此DSP每1ms就查詢一次RAM的狀態(tài)字。若接收到新的數(shù)據(jù)幀(bit0=1),則讀取RAM數(shù)據(jù),并將“數(shù)據(jù)被讀取”位置1(bit1=1)。這樣,慣導(dǎo)和導(dǎo)引頭給DSP發(fā)送的數(shù)據(jù)延遲不超過1 ms,可以認(rèn)為慣導(dǎo)和導(dǎo)引頭的數(shù)據(jù)是實(shí)時(shí)同步的。
在串口接收數(shù)據(jù)期間,如果串口和DSP在同一時(shí)間操作RAM,可能導(dǎo)致DSP讀取到幀錯(cuò)亂的數(shù)據(jù)。為了保證數(shù)據(jù)幀的完整,不使兩者同時(shí)讀取RAM,采用雙RAM緩沖機(jī)制,即為每個(gè)串口配置2個(gè)雙端口RAM的作為緩沖,如圖5所示。串口數(shù)據(jù)接收程序通過查詢RAMa和RAMb的狀態(tài)字,若bit1=1,則將接收到的數(shù)據(jù)幀存儲(chǔ)到對(duì)應(yīng)的RAM中,完成之后將bit0置1,bit1清0,這個(gè)周期為6 ms。與此同時(shí),DSP每1 ms查詢一次RAMa和RAMb,若bit0為1,則讀取對(duì)應(yīng)RAM中的數(shù)據(jù)幀,同時(shí)將bit0清0。bit1置1。串口數(shù)據(jù)發(fā)送過程與接收類似,數(shù)據(jù)傳輸方向相反。
采用雙RAM緩沖機(jī)制,使得串口和DSP不在同一時(shí)間訪問同一RAM區(qū),避免了錯(cuò)幀和丟幀,同時(shí)保證了數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。
3.2 DSP軟件設(shè)計(jì)
DSP軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方式,分為應(yīng)用層和底層軟件兩部分。應(yīng)用層軟件主要實(shí)現(xiàn)飛控流程和飛控算法;底層軟件主要實(shí)現(xiàn)數(shù)據(jù)格式的轉(zhuǎn)換,以便通過DSP總線和FPGA進(jìn)行數(shù)據(jù)交換。
3.2.1 應(yīng)用層軟件設(shè)計(jì)
外部的慣導(dǎo)和導(dǎo)引頭6 ms產(chǎn)生一次數(shù)據(jù),DSP開啟1ms的定時(shí)器中斷,在中斷中每1 ms查詢一次雙端口RAM的狀態(tài)字,判斷是否有新數(shù)據(jù)產(chǎn)生,這樣采集的數(shù)據(jù)延遲不會(huì)超過1 ms。飛控解算的周期為6 ms,遙測(cè)數(shù)據(jù)發(fā)送的周期為12 ms,在定時(shí)器中斷程序中完成飛控解算和遙測(cè)數(shù)據(jù)發(fā)送。
中斷服務(wù)程序每1 ms運(yùn)行一次,每次首先查詢導(dǎo)引頭和慣導(dǎo)有沒有更新數(shù)據(jù),再讀取新數(shù)據(jù)存儲(chǔ)在全局結(jié)構(gòu)體里。每6ms用全局結(jié)構(gòu)體里得到的新數(shù)據(jù)解算一次飛控指令,得到舵機(jī)的輸出角度,輸出舵控指令,控制舵機(jī)。流程如圖6所示。
3.2.2 底層軟件設(shè)計(jì)
DSP底層軟件主要完成外部數(shù)據(jù)交換和數(shù)據(jù)格式的轉(zhuǎn)換。DSP通過XINTF產(chǎn)生讀寫時(shí)序(圖2圖3所示時(shí)序),F(xiàn)PGA也設(shè)計(jì)與之相匹配的時(shí)序完成兩者之間的數(shù)據(jù)交換。
DSP應(yīng)用層軟件使用的是浮點(diǎn)數(shù),而DSP和FPGA之間只能傳遞二進(jìn)制數(shù),因此需要按照IEEE標(biāo)準(zhǔn)進(jìn)行浮點(diǎn)數(shù)和二進(jìn)制數(shù)之間的轉(zhuǎn)換。根據(jù)IEEE標(biāo)準(zhǔn),可以用32位,即8個(gè)字節(jié)表示一個(gè)浮點(diǎn)數(shù)。如果將代表浮點(diǎn)數(shù)的4個(gè)字節(jié)組合成32位的整型數(shù)inte32,進(jìn)行強(qiáng)制類型轉(zhuǎn)換皆可以得到浮點(diǎn)數(shù),轉(zhuǎn)換函數(shù)如下:
將浮點(diǎn)數(shù)轉(zhuǎn)換成整型數(shù)的方法與此類似。底層軟件按照上述方法實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換,供應(yīng)用層調(diào)用。
4 系統(tǒng)驗(yàn)證
彈載機(jī)實(shí)物設(shè)汁制作完成之后可以利用半實(shí)物仿真平臺(tái)進(jìn)行測(cè)試,該半實(shí)物仿真平臺(tái)由上位機(jī)、慣導(dǎo)、舵機(jī)和三軸轉(zhuǎn)臺(tái)組成。如圖上位機(jī)的作用是模擬導(dǎo)彈動(dòng)力學(xué)模型和導(dǎo)引頭信息,并控制三軸轉(zhuǎn)臺(tái)運(yùn)動(dòng)模擬導(dǎo)彈姿態(tài)。導(dǎo)彈的運(yùn)動(dòng)信息由慣導(dǎo)測(cè)量之后發(fā)送給飛控計(jì)算機(jī),飛控計(jì)算機(jī)根據(jù)運(yùn)動(dòng)信息解算出舵機(jī)控制量控制舵機(jī)轉(zhuǎn)動(dòng),同時(shí)將遙測(cè)數(shù)據(jù)發(fā)送給上位機(jī)。上位機(jī)采集舵機(jī)反饋的實(shí)際角度,將其代入導(dǎo)彈動(dòng)力學(xué)模型,計(jì)算導(dǎo)彈姿態(tài),控制三軸轉(zhuǎn)臺(tái),這樣就形成了完整的半實(shí)物仿真回路。
仿真實(shí)驗(yàn)中,首先不接入飛控計(jì)算機(jī),由仿真計(jì)算機(jī)中的控制系統(tǒng)數(shù)學(xué)模型直接實(shí)現(xiàn)控制算法,所得導(dǎo)彈運(yùn)動(dòng)軌跡如圖8所示;將飛控計(jì)算機(jī)接入仿真回路,由飛控計(jì)算機(jī)實(shí)現(xiàn)制導(dǎo)控制算法所得運(yùn)動(dòng)軌跡如圖9所示。
由圖8和圖9的對(duì)比可以看出,飛控計(jì)算機(jī)接入之后飛控系統(tǒng)工作正常,導(dǎo)彈飛行軌跡基本一致,飛控計(jì)算機(jī)控制效果理想。
5 結(jié)論
文中提出了一種基于DSP+FPGA的飛控計(jì)算機(jī)設(shè)計(jì)方法,在半實(shí)物仿真系統(tǒng)中驗(yàn)證了其性能,滿足設(shè)計(jì)要求。解決了在多數(shù)字彈上設(shè)備存在情況下的數(shù)據(jù)幀實(shí)時(shí)同步問題。由于FPGA可以通過編程實(shí)現(xiàn)各種時(shí)序,所以此飛控計(jì)算機(jī)可以擴(kuò)展為除了RS422外部接口外的其他多種數(shù)字設(shè)備接口,滿足模塊化、通用化的實(shí)際應(yīng)用需求。
fpga相關(guān)文章:fpga是什么
晶振相關(guān)文章:晶振原理
評(píng)論