?

以太網數字影像遙測編碼器的設計與實現

2013-09-17 10:25黃兆靖田增山
電視技術 2013年3期
關鍵詞:遙測線程編碼器

黃兆靖,劉 宇,田增山,王 寧

(重慶郵電大學光纖通信技術重點實驗室,重慶 400065)

以太網數字影像遙測編碼器的設計與實現

黃兆靖,劉 宇,田增山,王 寧

(重慶郵電大學光纖通信技術重點實驗室,重慶 400065)

以太網數字影像遙測編碼器在航天航空試驗中具有重要的作用。針對編碼器的軟件存在幀結構多樣性、實時性高、連續數據等特點,選用OMAP3530高端ARM微控制器和FPGA組合硬件平臺,以Linux作為操作系統,進行編碼器系統架構設計、軟件設計和軟件實現。通過實驗室和用戶現場測試驗證了軟件設計的正確性、完整性和可靠性。

遙測編碼器;微控制器;IRIG-106遙測;PCM幀格式;線程

遙測技術是一種將對象參量的近距離測量值傳輸到遠距離測量站以實現遠距離測量的技術,該技術主要用于集中檢測分散的或難以接近的被測對象,如被測對象距離遙遠、所處環境惡劣、或處于高速運動狀態。遙測技術廣泛應用于航天領域[1],這種遠程測量的能力是地面測量站獲取遠距離環境參數的重要部分。中國現行的遙測標準GJB21.2A是參考國際通用遙測標準IRIG-106制定的,其中使用的遙測碼(Pulse Code Modulation,PCM)具有抗干擾能力強、靈活性強、精度高、動態范圍大等特點。在傳統設計中,PCM遙測編碼器常通過硬件電路實現,使得設計一旦完成,幀格式、輸出格式及波特率都很難改變。同時,傳統設計的局限性也在于近距離測量值的獲取往往是通過傳感器實現的[1-2]。

針對現有遙測編碼器存在的問題,本文設計了一種基于Linux操作系統下的以太網數字影像遙測編碼器系統。通過UDP(User Datagram Protocol)實現多路影像數據傳輸;采用高端的微控制器ARM(Advanced RISC Machines)和FPGA(Field-Programmable Gate Array)的架構實現PCM幀的可編程;通過上位機對PCM幀格式進行設置,遙測輸出速率0~20 Mbit/s逐比特可調,NRZ-L(不歸零電平碼)、BIΦ-L(曼徹斯特碼)、RNRZ-L(隨機不歸零碼)三種碼型輸出可選。

1 系統架構和功能

本系統是應用于某型號的飛機上的多路影像數據實時網絡傳輸。系統網絡架構如圖1所示。

圖1 網絡架構圖

依賴系統框架,以太網數字影像編碼器有如下功能要求:能對1~4路影像同時進行編碼;對輸入的數據包大小可調;具有時間同步功能;數字影像編碼器參數可調。

2 軟件設計

2.1 軟件基本功能設計

按功能需求,本方案的系統以ARM為主控單元,選型為OMAP3530[3],在其上完成與前端采集器的控制信息交互、UDP數據傳輸、PCM幀格式及輸出參數配置、PCM成幀。FPGA是PCM碼型變換和控制輸出速率的主要單元,USB(Universal Serial Bus)是完成ARM與FPGA之間的主要傳輸通道[4]。

按照功能需求,本方案的軟件設計包括數據通信、處理、控制輸出、參數配置等基本功能,同時為用戶提供操作接口。系統實現的具體功能包括:

1)通信接口,負責數據的發送與接收。它不進行數據處理,僅僅將接收到的數據轉發給其他軟件模塊處理或者按照設備間通信協議要求發送數據出去。

2)數據處理,完成數據組幀以及將所組幀按照需求碼型進行變換。設備在開機狀態下數據的處理是持續進行的,針對FPGA適于處理較高復雜度,大容量數據的特點,數據編碼中的碼型變換在FPGA中實現。

3)參數配置,為用戶提供操作接口。設備開機后按照上一次參數配置或者通過PC機實時配置等,完成對設備工作狀態的設定,并對用戶配置信息做出恰當的反應。

4)時間碼模塊,負責從串口接收時間碼信息。

5)輸出響應,接收并響應外部信號,輸出PCM幀。按照數據輸出速率控制數據的輸出,同時保證無論有無網絡數據的情況都能無間隙輸出。

2.2 系統軟件結構設計

