一種用CPLD實(shí)現(xiàn)視頻信號運(yùn)動檢測的方法
(作者未知) 2009/5/20
(接上頁)r>
(5)量化:0和255用于同步;1到254表示抽樣結(jié)果的PCM碼;對于亮度分量Y,16表示黑色,235表示白色;對于色度分量Cb或者Cr,128表示沒有色度。
(6)有三個信號用于同步輸出數(shù)據(jù):行同步信號SHS(15.6kHz)、場同步信號SVS(50Hz)和象素數(shù)據(jù)同步信號SPCLK(27MHz)。
包括消隱期在內(nèi),每幀數(shù)據(jù)掃描625行,每行抽樣864個象素,因此總的分辨率是864×625。一幀數(shù)據(jù)分作奇偶兩場,從上一幀的624行到本幀的310行是奇場,其中上幀624行到本幀22行是奇場消隱期,從23行到310行是奇場有效行;從本幀311行到623行是偶場,其中311到335行是偶場消隱期,336到623行為偶場有效行。圖2是一幀的示意圖。
對于幀內(nèi)的每一行,共有864個象素,其中從第0個到第719個為有效象素,共計(jì)720個,從720個到863個為消隱期象素。每個象素都抽。俜至浚績蓚象素則抽取一個Cr和一個Cb分量。圖3是幀內(nèi)一行以及象素抽樣數(shù)據(jù)排列格式的示意圖。表格第一行是亮度分量Y,第二行是色度分量Cr,第三行是色度分量Cb。
2.2 抽樣
從SAA7113視頻輸出數(shù)據(jù)格式的介紹可以看到,保存完整的一幀數(shù)據(jù)(包括消隱期數(shù)據(jù)在內(nèi))需要864×625×2=1.08×106Byte的SRAM,需要1M以上的存儲空間,這顯然是不可取的,必須對幀數(shù)據(jù)進(jìn)行抽樣。本文介紹的方法的抽樣規(guī)則如下:
(1)抽取一幀數(shù)據(jù)的奇場或者偶場。做比較的兩場抽樣數(shù)據(jù)必須取自相同的場次,或者同為奇場或者同為偶場,否則就沒有可比性。
(2)對連續(xù)的8幀抽取第2幀和第8幀進(jìn)行比較。被抽樣的兩幀之間必須有一定的時間間隔,間隔太短或者太長都會影響檢測的靈敏度。
(3)對一場數(shù)據(jù)抽取有效行中的奇數(shù)行,從場同步信號有效邊沿開始對行同步信號計(jì)數(shù),直到下一個場同步信號為止。從23行到310行是有效行,共144個奇數(shù)行。
(4)對被抽取的行,取其亮度分量Y。根據(jù)圖3中象素數(shù)據(jù)的排列順序,從象素數(shù)據(jù)有效開始,偶數(shù)的象素數(shù)據(jù)脈沖同步的是亮度分量Y。
對于以上的抽樣規(guī)則,有必要說明一下。最終的抽樣數(shù)據(jù)并非全部都是有效數(shù)據(jù),其中還包括了一部分消隱期的數(shù)據(jù)。這樣做是可以理解的,因?yàn)檫\(yùn)動檢測的結(jié)果是根據(jù)兩幀被抽樣數(shù)據(jù)的差值來判定的,雖然消隱期的數(shù)據(jù)是無效的,但是每次消隱期的數(shù)據(jù)是相同的,兩次抽樣數(shù)據(jù)相減結(jié)果是零,并不會影響結(jié)果的判定。之所以對一場的行進(jìn)行抽樣,主要是為了減小抽樣數(shù)據(jù)量,使數(shù)據(jù)總量不超過128K SRAM的容量。
如果要保證抽樣數(shù)據(jù)全部都是有效數(shù)據(jù),那么必須利用輸入的象素數(shù)據(jù)同步脈沖SPCLK、場同步信號SVS和行同步信號SHS對抽樣時刻做嚴(yán)格的同步。這需要消耗額外的CPLD資源,而效果卻不一定好。
根據(jù)以上規(guī)則,實(shí)際抽樣的數(shù)據(jù)量為:864×144=124416Byte,需要的SRAM容量為128K。
2.3 程序
下面給出實(shí)現(xiàn)以上過程的一部分VHDL程序。
sram_write_controlprocessstore_fieldvalidspclk2line_counter
begin
writing<=valid and spclk2 and spclk and store_field and line_counter0
end process
sram_read_controlprocesscompare_fieldvalidspclk2line_counter
begin
reading<=valid and compare_field and spclk2 and line_counter0
end process
這兩個進(jìn)程用于控制SRAM的讀寫信號,reading和writing正好和SRAM的讀寫信號反相。Valid變量指示當(dāng)前輸入的行是否為需要采樣的有效行,spclk是象素數(shù)據(jù)同步脈沖,spclk2是它的二分頻,用于指示當(dāng)前輸入數(shù)據(jù)是否為亮度分量Y。line_counter0=1表示奇數(shù)行。store_field和compare_field分別指示本場數(shù)據(jù)是否需要保存或者需要比較。
update_data_busprocessstore_fieldvalidccd_data
begin
ifstore_field=‘1’and v(未完,下一頁)
|