摘 要: 以FPGA為核心芯片的視頻監(jiān)測(cè)系統(tǒng),結(jié)合MAX+PLUSII介紹了用VHDL進(jìn)行的FPGA設(shè)計(jì),實(shí)現(xiàn)對(duì)視頻信號(hào)的實(shí)時(shí)監(jiān)測(cè),。詳細(xì)描述了對(duì)圖像靜止的判斷,并指出了在FPGA設(shè)計(jì)過程中應(yīng)注意的問題,。
關(guān)鍵詞: FPGA VHDL 視頻監(jiān)測(cè)
電視信號(hào)質(zhì)量的優(yōu)劣直接關(guān)系到廣大人民群眾的切身利益,。電視也是現(xiàn)代化大眾傳媒工具和信息工具,其重要性不言而喻。為了確保電視信號(hào)高質(zhì)量,、不間斷地播出,必須對(duì)播出質(zhì)量進(jìn)行實(shí)時(shí)監(jiān)測(cè),。電視視頻實(shí)時(shí)監(jiān)測(cè)系統(tǒng)就是針對(duì)這一目的而設(shè)計(jì)的。
實(shí)時(shí)視頻監(jiān)測(cè)系統(tǒng)的主要定性監(jiān)測(cè)指標(biāo)有:“是否藍(lán)屏”,、“是否黑屏”,、“是否無圖像”和“圖像是否出現(xiàn)靜止”等,其中對(duì)于“圖像出現(xiàn)靜止”的實(shí)時(shí)監(jiān)測(cè)具有待處理數(shù)據(jù)量大且判別方式復(fù)雜等特點(diǎn),同時(shí)還要保證處理過程的實(shí)時(shí)性。所以這是實(shí)時(shí)視頻監(jiān)測(cè)系統(tǒng)中的難點(diǎn),也是本文的重點(diǎn),。本文主要闡述了采用VHDL硬件描述語言對(duì)現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,FPGA)進(jìn)行設(shè)計(jì),實(shí)現(xiàn)大數(shù)據(jù)量高速處理的算法,以達(dá)到對(duì)圖像靜止實(shí)時(shí)監(jiān)測(cè)的目的,。
1 視頻監(jiān)測(cè)系統(tǒng)簡(jiǎn)介
系統(tǒng)結(jié)構(gòu)如圖1所示。系統(tǒng)采用Philip公司的視頻A/D芯片SAA7114H,將模擬電視信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),同時(shí)產(chǎn)生同步信號(hào),。用ALTERA公司的ACEX1K系列EP1K30芯片作為控制器進(jìn)行高速數(shù)據(jù)的讀寫及比較操作,而以高速SRAM作為存儲(chǔ)器,。
視頻信號(hào)進(jìn)入SAA7114H后,可以得到行場(chǎng)同步信號(hào)以及量化后的象素值。然后可以在FPGA中,通過判斷有無行場(chǎng)同步信號(hào)以得出是否有圖像,。還可以通過對(duì)YUV值的判斷知道是否為藍(lán)屏或是黑屏,也可以將某場(chǎng)象素值保存,并與下一場(chǎng)進(jìn)行比較,就可以知道是否為圖像靜止,。用于比較的門限可以通過8051進(jìn)行設(shè)置,比較的結(jié)果送到8051中做進(jìn)一步的處理。
2 對(duì)“圖像靜止”判斷的實(shí)現(xiàn)
分析“圖像出現(xiàn)靜止不動(dòng)”的特點(diǎn)是:相鄰二場(chǎng)或多場(chǎng)圖像的畫面相同,此時(shí)的視頻信號(hào)采樣后的相鄰二場(chǎng)中相同點(diǎn)的象素值應(yīng)該是相近的,。所以,只要能判斷出二場(chǎng)象素值是否相近就可以判斷圖像是否靜止,。故在系統(tǒng)中,需要將上一場(chǎng)的各點(diǎn)象素值存入SRAM中,并在新一場(chǎng)信號(hào)到來時(shí),先讀出SRAM中相應(yīng)點(diǎn)的數(shù)值,進(jìn)行比較,然后將新的數(shù)據(jù)存入SRAM,等待下一場(chǎng)數(shù)據(jù)到來時(shí)重復(fù)以上動(dòng)作。
根據(jù)以上的算法,系統(tǒng)需要FPGA產(chǎn)生SRAM地址及讀寫控制信號(hào)和比較控制信號(hào),并進(jìn)行數(shù)據(jù)的比較,。由于待處理數(shù)據(jù)量大且系統(tǒng)的實(shí)時(shí)性要求,故對(duì)數(shù)據(jù)的比較以流水方式在時(shí)鐘的驅(qū)動(dòng)下按拍分解進(jìn)行,。
2.1 視頻信號(hào)采樣
要實(shí)現(xiàn)對(duì)模擬電視視頻信號(hào)的數(shù)字化監(jiān)測(cè),首先要對(duì)視頻信號(hào)進(jìn)行數(shù)字化處理,。這里采用Philips公司的SAA7114H芯片對(duì)模擬電視信號(hào)進(jìn)行數(shù)字化,。SAA7114H具有6路視頻輸入,可以對(duì)PAL制、NTSC制和SECAM等制式的全電視信號(hào)進(jìn)行自適應(yīng)的A/D轉(zhuǎn)換,輸出格式為Y:U:V=4:2:2的數(shù)字視頻碼流,量化后的YUV值與模擬視頻信號(hào)亮度及色度的對(duì)應(yīng)關(guān)系如圖2所示,。在SAA7114H芯片內(nèi)部集成了抗混迭濾波和梳狀濾波等,可以直接輸出高質(zhì)量的數(shù)字視頻信號(hào),。它具有自動(dòng)的場(chǎng)頻檢測(cè)特性,且可以直接從I/O腳輸出場(chǎng)同步信號(hào)IGPV、行同步信號(hào)IGPH及其時(shí)序關(guān)系如圖3所示的象素時(shí)鐘ICLK,而省去了同步電路的設(shè)計(jì),。芯片內(nèi)部鎖相環(huán)技術(shù)的集成使得系統(tǒng)的可靠性和穩(wěn)定性均有很大提高,。
SAA7114H還可以通過對(duì)控制字的設(shè)置,直接控制行同步的有效時(shí)間,。這些控制字可以用CPU通過I2C總線進(jìn)行配置。這樣,可以很方便地避開行消隱期的采樣,而直接對(duì)有效數(shù)據(jù)進(jìn)行處理,。
2.2 FPGA的模塊設(shè)計(jì)
本系統(tǒng)的核心控制部分由1片ALTERA公司基于SRAM工藝的ACEX1K系列FPGA實(shí)現(xiàn),。它可實(shí)現(xiàn)在系統(tǒng)多次編程,特別適合于實(shí)驗(yàn)板和多功能樣機(jī)的設(shè)計(jì)。這里,采用了Top-Down的設(shè)計(jì)方法,以VHDL語言進(jìn)行控制部分的設(shè)計(jì),。下面先根據(jù)系統(tǒng)指標(biāo)要求,將系統(tǒng)的功能細(xì)分如下,。
(1)控制信號(hào)產(chǎn)生和比較部分
本模塊產(chǎn)生SRAM的讀寫控制信號(hào)nRDOUT、nWROUT和比較時(shí)鐘CMPCLK,并且對(duì)讀出的數(shù)據(jù)進(jìn)行實(shí)時(shí)比較,。其中nRDOUT和nWROUT都必須滿足相應(yīng)SRAM的時(shí)序要求,CMPCLK必須在數(shù)據(jù)從SRAM讀出并穩(wěn)定之后才可以有動(dòng)作,。為了便于從上層軟件來控制底層硬件的操作,將何時(shí)讀SRAM并進(jìn)行比較的權(quán)力交給CPU,由SEL來控制,并且可以在需要時(shí)將SRAM中的數(shù)據(jù)讀入CPU。其控制信號(hào)時(shí)序如圖4所示,。
在CPU需要對(duì)數(shù)據(jù)進(jìn)行比較時(shí),將數(shù)據(jù)從SRAM中讀出(nRDOUT低電平有效),并與當(dāng)前數(shù)據(jù)進(jìn)行比較,若二者之差在DIFFERENT內(nèi)則輸出EN為高電平,否則為低電平,。當(dāng)EN為高電平時(shí),在CMPCLK的上升沿開始計(jì)數(shù)。數(shù)據(jù)比較模塊仿真結(jié)果如圖5所示,。
(2)數(shù)據(jù)預(yù)處理和地址產(chǎn)生部分
為了使在SRAM的相應(yīng)地址準(zhǔn)確地存入相鄰二場(chǎng)相同位置的象素值,需要慎重對(duì)待SRAM地址的產(chǎn)生,且要避免對(duì)行消隱期的數(shù)據(jù)進(jìn)行處理,。可以用SAA7114H的控制字來控制IGPH的有效寬度,而讓IPGH,、IPGV和ODDEVEN作為使能信號(hào),。
在系統(tǒng)中,SAA7114H輸出的象素時(shí)鐘高達(dá)27MHz(即周期為37ns),而要在如此短的時(shí)間內(nèi)完成數(shù)據(jù)的讀寫比較,對(duì)SRAM是極大的考驗(yàn)。但可以采用多通道,、多SRAM的方法來降低對(duì)單個(gè)SRAM的讀寫頻率,不過這樣會(huì)大大占用FPGA的I/O口,增加系統(tǒng)的成本,。因此在系統(tǒng)中,基于夠用的原則,只對(duì)奇場(chǎng)象素中的亮度(Y)進(jìn)行讀寫比較,這樣數(shù)據(jù)處理的周期可增加到148ns。該部分的VHDL實(shí)現(xiàn)如下:
ARCHITECTURE behav OF AddrGen IS
SIGNAL addrclk :STD_LOGIC;
SIGNAL temp :INTEGER RANGE 0 TO 3;
SIGNAL addrtemp:STD_LOGIC_VECTOR
(18 DOWNTO 0);
BEGIN
PROCESS(ICLK,AddrEN)
BEGIN
IF (AddrEN=′0′) THEN//只在IPGH &
IPGV & ODDEVEN=1時(shí)進(jìn)行操作
temp <=0;
ELSIF (ICLK′EVENT AND ICLK=′1′) THEN
IF (temp=1) THEN
//取UYVY格式象素
//中的Y值
BPD<=IPD;
END IF;
temp<=temp+1;
END IF;
END PROCESS;
PROCESS(ICLK,TEMP)
BEGIN
IF (ICLK′EVENT AND ICLK=′0′) THEN
IF TEMP=1 THEN //當(dāng)象素值為Y值
//時(shí),生成地址產(chǎn)生時(shí)鐘
addrclk<=′1′;
ELSE
addrclk<=′0′;
END IF;
END IF;
END PROCESS;
PROCESS (addrclk,AddrCLR)//生成Y值保存的地址
BEGIN
IF (AddrCLR=′0′) THEN
addrtemp<=(OTHERS=>′0′);
ELSIF(addrclk′EVENT AND addrclk=′1′) THEN
addrtemp<=addrtemp+1;
END IF;
END PROCESS;
Yclk<=addrclk;
ADDRESS<=addrtemp;
END behav;
(3)與SRAM的接口
VHDL在語法上提供了in,、out,、buffer、inout四種端口形式,。buffer端口是會(huì)傳遞的,也就是說,與buffer端口相連接的必須還是buffer端口,而in/out端口的信號(hào)流向不是很明確,。因此通常情況下,只有在與SRAM或CPU的雙向數(shù)據(jù)線連接時(shí)使用in/out端口。要注意的是:在仿真時(shí),in/out端口自動(dòng)分為in和out端口;在輸入數(shù)據(jù)時(shí),讓out保持三態(tài),而在要輸出數(shù)據(jù)時(shí)打開,此時(shí)需注意要滿足三態(tài)的要求,否則容易出現(xiàn)信號(hào)沖突的情況,。由于ALTERA公司的器件不支持內(nèi)部三態(tài),因此內(nèi)部信號(hào)不能賦給高阻,所以建議在底層文件中不要直接使用in/out,而是分別用in和out來實(shí)現(xiàn)相同的功能,在頂層文件中用in/out端口或用圖形輸入時(shí)直接用bidir即可,如圖6所示,。
借助于VHDL語言及其綜合工具,可以不關(guān)心具體器件的選擇。但是在系統(tǒng)設(shè)計(jì)中需要注意,不能僅從軟件的角度來看待VHDL問題,。VHDL語句最終是要用硬件實(shí)現(xiàn)的,所以應(yīng)充分考慮到每一條語句在實(shí)際中所對(duì)應(yīng)的電路,。
3 小 結(jié)
本系統(tǒng)采用專用視頻A/D芯片進(jìn)行模數(shù)轉(zhuǎn)換,用FPGA作為控制處理器,可以大大提高系統(tǒng)的運(yùn)行速度,減小電路板的尺寸,降低系統(tǒng)設(shè)計(jì)的難度,增加系統(tǒng)的可靠性和設(shè)計(jì)的靈活性。用VHDL語言進(jìn)行FPGA設(shè)計(jì),具有方法簡(jiǎn)單,、易讀和可重用性強(qiáng)等特點(diǎn),。
本系統(tǒng)能夠很好地實(shí)現(xiàn)對(duì)電視視頻的實(shí)時(shí)定性監(jiān)測(cè)。本設(shè)計(jì)已成功應(yīng)用于某電視信號(hào)監(jiān)測(cè)系統(tǒng)中,并取得良好效果,。
參考文獻(xiàn)
1 Altera Corporation.ACEX1K Programmable Logic Family Data Sheet.2000
2 Philips Semiconductors.SAA7114H Data Sheet.2000
3 黃正瑾,徐堅(jiān).CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用.北京:電子工業(yè)出版社,2002
4 曾繁泰,陳美金.VHDL程序設(shè)計(jì).北京:清華大學(xué)出版社,2001