<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP+FPGA多視頻通道的切換控制

          基于DSP+FPGA多視頻通道的切換控制

          作者: 時(shí)間:2012-11-21 來源:網(wǎng)絡(luò) 收藏

          軟件控制流程

          圖3 軟件流程

           2.1 模塊功舵買現(xiàn)

            部分用于對(duì)信號(hào)進(jìn)行預(yù)處理并且等待發(fā)送命令。其基本思路為:當(dāng)某一路信號(hào)經(jīng)過AD9203之后,輸出的量化信號(hào)被送進(jìn)做預(yù)處理,然后被送入進(jìn)行算法處理,同時(shí)FPGA等待根據(jù)場信號(hào)發(fā)送的視頻命令。

            在實(shí)驗(yàn)過程中發(fā)現(xiàn),DSP對(duì)圖像的搜索是以行信號(hào)的上升沿(或者下降沿)為觸發(fā)的,因此需要行信號(hào)有一個(gè)穩(wěn)定的上升沿(或者下降沿)。由于信號(hào)在分離傳輸?shù)倪^程中可能會(huì)產(chǎn)生抖動(dòng),導(dǎo)致信號(hào)的上升沿(或者下降沿)不穩(wěn)定,從而影響DSP對(duì)視頻信號(hào)的判斷。若仍然以這個(gè)不穩(wěn)定的行信號(hào)(VIDEO_Hs)作為DSP搜索圖像的標(biāo)志,則其接收的圖像將會(huì)在相鄰兩行出現(xiàn)錯(cuò)位的現(xiàn)象,用肉眼看到的圖像漂移現(xiàn)象。圖4中(a)圖像是以VIDEO_Hs信號(hào)為標(biāo)志接收的圖像。這就需要FPGA對(duì)行(VIDEO_Hs)信號(hào)做去抖動(dòng)處理,但是FPGA接收到的信號(hào)只有EL4583分離出來的行信號(hào),無法分辨信號(hào)上升沿(或者下降沿)的具體位置。因此FPGA根據(jù)需要產(chǎn)生1個(gè)行標(biāo)志信號(hào)(H_flag),來取代不穩(wěn)定的行信號(hào)(VIDEO_Hs),然后將行標(biāo)志信號(hào)(H_flag)和場信號(hào)(VIDEO_Vs)送給DSP,以便對(duì)視頻信號(hào)做出準(zhǔn)確判斷。圖4中(b)圖像是以H_flag信號(hào)為標(biāo)志接收的圖像。

          以不同標(biāo)志接收?qǐng)D像的比較

          圖4 以不同標(biāo)志接收?qǐng)D像的比較

            2.2 PPI口的設(shè)置

            FPGA和DSP之間的數(shù)據(jù)通信是通過PPI口實(shí)現(xiàn)的。PPI(并行外部接口)是半雙工形式,具有雙向端口,最大可進(jìn)行16位數(shù)據(jù)的輸入輸出。 PPI有5個(gè)存儲(chǔ)器來其操作。其中PPI控制寄存器(PPI_CONTROL)設(shè)置了PPI口的操作模式、控制信號(hào)極性以及端口的帶寬。在本設(shè)計(jì)中,設(shè)置PPI_CONTROL為0x00EC,將PPI的工作模式設(shè)置為ITU_656模式,端口的寬度設(shè)置為8位,并且僅僅為接收數(shù)據(jù)的模式。由于每個(gè)在DMA總線上的PPI_CLK_initiated事件(即輸入或輸出操作)都處理16為實(shí)體,也就是說如果傳輸?shù)臄?shù)據(jù)不是16位,則把數(shù)據(jù)的高位補(bǔ)0湊成16為數(shù)據(jù)。這種情況下,更有效的辦法是把數(shù)據(jù)打包,即把2個(gè)FPGA傳輸?shù)?位數(shù)據(jù)合成1個(gè)16位的數(shù)據(jù),再進(jìn)行傳輸,這樣有效地利用了資源,提高了傳輸效率。

            2.3 DSP控制功能實(shí)現(xiàn)

            DSP控制功能的實(shí)現(xiàn)過程,首先設(shè)置DSP的PF此腳,以便判斷PF引腳上的中斷信號(hào)。定義FPGA與DSP的中斷信號(hào)的通信是通過PF6和PF7傳送的,然后對(duì)DMA(直接存儲(chǔ)器訪問)進(jìn)行設(shè)置,在對(duì)視頻信號(hào)進(jìn)行處理時(shí),分別處理奇偶場信號(hào),也就是在某一時(shí)刻只處理信號(hào)的奇數(shù)場或者偶數(shù)場,以便提高信號(hào)的處理速度。這就需要把視頻信號(hào)的奇偶場分別存儲(chǔ),在設(shè)置DMA時(shí),將奇偶場信號(hào)數(shù)據(jù)存儲(chǔ)在不同的地址下面。

            當(dāng)DSP通過PF引腳接收到FPGA發(fā)送的信號(hào)時(shí)開始實(shí)現(xiàn)其控制功能,具體控制的過程為:DSP在接收到PPI口傳輸?shù)牡谝粋€(gè)VIDEO_Vs信號(hào)時(shí),通過場計(jì)數(shù)器(VsCount)開始對(duì)視頻信號(hào)進(jìn)行計(jì)數(shù),然后讀取VsCount的數(shù)值,當(dāng)VsCount的計(jì)數(shù)達(dá)到切換要求時(shí),DSP將發(fā)送一個(gè)切換命令給FPGA,即在某一地址下面寫一個(gè)數(shù)值,讓FPGA通過DSP_A和DSP_D讀取命令完成視頻的切換。由于在視頻切換的前后,兩個(gè)通道的場信號(hào)可能會(huì)出現(xiàn)不同步的現(xiàn)象,所以在通道切換后的第2場開始搜索圖像,圖5分別是DSP從第1場和第2場開始接收?qǐng)D像的結(jié)果。

          從不同場開始接收?qǐng)D像的比較

          圖5從不同場開始接收?qǐng)D像的比較

            3 系統(tǒng)測試結(jié)果

            實(shí)驗(yàn)對(duì)24路視頻信號(hào)進(jìn)行切換,并且設(shè)定每一路視頻信號(hào)的切換時(shí)間為6場,也就是每經(jīng)過6場信號(hào)的時(shí)間就對(duì)視頻通道進(jìn)行一次切換。不同視頻通道之間切換時(shí)的穩(wěn)定時(shí)間也不會(huì)超過一場,也就是說,兩通道之間在切換之后在一場之內(nèi)就可以穩(wěn)定。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)能夠穩(wěn)定、可靠地實(shí)現(xiàn)多視頻通道之間的切換,可以在一套監(jiān)控設(shè)備上添加多個(gè)攝像頭對(duì)不同的場景進(jìn)行實(shí)時(shí)監(jiān)控,這樣不僅有效解決了傳統(tǒng)監(jiān)控系統(tǒng)監(jiān)視目標(biāo)單一的缺點(diǎn),而且提高了監(jiān)控效率,降低了監(jiān)控成本。

            4 結(jié)束語

            首先簡單介紹了整個(gè)系統(tǒng)硬件架構(gòu)和芯片的性能,描述了整個(gè)系統(tǒng)的工作流程,然后著重闡述了DSP和FPGA對(duì)多視頻通道的控制與選通。FPGA整個(gè)設(shè)計(jì)程序是在QuartusⅡ平臺(tái)上用Verilog硬件描述語言編寫,DSP程序在VisualDSP++編譯成功,二者都經(jīng)過多次調(diào)試驗(yàn)證。該系統(tǒng)設(shè)計(jì)已成功應(yīng)用于多場景監(jiān)控告警系統(tǒng)中,準(zhǔn)確、可靠地切換不同視頻通道。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 切換 控制 通道 視頻 DSP FPGA 基于

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();