国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ARM11的視頻無線異步串行傳輸系統(tǒng)的設(shè)計

2014-09-18 07:11方曉科伍耀常黃繼聰
電視技術(shù) 2014年9期
關(guān)鍵詞:編解碼線程解碼

方曉科,趙 利,伍耀常,黃繼聰

(桂林電子科技大學(xué)信息與通信學(xué)院,廣西桂林 541004)

與傳統(tǒng)模擬視頻系統(tǒng)相比,數(shù)字視頻系統(tǒng)具有可數(shù)字化采集、儲存、處理、傳輸?shù)忍攸c(diǎn),以及視頻質(zhì)量高、抗干擾能力強(qiáng)等優(yōu)勢,已得到廣泛應(yīng)用。某微波視頻傳輸系統(tǒng),目前采用模擬技術(shù)體制,存在占用帶寬較大,可用頻點(diǎn)較少,而且相鄰信道之間會相互干擾,多系統(tǒng)無法同時工作,在傳輸過程中容易造成顏色的失真等系列問題,需要進(jìn)行技術(shù)改造,實(shí)現(xiàn)數(shù)字化。

為了解決這些問題,在原系統(tǒng)保留射頻模塊和主要功能不變的基礎(chǔ)上,需要對系統(tǒng)進(jìn)行數(shù)字化改造。新系統(tǒng)以基于Linux的ARM11多媒體處理平臺為核心,實(shí)現(xiàn)視頻數(shù)字化采集和壓縮處理以及收發(fā)處理,實(shí)現(xiàn)彩色LCD視頻播放;采用異步串行傳輸方式,減少開發(fā)的難度和周期;采用mmap和多線程方式,優(yōu)化了視頻數(shù)據(jù)讀取的實(shí)時性,保證了視頻的流暢性。采用中頻CP-FSK調(diào)制方式,實(shí)現(xiàn)高速視頻傳輸。新的數(shù)字視頻系統(tǒng)以簡單的結(jié)構(gòu)、低廉的成本,易實(shí)現(xiàn)的技術(shù)完成了高速視頻的采集、壓縮處理、數(shù)字傳輸和實(shí)時回放,達(dá)到了設(shè)計目標(biāo)。

1 系統(tǒng)方案

1.1 視頻采集與發(fā)送端方案

保留原有微波發(fā)射電路的中頻以上部分電路不變,采用中頻FSK調(diào)制器,以中頻頻率60 MHz為中心,實(shí)現(xiàn)高速FSK調(diào)制,調(diào)制速率設(shè)計為1 Mbaud。FSK調(diào)制采用靈活配置的DDS芯片AD9854實(shí)現(xiàn)。視頻采集與處理模塊采用基于ARM11的Linux嵌入式系統(tǒng),完成圖像采集、H.264壓縮處理以及視頻數(shù)據(jù)的發(fā)送,采用觸摸屏顯示采集到的視頻。視頻數(shù)據(jù)經(jīng)過壓縮和成幀處理后送到FSK調(diào)制器,發(fā)送方案如圖1所示。

圖1 視頻采集與發(fā)送框圖

串行數(shù)據(jù)傳輸有同步和異步兩種方式。同步方式性能好,但收發(fā)處理復(fù)雜,軟硬件成本高,而異步方式實(shí)現(xiàn)簡單、方便、成本低。綜合考慮各種因素,方案采用UART異步串行方式。由于現(xiàn)有嵌入式平臺UART所支持的最大速率為115.2 kbit/s,無法滿足設(shè)計要求,因此采用USB轉(zhuǎn)UART方式,提升串口傳輸速率。采用單片CP2102實(shí)現(xiàn)USB轉(zhuǎn)UART,速率最高可達(dá)1 Mbit/s,且具有硬件電路簡單,成本較低等特點(diǎn)。

視頻采集與處理模塊可以采用三星公司的多媒體處理器S3C6410。S3C6410處理器集成了視頻處理子系統(tǒng)MPEG-4/H.263/H.264協(xié)處理器和ARM內(nèi)核以及多種外設(shè)。開發(fā)平臺前期選用廣州友善之臂計算機(jī)公司生產(chǎn)的Tiny6410開發(fā)板,支持USB攝像頭輸入,支持彩色觸摸屏,滿足各項(xiàng)技術(shù)要求[1]。

1.2 視頻接收端與回放方案

保留原有微波接收電路的中頻以上部分電路不變,采用中頻FSK解調(diào)器,以中頻頻率38 MHz為中心,實(shí)現(xiàn)速率1 Mbit/s FSK解調(diào)。FSK解調(diào)采用集成PLL芯片NE564,單片直接完成FSK解調(diào),接收方案如圖2所示。

圖2 視頻接收與回放方案框圖

與發(fā)送端相同,視頻接收與處理模塊亦采用基于ARM11-S3C6410的Linux嵌入式系統(tǒng),完成視頻接收和H.264解碼處理以及LCD視頻回放。

2 硬件設(shè)計

2.1 高速異步串行接口設(shè)計

串行傳輸接口采用的USB轉(zhuǎn)UART方式,使用CP2102作為橋接器,外圍電路器件較少。S3C6410平臺通過USB實(shí)現(xiàn)與CP2102數(shù)據(jù)交換,經(jīng)過轉(zhuǎn)換后通過UART接口實(shí)現(xiàn)異步串行發(fā)送。該芯片集成了USB收發(fā)器和時鐘,USB控制器符合USB2.0規(guī)范,內(nèi)部集成48 MHz時鐘發(fā)生器,發(fā)送緩沖640 byte,接收緩沖為576 byte,波特率最高可達(dá)到 1 Mbaud[2]。

2.2 FSK調(diào)制電路設(shè)計

FSK調(diào)制方案采用亞德諾(Analog Devices)半導(dǎo)體公司高性能 DDS芯片 AD9854,其工作時鐘可以高達(dá)300 MHz,支持FSK,BPSK,PSK,CHIRP,AM 等5 種工作模式[3],串行通信速度達(dá)10 Mbit/s。

在FSK模式下,DDS的輸出頻率是頻率調(diào)諧字寄存器1、頻率調(diào)諧字寄存器2和引腳29(FSK/BPSK/HOLD)邏輯電平的函數(shù),引腳29的邏輯低電平選擇頻率f1,邏輯高電平選擇頻率f2。DDS系統(tǒng)框圖如下圖3。

圖3 DDS系統(tǒng)框圖

AD9854輸出的模擬信號經(jīng)過D/A處理,含有高次諧波分量,需進(jìn)行低通濾波改善頻譜純度。為此,采用Elliptic函數(shù),設(shè)計輸入輸出阻抗為50 Ω,通帶截止頻率61 MHz,阻帶截止頻率80 MHz,阻帶損耗60 dB,帶內(nèi)波動為1 dB的7階的LC低通濾波器。設(shè)計中采用了村田公司提供的實(shí)際電感電容模型替換ADS仿真設(shè)計出的理想模型,并不斷對LC參數(shù)進(jìn)行調(diào)整后得到了較為滿意的仿真結(jié)果。濾波器結(jié)構(gòu)和特性見圖4、圖5。

圖4 濾波器結(jié)構(gòu)圖

圖5 濾波器特性圖(截圖)

2.3 FSK解調(diào)電路設(shè)計

采用單片鎖相環(huán)芯片NE564[4]只需外接少量的輔助電路即可方便構(gòu)成如圖3所示的FSK解調(diào)電路,解調(diào)波形如圖6所示。

圖6 NE564解調(diào)電路

NE564解調(diào)電路的電路參數(shù)可設(shè)計如下:

NE564的l2/l3端的定時電容CT決定著壓控振蕩器的固有頻率,如式(1)

中心頻率為38 MHz時,計算得CT=11.96 pF,那么就可以選6.8 pF和10 pF的可調(diào)電容來調(diào)節(jié)VCO的中心頻率。

環(huán)路濾波電容的選定:當(dāng)規(guī)定環(huán)路的ξ=0.5,芯片供電電壓為5 V,且調(diào)節(jié)2腳電位器使2腳對應(yīng)電流I2為200 μA后,4、5腳的電容大小,可用如下式子計算得到4、5腳電容約為5 pF。

3 軟件設(shè)計

3.1 系統(tǒng)軟件架構(gòu)設(shè)計

