|
好久沒(méi)有寫技術(shù)類的日志了,今天跟大家分享一段代碼,用FPGA做視頻處理的也許會(huì)用到,主要功能是用FPGA從8位的ITU-R BT.656 YCrCb 4:2:2數(shù)據(jù)流中恢復(fù)出行場(chǎng)同步以及奇偶場(chǎng)標(biāo)識(shí)。前段時(shí)間寫的,經(jīng)過(guò)實(shí)際驗(yàn)證的。全部采用同步邏輯,模塊化后與其他模塊間通過(guò)寄存器相連,可保障良好的時(shí)序。嘿嘿,在CYCLONE3上編譯后僅占用9個(gè)LE。
分享出來(lái)方便從事這方面工作的朋友,希望能為大家節(jié)省點(diǎn)時(shí)間。有對(duì)656視頻格式感興趣的朋友也可以拿去加深一下對(duì)這種視頻格式的了解,學(xué)習(xí)FPGA編程剛?cè)腴T的同志也可以做個(gè)參考~
// LOGIC: ITU-R BT.656 sync-signals generation
// MODULE NAME: sync_gen_656
// FILE NAME: sync_gen_656.v
// COMPANY: BLUESTAR
// DESIGNER: zhangjindong
// REVISION HISTORY: 1.0
// Revision: 1.0 30/5/2010
// Description: recover sync-signals from ITU-R BT.656
module sync_gen_656 (pixclk, vdata_in,
hsync, vsync, field_id);
input pixclk;
input [7:0] vdata_in;
output hsync, vsync, field_id;
reg hsync, vsync, field_id;
reg [1:0] state;
always@(posedge pixclk) //27MHz
begin
if (vdata_in[7:0] == 'hFF)
begin
state <= 0;
end
else
begin
if (state != 3)
begin
state <= state + 1;
if (state == 2)
{field_id, vsync, hsync} <= vdata_in[6:4];
else
{field_id, vsync, hsync} <= {field_id, vsync, hsync};
end
else
begin
state <= 3;
{field_id, vsync, hsync} <= {field_id, vsync, hsync};
end
end
end
endmodule
|
|