Быть или не быть VGA-видеокарте на советских микросхемах?!

Всё же быть! Представляю Вашему вниманию VGA-видеокарту:

Разрешение 256 х 128 пикселей, 256 цветов, 2 страницы
видеопамяти и все это на 60 микросхемах. Общий объем видеопамяти 64 Кб.
Микросхемы использованы советского производства, хотя некоторые уже
российского, но ведь технологии все равно тех времен, значит этим можно
пренебречь. Эта видеокарта разрабатывалась для ЭВМ «Таймыр-2», который метит в
книгу «рекордов Гиннесса» как самый затянувшийся проект.))) На самом деле видеокарте
все равно с кем в связке работать, поэтому к ней можно подключить любой "камень".
Главное, чтобы пинов хватило. А их надо ни много ни мало - 15 штук (8-и битная шина данных, 5 команд, такт и сигнал видимого окна).

Организация цвета происходит одним байтом, в котором отведены 3 бита под красный, 3 под зеленый и 2 под синий.

Команды:

  • Передать координаты Х

  • Передать координаты Y

  • Установить пиксель нужного цвета по заранее переданным координатам и увеличить координату Х на 1. Если Х стал больше 255, то Х становится равным 0, а координата Y увеличивается на единицу. Если Y стал больше 127, то пиксель рисуется уже на странице №2.

  • Получить содержимое пикселя по заранее переданным координатам и увеличить координату Х на 1. Если Х стал больше 255, то Х становится равным 0, а координата Y увеличивается на единицу. Если Y стал больше 127, то пиксель берётся уже с страницы №2.

  • Смена видимой страницы.

Принципиальная схема очень большая, поэтому для детального рассмотрения рекомендую ее скачать по ссылке: Яндекс Диск. или GitHub.

Краткое описание работы:

Так как используется видеорежим 640х480 пикселей, 60 Гц. Нужно тактировать схему с частотой 25,175 МГц. Но у данной видеокарты разрешение 256х128, а это значит, что 1 пиксель нужно растянуть по ширине и высоте. Для этого необходимо уменьшить кварц на половину, то есть нужен 12,5875 МГц. Но тут возникла проблема: мне не удалось найти советский кварцевый резонатор на 12,5875 МГц. или на 25,175 МГц, поэтому пришлось выкручиваться кварцем на 12,5 МГц. Это конечно не Фэн-шуй, но монитор худо-бедно принимает такие отклонения. Генератор собранном на микросхеме К155ЛН1 (U56).  Далее тактовый импульс поступает на узел формирования строчного синхроимпульса и видимости окна по горизонтали (U57-U59, U41-U45, U51-U55). С микросхемы К155ТМ2 (U60) выходят два сигнала: нога 6 – отображение окна картинки по горизонтали, нога 8 строчный синхроимпульс. При окончании строки с микросхемы К155ЛА3 (U45, 6 нога) подается сигнал для перехода на следующую строку на узел формирования кадрового синхроимпульса и видимости окна по вертикали (U46-48, U49, U50, U27, U28, U30-U35). С микросхемы К155ТМ2 (U29) выходят два сигнала: нога 6 – отображение окна картинки по вертикали и на выход «разрешить», нога 8 кадровый синхроимпульс. Выход «разрешить» нужен для того, чтобы сообщать микроконтроллеру, что видеокарта может безболезненно записывать/считывать видеопамять. Можно конечно игнорировать этот сигнал, но тогда в момент обращения к видеопамяти на экране монитора будут возникать артефакты. Хотя это дает прирост скорости, потому что процесс чтения/записи происходит даже когда луч рисует картинку в видимой части экрана. Проще говоря сигнал «разрешить» = LOW с 145 строки до 401 строки (видимая область экрана), все остальное время сигнал «разрешить» = HIGH.

                Счетчики К155ИЕ7(U18-U21) перебирают адреса видеопамяти. На выходе счетчиков добавлены регистры КР580ИР82 (U12, U13), которые используются не по назначению, а просто для создания Z – состояния. Дешифратор К155ИД10 (U14) в зависимости от адреса включает в работу необходимую микросхему видеопамяти КР537РУ17 (U1-U8). Данные с видеопамяти попадают на регистр КР580ИР82 (U9) на выходе которого находится R2R – ЦАП (цифро-аналоговый преобразователь), который и формирует насыщенность цветов.

                Регистр КР580ИР82 (U11) открывается, когда необходимо считать содержимое видеопамяти. Регистр КР580ИР82 (U10) открывается, когда необходимо записать в видеопамять. Все остальное время эти регистры в Z- состоянии.

                Счетчики К155ИЕ7 (U23-U26) необходимы для установки адреса видеопамяти, с которой будут производиться действия чтения или записи. Счётчик К155ИЕ7 (U23) дополнительно принимает участие при смене видимой страницы. Из которого берутся 0-й и 1-й бит для установки триггера страницы К155ТМ2 (U22). Регистры КР580ИР82 (U16, U17) создают Z-состояние между счетчиками и шиной адресации видеопамяти.

