?

淺談一種基于FPGA的雙冗余422串口通信方法及實現

2020-10-09 11:13孫廣海
科學與信息化 2020年27期
關鍵詞:正確性實時性

孫廣海

摘 要 對于任何設備而言,無不重視對外交互接口的時效性和正確性。如何在有限的資源條件下保證通信的實時性和正確性成了通信設計的關注重點。本文介紹了一種基于FPGA實現雙冗余422串口通信方法。

關鍵詞 FPGA;雙冗余;實時性;正確性

1技術領域

本方法涉及電子對抗領域,尤其是電子對抗中與外部接口通信處理,具體而言涉及一種基于FPGA的雙冗余422串口通信方法設計。

本方法提供一種基于FPGA的雙冗余RS422通信方法及實現,該方法采用FPGA實現了雙路RS422串口通信的冗余備份,同時解決了每路RS422串口通信的主/從應答機制,提高了通信的實時性,同時降低了應用層任務處理資源的消耗[1]。

2背景技術

在現代電子對抗中,無論對于哪種系統設備而言,與外部接口通信都是關鍵環節。接收外部命令消息,上報自身設備信息都必須依賴于外部接口,所以外部接口通信尤其要保證穩定、高效。隨著近年來電子技術的發展,雷達體制和信號形式變得越來越復雜而多樣,戰場空間電磁密度不斷提升。各型設備上報的信息越來越復雜,數據量越來越大,對外部接口設計的實時性要求越來越高。而由于受限與平臺總線形式和外部接口通信協議,通信方法設計難度隨之提升,且重要性不言而喻。下面介紹某型平臺上某型設備對外通信方法設計。

該型直升機機上配置的是RS422總線,機上綜合任務系統與某型設備系統(以下簡稱設備系統)通過兩路RS422實現通信,兩路RS422為雙冗余關系。為實現每路RS422通信的可靠性,定義通信協議為點對點的主/從應答式全雙工422通信(傳輸周期50ms),綜合任務系統為主端,設備系統為從端。主端主動發送通信消息,從端在接收到主端發送的消息時,按照消息塊號判斷主端發送報文的正確性,正確則發送自身需上報的消息,主端接收到從端發送的消息報文時,根據從端發送的消息塊號判斷從端發送報文的正確性,正確則發送下一包報文,否則,重新發送當前報文。

若在設備系統軟件應用層實現如此通信機制,則對設備系統處理資源提出很大需求,最主要是CPU的占用率,占用大量CPU時間資源來處理422消息接收和422消息發送,由于其他任務運行優先級低于接口通信任務,導致其他任務無法搶占CPU運行時間,導致信息上報不及時。同時,由于CPU資源被占,導致通信接口接收消息和發送消息處理不及時,影響接口通信的實時性和準確性,接口通信低效。

為解決接口通信任務處理低效、實時性差的問題,我們采用FPGA來實現雙冗余和主/從應答通信機制的處理,釋放設備系統CPU資源用于其他數據處理。

現有的接口通信任務處理是在應用層運行兩個通信接收處理任務,每個接收任務處理一路RS422數據,兩個任務同時接收對應RS422鏈路數據,根據鏈路狀態,判別雙冗余特性,決定數據主路和輔路,主路實時接收422鏈路發送的字節數據,接收完整一個數據報文后,進行校驗和消息塊號的合法性判斷,數據判斷正確后發送給數據處理任務進行數據處理;輔路實時接收422鏈路數據,并判斷數據類型是否為首次握手報文,若為首次握手報文則發送給應用層數據處理任務處理,否則拋棄當前數據報文。當主路通信故障時,則處理輔路報文數據,當主路恢復正常通信后,再恢復主路數據處理。同時應用層運行一個數據發送任務,將待發送的數據緩存在FIFO中,數據接收任務接收到一個正確的通信報文后,將消息塊號傳遞給發送任務,發送任務根據當前消息塊號將需發送的數據報文發送給綜合任務系統,實現通信機制的主/從應答。數據發送任務將數據同時發送給兩路RS422,數據保持一致。

上述通信方法是基于應用層任務的處理方法,能實現雙冗余422主/從應答式通信,但在實際設備使用中主要存在以下問題:

(1)要處理兩路422接口數據接收和一路數據發送,需運行兩個數據接收任務和一個數據處理任務,增加了任務數量,增加了任務調度時間消耗;

(2)由于雙冗余特性,兩個接收任務必須實時接收數據處理,但只處理主路數據,主路通信故障時,才處理輔路數據,導致任務運行低效;

(3)由于通信機制發送周期為50ms,當無應用數據發送時,發送的是純通信包,用以保證通信鏈路的正常,兩個數據接收任務周期性讀取數據,應用層回復純通信包,任務運行效率較低;

(4)由于兩個數據接收任務是通過CPU時間搶占式調度,兩者任務不能同時運行,影響的數據接收處理的實時性;

(5)由于數據接收任務和發送任務優先級較其他任務優先級高,尤其是信號處理任務,導致其他任務搶占不到CPU運行資源或運行資源不足,導致信號處理無法完成,影響設備告警或偵察。

