Как стать автором
Обновить

Комментарии 39

У меня как раз на столе появилась макетная плата с maxII с али. Светодиодиком я уже помигал, а вы подкинули замечательную идею что можно еще с ней сделать.

Кстати, все аналоговые стандарты допускают весьма большие допуски с рабочими частотами, не нужно было об этом излишне волноваться. Некоторые жк мониторы даже вполне стабильно работают с частотами разверток ТВ стандарта 15625 и 50 Гц. Такие модели пользуются популярностью у любителей спектрумов.

По поводу "волнистых линий": чипскопом пробовали смотреть выход VGA? Там он наблюдается? Констрейнты на выходные порты написаны? 25МГц не такая уж и большая частота для 6 спартана

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

Для чипскопа идеально подходит серый градиент: счётчик от 0 до максимума. А раз "волнушка" с амплитудой в пиксель, то и нарушения в счётчике будут отлично видно. Я на циклоне 3 рисовал на VGA 1280х1024@60(108МГц), единственное что картинка генерировалось, а не считалась из памяти

все равно не понимаю как волны в чипскопе будут видны. ведь чипскоп будет на том же клоке что и модуль VGA.

Вот так выглядит нормально работающий счётчик:

А вот так со всякими "приколами":

Т.е. если мы видим нервную линию, то пиксели будут "гулять" и попадать на следующий такт.

НЛО прилетело и опубликовало эту надпись здесь

хорошая идея, но у меня нет ЭЛТ монитора) да и покупать на авито уже не хочетсЯ) цель то была вывести картинку. думаете она была бы равномерно кривой?)

В полностью аналоговых мониторах допустимые отклонения частот будут в процентах, так что точно будет работать.

Думаю, вы зря так быстро отбросили DVI: он простой, как палка и верёвка, и работает на любой разумной пискельной частоте.

Выяснилось, что [HDMI —] последовательный, а это значит, частота вывода пикселей составляет порядка 25 МГц, а после сериалайзера — все 250 МГц.

Это совершенно не проблема. Если верить даташиту на это семейство ПЛИС, OSERDES2 (сериализующий выходной дифференциальный буфер) на чипах спидгрейда -2 (такой чип на картинке) выдаёт 500-1080 мегабит/с в зависимости от источника клока. Если не все OSERDES2 заняты под DDR-память, на них можно было бы организовать видеовыход.

Цифры я смотрел тут: https://docs.xilinx.com/v/u/en-US/ds162, стр. 18.

К тому же этот интерфейс требует модуль TMDS [...]

У этого семейства заявлена поддержка TMDS, но есть ограничения по банкам и питающим напряжениям. Для TMDS-источника даже внешних резисторов не надо, они ставятся на стороне приёмника.

Про схему согласования есть в другом даташите: https://docs.xilinx.com/v/u/en-US/ug381, стр. 36.

Внутри данного интерфейса, как и у HDMI, есть LVDS-линии [...]

У вас тут фактическая ошибка. LVDS — это не общий термин для вообще любого дифференциального интерфейса, а отдельный стандарт. У LVDS и TMDS отличаются уровни напряжений и по-разному делается согласование приёмника с источником. Поэтому ни в DVI, ни в HDMI нет LVDS-линий.

А вот и знания пошли) спасибо) я об этом не знал, изучу вопрос на досуге

нет, хотелось именно монитор)

Нечего разобрать или принципиально не разбираете что ли?

хотелось принципиально иметь возможность подключить любой монитор который найду. это значит надо реализовывать один из видео интерфейсов.

ну для лсд это значит подключим панель через штатный скейлер ;-)

А вот видео загрузки если интересно, грузил на скорости 115200 бод/с:

Прямо очень живо напомнило загрузку заставки (статической картинки прямо) с кассеты напрямую в видеобуфер на ZX Spectrum, которые там обычно грузились перед игрой или другой большой программой.

Скорее уж загрузку BMP на диалапе. На ZX это совсем не тянет, и линий одна а не 8, и данные о цвете доступны сразу, а не "потом" :)

И сегмент один, а не три!

На крупный BMP без сжатия на диап-ап в принципе тоже.


А по ZX там же очень разные варианты были реализован в зависимости от конкретных разработчиков ПО. Т.к. это не аппаратное ограничение, а реализация загрузчика конкретной софтины, с загрузкой обычно в 3 стадии (иногда и больше): 1 — микро-программа загрузчик, 2 — картинка-заставка, 3 — собственно основная часть ПО.
И по 1 строчке и по 8 строк и с цветом "потом" и цветом сразу варианты были.


