好久没有写技术类的日志了,今天跟大家分享一段代码,用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
|