考慮到Linux操作系統(tǒng)的開源、可移植和裁剪,選用Linux-OS平臺。在ARM11+Linux平臺上,為了實(shí)現(xiàn)既定目標(biāo),需要開發(fā)底層的USB/UART驅(qū)動、USB攝像頭驅(qū)動、LCD驅(qū)動和MFC驅(qū)動,以及視頻采集和回放、H.264硬編解碼、異步串行收發(fā)、LCD顯示與人機(jī)界面等應(yīng)用軟件。為保證視頻采集、壓縮、傳輸和解碼、回顯的實(shí)時性,采用了多線程方式設(shè)計。系統(tǒng)軟件架構(gòu)如圖7所示。

圖7 系統(tǒng)軟件結(jié)構(gòu)圖

3.2 視頻采集及處理軟件設(shè)計

3.2.1 視頻的采集模塊的設(shè)計

V4L2(Video for Linux 2)是Linux下開發(fā)視頻采集設(shè)備驅(qū)動的一套規(guī)范,為驅(qū)動程序的開發(fā)提供了清晰的模型和統(tǒng)一的接口。應(yīng)用程序使用統(tǒng)一的API函數(shù)來進(jìn)行操作,視頻采集流程如圖8。

1)使用open函數(shù)只讀模式打開攝像頭設(shè)備文件。接著調(diào)用V4L2接口函數(shù)設(shè)置視頻設(shè)備采集格式,采集視頻分辨率320×240等。相關(guān)參數(shù)保存在結(jié)構(gòu)體struct v4l2_format fmt中。

2)向驅(qū)動申請4個幀緩沖。

3)將申請到的幀緩沖映射(mmap)到用戶空間,用戶可直接獲取幀數(shù)據(jù)。

圖8 視頻采集流程

4)使用命令VIDIOC_QUERYBUF將申請到的緩沖區(qū)入采集消息隊(duì)列,系統(tǒng)返回每個緩沖區(qū)的首地址和長度,這些參數(shù)保存在結(jié)構(gòu)體struct V4L2_requestbuffers中。

5)開始采集視頻,當(dāng)采集到完整一幀視頻后,使用命令VIDIOC_DQBUF控制緩沖出消息隊(duì)列,用戶依據(jù)地址和幀長度就可以獲得采集到的視頻數(shù)據(jù)。

6)將幀緩沖重新入隊(duì)列,實(shí)現(xiàn)循環(huán)采集。

S3C6410 H.264壓縮處理單元進(jìn)行H.264壓縮編碼時要求輸入原始數(shù)據(jù)格式必須為YUV420。本文中USB攝像頭采集到的圖像數(shù)據(jù)格式是JPEG,需要進(jìn)行格式轉(zhuǎn)換。配合使用S3C6410 MFC-JPEG處理單元和Post Processor,可以將采集的圖像格式轉(zhuǎn)換成YUV420。

3.2.2 視頻的編碼與解碼

S3C6410編解碼單元具有高性能的H.264視頻編解碼功能,它還能同時處理圖像的壓縮和解壓,也能同時對不同格式的圖像進(jìn)行處理。編解碼單元包括BIT處理器和視頻編解碼模塊,BIT處理器能處理比特流和控制視頻編解碼硬件。編解碼單元可以達(dá)到全雙工720×480,30 f/s(幀/秒)壓縮和解壓的性能。

1)本文采用H.264編碼格式,對YUV420格式的數(shù)據(jù)進(jìn)行壓縮以減小其傳輸所需要的帶寬。H.264硬件壓縮方式,效率高且占用CPU時間少。經(jīng)測試使用該編碼器可以壓縮掉90%以上原始數(shù)據(jù),編碼順序如圖9。

2)H.264視頻格式的解碼同樣采用S3C6410 H.264硬件解碼器,解碼后的數(shù)據(jù)格式是YUV420,需要將該YUV420格式轉(zhuǎn)換成RGB格式后才能在LCD屏上預(yù)覽,流程如圖10所示。

圖9 H.264編碼流程圖

圖10 H.264解碼流程圖

3.2.3 視頻數(shù)據(jù)發(fā)送與接收幀處理

1)視頻數(shù)據(jù)幀格式

壓縮后對數(shù)據(jù)進(jìn)行拆分,組幀發(fā)送,依據(jù)驅(qū)動buffer大小,以每次發(fā)送1 024 byte對數(shù)據(jù)進(jìn)行劃分,并定長1 029 byte發(fā)送。劃分的每一組數(shù)據(jù)加入一些標(biāo)志位進(jìn)行組幀,幀頭2 byte,數(shù)據(jù)大小2 byte,幀尾1 byte,拆分組幀如圖11。

