好久沒有寫技術類的日志了,今天跟大家分享一段代碼,用FPGA做視頻處理的也許會用到,主要功能是用FPGA從8位的ITU-R BT.656 YCrCb 4:2:2數據流中恢復出行場同步以及奇偶場標識。前段時間寫的,經過實際驗證的。全部采用同步邏輯,模塊化后與其他模塊間通過寄存器相連,可保障良好的時序。嘿嘿,在CYCLONE3上編譯后僅占用9個LE。
分享出來方便從事這方面工作的朋友,希望能為大家節省點時間。有對656視頻格式感興趣的朋友也可以拿去加深一下對這種視頻格式的了解,學習FPGA編程剛入門的同志也可以做個參考~
// 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
|