Неспешно оптимизирую формирователь видео-сигнала. Очень сильно усложняет логику наличие аж 4-х режимов - 384/480 столбцов, 640х480/640х350.
Вот пример формирования горизонтального синхроимпульса:
Минимизировал как мог, но дальше уже некудаКод:h_sync_pol_sig <= H_SYNC_POL_WS when (wide_scr_en='1') else H_SYNC_POL; -- начало горизонтального синхроимпульса h_sync_4_start <= h_cnt(9) and h_cnt(6) and (not h_cnt(7)) and h480en; h_sync_3_start <= h_cnt(9) and h_cnt(4) and (h_cnt(7) nor h_cnt(8)) and (not h480en); h_sync_start <= h_sync_3_start or h_sync_4_start; -- конец горизонтального синхроимпульса h_sync_end_mid <= h_cnt(9) and h_cnt(5); h_sync_4_end <= h_sync_end_mid and h_cnt(7) and h480en; h_sync_3_end <= h_sync_end_mid and h_cnt(6) and h_cnt(4) and (not h480en); h_sync_end <= h_sync_3_end or h_sync_4_end; process (h_sync_3_start, h_sync_3_end) begin if (h_sync_end = '1') then h_sync <= not h_sync_pol_sig; elsif (h_sync_start = '1') then h_sync <= h_sync_pol_sig; end if; end process;
В некоторых местах при подобной оптимизации сразу "уходит" стабильность, выраженная в том, что перестаёт считать счётчик по вертикали - меняю формирование сигнала BLANK, а летит счётчик =/





"Байт-48"
Ответить с цитированием