我在 Atlys Spartan 6 板上实现了 HDMI 发送器和接收器。它工作正常。我正在使用 1080p @ 60Hz。该板需要一个像素,对其进行解码,将其编码回并将其发送到监视器。
现在我需要确定一个新框架的开始。因为我想在屏幕中间画一个正方形(使用 FPGA)。我认为当 HSYNC 和 VSYNC 均为“1”时,这意味着新帧的开始。但似乎并非如此。
谁能告诉我如何识别新 HDMI 帧的开始?
谢谢!
新帧的开始是在 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;
如果您在帧中出现,这可能会标记帧的错误开始 - 如果重要的话,您可能需要一些额外的状态来管理这些情况,但这取决于系统。