2013-11-25 2 views
1

Я внедрил HDMI-передатчик и приемник на плате Atlys Spartan 6. Он работает правильно. Я использую 1080p @ 60Hz. Плата берет один пиксель, декодирует его, кодирует и возвращает на монитор.Идентификация начала кадра

Теперь мне нужно определить начало нового кадра. Потому что я хочу нарисовать квадрат в середине экрана (используя FPGA). Я думал, что как HSYNC, так и VSYNC являются «1», что подразумевает начало нового кадра. Но, похоже, это не так.

Может ли кто-нибудь сказать мне, как определить начало нового кадра HDMI?

Спасибо!

+1

Если HSYNC и VSYNC оба переходят в '1', фактически должны быть началом нового кадра. Вы ищете положительный фронт на обоих этих сигналах? – Russell

+0

Спасибо за ваш ответ .... always @ (posedge pclk) begin if (h_sync & v_sync) begin start = 1'b1; конец Это часть кода. pclk - это пиксель clk. – user2389323

+0

прочитайте это сообщение о поиске краев. Недостаточно то, как вы описали в своем комментарии. Вам необходимо зарегистрировать предыдущее значение сигнала, текущее значение сигнала и искать условие, когда предыдущее значение = 0 и текущее значение = 1. http://stackoverflow.com/questions/8413661/proper- способ-для-сигнала края обнаружения-в-Verilog. – Russell

ответ

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; 

Это может флаг фальстарт кадра, если вы пришли в середине кадра - вам может понадобиться некоторое дополнительное состояние для управления тех случаев, если это имеет значение, но это зависит от системы ,

+0

Это работает ... я не могу поблагодарить вас достаточно ... – user2389323

+0

@ user2389323: рад помочь - зеленый тик - спасибо достаточно :) –

Смежные вопросы