Да не, EDID - это уже фантастика.
На самом деле, квадратных (5:4) мониторов уже лет 10 как не делают. Для современных мониторов стандарт - 1920*1080. А совсем скоро стандартом станет 3840*2160
Наши простенькие FPGA и близко не подойдут к поддержке таких разрешений.
Все квадратные разрешения эти мониторы делают интерполяцией видеосигнала, с соответствующей корявой картинкой, и придется с этим смирится. Впрочем, мой текстовый экран 640*480 смотрится не так уж и плохо, если кто запустит проект - сам убедится. Думаю, что и графика 400*286 будет смотреться не хуже, слишком уж она грубая. Посмотрим...
Что касается поддержки смены разрешения, то даже не знаю, как такое возможно. Там же все тайминги разные, а вешать селекторы в виде кучи вложенных сцепленных if в цикле попиксельной обработки - это будет выглядеть примерно так:
Код:
if ((col < 11'd141 && mode == 2'b0) |
(col < 11'd190 && mode == 2'b1) |
(col < 11'd230 && mode == 2'b2) |
...
) begin
И так по всему циклу. Синтезатор там такого насинтезирует, что ни в какие временные рамки не влезет. И это еще только развертка, а там ведь и адресация видеобуфера съедет, и соответствие шрифта и знакоместа для текстовых экранов... Ну, настоящие специалисты, наверное, знают, как решить эту проблему просто и изящно, но мне ничего простого в голову не приходит.
Ладно, надо будет попробовать хоть как-то сделать, а там видно будет. Для начала придется текстовый видеоконтроллер переделать на 800*600. Это не так-то просто, он ведь сложнее чисто графического, поскольку должен не просто отображать пиксели из видеобуфера, а выдавать изображение символов на основе шрифтов. На УКНЦ, например, из-за этого вообще отказались от текстовых режимов и текст графикой рисуют.