圖11 數(shù)據(jù)劃分處理結(jié)構(gòu)

在進(jìn)行數(shù)據(jù)劃分時要考慮兩種情況:一是編碼后的數(shù)據(jù)可以分成n整數(shù)幀,二是編碼后的數(shù)據(jù)不能整數(shù)劃分,能分成n幀和余下不足1 024 byte的數(shù)據(jù)幀m。

2)UART配置及收發(fā)流程

串口參數(shù)包括控制模式,波特率,起始位停止位數(shù)量等參數(shù),串口主要參數(shù)設(shè)置是在Linux提供的一個標(biāo)準(zhǔn)接口temios中,該接口在頭文件temios.h中定義。需要注意的是本文使用串口來傳遞二進(jìn)制數(shù)據(jù),所以要關(guān)閉軟件流控,發(fā)送模式設(shè)置為非規(guī)范模式,輸入的數(shù)據(jù)不會被合成一行,不對數(shù)據(jù)進(jìn)行加工處理。本設(shè)計在此設(shè)置串口主要參數(shù)如下:

配置好這些關(guān)鍵參數(shù)后,串口的運(yùn)行環(huán)境就準(zhǔn)備就緒了,這時就可以調(diào)用write函數(shù)將要發(fā)送的數(shù)據(jù)寫入串口設(shè)備。

串行數(shù)據(jù)經(jīng)過調(diào)制過后送如發(fā)射機(jī)無線傳輸。處理流程見圖12、圖13。

圖12 發(fā)送處理流程

圖13 接收處理流程

3)數(shù)據(jù)接收處理流程

接收機(jī)收到數(shù)據(jù)經(jīng)過低噪聲放大,下變頻到中心38 MHz頻率和中頻放大之后送入解調(diào)模塊恢復(fù)出串行數(shù)據(jù)。在接收上采用中斷方式,當(dāng)串行接收緩沖區(qū)接收到1 029 byte數(shù)據(jù)通過軟中斷信號告知應(yīng)用程序讀取,并把數(shù)據(jù)存在環(huán)形緩存區(qū)1內(nèi)。

應(yīng)用程序讀取接收的數(shù)據(jù)后,通過一些標(biāo)志位獲得視頻數(shù)據(jù),并將視頻流拷貝到一個視頻暫緩存區(qū)域Buf進(jìn)行數(shù)據(jù)的拼接,數(shù)據(jù)的拼接按照接收順序和上一幀數(shù)據(jù)的大小來偏移本次存視頻的地址實(shí)現(xiàn)。

當(dāng)完整的接收到一幀視頻數(shù)據(jù)后,將完整的數(shù)據(jù)轉(zhuǎn)到共享緩沖2,解碼線程調(diào)用MFC提供的接口函數(shù)將接收的視頻數(shù)據(jù)解碼并在LCD上顯示。因?yàn)榻邮站€程,數(shù)據(jù)處理線程和解碼線程是同時運(yùn)行的,而且共享同一緩沖區(qū)進(jìn)行數(shù)據(jù)的交互,因此必須采用信號量機(jī)制實(shí)現(xiàn)同步。進(jìn)行實(shí)際操作之前,進(jìn)程(或線程)先檢查信號量的值,如果當(dāng)前值大于0,則進(jìn)行P操作(P操作使信號量值減1),否則休眠,等待其他進(jìn)程(或線程)在該信號量上V操作(V操作使信號量值加1)[7]。解碼操作流程和函數(shù)如圖14。

圖14 數(shù)據(jù)處理流程

3.2.4 視頻數(shù)據(jù)讀取和實(shí)時性優(yōu)化

在數(shù)據(jù)采集壓縮端,主要有兩個處理任務(wù),一是采集的視頻本地回顯,二是將采集的視頻數(shù)據(jù)格式轉(zhuǎn)換后進(jìn)行H.264壓縮并發(fā)送,如圖15所示??紤]到視頻數(shù)據(jù)流向較為復(fù)雜,對實(shí)時性要求很高,需要進(jìn)行優(yōu)化處理。

圖15 數(shù)據(jù)流向圖

因此,視頻數(shù)據(jù)讀取和實(shí)時性優(yōu)化采用了如下措施:

