Неспешно оптимизирую формирователь видео-сигнала. Очень сильно усложняет логику наличие аж 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, а летит счётчик =/