文獻標識碼: B
文章編號: 0258-7998(2012)12-0048-03
隨著數字技術的迅猛發(fā)展,視頻設備市場正在大規(guī)模地從模擬設備向數字設備轉型,從而導致對數字解碼芯片開發(fā)的大量需求。而在安防領域,高清產品的研發(fā)也在如火如荼地進行。其中,高清串行數字接口HD-SDI產品也憑借其獨特的優(yōu)勢受到了廣泛關注,尤其是在從模擬設備升級到數字設備的過程中。
HD-SDI設備采用BNC接口,在從傳統(tǒng)的模擬框架轉為高清數字監(jiān)控系統(tǒng)的過程中不需要重新布線,只需要更換前端和后端設備即可,為工程節(jié)約了巨大的成本。而且,HD-SDI系統(tǒng)不像IP監(jiān)控系統(tǒng)那樣需要先將視頻信號進行打包壓縮,它是以未經壓縮的數字信號在同軸電纜上進行高速傳輸,因此具有更高的穩(wěn)定性,有效地減少了失真,也不會產生IP高清的延遲現象,符合實時監(jiān)控的要求。同時,它采用75-5同軸線進行系統(tǒng)布線,可以保持圖像的完整性和原始性,為智能視頻分析IVS提供了保障。
考慮到HD-SDI在監(jiān)控領域的巨大發(fā)展?jié)摿湍壳靶酒坎荒軡M足市場需求的現狀,本文通過對高清視頻信號傳輸的研究,在應用FPGA功能的基礎上,設計了一種符合SMPTE292M的高清晰度數字信號轉換電路,以實現對HD-SDI中的有效視頻數據、視頻定時基準碼、行號數據、校驗碼的分析,并對信號進行串/并和并/串的轉換。
1 系統(tǒng)設計
本系統(tǒng)主要使用Xilinx公司的Xilinx ISE Design Suite 13.3軟件進行設計。高清信號采用2:1隔行掃描,總行數為1 125行,場頻為60 Hz,有效行為1 080行,一行1 920個像素。
本系統(tǒng)主要由GTP收發(fā)模塊、數據分析模塊及有效信號提取模塊、雙口RAM和數據變換等模塊組成。GTP收發(fā)模塊為系統(tǒng)的核心部分,包含發(fā)送和接收兩個部分,完成對信號的解串和串碼??紤]到HD-SDI信號中并非所有的信號都是有效的視頻信號,因而在信號處理之前,必須要先分離出有效視頻信號,這部分功能由數據分析模塊實現,并將提取出來的有效視頻信號存于RAM中。數據變換模塊完成對信號模式的轉換。整個系統(tǒng)的設計框圖如圖1所示。
2 核心模塊設計方法
2.1 GTP模塊的設計
該模塊用于HD-SDI視頻信號的接收與發(fā)射,以及串/并和并/串轉換編碼,為本系統(tǒng)的核心。ISE13.3軟件中的IP(CORE Generator&Architecture Wizard)中有GTP Transceiver Wizard,只需要設定相應的參數即可。參數設計可以根據Xilinx發(fā)布的官方文件《Spartan-6 FPGA GTP Transceivers User Guide(UG386)》來設定。
根據參考文獻[1],本系統(tǒng)針對的信號為高清視頻信號,傳輸速率為1.485 Gb/s,數據位寬為20 bit(Cb/Cr,Y),即20 bit數據按照前Cb/Cr、后Y進行處理。相關功能TX Buffer、Rx Buffer、PRBS設定為Enabled。將相應的參數、選項設定好之后,即可將該Core添加到所建立的工程之中。
2.2 數據分析和有效信號提取模塊
該模塊的主要功能是根據HD-SDI數字行、場定時特點,從GTP轉化的高清并行信號中提取有效數字視頻,并以并行的形式輸出,存儲到RAM之中,以方便對信號作進一步變換。
該模塊輸入信號包括并行時鐘pclk、未處理的20 bit并行數據(pre_parallel_in);輸出信號包括提取出的有效數據輸出(processed_parallel_out)、出場識別(f)、場/幀消隱期信號(v)、行消隱期信號(h)、有效信號輸出使能(valid_en)。
參考文獻[2]中設計了4個20 bit的移位寄存器。在每個時鐘周期,前一位的移位寄存器的寄存數據都移到下一個寄存器,即一個時鐘周期里,收到的字節(jié)寫入第一個寄存器,而第一個寄存器的數據移到第二個寄存器,以此類推。因此,越早接收到的數據寄存的位置就越靠后,4個寄存器中的數據順序是字節(jié)輸入順序的逆序。
逆序之后,要對其中的數據進行檢測,從而判定行起始標志碼和行結束標志碼。如果第1個寄存器的數據為十六進制的3FF3FF,而第2、3個寄存器是0,第4個寄存器的第7位和第17位也是0,那么這就是有效行的起始標志碼,其后面的數據則為有效視頻數據,所以要對接下來的數據進行處理和操作;如果前3個寄存器和上述前3個寄存器相同,第4個寄存器的第7位和第17位為1,那么這就是有效行的結束標識碼,其后的數據也就沒有用,應將其舍棄。
同時,也要對XYZ其他各位數據進行分析。通過對第8位的分析,可以判斷當前是在哪一個場區(qū)間;通過對第6位的判斷,可以判定信號是SAV信號,還是EAV信號;如果有效數據中連續(xù)兩行的第8位都有變化,則表明正在傳輸一場新的數據,其中SAV的標志位是場區(qū)間的頭部的位置。核心判定代碼如下:
if(mem4==20'h3ff3ff && mem3==20'h0 && mem2==20'h0 && mem1[9]==1 && mem1[19]==1 && mem1[6]==0 && mem1[16]==0) //3ff,000,000,1xyz;有效圖形起始
else if(mem4==20'h3ff3ff && mem3==20'h0 && mem2==20'h0 && mem1[9]==1 && mem1[19]==1 && mem1[6]==1 && mem1[16]==1) //有效圖形結束
2.3 雙口RAM模塊
根據參考文獻[3],可以利用雙口RAM具有兩個獨立系統(tǒng)的功能達到數據共享的目的。實現雙口RAM的設計方法有很多,考慮到設計的產品可以進行升級,并且盡可能減少系統(tǒng)測試和維護的成本,決定采用FPGA來進行設計實現,所得產品可以實現對數據并行和高速傳送的要求。
本系統(tǒng)中,高清信號的格式為1 920×1 080,一行共1 920個像素,總數據量為1 920×20 bit=38 400 bit,且RAM的數據寬度為20 bit。因此,需要1 920個存儲單元,地址線可取為11 bit。
本模塊包括時鐘clk、20 bit并行寫數據口(data_in)、20 bit并行讀數據口(data_out)、11 bit寫地址線(wr_address)、11 bit讀地址線(rd_address)、寫使能信號線(write)、讀使能信號線(read)。雙口RAM的實現代碼如下:
module dual_port_ram( clk, data_in, rd_address, read,wr_address,write, data_out );
input clk;
input [19:0] data_in;
input [10:0] rd_address;
input read;
input [10:0] wr_address;
input write;
output [19:0] data_out;
reg[19:0]data_out;
reg[19:0]mem[10:0];
always@(posedge clk)
begin
if(write)
mem[wr_address]<=data_in;
else
mem[wr_address]<=mem[wr_address];
if(read)
data_out<=mem[rd_address];
else
data_out<=data_out;
end
endmodule
2.4 數據變換模塊
該模塊為數據分析與提取模塊的逆過程。從雙口RAM中得到有效數據,根據IHD-SDI數字行、場定時特點,添加相應的圖像定時基準碼、行號數據、誤碼檢測碼、輔助數據和消隱數據。
根據HD-SDI數字行、場定時特點,一行數據的順序為:EAV(FFFFF、00000、00000、XYZXYZ)、有效數據、SAV(FFFFF、00000、00000、XYZXYZ)、LN0LN1、CCR0YCR0、消隱數據。根據相應標準,消隱期數據為Y(16=10h)、Cr/Cb(128=1000h),即Y中固定的16 bit填充位置填充的是10h,Cb/Cr中128 bit填充位置填充的是1000h。
根據參考文獻[4],設計該模塊先輸出EAV,然后輸出從雙口RAM得到的有效視頻信號,再輸出SAV信號,最后輸出消隱期數據,至此即完成了將有效數據變?yōu)楦咔逡曨l對應格式的并行數據輸出,如圖2所示。
由圖3可知,當輸入信號pre_parallel_in[19:0]依次輸入十六進制數‘ffffff’、‘00000’、‘00000’、‘ab2ac’時,數據分析與提取模塊正確地判斷此為SAV信號,后面的數據為有效數據,因此Valid_en由‘0’變?yōu)?amp;lsquo;1’,同時并行輸出口processed_parallel_out[19:0]由原來設置的高阻態(tài)變?yōu)檎]敵鰻顟B(tài),開始輸出有效視頻信號。由該圖可以看出,f、v、h相應地發(fā)生變化。由HD-SDI數字行、場定時特點可知,這符合設計要求。
由圖4可知,當有效視頻信號輸入完之后,pre_parallel_in[19:0]再依次輸入‘ffffff’、‘00000’、‘00000’、‘bb2ec’時,該模塊正確地判斷此為EAV信號,有效視頻信號在此時已經輸入完畢,后面的數據不再有效,因此Valid_en由‘1’變?yōu)?amp;lsquo;0’,同時并行數據輸出口processed_parallel_out[19:0]由正常輸出有效數據狀態(tài)變回為高阻態(tài)。由該圖可以看出,v、h相應地發(fā)生變化,由‘0’變?yōu)?amp;lsquo;1’;f沒變,依舊為‘0’。由HD-SDI數字行、場定時特點可知,這符合設計要求。
數據變化模塊的仿真結果如圖5和圖6所示。
如圖5所示,數據輸出端data_converter_out[19:0]首先正確地輸出SAV信號(fffff、00000、00000、ab2ac),之后便將從雙口RAM得到的有效數據data_in[19:0]送到輸出口輸出,這里仿真時將輸入數據都置為00007。
由圖6所示,數據輸出端data_converter_out[19:0]在將1 920個有效數據正確地輸出之后輸出EAV信號(fffff、00000h、00000h、bb2ec),然后輸出消隱期數據40010h。
本文通過對高清視頻信號的研究,在對數字視頻相關知識、HD-SDI、Xilinx公司的FPGA、GTP高速串行收發(fā)器進行深入研究的基礎上,用Xilinx公司最新生產的Spartan-6系列FPGA芯片,成功設計了一種HD-SDI編碼技術。該設計是一種符合SMPTE292M標準的高清晰度數字電視信號轉換電路,可以對HD-SDI中的有效視頻數據、視頻定時基準碼、行號數據、校驗碼進行分析,并就信號進行串/并和并/串的轉換。通過功能仿真驗證了本方案能夠成功實現設計的功能,并且不需使用以前常用的專業(yè)集成芯片GS1560解串器和串碼器GS1532等,具有很強的創(chuàng)新性和實用價值。
參考文獻
[1] 劉曉軍.采用HD-SDI的高清視頻采集卡的設計與實現[J].電視技術,2009,33(1):91-93.
[2] 李鴻強,苗長云,劉曉軍,等.HD-SDI數字視頻信號處理及傳輸的FPGA設計與實現[J].計算機應用研究,2007,24(10):269-272.
[3] 秦鴻剛,劉京科,吳迪.基于FPGA的雙口RAM實現及應用[J].電子設計工程,2010,18(2):72-74.
[4] 彭慧英.基于GS1560的HD-SDI碼流解串器的硬件設計[J].電子質量,2010(6):27-31.