На этом краткое описание заканчивается.

ссылки на документацию:

GitHub.

Яндекс Диск.

Комментарии (32)


  1. AlexandreFrolov
    30.06.2024 11:35
    +2

    Еще студентом делал нечто подобное для формирования видеосигнала на черно-белом телевизоре, чтобы использовать его как консоль для компьютера на базе Intel 8080 (КР580ИК80). Очень много микросхем и проводов МГТФ, но было весело!


    1. NutsUnderline
      30.06.2024 11:35
      +1

      ВГ75 говорят была в дефиците


      1. tonyk_av
        30.06.2024 11:35
        +1

        Так он был символьным, а тут графика, 256х128.


        1. w0lf
          30.06.2024 11:35

          ВГ75 может не только в символьном режиме работать. Вот тут https://zx-pk.ru/threads/26455-chto-maksimum-mozhno-vyzhat-iz-kr580vg75-intel-8275-obsuzhdenie/page54.html народ развлекался с VGA-картой на двух ВГ75.


          1. checkpoint
            30.06.2024 11:35
            +1

            Замечу, что у первых IBM PC был видеоадаптер IBM Color/Graphics Adapter, в народе известный как CGA. Этот адаптер строился вокруг микросхемы MC6845 - недовидеопроцессора для отображения текста. Тем не менее, за счет манипуляции с банками видеопамяти, видеоадаптер CGA умел отображать графику в трех видеорежимах: 640x200 (два цвета), 320x200 (четыре цвета) и 160x100 (16 цветов). Для того времени это было вполне стандартным решением. Наверняка с КР580ВГ75, которая была аналогом Intel 8275, можно проделывать аналогичные фокусы.


            1. vanxant
              30.06.2024 11:35
              +2

              Строго говоря, CGA был блатной опцией. В базовой конфигурации шёл монохромный MDA (только текст, 40х25 или 80х25 знакомест), и к нему монохромный (чёрно-зелёный) монитор.


              1. checkpoint
                30.06.2024 11:35

                Всё верно, и в MDA тоже был MC6845. Адаптер CGA появился чуть позже чем MDA и быстро вытеснил адаптер MDA, так как пользователи хотели играть в игры, а за те деньги что IBM просила за PC c MDA это было невозможно. Более того, к MDA требовался отдельный монитор, это делало систему еще более дорогой. В CGA присутствовало два видеовыхода: RGBI для монитора с прямым управлением ЭЛТ и разъём с композитным NTSC сигналом, что позволяло подключать PC к телевизору как и другие ПЭВМ того времени. RGBI давал более высокое качество картинки, а NTSC позволял смешивать цвета (артифактинг), что было прикольно для игр.

                На Википедии пишут, что некоторое время MDA и CGA устанавливался вместе в одну машину, но я таких машин не встречал и честно говоря не понимаю зачем это могло быть нужным (первый IBM PC я увидел в 1989-м, тогда уже во всю были EGA и немного CGA). Пишут, что якобы у MDA качество изображения было выше чем у CGA, но не ясно на каком типе монитора сравнивают, RGBI или NTSC.


      1. AVKinc
        30.06.2024 11:35

        И она умела только в текстовый режим.


  1. vicsoftware
    30.06.2024 11:35
    +5

    Только это всего лишь 50% от VGA. VGA - это как минимум 320х200


    1. PNP80 Автор
      30.06.2024 11:35

      Замечание принято. В свое оправдание скажу, что я, как человек не образованный, ориентировался в большей степени на мониторы с интерфейсом VGA, чем на полноценный стандарт.


  1. checkpoint
    30.06.2024 11:35
    +3

    Коротко. По делу. Но есть вопросы:

    Какова максимальная скорость обмена ЦПУ с видеопамятью ?

    Как Вам удалось раскочегарить микросхемы серии К155 до 12.5 МГц ? Если не ошибаюсь, там время задержки распростаренения 100нс и на 10МГц они уже начинают лагать. Этот же вопрос по микросхеме статической памяти КР537РУ17, по даташиту у нее время доступа - 130нс, а у Вас выборка из памяти каждые 80нс.


    1. PNP80 Автор
      30.06.2024 11:35

      Затруднюсь полноценно ответить на Ваш вопрос, но попробую как получится. Если пройтись по 155 серии: К155ЛН1, К155ЛА8, и т.д. –грубо 22нс, К155ТМ2-грубо 40нс ну и остальные в том же духе. На счет КР537РУ17 у нее не 130нс, а не более 130нс.  Минимальный порог остается тайной, но как показала практика – всё работает.


    1. PNP80 Автор
      30.06.2024 11:35

      На счет скорости обмена ЦПУ с видеопамятью полноценных тестов не проводил, так как эта видюха разрабатывалась для самодельной ЭВМ, которая производительностью не блещет, поэтому я не видел необходимость в таких тестах.


      1. checkpoint
        30.06.2024 11:35

        Цель разработки понятна, поэтому и возник вопрос. Если более конкретно, то сколько времени займёт отрисовка текста на полный экран ? С какой частотой кадров его можно будет прокручивать/пролистывать. В Вашем демо видеоролике с какой частотой Ардуина шлёт команды в видеоадаптер ? Это предел или можно быстрее ?

        Я сейчас занимаюсь чем-то подобным, но на ПЛИС. Без аппаратного знакогенератора как-то у меня всё не весело выходит. :)


        1. PNP80 Автор
          30.06.2024 11:35

          В видео на 1:41 ардуино затирает мусор видеопамяти темно-красным цветом. Здесь используется вся мощь ардуинки + мои кривые руки программиста). Съемка в реальном времени. Там происходит передача координат по Х=0, координат по Y=0, а дальше просто цвет пикселя, цвет пикселя и т.д., так сказать пакетный режим. Я уверен, что можно еще быстрее.

          Картинки выводятся медленно, потому что скорость передачи UART= 115200


          1. checkpoint
            30.06.2024 11:35

            Картинки выводятся медленно, потому что скорость передачи UART= 115200

            Ну так отключите UART на время отрисовки. :) Видно что рисует очень медленно и должно быть существенно быстрее.


            1. PNP80 Автор
              30.06.2024 11:35

              Отключить? Вы забыли про мои кривые руки)))


        1. PNP80 Автор
          30.06.2024 11:35

          Текущая видеокарта является доработкой этой VGA видеокарта для Arduino NANO блин, опять VGA))) Исходники если надо предоставлю. Возможно это Вам поможет.


          1. checkpoint
            30.06.2024 11:35

            А вот еще вопрос. Как происходит разделение доступа к видеопамяти ? У кого приоритет больше, у схемы формирования видеосигнала или у шины взаимодействия с ЦПУ ? Я смотрю на схему, и пока не могу понять, что произойдет если они одновременно будут адресовать видеопамять.


            1. PNP80 Автор
              30.06.2024 11:35
              +1

              Приоритет больше у взаимодействия с ЦПУ. Поэтому можно писать/читать даже в процессе формирования видео сигнала, но как писалось в статье: на экране будут возникать артефакты. Чтобы этого не происходило необходимо обращаться к данным по сигналу пина «разрешить»


              1. checkpoint
                30.06.2024 11:35

                Ок, спасибо. Я как-то пролетел мимо этого предложения и сразу пошел изучать схему. :-)


            1. PNP80 Автор
              30.06.2024 11:35

              Если детально, то если подать на вход «Пиксель» LOW, то пройдя через инвертор U38:F  сигнал примет значение HIGH. Далее он идет на 2ИЛИ U39:А. На выходе получается HIGH, который подается на вход ОЕ регистров U12, U13, которые закрываются (Z - состояние) и больше не производится адресация видеопамяти.


  1. qw1
    30.06.2024 11:35
    +7

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


    1. checkpoint
      30.06.2024 11:35
      +7

      Тут имеется некая двузначность терминологии. Есть VGA видеодаптер который вставляется в слот ISA у IBM PC совместимых машин, со своими портами, видеорежимами и т.д. И есть видео интерфейс VGA - электрическая спецификация на подключение аналогово видеомонитора. Автору наверное следовало бы указать в заголовке на то, что это "видеоадаптер с VGA интерфейсом для микроконтроллера или 8-ми битной ЭВМ". Как-то так.


  1. LAutour
    30.06.2024 11:35
    +2

    Отчего такая привязанность к 155 серии? Даже если хватает скорости - жрет по току она порядочно (на фоне 555\1533).


  1. frt123
    30.06.2024 11:35

    Если кварцевый резонатор (точнее говоря, поверхность контактов на кристалле) потереть стирательной резинкой, то его частота немного повышается. Если натереть грифелем, то частота немного снижается.


    1. zatim
      30.06.2024 11:35
      +1

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


    1. Moog_Prodigy
      30.06.2024 11:35
      +1

      Есть другой дедовский способ изменять частоту кварца. Вокруг кварца наматывается нихром, вся конструкция теплоизолируется, городится терморегулятор с обратной связью по частоте. Я не помню подробностей, при нагреве в какую сторону уходит частота, но я точно встречал это в одной из старых книг. И было реализовано это в каком-то промышленном частотомере. Именно термостатирование кварца. Грелось оно в нормальном режиме примерно до 55 градусов. Т.е. кварц брали не тот который надо, а чуть меньше из стандартных рядов.


      1. qw1
        30.06.2024 11:35

        Любопытно. Если есть эталон частоты, более точный чем кварц, то зачем сам кварц? А если нет такого такого эталона, откуда мы узнаём, что частота уходит и надо корректировать?


        1. frt123
          30.06.2024 11:35

          частота кварца это не скорость света в вакууме и зависит от физических параметров кристалла. Рискну предположить, что в данном случае кристалл нагревали превентивно до того, как весь корпус устройства не прогреется нитями накала ламп, но это только предположение.


          1. qw1
            30.06.2024 11:35

            Понял. Кварц греем до известной температуры, чтобы не зависеть от температуры в комнате. Меня сбило

            терморегулятор с обратной связью по частоте


    1. checkpoint
      30.06.2024 11:35

      На ютубе есть видео от 1943 года на котором показан весь процесс изготовления кварцевых резонаторов, от полевого шпата до калиброванного компонента. Там как раз есть и про натирание граней и про облучение рентгеном (если слегка перетёрли). Видео умопомрачительное с точки зрения количества применявшегося тогда ручного труда.

      Изготовление кварцевых резонаторов, 1943 г.