基于DSP+FPGA多視頻通道的切換控制
圖3 軟件控制流程
2.1 FPGA模塊功舵買現(xiàn)
FPGA控制部分用于對(duì)視頻信號(hào)進(jìn)行預(yù)處理并且等待DSP發(fā)送切換命令。其基本思路為:當(dāng)某一路視頻信號(hào)經(jīng)過AD9203之后,輸出的視頻量化信號(hào)被送進(jìn)FPGA做預(yù)處理,然后被送入DSP進(jìn)行算法處理,同時(shí)FPGA等待DSP根據(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)志接收的圖像。
圖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é)果。
圖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)確、可靠地切換不同視頻通道。
評(píng)論