Дополнение про глючок. Если вышеприведенная правка не помогает, то может помочь замена
наКод:if (hcnt = 128 and vcnt (9) = '0') then screen_pre <='1'; elsif (hcnt = 511) then screen_pre <= '0';
но в целом суть этой плавающей проблемы мне непонятнаКод:if (hcnt>=128 and hcnt<=511 and vcnt (9) = '0') then screen_pre <='1'; else screen_pre <= '0';