本系統軟件由通信接口、數據處理、參數配置、時間碼接收和輸出控制5個模塊組成,它們相互協作完成系統功能。軟件結構如圖2所示。

圖2 軟件結構圖

數據處理是整個軟件的核心模塊,通信接口數據、參數配置以及時間碼接收通過它在軟件中結合起來,形成完成的所需PCM幀。數據處理模塊把數據輸入的三部分模塊融合成一個整體,協調實現系統功能。參數配置用于接收用戶的各種配置命令并處理,提供人機交互的接口。數據通信接口提供了軟件與前端各類視頻采集器的網絡接口,它負責與視頻采集器交互以及接收視頻數據并將數據交付于數據處理模塊處理,同時可以將數據發送在該局域網內的所有設備。時間碼模塊是為數據打入時間標簽所提供的,時間碼來自于IRIG-B碼所解調出的時間信息,為數據在時間上的正確性提供驗證依據。輸出控制模塊在整個軟件系統中提供輸出控制接口。輸出控制模塊接收并響應從GPIO口提供的外部信號,并將數據處理模塊生成的數據發送給FPGA。

2.3 系統軟件流程設計

系統采用嵌入式Linux操作系統來實現。Linux操作系統具有功能強大、安全性高、穩定性好等特點。軟件主進程流程圖3所示。

圖3 主進程流程圖

本軟件啟動了Linux環境下的一個主進程。主進程在完成系統環境初始化后啟動5個線程。系統環境初始化中兩個重要的部分是輸出配置文件和XML文件解析。輸出配置文件確定各個輸出端口的輸出狀態,XML文件提供用戶所定義的PCM幀格式。

主進程啟動了5個線程來實現系統功能,分別是通信接口線程、數據處理線程、輸出響應線程、時間碼線程和參數配置線程。

通信接口線程實現通信接口模塊功能。當線程啟動后要開始向局域網中的設備以廣播形式定時發送心跳信息。編碼器設備在前端設備即采集器設備交換握手信息后就開始接收數據幀,同時監控采集設備是否正常。

時間碼線程實現時間碼模塊功能。時間碼信息是由IRIG-B時間碼信號解碼獲得。模塊在接收到時間碼信號后將其轉換成成幀所需時間碼,保存在全局結構體變量中供數據處理線程使用。時間碼的主要作用是在影像數據打上時間標簽。

數據處理模塊數據處理線程和數據的碼型轉換。數據處理線程主要實現PCM幀的組幀,將網絡視頻數據和時間碼按照PCM幀格式組幀。其中,數據的碼型變換在FPGA中實現,ARM和FPGA的通過USB進行數據傳輸,數據傳輸控制由輸出響應線程實現。

參數配置線程實現參數配置模塊功能。參數從串口接收并解析,解析之后保存到輸出配置文件和XML文件中便于下次開機使用。

3 系統軟件的實現

在圖2中清晰地介紹了本系統的軟件結構圖。同時在系統流程中也可知數據處理部分需要分成兩個步驟完成:首先,ARM中的數據處理線程完成組幀;其次,在FPGA中完成碼型變換。除此之外,軟件各部分都可以在ARM中通過線程來實現。

本系統在開機后要對USB加載驅動、加載本機IP和網關以及自動運行執行程序。USB是微控制器ARM向FPGA輸出數據的接口。IP地址與網關的設定為系統與網絡中設備通信提供支持。圖4為開機初始化的腳本文件。

圖4 開機初始化腳本文件(截圖)

本系統采用管道的方法實現線程通信。在主進程中,通過int pipe_fd[2]定義管道,通過pipe(pipe_fd)打開管道。打開管道后,通過pthread_create()函數開啟5個線程。下面對5個線程的實現分別進行介紹。

3.1 通信接口線程的實現

通信接口線程負責系統與局域網中設備的通信。通信接口的具體功能實現分成3個部分:廣播心跳包、與前端設備握手、接收數據幀。

通過使用定時器中斷向局域網定時廣播“心跳”幀,表征設備的健康狀態,需要使用定時器中斷實現。由于設備需要在局域網內廣播,在配置網絡時除了設置IP地址以外還要設置網關,即初始化腳本中的“route add default gw XXX.XXX.XXX.XXX”,才能實現全網段廣播。線程流程圖如圖5所示。

圖5 通信接口線程流程圖

3.2 時間碼模塊線程的實現

