基于NiosII的視頻采集與DVI成像
2 模擬視頻信號解碼
視頻解碼格式有ITU-RBT.601標準格式和ITU-RBT.656標準格式。ITU-RBT.601標準需要行、場(chǎng)同步信號線(xiàn),ITU-RBT.656標準無(wú)需同步信號線(xiàn)。ITU-RBT.656標準采用8 bit傳輸格式,亮度信號Y和色度信號Cb/Cr交替傳輸。本設計采用ITU-RBT.656標準。我國電視制式為PAL-D,一幀電視圖像有625行,每行可視像素為720個(gè),因為有行消隱和場(chǎng)消隱,實(shí)際可視像素面為720×576,電視圖像傳輸采用奇偶場(chǎng)交替傳輸,所以通常奇偶場(chǎng)各傳輸288行。圖2是行同步4:2:2輸出時(shí)序圖。本文引用地址:http://dyxdggzs.com/article/195400.htm
PAL-D制式一行可視像素有720個(gè),因為采用ITU-RBT.656標準,每2個(gè)DATACLK時(shí)鐘才輸出一個(gè)像素,所以,一行可視像素需要1 440個(gè)DATACLK時(shí)鐘。一行像素輸出完畢后緊接4個(gè)行結束標志,然后進(jìn)入行消隱階段,行消隱階段結束后,4個(gè)字符的開(kāi)始標志表明一行的開(kāi)始,從4個(gè)結束標志到4個(gè)開(kāi)始標志,共有288個(gè)DATACLK時(shí)鐘。這288個(gè)DATACLK期間的數據不用于顯示,用于同步和消隱,所以對于PAL-D制式,采用ITU-RBT.656標準傳輸一行視頻需要1 728個(gè)DATACLK時(shí)鐘[7]。
EAV和SAV分別表示一行有效視頻的結束和開(kāi)始,EAV/SAV序列由FF-00-00-XX表示,其中XX是狀態(tài)字,表1為EAV/SAV序列字段位表。
F場(chǎng)標志:F=0是偶場(chǎng),F=1是奇場(chǎng);V視頻有無(wú)效標志:V=0為有效視頻數據,V=1為無(wú)效視頻數據;H有效視頻結束起始標志:H=0是SAV,H=1是EAV。
從624行~22行和311行~335行為無(wú)效視頻行,此時(shí)V=1;從23行~310行和336行~623行為有效視頻行,此時(shí)V=0。從1行~312行為偶場(chǎng),此時(shí)F=0;從313行~625行為奇場(chǎng),此時(shí)F=1。
配置TVP5146使其正確初始化。設置正常工作模式,視頻選擇輸入口,色度和亮度AGC自動(dòng)增益,視頻輸入為PAL-D制式625行,解碼輸出格式為10 bit 4:2:2(2倍像素時(shí)鐘速率)內嵌同步字符,實(shí)際10 bit輸出時(shí)最低2 bit可丟棄。設置亮度信號范圍為16~235,色度信號范圍為16~240。配置NiosII軟核,設置CPU類(lèi)型為經(jīng)濟型32 bit,CPU時(shí)鐘頻率為100 MHz,復位向量起始地址為Flash,異常向量起始地址為On-chip-ram,設置PIO線(xiàn)模擬I2C協(xié)議,用于配置TVP5146,配置Avalon-MM三態(tài)橋用于掛接Flash,配置On-chip-ram為32 KB[8],添加一個(gè)Avalon從設備。該從設備為用戶(hù)自定義接口,NiosII軟核可以通過(guò)該從設備口實(shí)時(shí)訪(fǎng)問(wèn)轉換后的RGB像素,進(jìn)行圖像處理。
3 視頻圖像數據采集
視頻解碼芯片輸出內嵌同步字符8 bit視頻數據,參照解碼芯片輸出DATACLK時(shí)鐘,FPGA采集視頻解碼數據。FPGA采集之前先要進(jìn)行圖像裁剪、交織處理。裁剪處理是為了產(chǎn)生640×480的像素面,交織處理即變隔行視頻數據為逐行視頻輸出,即兩場(chǎng)圖像交叉嵌入一個(gè)存儲體中,形成一幀。當一幀存儲完畢后,切換存儲體,而先前的存儲體內容參照系統時(shí)鐘,依次像素處理送DVI編碼芯片進(jìn)行顯示。
3.1 視頻信號采集控制
視頻輸出信號為內嵌同步字符8 bit Y:Cb:Cr=4:2:2輸出,本設計中視頻信號采集采用狀態(tài)機控制法。視頻信號采集控制狀態(tài)機表示如圖3所示。
Idel:默認空閑狀態(tài)。如果視頻采集標志capture置位,則進(jìn)入Wait State狀態(tài);如果capture不置位,則停留在Idel狀態(tài)。
Wait State:此時(shí)如果收到數據0xff,則進(jìn)入State1,其他情況仍然循環(huán)停留。
State1:如果此時(shí)收到數據0x00,則進(jìn)入State2;收到其他數據則進(jìn)入Error。
State2:如果此時(shí)收到數據0x00,則進(jìn)入New page狀態(tài),否則狀態(tài)返回到Wait State。
New page:此時(shí)視頻處于消隱狀態(tài),如果收到的視頻數據vpo[6:5]=01,則正在消隱,轉入第一行數據接收狀態(tài)First Line,否則跳回Wait State狀態(tài)。
First Line:如果收到vpo[6:4]=000,表明下一個(gè)數據即視頻圖像數據,否則返回到Wait State。
Chroma blue:正確有效的數據,如果此時(shí)接收到vpo=0xff,則表明數據轉入End Line,如果收到vpo=0x00,則轉入Error狀態(tài)。
Luma blue:亮度藍色數據,接收完轉入Chroma red狀態(tài)。
Chroma red:色度紅色數據,接收完轉入Luma red狀態(tài)。
Luma red:亮度紅色數據,接收完轉入Chroma blue狀態(tài)。
End Line:如果vpo[6:4]=011,表示奇數場(chǎng)結束,偶數場(chǎng)將要開(kāi)始,轉入New line狀態(tài);如果vpo[6:4]=111,表示一幀數據結束,轉入Idle狀態(tài);如果vpo[5:4]=01,表示一行結束,下一行將要開(kāi)始,轉入New line狀態(tài);否則進(jìn)入Error狀態(tài)。
New Line:如果接收到的vpo[5:4]=00,表示有效數據接收,轉入Chroma blue狀態(tài);否則轉到End Line狀態(tài)。
評論