綜上所述,對應用層任務處理雙冗余422主/從應答式通信方法進行工程優化改進并實現,是設備適應平臺總線形式和通信機制的迫切需要,它的實現可以提高對外通信的效率和實時性,同時提高了應用層任務資源使用率[2]。

3方法內容

本方法目的在于提供一種基于FPGA的雙冗余422通信方法及實現,通過FPGA的并行處理,實現雙冗余422的同步判斷,實現通信的實時性;同時根據接收到的消息塊號將需要發送的消息報文發送給綜合任務系統,實現了每路422通信的主/從應答;在FPGA層實現純通信報文的回復,只將應用消息發送給應用層,保證了通信傳輸的高效性。

本方法的另一目的在于降低了應用層任務數量,同時去除了應用層中運行優先級高且高頻率重復運行的任務,降低了CPU的使用負荷,提高了信號處理效率。

為達成上述目的,本方法所采用的技術方案如下:

建立兩個獨立的接收FIFO,實時接收兩路422串口數據;

建立一個發送FIFO,用于存放應用層需發送的消息數據;

建立一個RAM,用于存放接收消息中消息塊號,默認初始化為0;

設定主路和輔路標記,實時接收兩路數據,優先處理主路數據,同時判斷輔路數據是否為“首次握手”命令,若為“首次握手”命令,則將消息報文發送給應用層,否則拋棄當前報文;

實時判斷兩路422通信狀態,當任意一路連續5個周期內未接收到數據時,則判斷該鏈路通信故障,并將故障信息發送給應用層,當一路通信故障時,調用另一路的數據;

判斷接收數據長度,校驗和消息塊號,若報文正確,則將消息塊號放入RAM中;

判斷報文類型,若為純通信包,則判斷發送FIFO中是否為空,若為空,則讀取RAM中消息塊號,發送純通信包給綜合任務系統,若不為空,則讀取發送FIFO中的一個報文消息和RAM中消息塊號,發送給綜合任務系統;

若接收報文為應用消息,則將應用消息發送給應用層;

接收應用層發送的上報數據,放入發送FIFO緩存中;

進一步的實施例中,所述的“首次握手”命令在FPGA層做一級判斷,當兩條鏈路同時收到“首次握手”命令時,只發送一次“首次握手”命令給應用層[3]。

4具體實施方式

為了更了解本方法的技術內容,特舉具體實施例說明如下。

第一步為鏈路狀態判斷流程,其實現包括以下步驟:

(1)設計兩個FIFO存儲器,用以存儲兩路422鏈路發送的數據;

(2)設計一個RAM存儲器,用于存儲接收消息的消息塊號,Ram存儲器設置為連續讀寫模式;

(3)每50ms檢查FIFO存儲器中是否有數據,若有數據,則讀取相應數據進行后續數據處理,若沒有數據,則統計周期次數,若連續5個周期FIFO中無數據,則將故障信息上報應用層。

第二步為雙冗余判別流程,其實現包括以下步驟:

(1)檢查FIFO1中是否有數據,若有數據,則判斷FIFO2中數據類型;

(2)若FIFO2中數據類型為“首次握手”,則判斷FIFO1中數據類型,若FIFO1中數據為“首次握手”,則處理FIFO1中數據;

(3)若FIFO1中數據類型不是“首次握手”,則優先處理FIFO2中數據,再處理FIFO1中數據;

(4)若步驟b中FIFO2中數據類型不是“首次握手”,則處理FIFO1中數據;

(5)若步驟a中FIFO1中無數據,則處理FIFO2中數據。

第三步為主/從應答機制判斷,其實現包括以下步驟:

(1)判斷FIFO中處理數據的長度、消息頭、檢驗和等是否正確,若不正確,則拋棄當前報文;

(2)若步驟a中FIFO中數據正確,則判斷報文中消息塊號與Ram中消息塊號是否連續,若不連續,則拋棄當前報文;

(3)若步驟b中消息塊號連續,則對報文數據進行處理。

5驗證說明

經驗證:該方法實現了雙冗余主/從應答式通信;解決了系統軟件處理時間和處理資源不足的問題;同時保證了數據傳輸時的可靠性與實時性。

參考文獻

[1] 徐光輝,程東旭,黃如,等.基于FPGA的嵌入式開發及應用[M].北京:電子工業出版社,2006:109.

[2] 巫忠躍,岳青,王奧.基于FPGA的短波通信信道多徑效應模擬[J].通信技術,2019(11):2808-2812.

[3] 趙龍,汪弈舟,黃明.可見光通信系統設計與實現—基于FPGA全數字控制[J].工業技術創新,2019(6):38-42.

猜你喜歡
正確性實時性
從尋常計算錯例看課堂教學的缺失
淺談如何提高水質檢測結果準確性
計算機控制系統實時性的提高策略
“正確性”與“實用性”的初探
可編程控制器的實時處理器的研究
基于B/S的實時用戶行為檢測管理系統設計與實現
實現FPGA與PC的串行通信
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合