Здесь всё очень просто:
- Адрес видео - щёлкает с частотой 50/4=12,25МГц при максимальном разрешении (вспоминаем, что биты 0 и 1 счётчиков не выводятся, а бит 2 переключает плоскости в 3-х и 4-х битных режимах);
- Данные видео - через 10-20нс после смены адреса;
- Защёлкивание видеоданных в промежуточных буферах - формируется в CPLD, легко подобрать корректную фазу;
- Защелкивание видеоданных в выходных регистрах - аналогично;
- Клок для сдвига регистров из п.4 - аналогично.
- Формирование выходного сигнала RGB полностью асинхронно.
Так что абсолютно никаких проблем нее вижу при использовании CPLD.
Ради эксперимента логику видеовыхода - вышло 89 ячеек и 66 пинов. Свободно 18 пинов и 71 ячейка - вполне должно хватить, что бы уместить основные системные порты (в том числе и управление памятью). Если убрать переключение видеорежимов "на лету", освободятся ещё ячейки.

