MDA/Hercules/CGA/EGA to VGA конвертер на ПЛИС (Канадский скандаблер на FPGA Cyclone IV)

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Сообщение Rio444 » 17.03.2018,22:29

-MiS- писал(а):А какие еще варианты решения данной задачи?
Так те же самые, только синхронно с видеосигналом. Частоты ниже, компоненты дешевле и доступнее.
Не хочу дальше развивать эту тему, потому что не имею опыта работы с ПЛИС, а погружаться сейчас не вижу смысла.

Вариант, предложенный автором разработки, предполагает, что мы ничего не знаем о видеосигнале.
Получается очень универсально, но дорого.
На самом деле, мы знаем, что пикселей в строке 320, 640 или 720.
Электронка: Изображение копия Изображение

justontime
Full Member
Сообщения: 264
Зарегистрирован: 10.09.2016,00:06
Откуда: СПб

Вклад в сообщество

Сообщение justontime » 18.03.2018,07:34

Rio444 писал(а):На самом деле, мы знаем, что пикселей в строке 320, 640 или 720.
Я же говорил, что это знание принципиально ситуацию не меняет - частоты не идеальны и плавают по времени, поэтому жестко привязаться к началу строки и отсчитывать пикселы по одному не получится. Вернее, картинка будет даже читабельной, но совершенно неудовлетворительной.

Кроме того, экономия при использовании более медленной памяти получается смешная (на фоне остальной стоимости).

Единственное, что можно сделать - если под рукой есть бесплатная память, то требование быстродействия можно понизить за счет увеличения разрядности. Естественно, плату и код придется переделывать

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Сообщение Rio444 » 18.03.2018,08:04

justontime писал(а):Я же говорил, что это знание принципиально ситуацию не меняет - частоты не идеальны и плавают по времени, поэтому жестко привязаться к началу строки и отсчитывать пикселы по одному не получится.
Как это возможно? Тогда изображение на экране тоже должно плавать.
И зачем тогда кварцы на видеокартах стоят?
На некоторых по несколько.
Электронка: Изображение копия Изображение

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Сообщение i8088 » 18.03.2018,08:24

justontime видимо имел ввиду фазовую погрешность, которая
будет накапливаться к концу строки из-за неизбежных различий частот.

Тут надо посчитать, какое допустимое отклонение частот генераторов, чтобы в конце строки мы не "уплыли" Типа как у COM port-ов.

Хотя как по мне, привыкшему все делать на жесткой логике и MCU
(я не работал с ПЛИС) собрать с PLL может быть интереснее было бы.

justontime
Full Member
Сообщения: 264
Зарегистрирован: 10.09.2016,00:06
Откуда: СПб

Вклад в сообщество

Сообщение justontime » 18.03.2018,08:29

Rio444 писал(а):Как это возможно? Тогда изображение на экране тоже должно плавать.
А оно и плавает - совсем немного. Только если постепенное "уплывание" в виде растягивания всей картинки на (условно) треть пиксела человеческому глазу незаметно, то в случае с конвертором это может привести к тому, что целый ряд пикселов будет менять свой цвет. Например, правый (к правому краю накапливается ошибка смещения) вертикальный белый бордюр (линия) Norton'а будет дрожать по ширине плюс-минус пиксел, что на статической картинке будет смотреться кошмарно. Ну и т.п. вещи
Rio444 писал(а):И зачем тогда кварцы на видеокартах стоят?
Правильно - для задания частоты. Только эта частота, как и все в вашем мире, несовершенна - и изначально, и по времени (например, изменение температуры). Плюс еще, например, PLL FPGA очень часто не в состоянии сформировать конкретно заданную частоту - та же 14.31818... из 50 МГц не получается (не говоря еще об изначальной погрешности тактового генератора)

Аватара пользователя
Tronix
Advanced Member
Сообщения: 3625
Зарегистрирован: 15.01.2008,11:00
Откуда: Москва

Вклад в сообщество

Сообщение Tronix » 18.03.2018,08:30

-MiS- писал(а):74LVC245 покупал в тут
Там минимально от 21 штуки со сроком в 12 дней, разве нет? Таких предложений то вагон, но все они означают одно - что нет на складе, за 12 дней постараемся привезти с китая -)))

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Сообщение Rio444 » 18.03.2018,09:27

justontime писал(а):Только если постепенное "уплывание" в виде растягивания всей картинки на (условно) треть пиксела
Прошу меня простить, видимо я чего-то не понимаю.
Пусть уплывает на треть пикселя.
Сигнал EGA цифровой? Разве не так?
Если мы будем делать выборку строго посередине, то даже, если частота уплывёт на треть длительности одного пикселя, разве это повлияет на результат?


Ещё раз прочитал описание. Постепенно становится понятнее, что хотел автор. Но всё равно не понятно, зачем считывать значения видеосигнала на частоте >100МГц и сохранять их на этой же частоте во фрейм-буфер. Потом читать их и преобразовывать в сигнал VGA с частотой в несколько раз меньше? Почему нельзя сразу преобразовывать считанный сигнал и его уже сохранять во фрейм-буфер? Частота снизится в ~7 раз.
Электронка: Изображение копия Изображение

justontime
Full Member
Сообщения: 264
Зарегистрирован: 10.09.2016,00:06
Откуда: СПб

Вклад в сообщество

Сообщение justontime » 18.03.2018,09:51

Выборка не будет «строго посередине», она будет чуть в стороне от середины из-за разности частот карты и преобразователя. С каждым пикселем в пределах строки эта разность накапливается, и в определенный момент может дойти до границы пикселя.
Это я еще не принимаю во внимание переходные процессы на границах пикселей, которые дополнительно (и значительно) ухудшают ситуацию.
Как уже говорил, даже специализированная микросхема с ФАПЧ в таком режиме работала не идеально (хотя, нужно признать, я не до конца поигрался с настройками, которых там много).

Аватара пользователя
Tronix
Advanced Member
Сообщения: 3625
Зарегистрирован: 15.01.2008,11:00
Откуда: Москва

Вклад в сообщество

Сообщение Tronix » 18.03.2018,09:55

Немножко поснимал Hercules карточку:

Изображение Изображение Изображение
Изображение Изображение Изображение
Изображение Изображение
Изображение Изображение

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Сообщение Rio444 » 18.03.2018,10:07

Tronix писал(а):
Значит алгоритм я понял правильно.
Преобразование происходит не попиксельно.
На один пиксель EGA происходит 7-8 выборок, которые сохраняются во фрейм-буфере.
Потом из фрейм-буфера происходит чтение, но уже 6-7 значений на пиксель (для преобразования 640 пикселей в строке в 720), которые усредняются и формируют VGA сигнал.
Но по-прежнему не понятно, почему нельзя сначала преобразовать, потом писать во фрейм-буфер?
Электронка: Изображение копия Изображение

Аватара пользователя
Tronix
Advanced Member
Сообщения: 3625
Зарегистрирован: 15.01.2008,11:00
Откуда: Москва

Вклад в сообщество

Сообщение Tronix » 18.03.2018,10:39

Поснимал немножко CGA карточку. Режим эмуляции "сканлайнов":

Изображение

Обычный CGA:

Изображение Изображение

Режим эмуляции композитного монитора:

Изображение Изображение Изображение Изображение

Ответить