亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ZYNQ的遠(yuǎn)程圖像采集系統(tǒng)設(shè)計(jì)

        2022-10-27 02:44:14李慶春劉彥君
        計(jì)算機(jī)測(cè)量與控制 2022年10期
        關(guān)鍵詞:視頻信號(hào)總線芯片

        李慶春,李 祺,劉彥君,趙 越

        (1.海軍裝備部裝備項(xiàng)目管理中心, 北京 100071; 2.北京機(jī)電工程研究所, 北京 100074;3.成都菁匯科技有限公司, 成都 611731; 4.電子科技大學(xué) 自動(dòng)化學(xué)院, 成都 611731)

        0 引言

        圖像的采集與存儲(chǔ)設(shè)備已經(jīng)廣泛應(yīng)用于工業(yè)生產(chǎn)、醫(yī)療衛(wèi)生、航空航天等領(lǐng)域[1],提升圖像數(shù)據(jù)處理速度與降低圖像傳輸延遲對(duì)圖像采集終端設(shè)備有著重大的意義。在特定的場(chǎng)景下,如遠(yuǎn)程手術(shù)、航天探測(cè)器、無(wú)人機(jī)電力巡檢等,對(duì)圖像遠(yuǎn)程傳輸?shù)膶?shí)時(shí)性和穩(wěn)定性有著很高的要求,而在圖像采集、傳輸及處理過(guò)程中需要大量的時(shí)間。例如,由模數(shù)轉(zhuǎn)換器轉(zhuǎn)換得到的尺寸為1 728*625的8 bit的數(shù)字化圖像數(shù)據(jù)大小為1.03 MB,當(dāng)傳感器高幀率、連續(xù)的采集圖像時(shí)需要具備較高的傳輸帶寬才能保證圖像數(shù)據(jù)的完整性。除此之外,為了有效利用圖像信息還需要對(duì)數(shù)據(jù)進(jìn)行處理。傳統(tǒng)的DSP或ARM處理器具有優(yōu)秀的控制能力[2],但是取樣速率較低、指令串行執(zhí)行且系統(tǒng)使用浮點(diǎn),很難對(duì)數(shù)據(jù)量大、像素相關(guān)性大、頻帶較寬的圖像數(shù)據(jù)進(jìn)行直接處理[3]。

        目前FPGA器件具有的數(shù)據(jù)并發(fā)處理、流水線技術(shù)、邊接收邊處理、高速接口等特性同圖像數(shù)據(jù)傳輸及處理的需求十分契合,但是在外設(shè)控制能力方面有所不足。為了構(gòu)建一個(gè)圖像傳輸延遲低、可遠(yuǎn)程網(wǎng)絡(luò)圖傳、可程控的圖像采集系統(tǒng),本文采用Xilinx公司推出的ZYNQ高性能芯片,ZYNQ芯片內(nèi)部融合了ARM處理器和FPGA,處理器與FPGA之間通過(guò)高速的AXI總線互聯(lián),這些特性能夠?qū)崿F(xiàn)處理速度、控制能力、傳輸速率的最大化,同時(shí)ARM處理器還能借助Linux系統(tǒng)搭載Gstreamer流媒體應(yīng)用將處理好的圖像數(shù)據(jù)推送到網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程圖像傳輸。

        1 系統(tǒng)結(jié)構(gòu)及原理

        在本圖像采集系統(tǒng)中,ZYNQ芯片的PS(processing system)端主要完成系統(tǒng)控制,數(shù)據(jù)的存儲(chǔ)和傳輸以及后處理,PL(programmable logic)端則用于對(duì)ADC輸入數(shù)據(jù)的前處理和輸出數(shù)據(jù)至DAC。芯片內(nèi)部PS端與PL端之間通過(guò)AXI總線進(jìn)行數(shù)據(jù)交互,設(shè)計(jì)中用到AXI4和AXI4_Lite總線,其中AXI4總線的數(shù)據(jù)位寬為64 bit,用于傳輸數(shù)據(jù)量大、傳輸延時(shí)要求高的圖像數(shù)據(jù);AXI4_Lite總線的數(shù)據(jù)位寬為32 bit,用于控制數(shù)據(jù)的傳輸。

        根據(jù)圖像編解碼板的控制及傳輸要求,需要大量的控制接口和低時(shí)延的數(shù)據(jù)處理能力,由于PS端IO口數(shù)量有限、ARM處理器串行執(zhí)行的特性無(wú)法實(shí)現(xiàn)高速的數(shù)據(jù)處理,所以采用PL端豐富的IO進(jìn)行接口擴(kuò)展,利用PL端的可編程邏輯資源部署并行處理算法完成大量數(shù)據(jù)處理的方式不僅可以降低成本而且易于系統(tǒng)功能實(shí)現(xiàn)。在系統(tǒng)接口方面,整個(gè)設(shè)計(jì)能夠滿(mǎn)足2路GJB1188A B類(lèi)視頻信號(hào)輸入、1路GJB1188A B類(lèi)的靜態(tài)圖像信號(hào)輸出、1路GJB1188A B類(lèi)的靜態(tài)圖像同步信號(hào)輸出。

        除此之外,該系統(tǒng)還配備了連接顯示設(shè)備的HDMI接口、可外接鍵盤(pán)鼠標(biāo)的USB接口、標(biāo)準(zhǔn)的千兆以太網(wǎng)接口以及可用于工程調(diào)試的串口等。豐富的接口在實(shí)現(xiàn)核心功能的基礎(chǔ)上增加了系統(tǒng)的靈活性。圖像采集系統(tǒng)的整體結(jié)構(gòu)如圖1所示。

        圖1 系統(tǒng)結(jié)構(gòu)框圖

        2 系統(tǒng)硬件設(shè)計(jì)

        ZYNQ相對(duì)于分立的ARM+FPGA架構(gòu)而言,單一芯片能夠節(jié)省PCB(printed circuit board)面積、減小布局布線難度。除此之外,單芯片融合ARM和FPGA可以利用高效的片內(nèi)通信總線進(jìn)行數(shù)據(jù)傳輸,高帶寬的總線對(duì)圖像數(shù)據(jù)傳輸效率有較大的提升。

        系統(tǒng)前端輸入的PAL制式的模擬視頻信號(hào)經(jīng)過(guò)A/D轉(zhuǎn)換為ITU-R BT.656標(biāo)準(zhǔn)的數(shù)字視頻信號(hào),其中包含大量的消隱信號(hào)和輔助信號(hào)等一些冗余信號(hào),如果不對(duì)這些冗余信號(hào)進(jìn)行處理而直接傳輸,傳輸?shù)臄?shù)據(jù)量過(guò)大導(dǎo)致傳輸效率低,延時(shí)比較高,無(wú)法滿(mǎn)足圖像處理實(shí)時(shí)性的要求,并且后端輸出的視頻信號(hào)的幀率也無(wú)法達(dá)到圖像采集前端每秒25幀的速度,這些冗余信號(hào)的消除不會(huì)對(duì)圖像的質(zhì)量產(chǎn)生影響,因此,需要對(duì)視頻信號(hào)進(jìn)行分離處理,只保留信號(hào)的有效數(shù)據(jù)部分進(jìn)行傳輸,等待傳輸完成,再將視頻信號(hào)的有效數(shù)據(jù)和消隱信號(hào)、輔助信號(hào)進(jìn)行復(fù)合,恢復(fù)原視頻畫(huà)面,這種處理方式可以有效地提高數(shù)據(jù)傳輸效率,降低系統(tǒng)延時(shí),提高視頻的顯示幀率。如何提取視頻信號(hào)中的有效數(shù)據(jù)以及選擇硬件還是軟件的方式來(lái)對(duì)BT.656視頻信號(hào)進(jìn)行解碼成為了本系統(tǒng)需要解決的難點(diǎn)。

        圖像數(shù)據(jù)傳輸?shù)牡脱訒r(shí)是圖像采集系統(tǒng)的基本要求之一,圖像處理的速度必須很快,直接使用CPU進(jìn)行圖像處理,雖然處理起來(lái)方便靈活,但是由于需要處理相當(dāng)大的數(shù)據(jù)量,會(huì)極大地消耗CPU的運(yùn)算能力,CPU的占用率比較高,而頻繁對(duì)DDR存儲(chǔ)器的訪問(wèn)也會(huì)增加數(shù)據(jù)傳輸和解析的時(shí)間,不能滿(mǎn)足系統(tǒng)對(duì)于圖像數(shù)據(jù)傳輸?shù)蜁r(shí)延的需求。FPGA的實(shí)時(shí)流水線運(yùn)算可以滿(mǎn)足圖像數(shù)據(jù)高效性處理的要求[4]。為了提高圖像傳輸?shù)膶?shí)時(shí)性,本系統(tǒng)采用硬件解碼的方式,即利用FPGA部署硬件運(yùn)算電路來(lái)完成視頻的解碼工作[5],首先將視頻信號(hào)中的Y(亮度值)和Cb、Cr(色度值)準(zhǔn)確地分離出來(lái),然后再將YCbCr4∶2∶2格式轉(zhuǎn)換為YCbCr4∶2∶0進(jìn)行傳輸。經(jīng)過(guò)處理器性能、FPGA資源消耗、開(kāi)發(fā)成本等各方面的評(píng)估,決定采用型號(hào)為XC7Z020的ZYNQ芯片并圍繞該款芯片設(shè)計(jì)外圍電路。

        利用性能優(yōu)異的ZYNQ芯片構(gòu)建的系統(tǒng)硬件部分主要?jiǎng)澐譃椋?/p>

        1)圖像采集通道:整個(gè)采集框架支持2路PAL格式的視頻信號(hào)輸入,接入系統(tǒng)的模擬視頻信號(hào)經(jīng)過(guò)TVP5150AM1芯片解碼輸出ITU-R BT.656格式的數(shù)字視頻數(shù)據(jù)[6]。視頻解碼芯片的工作狀態(tài)由ZYNQ芯片內(nèi)部的FPGA部分中的視頻解碼芯片配置模塊通過(guò)I2C總線進(jìn)行配置。

        2)圖像處理模塊:ITU-R BT.656格式的數(shù)字視頻數(shù)據(jù)通過(guò)解碼芯片外部的LVDS(low-voltage differential signaling)接口傳輸至FPGA,F(xiàn)PGA根據(jù)圖像格式對(duì)數(shù)據(jù)進(jìn)行解析和處理。圖像處理模塊包括通道選擇模塊、數(shù)據(jù)解析模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)重組模塊。

        通道選擇模塊,受控于處理器指令,選擇一路圖像數(shù)據(jù)輸出至后級(jí)模塊處理。

        數(shù)據(jù)解析模塊,用于對(duì)選擇的一路圖像數(shù)據(jù)解析,根據(jù)ITU-R BT.656格式的構(gòu)成特點(diǎn)解析出圖像數(shù)據(jù)的有效數(shù)據(jù)、消隱信號(hào)標(biāo)志、數(shù)據(jù)錯(cuò)誤標(biāo)志、圖像幀的頭部和尾部信號(hào)、行同步信號(hào)、場(chǎng)同步信號(hào)、復(fù)合同步信號(hào)。其中數(shù)據(jù)錯(cuò)誤標(biāo)志位指示當(dāng)前解析的圖像數(shù)據(jù)是否包含完整的信息,當(dāng)信息不完整時(shí),當(dāng)前圖像幀被丟棄,數(shù)據(jù)解析模塊等待下一幀圖像數(shù)據(jù)輸入。完整無(wú)誤的圖像數(shù)據(jù)伴隨著解析出的標(biāo)志信息傳入后級(jí)模塊。

        數(shù)據(jù)處理模塊,用于剔除圖像數(shù)據(jù)中的無(wú)效數(shù)據(jù),只保留有效的Y和Cb、Cr數(shù)據(jù),Y、Cb、Cr的比例為4∶2∶2,因?yàn)閳D像數(shù)據(jù)中Y分量對(duì)圖像的質(zhì)量影響較大,而Cb、Cr分量對(duì)圖像數(shù)據(jù)的質(zhì)量影響較小,所以通過(guò)進(jìn)一步壓縮Cb、Cr部分的有效數(shù)據(jù)來(lái)減少數(shù)據(jù)的傳輸量,提高數(shù)據(jù)的傳輸效率,將處理后的Cb、Cr和Y數(shù)據(jù)利用FIFO(first input first output)緩存后同步輸出至后級(jí)模塊處理。

        數(shù)據(jù)重組模塊,用于將圖像有效數(shù)據(jù)Y、Cb、Cr重新組合成YCbCr4∶2∶0的數(shù)據(jù)格式。

        3)圖像傳輸模塊:利用AXI_DMA IP核將處理完成的圖像數(shù)據(jù)傳輸至DDR3存儲(chǔ)器中。

        4)圖像數(shù)據(jù)生成模塊:利用FPGA邏輯資源生成自定義的圖像數(shù)據(jù),圖像數(shù)據(jù)可以上傳至處理器端用作圖像數(shù)據(jù)傳輸鏈路的測(cè)試;也可以經(jīng)過(guò)編碼芯片可輸出PAL制式的模擬視頻數(shù)據(jù),可以用作視頻源。

        5)圖像輸出通道:利用圖像數(shù)據(jù)生成模塊產(chǎn)生的數(shù)字圖像數(shù)據(jù)通過(guò)ADV7171視頻編碼芯片轉(zhuǎn)換成對(duì)應(yīng)的模擬視頻信號(hào),同時(shí)根據(jù)圖像的構(gòu)成格式識(shí)別圖像的行、場(chǎng)同步信號(hào)并輸出。

        3 系統(tǒng)關(guān)鍵部分的實(shí)現(xiàn)

        3.1 圖像采集通道

        該圖像采集系統(tǒng)的前端信號(hào)輸入是PAL制式的模擬視頻信號(hào),目前NTSC和PAL屬于全球兩大主要的電視廣播制式[7],NTSC電視標(biāo)準(zhǔn)用于美、日等國(guó)家和地區(qū)。而PAL電視標(biāo)準(zhǔn)則廣泛用于中國(guó)、歐洲等國(guó)家和地區(qū)。PAL制式電視標(biāo)準(zhǔn)每秒25幀畫(huà)面,625條電視掃描線,奇場(chǎng)在前,偶場(chǎng)在后,畫(huà)面的寬高比為4∶3,標(biāo)準(zhǔn)的數(shù)字化PAL電視標(biāo)準(zhǔn)每一幀有625行,有效數(shù)據(jù)共有576行,每行包含720個(gè)像素點(diǎn),分辨率為720*576,色彩位深為24比特[8]。

        為了實(shí)現(xiàn)數(shù)字化處理,本系統(tǒng)需要對(duì)PAL制式的模擬視頻信號(hào)做數(shù)字化處理,通過(guò)圖像解碼芯片(TVP5150AM1)進(jìn)行模數(shù)轉(zhuǎn)換[9],其轉(zhuǎn)換后的格式為ITU-R BT.656標(biāo)準(zhǔn)的數(shù)字視頻信號(hào)。PL端與圖像解碼芯片(TVP5150AM1)之間采用27 MHz/s串行接口的數(shù)字傳輸接口標(biāo)準(zhǔn)。

        ITU-R BT.656標(biāo)準(zhǔn)是將一個(gè)視頻序列分成N幀,PAL制式轉(zhuǎn)換后的BT.656標(biāo)準(zhǔn)有625行,底場(chǎng)有效數(shù)據(jù)也是288行,其余行則是為了標(biāo)記和區(qū)分兩種場(chǎng)的垂直消隱信號(hào)。采集圖像的時(shí)候采用隔行掃描(interlaced scanning),每一幀一般有兩個(gè)場(chǎng)(field),一個(gè)叫頂場(chǎng)(top field),一個(gè)叫底場(chǎng)(bottom field),由于隔行掃描,也可以將頂場(chǎng)和底場(chǎng)稱(chēng)為偶場(chǎng)和奇場(chǎng)。BT.656標(biāo)準(zhǔn)625列數(shù)據(jù)格式如圖2所示。

        圖2 BT.656標(biāo)準(zhǔn)625列數(shù)據(jù)格式示意圖

        BT.656標(biāo)準(zhǔn)的每一行主要由以下4個(gè)部分組成:行=結(jié)束碼(EAV)+水平消隱(Horizontal Vertical Blanking)+起始碼(SAV)+有效數(shù)據(jù)(Active Video),如圖3所示。

        圖3 656格式行數(shù)據(jù)組成

        每一行數(shù)據(jù)信號(hào)被編碼成8bit的形式,其中包括輔助信號(hào)(SAV、EAV)、行消隱信號(hào)、有效視頻信號(hào)。SAV表示視頻行數(shù)據(jù)的開(kāi)始,EAV表示視頻行數(shù)據(jù)的結(jié)束,SAV和EAV均由4個(gè)字節(jié)構(gòu)成,前3個(gè)字節(jié)FF 00 00為固定頭,是SAV和EAV的數(shù)據(jù)標(biāo)志位,第4個(gè)字節(jié)“XY”為輔助信號(hào)的信息位,其編碼格式如圖4所示。

        圖4 輔助信號(hào)信息位編碼格式

        XY的最高位(bit7)為固定數(shù)據(jù)1;F標(biāo)記場(chǎng)信息,傳輸偶數(shù)場(chǎng)時(shí)為0,傳輸奇數(shù)場(chǎng)時(shí)為1;V標(biāo)記消隱信息,傳輸消隱數(shù)據(jù)時(shí)為1,傳輸有效視頻數(shù)據(jù)時(shí)為0;H標(biāo)記EAV還是SAV,EAV為1,SAV為0;P0~P3為保護(hù)位,其值由F、V、H計(jì)算得到,計(jì)算方法如下:P3=V(XOR)H,P2=F(XOR)H,P1=F(XOR)V,P0=F(XOR)V(XOR)H[10]。每行對(duì)應(yīng)不同的EAV、SAV如表1所示。

        表1 656列數(shù)據(jù)對(duì)應(yīng)的行輔助信號(hào)

        消隱行數(shù)據(jù)則由80 10組成,共280 byte,本設(shè)計(jì)在PL端可根據(jù)輔助信號(hào)的變化,剔除消隱行的無(wú)用數(shù)據(jù),用以減小一幀有用信號(hào)的傳輸時(shí)間及軟件處理無(wú)用數(shù)據(jù)的時(shí)間。對(duì)于有效視頻信號(hào)(Valid data),其排列順序如圖5所示。

        圖5 有效視頻信號(hào)數(shù)據(jù)構(gòu)成

        其中Y表示明亮度(Luminance或Luma),也就是灰階值;而Cb、Cr則用來(lái)表示色度,其中Cb反映了RGB輸入信號(hào)藍(lán)色部分與RGB信號(hào)亮度值之間的差異[11]。Cr反映的是RGB輸入信號(hào)紅色部分與RGB信號(hào)亮度值間的差異[12]。Y、Cb、Cr的比例為4∶2∶2,從圖像的像素點(diǎn)上來(lái)理解,就是每一個(gè)像素點(diǎn)有一個(gè)單獨(dú)的Y值,而相鄰的兩個(gè)像素點(diǎn)的Cb和Cr數(shù)據(jù)是一樣的[13]。

        本設(shè)計(jì)將625行BT.656標(biāo)準(zhǔn)的數(shù)字視頻信號(hào)的一幀數(shù)據(jù)在PL端根據(jù)輔助信號(hào)的變化,去除行消隱信號(hào),將有用數(shù)據(jù)重新排列處理后,經(jīng)DMA傳輸至存儲(chǔ)器,軟件將數(shù)據(jù)通過(guò)奇偶穿插后播放器就能把圖像正確地顯示出來(lái)。

        3.2 圖像數(shù)據(jù)預(yù)處理

        外部的PAL制式電視廣播信號(hào)是模擬視頻信號(hào)[14],為了實(shí)現(xiàn)ZYNQ數(shù)據(jù)處理,還需要進(jìn)行A/D轉(zhuǎn)換,模擬視頻信號(hào)經(jīng)過(guò)視頻解碼芯片TVP5150AM1后被轉(zhuǎn)換為ITU-R BT.656標(biāo)準(zhǔn)的數(shù)字視頻信號(hào)[15],但是此時(shí)的視頻信號(hào)包含大量的列消隱信號(hào)、行消隱信號(hào)、輔助信號(hào)等一些無(wú)用信號(hào),無(wú)法直接傳輸至上位機(jī)做數(shù)據(jù)處理及圖像顯示。最終的顯示還是需要我們將ITU-R BT.656視頻標(biāo)準(zhǔn)中的行場(chǎng)數(shù)據(jù)重新排列,提取有效行中的灰度及色度信息,即將圖像數(shù)據(jù)中的Y、Cb、Cr準(zhǔn)確地分離出來(lái),并按奇場(chǎng)偶場(chǎng)重新排列,才能供軟件播放使用[16]。因此,視頻解碼工作在本系統(tǒng)中尤為重要,目前可以實(shí)現(xiàn)這種視頻解碼的方式主要分為兩種:軟件解碼和硬件解碼。

        該設(shè)計(jì)起初應(yīng)用軟件解碼,硬件僅負(fù)責(zé)數(shù)據(jù)傳輸功能,在此架構(gòu)下,軟件的大量循環(huán)重復(fù)操作且需要處理的數(shù)據(jù)量巨大,不僅增加了系統(tǒng)功耗及CPU的占用率,頻繁對(duì)DDR的訪問(wèn)也增加了數(shù)據(jù)傳輸和解析的時(shí)間。最終只能實(shí)現(xiàn)每秒3至5幀的視頻播放,遠(yuǎn)遠(yuǎn)低于圖像采集前端每秒25幀的速度。通過(guò)FPGA對(duì)圖像預(yù)處理需要將BT.656標(biāo)準(zhǔn)的數(shù)字視頻信號(hào)做解析,根據(jù)每行的XY控制字解析出場(chǎng)同步信號(hào)(F)、垂直同步信號(hào)(V)、水平同步信號(hào)(H)。通過(guò)提取每幀圖像中的有效數(shù)據(jù),拼成逐行圖像。

        相鄰每?jī)尚袨橐唤M,從原來(lái)“CbYCrY……”順序的數(shù)據(jù)中提取每?jī)尚械乃衁數(shù)據(jù),Cb數(shù)據(jù)、Cr數(shù)據(jù)。按照第一行720字節(jié)Y數(shù)據(jù)(連續(xù)180個(gè)100 MHz時(shí)鐘周期的dma_tvalid),第二行720字節(jié)Y數(shù)據(jù),360字節(jié)預(yù)處理后的Cb數(shù)據(jù),360字節(jié)預(yù)處理后的Cr數(shù)據(jù)(第二行Y和Cb、Cr一起有連續(xù)360個(gè)100 MHz時(shí)鐘周期的dma_tvalid)排列,之后就可以這樣為一組,每幀圖像共發(fā)送288組這樣的數(shù)據(jù)通過(guò)FIFO緩存后發(fā)送給DMA進(jìn)行傳輸。

        為了進(jìn)一步提高數(shù)據(jù)傳輸效率,保證系統(tǒng)的實(shí)時(shí)性,還需要對(duì)數(shù)字視頻數(shù)據(jù)作進(jìn)一步壓縮處理,將YCbCr=4∶2∶2格式轉(zhuǎn)換為YCbCr=4∶2∶0格式。

        取樣方式的描述可以通過(guò)一條線被掃描時(shí)所呈現(xiàn)的亮度值和色度值之間的比率來(lái)表示。描述形式為4:X:Y,X和Y表示每?jī)蓚€(gè)色度通道中數(shù)量的相對(duì)值。4∶1∶1表示每條掃描線每4個(gè)亮度值和1個(gè)色度值相對(duì)應(yīng),4∶2∶2表示每4個(gè)亮度值和2個(gè)色度值相對(duì)應(yīng),4∶4∶4表示色度值不進(jìn)行二次取樣。4∶2∶0表示每4個(gè)亮度值和1個(gè)色度值相對(duì)應(yīng),但是它的取樣方式不是連續(xù)的,這意味著對(duì)于第一個(gè)色度元素有兩個(gè)取樣值,而對(duì)于第二個(gè)色度元素則不進(jìn)行取樣,這種取樣方式不能產(chǎn)生完整的彩色圖像。實(shí)際工程中,4∶2∶0表示每條掃描線有兩個(gè)色度取樣,采用隔行的方式進(jìn)行取樣。

        雖然將4∶2∶2轉(zhuǎn)換為4∶2∶0可能減少細(xì)節(jié)處顏色的飽和度,但通常不會(huì)減少大個(gè)物體內(nèi)的顏色飽和度。具體處理過(guò)程為:保留原圖像中的Y數(shù)據(jù),將逐行圖像數(shù)據(jù)中對(duì)應(yīng)位置的Cb和Cr相加并除以2,得到新的Cb和Cr,然后就可以將數(shù)據(jù)按兩行為一組,每幀圖像共發(fā)送288組這樣的數(shù)據(jù)通過(guò)FIFO緩存后發(fā)送給DMA。這種處理方式將一幀圖像的數(shù)據(jù)量進(jìn)一步壓縮,有效提高了數(shù)據(jù)傳輸效率。

        4 系統(tǒng)軟件設(shè)計(jì)

        4.1 軟件設(shè)計(jì)思路及編程方法

        系統(tǒng)軟件分為嵌入式軟件和上位機(jī)軟件兩個(gè)部分,其中嵌入式軟件運(yùn)行在Linux操作系統(tǒng)上,首先需要在設(shè)備上移植Linux操作系統(tǒng),嵌入式軟件分為應(yīng)用層、系統(tǒng)層、底層驅(qū)動(dòng)3個(gè)部分[17],應(yīng)用層的視頻服務(wù)應(yīng)用通過(guò)操作系統(tǒng)API與系統(tǒng)層交互,系統(tǒng)層通過(guò)設(shè)備驅(qū)動(dòng)程序驅(qū)動(dòng)FPGA等外設(shè),從而實(shí)現(xiàn)對(duì)FPGA內(nèi)部信號(hào)以及外部設(shè)備的控制。嵌入式軟件結(jié)構(gòu)如圖6所示。

        圖6 嵌入式軟件架構(gòu)圖

        嵌入式軟件架構(gòu)的應(yīng)用層是整個(gè)嵌入式軟件提供給上位機(jī)的接口,在應(yīng)用程序下包含程控模塊和Gstreamer流媒體應(yīng)用的服務(wù)器端。程控模塊主要對(duì)上位機(jī)下發(fā)的指令進(jìn)行解析,根據(jù)指令調(diào)用功能函數(shù)完成對(duì)其他模塊的控制,例如調(diào)用AXI4_LITE驅(qū)動(dòng)實(shí)現(xiàn)對(duì)FPGA的控制,或者調(diào)用AXI4_DMA驅(qū)動(dòng)把FPGA處理好的視頻數(shù)據(jù)傳輸?shù)酱鎯?chǔ)器中。Gstreamer流媒體應(yīng)用則是將存儲(chǔ)器中的視頻數(shù)據(jù)通過(guò)管道技術(shù)經(jīng)由千兆網(wǎng)口推送至上位機(jī)的Gstreamer客戶(hù)端。

        系統(tǒng)軟件中的上位機(jī)軟件是在Windows XP系統(tǒng)下開(kāi)發(fā)的,軟件主要包含網(wǎng)絡(luò)連接模塊、人機(jī)交互界面、Gstreamer客戶(hù)端、視頻顯示窗口。網(wǎng)絡(luò)連接模塊采用TCP/IP通信協(xié)議實(shí)現(xiàn)上位機(jī)與設(shè)備之間的網(wǎng)絡(luò)連接;人機(jī)交互界面支持對(duì)遠(yuǎn)程設(shè)備的參數(shù)配置及功能的控制;Gstreamer客戶(hù)端通過(guò)管道技術(shù)訪問(wèn)服務(wù)器端的流媒體數(shù)據(jù);視頻顯示窗口呈現(xiàn)遠(yuǎn)程讀取的視頻畫(huà)面。

        上位機(jī)軟件架構(gòu)如圖7所示。

        圖7 上位機(jī)軟件架構(gòu)圖

        4.2 驅(qū)動(dòng)軟件的實(shí)現(xiàn)

        設(shè)計(jì)中采用了Xilinx 公司的ZYNQ芯片,其芯片內(nèi)部融合了雙核ARM Cortex-A9 處理器和Xilinx 7 系列FPGA,ARM與FPGA通過(guò)AXI總線互聯(lián)。視頻數(shù)據(jù)和外設(shè)控制數(shù)據(jù)的交互都經(jīng)由AXI總線,由于視頻數(shù)據(jù)的傳輸速率、傳輸帶寬及傳輸延遲均比控制數(shù)據(jù)要求高,所以對(duì)于視頻數(shù)據(jù)采用DMA傳輸?shù)姆绞絒18],而控制信號(hào)采用自定義AXI4_Lite總線進(jìn)行傳輸。數(shù)據(jù)傳輸是該采集系統(tǒng)能否實(shí)現(xiàn)視頻數(shù)據(jù)穩(wěn)定展示的關(guān)鍵,其中FPGA到存儲(chǔ)器的數(shù)據(jù)傳輸和存儲(chǔ)器到網(wǎng)口的數(shù)據(jù)傳輸主要通過(guò)嵌入式軟件完成。

        FPGA對(duì)于ARM而言是外設(shè),ARM同F(xiàn)PGA完成數(shù)據(jù)交互需要對(duì)兩者互聯(lián)的總線進(jìn)行驅(qū)動(dòng),對(duì)于本系統(tǒng)需要開(kāi)發(fā)帶DMA功能的AXI總線驅(qū)動(dòng)和自定義通信協(xié)議的AXI4_Lite總線驅(qū)動(dòng)。介于嵌入式軟件功能都是在Linux系統(tǒng)上進(jìn)行開(kāi)發(fā)的,所以這兩種AXI總線的驅(qū)動(dòng)軟件開(kāi)發(fā)需要符合Linux驅(qū)動(dòng)框架。

        4.2.1 AXI4_Lite驅(qū)動(dòng)軟件設(shè)計(jì)

        AXI4-Lite是簡(jiǎn)化版的AXI4接口,用于較少數(shù)據(jù)量的存儲(chǔ)映射通信,該總線為外設(shè)提供單個(gè)數(shù)據(jù)傳輸,主要用于訪問(wèn)一些低速外設(shè)中的寄存器。本設(shè)計(jì)中控制數(shù)據(jù)的交互就是通過(guò)在ZYNQ芯片內(nèi)提供的通用AXI接口連接具有AXI通信協(xié)議的自定義功能IP核實(shí)現(xiàn)的。完成總線互聯(lián)后,總線上掛載的IP核具有一段I/O地址空間,通過(guò)對(duì)該地址空間進(jìn)行讀寫(xiě)操作完成對(duì)IP核的控制。

        AXI4-Lite總線是按照字節(jié)流進(jìn)行讀寫(xiě)操作,它屬于Linux驅(qū)動(dòng)中的字符設(shè)備。由于AXI4_Lite總線驅(qū)動(dòng)需要實(shí)現(xiàn)的功能只有簡(jiǎn)單的讀寫(xiě)操作,因此按照字符設(shè)備驅(qū)動(dòng)框架完善驅(qū)動(dòng)程序中的open()、write()、read()、release()等函數(shù),通過(guò)獲取設(shè)備樹(shù)中描述的IP核I/O地址空間完成物理地址到虛擬地址的映射,最后指定驅(qū)動(dòng)的出口函數(shù)和入口函數(shù)完成AXI4_Lite的驅(qū)動(dòng)編寫(xiě)。加載編譯完成的驅(qū)動(dòng)后,在Linux系統(tǒng)的“/dev”目錄下生成一個(gè)相應(yīng)的文件[19],通過(guò)對(duì)文件的讀寫(xiě)實(shí)現(xiàn)對(duì)總線的讀寫(xiě)。

        4.2.2 AXI4_DMA驅(qū)動(dòng)軟件設(shè)計(jì)

        設(shè)計(jì)中采用Xilinx提供的AXI4_DMA IP核將經(jīng)過(guò)FPGA處理完成后的視頻數(shù)據(jù)通過(guò)DMA的方式從FPGA傳輸?shù)酱鎯?chǔ)器中。AXI4_DMA對(duì)于Linux系統(tǒng)而言也是字符設(shè)備,相對(duì)于AXI4_Lite總線來(lái)說(shuō)驅(qū)動(dòng)AXI4_DMA更加復(fù)雜,需要處理DMA的開(kāi)啟、停止、數(shù)據(jù)等待、讀取數(shù)據(jù)空、中斷異常等情況。進(jìn)行數(shù)據(jù)傳輸時(shí),需要對(duì)DMA進(jìn)行初始化,訪問(wèn)DMA控制寄存器,配置目的地址和待傳輸字節(jié)數(shù)。傳輸完成后,DMA狀態(tài)寄存器中的中斷狀態(tài)通知DMA通道當(dāng)前DMA傳輸已完成。連接到ARM處理器的AXI4_DMA IP核主要有3個(gè)數(shù)據(jù)通道:1)S_AXI_LITE,AXI4類(lèi)型接口,用于初始化與配置DMA;2)S_AXIS_S2MM,AXI4-Stream類(lèi)型接口,DMA通過(guò)此端口接收緩存FIFO輸入的流式數(shù)據(jù),并在DMA內(nèi)將流式數(shù)據(jù)轉(zhuǎn)換為存儲(chǔ)映射數(shù)據(jù);3)M_AXI_S2MM,AXI4類(lèi)型接口,DMA通過(guò)此端口將存儲(chǔ)映射數(shù)據(jù)傳輸?shù)酱鎯?chǔ)器中。AXI4_DMA的驅(qū)動(dòng)軟件除了實(shí)現(xiàn)基本的讀寫(xiě)功能外,還需要通過(guò)ioctl()函數(shù)實(shí)現(xiàn)對(duì)DMA通道傳輸?shù)目刂?,讀取當(dāng)前可用的DMA通道數(shù)目,把每個(gè)通道的通道號(hào)、通道類(lèi)型、通道方向等相關(guān)信息保存到分配的數(shù)組中。AXI4_DMA IP核如圖8所示。

        圖8 AXI4_DMA IP核示意圖

        在Linux系統(tǒng)中,應(yīng)用層訪問(wèn)外設(shè)接口是通過(guò)系統(tǒng)調(diào)用從用戶(hù)空間進(jìn)入系統(tǒng)內(nèi)核,然后通過(guò)驅(qū)動(dòng)程序中的copy_to_user()和copy_from_user()兩個(gè)函數(shù)實(shí)現(xiàn)數(shù)據(jù)的交互,應(yīng)用程序獲取外設(shè)數(shù)據(jù)需要從驅(qū)動(dòng)層拷貝。當(dāng)上位機(jī)需要顯示視頻數(shù)據(jù)時(shí),應(yīng)用程序還需將數(shù)據(jù)拷貝至Gstreamer流媒體應(yīng)用。在執(zhí)行視頻顯示的功能中,同一份視頻數(shù)據(jù)需要進(jìn)行兩次拷貝,這會(huì)降低整個(gè)傳輸鏈路的效率,增加CPU的負(fù)荷和傳輸延遲。為了解決多次拷貝的問(wèn)題,在編寫(xiě)AXI4_DMA驅(qū)動(dòng)時(shí)直接將DMA傳輸?shù)哪康牡刂匪诘拇鎯?chǔ)空間通過(guò)EXPORT_SYMBOL內(nèi)核模塊函數(shù)導(dǎo)出,該段存儲(chǔ)空間用作共享內(nèi)存使用。

        共享內(nèi)存的方式能夠?qū)崿F(xiàn)數(shù)據(jù)的零拷貝傳輸[20],但是多個(gè)驅(qū)動(dòng)模塊并發(fā)的訪問(wèn)同一段內(nèi)存時(shí)會(huì)導(dǎo)致讀寫(xiě)沖突的問(wèn)題,因此設(shè)計(jì)中將該段共享內(nèi)存虛擬成循環(huán)隊(duì)列這種數(shù)據(jù)結(jié)構(gòu),并在導(dǎo)出地址空間的同時(shí)也導(dǎo)出寫(xiě)指針,訪問(wèn)共享內(nèi)存的其他驅(qū)動(dòng)程序擁有特有的讀指針,通過(guò)讀寫(xiě)指針的位置差異可以判斷共享內(nèi)存空間中是否存在數(shù)據(jù),有效地解決了多個(gè)驅(qū)動(dòng)模塊對(duì)共享資源的并發(fā)訪問(wèn)。共享內(nèi)存如圖9所示。

        圖9 共享內(nèi)存示意圖

        4.3 程控模塊軟件設(shè)計(jì)

        程控模塊主要包含網(wǎng)絡(luò)服務(wù)器端、指令解析模塊、DMA傳輸控制、Gstreamer流媒體調(diào)用、外設(shè)控制。程控模塊的是整個(gè)設(shè)計(jì)的調(diào)度中心,整個(gè)系統(tǒng)運(yùn)行時(shí)上位機(jī)軟件同設(shè)備通過(guò)TCP/IP網(wǎng)絡(luò)協(xié)議建立通信,上位機(jī)軟件在參數(shù)設(shè)置或者視頻調(diào)用請(qǐng)求時(shí)通過(guò)網(wǎng)絡(luò)接口發(fā)送指令至程控模塊,程控模塊通過(guò)解析指令執(zhí)行相應(yīng)的功能函數(shù),完成系統(tǒng)自檢、輸入通道選擇、視頻數(shù)據(jù)傳輸?shù)紾streamer流媒體應(yīng)用服務(wù)器端等操作。

        4.4 軟件實(shí)現(xiàn)流程

        軟件實(shí)現(xiàn)流程如圖10所示。

        圖10 嵌入式軟件的總體設(shè)計(jì)流程及模塊控制

        5 實(shí)驗(yàn)結(jié)果與分析

        利用Xilinx公司的Vivado軟件完成FPGA側(cè)的開(kāi)發(fā)并導(dǎo)出硬件平臺(tái)文件。使用Petalinux軟件構(gòu)建與硬件平臺(tái)適配的嵌入式Linux系統(tǒng),系統(tǒng)移植完成后將驅(qū)動(dòng)軟件及應(yīng)用程序?qū)肭度胧絃inux系統(tǒng)中。完成上述操作后對(duì)設(shè)備重新加電,進(jìn)入嵌入式系統(tǒng)后加載驅(qū)動(dòng)程序并運(yùn)行應(yīng)用程序,首先實(shí)現(xiàn)對(duì)設(shè)備的各個(gè)模塊進(jìn)行初始化操作、開(kāi)啟網(wǎng)絡(luò)監(jiān)聽(tīng),然后等待遠(yuǎn)程客戶(hù)端接入。

        功能測(cè)試:將遠(yuǎn)程監(jiān)視設(shè)備和圖像采集設(shè)備接入同一子網(wǎng)下進(jìn)行網(wǎng)絡(luò)傳輸及視頻展示測(cè)試,測(cè)試步驟如下:

        1)將設(shè)計(jì)的圖像采集設(shè)備與計(jì)算機(jī)通過(guò)網(wǎng)線相連,直流電源與采集設(shè)備通過(guò)12 V電源線相連,設(shè)置直流電源電流為3 A并輸出;

        2)在PC中啟動(dòng)上位機(jī)軟件,設(shè)置圖像采集設(shè)備的IP地址,點(diǎn)擊“打開(kāi)連接”;

        3)將視頻源與圖像采集設(shè)備的輸入通道相連并輸出圖像數(shù)據(jù)。通過(guò)上位機(jī)軟件配置需要查看的采集通道,并開(kāi)啟視頻數(shù)據(jù)的傳輸。

        上位機(jī)軟件自帶視頻顯示窗口,當(dāng)數(shù)據(jù)傳輸關(guān)閉時(shí),顯示窗口默認(rèn)為黑屏狀態(tài),配置菜單欄為不可配置狀態(tài)。軟件狀態(tài)如圖11所示。

        圖11 圖像采集系統(tǒng)人機(jī)交互界面

        當(dāng)上位機(jī)軟件與圖像采集設(shè)備建立網(wǎng)絡(luò)連接且采集設(shè)備完成自檢給上位機(jī)軟件反饋?zhàn)詸z成功信號(hào)后,人機(jī)交互界面的其他控制窗口切換到可配置狀態(tài)。配置采集設(shè)備打開(kāi)通道1,并開(kāi)啟遠(yuǎn)程采集,實(shí)驗(yàn)結(jié)果如圖12所示。

        圖12 圖像采集遠(yuǎn)程顯示效果

        顯示窗口左上方顯示采集數(shù)據(jù)的展示時(shí)長(zhǎng)及圖像展示幀數(shù)的累加,整個(gè)視頻采集展示的過(guò)程是十分流暢,刷新率每秒25幀,完全與前端ADC采集速率一致。

        6 結(jié)束語(yǔ)

        本設(shè)計(jì)通過(guò)利用ARM和FPGA融合的ZYNQ芯片在軟硬件方面對(duì)圖像的采集流程進(jìn)行了優(yōu)化,通過(guò)多次測(cè)試驗(yàn)證,整個(gè)圖像采集系統(tǒng)的傳輸延時(shí)顯著降低,圖像數(shù)據(jù)的遠(yuǎn)程網(wǎng)絡(luò)傳輸穩(wěn)定高。本設(shè)計(jì)能夠應(yīng)用在需要遠(yuǎn)程圖傳且對(duì)延時(shí)有要求圖像處理系統(tǒng)中。由于本設(shè)計(jì)器件選型原因,單使用FPGA內(nèi)部的分布式RAM(random access memory)資源無(wú)法緩存大量的原始圖像數(shù)據(jù),因此需要通過(guò)運(yùn)算減少一些對(duì)圖像影響較小的圖像數(shù)據(jù)量來(lái)滿(mǎn)足傳輸過(guò)程中的緩存要求。后期設(shè)計(jì)可以在ZYNQ芯片PL側(cè)連接一定容量的DDR3存儲(chǔ)器對(duì)整個(gè)系統(tǒng)進(jìn)一步優(yōu)化。

        猜你喜歡
        視頻信號(hào)總線芯片
        基于PCI Express總線的xHC與FPGA的直接通信
        機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計(jì)
        淺析新一代視頻信號(hào)ICtCp
        短距視頻信號(hào)無(wú)線通信網(wǎng)絡(luò)
        芯片測(cè)試
        多通道采樣芯片ADS8556在光伏并網(wǎng)中的應(yīng)用
        多通道ARINC429總線檢查儀
        基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計(jì)
        河南科技(2014年16期)2014-02-27 14:13:22
        74HC164芯片的應(yīng)用
        河南科技(2014年10期)2014-02-27 14:09:18
        小飛鴿ZY—2250D數(shù)字機(jī)無(wú)視頻輸出故障的應(yīng)急處理
        中文字幕精品无码一区二区| 国产精品一区二区av不卡| 美国少妇性xxxx另类| 午夜精品久久久久成人| 色伊人国产高清在线| 一本色道久久99一综合| 国产精品99久久久久久98AV| 人妻少妇精品视中文字幕国语| 中文字幕一区二区三区| 国产成人午夜福利在线观看| 国产99久久久久久免费看| 国产老妇伦国产熟女老妇高清| 久久午夜一区二区三区| 国产欧美日韩va另类在线播放| 少妇人妻200篇白洁| 日韩在线不卡一区在线观看| 日韩av最新在线地址| 懂色av一区二区三区尤物| 幻女bbwxxxx在线视频| 国产偷2018在线观看午夜| 国产精品黑丝美女av| 欲求不満の人妻松下纱荣子| 欧洲熟妇色xxxx欧美老妇多毛网站 | 少妇伦子伦精品无吗| 精品熟女少妇av免费观看| 最新永久免费AV网站| 激情在线一区二区三区视频| 日韩亚洲欧美中文在线| 熟妇人妻中文av无码| 亚洲国产剧情一区在线观看| 中文字幕一二三四五六七区| 国产精品18久久久| 亚洲成av人片天堂网九九| 国产精品自产拍av在线| 在线播放五十路熟妇| 午夜亚洲www湿好大| 一区二区三区视频在线免费观看| 人妻少妇偷人精品免费看| 无套内谢的新婚少妇国语播放| 视频二区精品中文字幕| 人妻制服丝袜中文字幕|