時間碼通過從時間碼解析設備獲得,由串口引入。時間碼設備的解析精度只能到秒級,獲得更高精度的時間標簽需要在控制端使用gettimeofday(&ustime,NULL)獲得毫秒級,該函數在系統函數頭文件time.h中定義。時間碼每1 s更新一次,其余時間中時間碼線程掛起。

3.3 數據處理線程的實現

在數據處理線程中,將網絡接口中獲得的視頻數據按照所需的幀格式組成PCM幀。PCM的幀結構按照IRIG-106遙測標準[5]確定,相關信息存儲在XML文件中。于此同時,需要為PCM幀打上時間標簽,時間標簽在PCM幀頭(幀同步字之后),占8 byte。需要確定的參數為:子幀字數、碼字長、子幀數、填充字、參數結構體、波特率、子幀ID字、碼型、同步字、同步字掩碼。

系統所需要的PCM幀結構有子幀,理論上應該通過二維數組實現,而對數組元素的訪問實際就是對數組元素對應的偏移地址的訪問。數組每多一維,訪問其變量就要多做一次乘法,編譯后生成的中間代碼就更長,效率自然也低。因此,為了提高成幀算法的效率,在實現時將二維數組降為一維數組。

線程中調用成幀函數framing()實現PCM成幀。數據處理線程只處理網絡數據即視頻數據,填充字成幀即空幀在輸出控制線程中實現。流程如圖6所示。

圖6 數據處理流程圖

3.4 參數配置線程的實現

參數配置線程是用于實現上位機對系統狀態的設置。設置包括PCM幀格式和數字信號、模擬信號輸出狀態,其中PCM幀格式從XML文件中獲得。解析XML文件調用libxml.lib庫文件中parser.h和tree.h的函數實現,同時在程序的Makefile里添加libxml.lib。由于系統開機時需要運行上次運行狀態,各種配置狀態都以文件形式保存,流程如圖7所示。使用串口接收字符串時,所接收字符串長度大于串口一次接收的字符數,需要循環接收。

圖7 參數配置流程圖

3.5 輸出響應線程的實現

輸出響應線程是接收FPGA提供的信號保證并響應輸出。本方案選用颶風的EP3C25E144I7N的FPGA,FIFO緩存設定為最大值。

由于輸出PCM數據流不能有間隙,即FPGA內FIFO內不能為空,ARM及時響應FPGA提供的GPIO信號就非常重要。按照設計需求,將輸出響應線程設置為最高優先級,同時,提高線程內程序效率來保證輸出響應。

在輸出端,PCM幀需按照設定的波特率輸出,并且無論有無網絡數據的情況都無間隙。所以在無網絡數據時需要調用成幀函數framing()實現填充字成幀。線程對外部事件的實時響應受時間片的影響,在不能減少線程數量的情況下,只有將FIFO的容量開為最大值來保證外部信號的頻率使線程及時響應同時輸出無間隙。輸出控制的流程圖如圖8所示。

線程中最耗時的部分在數據的輸出。數據通過USB傳輸,提高USB傳輸速率能提高響應的實時性,更改USB的傳輸速率通過更改Linux內核中USB的最大傳輸參數來實現[6]。分析所使用Linux內核版本2.6.32的./drivers/usb內 buffer.c和 usb-skeleton.c,將宏定義 MAX_TRANSFER改為4 kbyte,生成新的usb-skeleton.ko。

4 測試結果

圖8 輸出控制線程流程圖

本系統編碼器的軟件測試需要驗證軟件設計的正確性以及穩定性。主要分為兩部分:各線程功能測試和系統功能測試。

在各線程功能測試中,經過反復測試,每當FIFO數據量減少了總的存取量的1/8時,FPGA向ARM提供事件輸入信號,保證輸出響應線程能保證無間隙輸出。在測試過程中,參數配置線程偶爾會出現錯誤。分析現象可知,線程中串口為阻塞狀態,由外部電路的干擾,串口會接收到1~2個字符而造成錯誤。因此,將串口最小接收字符數設為2,newtio.c_cc[VMIN]=2保證不會因外部干擾解除阻塞,造成錯誤。同時,用于配置的串口線在放置時也要遠離電源線和信號線。

軟件系統測試中需要用到Windows XP系統的PC機3臺,以及多臺采集設備。PC機A安裝配置程序XMLControl.exe,用串口與設備相連;PC機B安裝PCM遙測解碼板卡和PCM解碼軟件,與設備的TTL輸出相連;PC機C需安裝視頻解碼軟件,用于接收PC機B的UDP數據和解視頻數據幀。反復測試,保證PCM幀字長8/16位可調,幀長16~1 024 byte可調,副幀數1~256可調,碼型NRZ-L,BIΦ-L,RNRZ-L 可選。

