让 VPO 和 HPOS 输出 vsync 和 hsync



对于一个项目,我得到了一个分辨率为1024 * 600的屏幕。对于该项目,我需要 20px *20px 的红色平方。我试图让我的垂直位置 en 水平故事 pos 脱离 hsync en vsync 脉冲,但这不起作用。有人有解决方案吗?

process(int_hsync, int_vsync)
begin
 if Rising_Edge(int_vsync) then
    vsync <= 0;
 elsif Rising_Edge(in_clk) then
    vsync <= vsync+1;
 end if;
 if Rising_Edge(int_hsync) then
    hsync <= 0;
 elsif Rising_Edge(in_clk) then
    hsync <= hsync+1;
 end if;
end process;
process(in_clk)
begin
    if Rising_Edge(in_clk) then
        if hsync < 20 and vsync <20 then
            int_pixel   <= X"0000ff";
        else
            int_pixel   <= X"ff0000";
        end if;
    end if;
end process;

如果没有一些额外的细节,很难说出你想做什么。

但是,我确实注意到您的过程仅对int_hsyncint_vsync敏感,但您正在寻找in_clk rising_edge。您应该执行与此类似的边缘检测(假设in_clk比 hsync 和 vsync 快得多):

process(in_clk)
begin
  if rising_edge(in_clk) then
     int_vsync_dly <= int_vsync;
     int_hsync_dly <= int_hsync;
     if int_vsync = '1' and int_vsync_dly = '0' then -- rising edge detect
        vsync <= 0;
     else
        vsync <= vsync+1;
     end if;
     if int_hsync = '1' and int_hsync_dly = '0' then -- rising edge detect
        hsync <= 0;
     else
        hsync <= hsync+1;
     end if;
  end if;
end process;

每次观察到相应触发信号的上升沿时,这都会增加vsynchsync计数器。请确保在边缘检测之前正确注册输入,以帮助避免亚稳定情况。

相关内容

  • 没有找到相关文章

最新更新