识别帧的开始

时间:2013-11-25 19:51:38

标签: fpga hdmi spartan

我在Atlys Spartan 6主板上实现了HDMI发送器和接收器。它工作正常。我使用1080p @ 60Hz。电路板需要一个像素,对其进行解码,对其进行编码并将其发送到监视器。

现在我需要确定新帧的开始。因为我想在屏幕中间画一个正方形(使用FPGA)。我想当HSYNC和VSYNC都是'1'时意味着新帧的开始。但似乎事实并非如此。

有谁能告诉我如何识别新HDMI帧的开始?

谢谢!

1 个答案:

答案 0 :(得分:2)

新帧的开始是在VSYNC变为'1'之后(或同时,它取决于您的数据源)HSYNC也已更改为'1'。

您需要检测边缘。在VHDL中,这样的过程:

process(clk)
   variable last_hsync, last_vsync, got_vsync : std_logic;
begin
   if rising_edge(clk) then
       if vsync = '1' and last_vsync = '0' then
           got_vsync := '1';
       end if;
       if got_vsync and hsync = '1' and last_hsync = '0' then
           first_pixel <= '1';
       end if;
       last_vsync := vsync;
       last_hsync := hsync;
    end if;
end process;

如果你出现在帧中间,那可能会标记一个错误的帧开始 - 如果重要的话,你可能需要一些额外的状态来管理这些情况,但那是系统依赖的。