Код:
--------------------------------------------------------------------------------
-- УПРАВЛЕНИЕ СЧЕТЧИКАМИ СТРОК В КАДРЕ 100216 --
--------------------------------------------------------------------------------
-- чтобы не было смещения экрана вниз при частоте VGA 60 Гц
-- пропускаются 32 строки экрана Спектрума сверху экрана,
-- что соответствует 64 строкам VGA.
process (VGA_H(8), VIDEO_H(9))
begin
-- счетчик строк VGA:
if (falling_edge(VGA_H(8))) then -- по спаду старшего бита счетчика точек
-- если выходная частота кадров 48/50 Гц
if (SET_FK_OUT = '0') then
if (RESET_V = '0') then -- если начало кадрового синхроимпульса:
VGA_V <= (others => '0'); -- обнуляем счетчик строк VGA
else -- иначе
VGA_V <= VGA_V + 1; -- увеличиваем счетчик строк VGA
end if;
else
-- иначе, если выходная частота кадров 60 Гц
if VGA_V = 587 then -- и последняя строка в кадре (523+64=587):
VGA_V <= ("0001000000"); -- первая отображаемая строка VGA: номер 44
else -- иначе
VGA_V <= VGA_V + 1; -- увеличиваем счетчик строк VGA
end if;
end if;
end if;
--------------------------------------------------------------------------------
-- счетчик строк VIDEO:
if (falling_edge(H_COUNT(9))) then -- по спаду ст. бита счетчика точек
if (RESET_V = '0') then -- если начало кадрового синхроимпульса:
VIDEO_V <= (others => '0'); -- обнуляем счетчик строк VIDEO
else
VIDEO_V <= VIDEO_V + 1; -- увеличиваем счетчик строк VIDEO
end if;
end if;
-------------------------------------------------------------------------------
end process;