在實驗室環境下,使用模擬視頻發送程序。在用戶環境使用4個攝像頭將視頻采集后通過UDP協議實時傳輸給編碼器。系統測試平臺如圖9所示,編碼器與1臺視頻采集設備相連,進行握手后將視頻流成幀編碼,同時編碼器通過TTL信號線與安裝有PCM解調板卡的計算機相連,顯示器上顯示的是PCM解調軟件。圖9中所示,PCM信號與解調板卡已同步。圖10所示,PCM解調板卡收到一路采集設備的視頻數據。PCM碼速率為10 Mbit/s,視頻流速率約為2 Mbit/s。視頻采集設備最多為4路。解碼設備通過UDP協議將解碼后的數據流傳送給后端的視頻播放軟件。視頻采集前端發送的數據量與播放軟件接收到的數據相同,采集的視頻能實時播放且顯示的時間標簽與時間碼儀器時間同步。圖11為測試結果效果圖,說明該編碼器從數據接收、編碼、傳輸、輸出均滿足設計要求。通過10 h的持續測試,證明本系統軟件的穩定性。

5 結束語

本文設計了一種以太網數字影像遙測編碼器的軟件系統,該系統具有接收UDP網絡的影像數據,并且完成遙測IRIG106標準的PCM編碼,現實NRZ-L,BIΦ-L和RNRZ-L三種編碼方式。該系統實時性高、穩定性好,在航空航天領域所需要的實時視頻傳輸系統中具有較高的應用前景。

圖11 編解碼后視頻回放效果圖(截圖)

:

[1]霍培峰.試飛測試技術[M].西安:中國飛行試驗研究室,1990.

[2]霍培峰,郭小兵.國外航空遙測發展[J].遙測遙控,2003,24(6):1-5.

[3]Texas Instruments.OMAP35X technical reference manual[EB/OL].[2011-12-09].http://www.ti.com.cn/cn/lit/ds/sprs507f/sprs507f.pdf.

[4]楊志坤,曾博,湯國文.基于FPGA的嵌入式系統USB接口設計[J].電子設計工程,2010,18(1):30-34.

[5]《遙測技術》編輯部.美國遙測標準和測試方法[M].北京:《遙測技術》編輯部,1982.

[6]劉輝,向濤,張杰.基于Linux下TDM模塊的USB主機端驅動的開發[J].電視技術,2011,35(19):51-53.

劉 宇(1972— ),教授,博士生,主研慣性傳感系統及信號處理;

田增山(1968— ),教授,博士生,主研個人通信、衛星導航、無線定位、信號檢測與處理、語音視頻處理;

王 寧(1987— ),碩士生,主研集成電路。

Design and Implementation of Ethernet Digital Image Telemetry Encoder

HUANG Zhaojing,LIU Yu,TIAN Zengshan,WANG Ning

(Institute of Optical Communication Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China)

The Ethernet digital image telemetry encoder plays an important role in aerospace test.According to its characteristics of various of frames structure,high real-time and continuous data,this article puts forward a scheme which used the combination hardware platforms of high-performance ARM microcontroller OMAP3530 and FPGA,with Linux operating system,to design the software architecture of encoder and the detailed design and implementation of software.Through the laboratory and field environment test,the software of the system is verified the integrity and reliability.

telemetry encoder;microcontroller;telemetry irig-106;PCM frame format;thread

TN762;P715.7

A

【本文獻信息】黃兆靖,劉宇,田增山,等.以太網數字影像遙測編碼器的設計與實現[J].電視技術,2013,37(3).

重慶市科技攻關項目(國際合作類)(2011GZ0017)

黃兆靖(1987— ),碩士生,主研集成電路;

責任編輯:魏雨博

2012-07-29

猜你喜歡
遙測線程編碼器
基于C#線程實驗探究
基于國產化環境的線程池模型研究與實現
遠程控制式遙測地面站關鍵技術研究
基于WPF的遙測CAS信息實時監控系統設計開發
自適應模糊PID控制的遙測方艙溫度調節方法
基于FPGA的同步機軸角編碼器
淺談linux多線程協作
應用旋轉磁場編碼器實現角度測量
淺談如何提高遙測狀態估計合格率
多總線式光電編碼器的設計與應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合