1)視頻采集時采用mmap方式,其具體功能就是直接將物理內(nèi)存直接映射到用戶虛擬內(nèi)存,使用戶空間可以直接對物理空間操作,相比較在用戶控件和內(nèi)核空間互相拷貝數(shù)據(jù),效率更高。

2)視頻本地回顯,壓縮和解碼數(shù)據(jù)流交互采用共享環(huán)形緩沖區(qū)和多線程機(jī)制。在采集視頻端主線程負(fù)責(zé)視頻采集和LCD本地回顯,子線程實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)換和H.264壓縮與傳輸。在接收端除接收主線程之外,開辟了一個數(shù)據(jù)拆幀和數(shù)據(jù)拼接線程,一個解碼顯示線程,組成了一個類似于三級流水線形式的處理流程,保證了畫面的流暢。

4 結(jié)束語

采用了高速串行異步通信方式,實(shí)現(xiàn)視頻的無線傳輸和接收,硬軟件實(shí)現(xiàn)較為經(jīng)濟(jì)。設(shè)計中采用了ARM+Linux平臺,可以根據(jù)需要進(jìn)行軟硬件裁剪,解調(diào)采用了NE564,即可在中頻階段實(shí)現(xiàn)數(shù)據(jù)的恢復(fù),在發(fā)送接收端采用了多線程,實(shí)時性得到了提高,經(jīng)系統(tǒng)級聯(lián)實(shí)驗(yàn)測試,在分辨率為320×240情況下,可以較穩(wěn)定的傳輸接收并解碼顯示,色彩保持度較好,平均幀率在10 f/s以上,達(dá)到了設(shè)計要求。

:

[1]廣州友善之臂計算機(jī)科技有限公司.Tiny6410硬件手冊[EB/OL].[2013-11-05].http://wenku.baidu.com/link?url=k0kJVn5naeD BCnWsMxg8AH5CPowCDZPsEKmbgWhGWcN727EvOdZkxUNhmhyhTJq WGzI3ehrfjzKYT5ZFKypsjDZ66CFoNCpMPdX7Q16WoyO.

[2]CP2102 single-chip usb to uart bridge datasheet[EB/OL].[2013-11-05].http://www.docin.com/p-214094872.html.

[3]孫文友,胡永紅,劉海川.高速2CPFSK調(diào)制器的設(shè)計與實(shí)現(xiàn)[J].測控技術(shù),2006,12(25):7-9.

[4]Philips Semiconductors NE/SE564 phase-locked loop datasheet[EB/OL].[2013-11-05].http://ne564.chinaicmart.com/.

[5]Video for Linux two api specification revision 0.24[EB/OL].[2013-11-05].http://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html.

[6]S3C6400/6410 HW Multimedia Codec(MFC)Use’s Guide REV 3.20.[EB/OL].[2013-11-05].http://wenku.baidu.com/link?url=RLLADCEK1Z6hzCMQ7YUPSeVXAnt-5NqNoFuzzU8GK8h1-Y3jAHl0y 0-AGtCy0qBy3Rs9sDl-ZQutM-0hLBneHQxVsocJ0bwRQSlrHpzBrq.

[7]王社國.Linux信號量通信機(jī)制分析與實(shí)踐[J].微機(jī)發(fā)展,2002(6):63-66.

猜你喜歡
編解碼線程解碼
《解碼萬噸站》
基于C#線程實(shí)驗(yàn)探究
1553B總線控制器編解碼設(shè)計
基于國產(chǎn)化環(huán)境的線程池模型研究與實(shí)現(xiàn)
解碼eUCP2.0
為多重編解碼世界做好準(zhǔn)備
大型民機(jī)試飛遙測視頻編解碼方法研究
NAD C368解碼/放大器一體機(jī)
Quad(國都)Vena解碼/放大器一體機(jī)
淺談linux多線程協(xié)作
黑山县| 和田市| 溧阳市| 丽江市| 登封市| 汝城县| 绥阳县| 修水县| 石家庄市| 昭通市| 龙井市| 伊宁市| 牙克石市| 长汀县| 丰原市| 额尔古纳市| 鄄城县| 芦溪县| 花垣县| 安吉县| 洞口县| 郧西县| 蓬莱市| 潜江市| 长宁区| 天长市| 米泉市| 青阳县| 科技| 普陀区| 浪卡子县| 和顺县| 沅陵县| 西青区| 密山市| 大邑县| 喀什市| 浪卡子县| 渭南市| 蓬溪县| 汤阴县|