1

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

现在我需要确定一个新框架的开始。因为我想在屏幕中间画一个正方形(使用 FPGA)。我认为当 HSYNC 和 VSYNC 均为“1”时,这意味着新帧的开始。但似乎并非如此。

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

谢谢!

4

1 回答 1

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;

如果您在帧中出现,这可能会标记帧的错误开始 - 如果重要的话,您可能需要一些额外的状态来管理这些情况,但这取决于系统。

于 2013-11-26T10:46:14.390 回答