Правда с цветом сразу это все-таки не сразу "прямо с кассеты в видеобуфер" с промежуточной буферизацией загружаемых данных в обычной ОЗУ. По схеме кассета ==> рабочее ОЗУ ==> копируем из ОЗУ в видеобуфер ==> продолжаем грузить программу с кассеты в осбоводвшиеся ОЗУ.


Пример серия игр "Саботер": https://www.youtube.com/watch?v=MKZy_d5BTZc
Или робокоп: https://youtu.be/nVyMfMe4YNU?t=49
Сразу с цветом.


И тут построчная (черезстрочная) загрузка прямо в видеопамять (но да, тогда цвет подтягивается "потом") игра Коммандо (видео тоже самое, но перемотать на конец 8й минуты если временная метка не сработает): https://youtu.be/nVyMfMe4YNU?t=529


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


Вот тут большая подборка нестандартных загрузчиков существовавших для ZX:
https://www.youtube.com/watch?v=8e_IkqfMeD4


Основные моменты общие — примерно та же скорость загрузки (вообще у ZX битовая скорость загрузки конечно намного ниже чем 115 кбод в статье, но и разрешение экрана намного ниже), и немного "вырвиглазные" цвета за счет урезанной палитры в отличии от BMP на диал-апе. Скорее тогда уж скорее очень жирный GIF на диал-апе.


CC rkfg

Это да, я имел в виду дефолтную линейную загрузку. Ещё была загрузка по столбцам и квадратами 8х8 в произвольном порядке, причём, сразу с цветовыми атрибутами, так что картинка осмысленно рисовалась в соответствии с задумкой создателя. В какой-то части Dizzy даже сжатие применялось для этой заставки, ну там понятно, что грузилось сначала в буфер, потом оттуда распаковывалось на экран. Алгоритм был то ли RLE, то ли даже Хаффман, не помню.

В робокопе и саботёре слышно же, что картинка грузится как обычно, просто перед загрузкой выставляется цвет тона и фона одинаковый (синий у саботёра и чёрный у робокопа), поэтому пикселей не видно, пока не загрузятся атрибуты. Никакой буфер в другой части памяти тут не участвует.

А видео с загрузчиками очень крутое, даже вон мини-игры встраивали, пока грузится основная игра! Я и десятой части не видел, максимум загрузка по квадратикам, как выше писал, и счётчик в углу с кастомным шрифтом.

интересно а есть какието более менее современные устройства(с поддержкой usb или СОМ порта) которые позволят данные на кассету записать?)

Большинство игр, в которые я играл, загрузку заставки реализовывали через LOAD xxx SCREEN$ что загружает 6912 байт в видеобуфер ZX'a. Всё остальное — вероятно, перезапись функции LOAD как таковая, так как обычно ZX ничего не делает во время загрузки, кроме приема данных и поиска сигнала конца блока данных. Ну и давно это было, но я помню пару игр, которые заставку загружали другим образом, а иногда и эффекты по экрану в процессе загрузки запускали (мини-игр не видел, может, мало 48 кбайт, чтобы ещё и мини-игру всобачить?)

Если поставить 2 чипа памяти, то можно удвоить пропускную способность.

Куда поставить?) На плате только одно место и уже с чипом)

Ниже ответили, поэтому дам другой ответ. Спроектировать другую плату.

Ооооо!) ну это уже совсем другая история)

значит надо самому выбрать между HDMI, DVI, VGA.  Забегая в перед, скажу, что несмотря на то, что интерфейсы разные,

О как!

DVI-D и HDMI отличаются только разъёмом. DVI-A - да, уникальный.
D - цифра
A - аналоговый сигнал
I - интегрированный (оба)

По-моему у dvi-d есть сдвоенный формат, там линий данных больше

А мне напомнило ковокс... Но с телевизором вместо осцилла :)

Натыкался на это устройство когда искал схему ЦАП)

Спасибо за статью, интересные эксперименты! Когда я делал свой VGA-контроллер, я не мог найти информацию, насколько мониторы требовательны к таймингам и как именно должны идти сигналы синхронизации (сдвинут ли vsync относительно hsync, например). Оказывается, мониторы прощают много ошибок.

Полезная статься для меня, я сохраню. Можете показать как реализуете загрузку через юарт?

Вам на каком уровне демонстрация нужна?) Со стороны плис или со стороны ПК или может весь путь подробно?

Весь путь ТГ - @Letmeto

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории