Быть или не быть 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.

Яндекс Диск.

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


  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
        +3

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


        1. w0lf
          30.06.2024 11:35
          +1

          ВГ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
            +3

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


            1. vanxant
              30.06.2024 11:35
              +5

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


              1. checkpoint
                30.06.2024 11:35
                +1

                Всё верно, и в 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. w0lf
                  30.06.2024 11:35
                  +2

                  "Пишут, что якобы у MDA качество изображения было выше чем у CGA, но не ясно на каком типе монитора сравнивают, RGBI или NTSC. " - Как работавший с тем и другим отмечу, что это верно для для RGBI-монитора. Долго работать с текстом в разрешении 640х200 на 15 кГц строчной развертки очень утомительно. С MDA 640х348 на 18 кГц гораздо приятнее, пиксели почти в 2 раза меньше, за счёт чего картинка более четкая. У меня правда был не MDA а Hercules, он ещё и одноцветную графику в таком разрешении выдавать мог.


        1. AlexandreFrolov
          30.06.2024 11:35
          +1

          Отлаживал и доделывал опять же студентом графическую плату для символьного терминала Videoton VT-340. Там было много динамической памяти К565РУ1. Очень помогал многоканальный логический анализатор. Очень интересно было со всем этим возиться


      1. AVKinc
        30.06.2024 11:35
        +1

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


      1. AlexandreFrolov
        30.06.2024 11:35
        +1

        Тогда вообще-то все было трудно раздобыть


      1. hw_store
        30.06.2024 11:35
        +3

        Это было большим шагом вперёд по сравнению, например, со знакогенератором терминала ВТА2000 - один из двух вентиляторов заклинило, ПЗУшки перегрелись и погорели. А между прочим, на этих терминалах работала целая "Сирена-2" и много кто ещё


  1. vicsoftware
    30.06.2024 11:35
    +10

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


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

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


  1. checkpoint
    30.06.2024 11:35
    +6

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

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

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


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

      Затруднюсь полноценно ответить на Ваш вопрос, но попробую как получится. Если пройтись по 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
    +10

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


    1. checkpoint
      30.06.2024 11:35
      +13

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


  1. LAutour
    30.06.2024 11:35
    +4

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


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

      Всё банально просто, 155 -х у меня больше всех по количеству.


  1. frt123
    30.06.2024 11:35
    +2

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


    1. zatim
      30.06.2024 11:35
      +3

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


      1. anonymous
        30.06.2024 11:35

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


    1. Moog_Prodigy
      30.06.2024 11:35
      +2

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


      1. qw1
        30.06.2024 11:35
        +2

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


        1. frt123
          30.06.2024 11:35
          +1

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


          1. qw1
            30.06.2024 11:35
            +2

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

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


      1. AKudinov
        30.06.2024 11:35
        +3

        Опорный термостатированный генератор "Гиацинт". Знакомая штука, ага. Кварц внутри термостата, и всё. На передней панели частотомера был отдельный индикатор работы термостата, и он работал всегда, пока прибор к сети подключен, независимо от того, включен тумблер питания или нет.
        Сейчас такие штуки тоже в ходу. Только стали значительно меньше в размера. Зовутся OCXO (Oven-Controlled Crystal Oscillator).


      1. engine9
        30.06.2024 11:35

        ООС по частоте? Но ведь тогда нужен еще эталон. Может быть просто по термодатчику на поверхности?


    1. checkpoint
      30.06.2024 11:35
      +4

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

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


      1. sappience
        30.06.2024 11:35
        +3

        Какого еще полевого шпата? В фильме упоминается raw crystal или rock crystal, т.е. горный хрусталь. Он же природный кристаллический кварц. А полевой шпат это алюмосиликаты, их там целая группа.


        1. checkpoint
          30.06.2024 11:35

          То была шутка юмора.


  1. anonymous
    30.06.2024 11:35

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


    1. Zara6502
      30.06.2024 11:35
      +4

      сколько ненависти и пафоса, но вы, мсье, сели в лужу. VGA это только 640х480 и уж тем более видеокарты того времени не занимались рисованием примитивов ни в каком виде.


      1. anonymous
        30.06.2024 11:35

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


        1. Zara6502
          30.06.2024 11:35

          Ну не первую в мире, но у меня есть парочка VGA из 80-х для ISA шины.

          Ты о каком времени говоришь?

          А причем тут время, есть стандарт.

          Поищи по инету лузер фотку и увидишь что о никакой рассыпухе и речи не может быть

          А я где-то пишу что-то про какую-то "рассыпуху"?

          Ах да, забыл, тебя тогда и в планах небыло.

          Когда я родился Стив Джобс еще даже в АТАРИ не трудоустроился и его Apple даже в планах не было и до первой VGA еще было как до пингвинов пешком.


    1. liho_rus
      30.06.2024 11:35
      +3

      странно, что вы не добавили трассировку лучей.)))


  1. Zara6502
    30.06.2024 11:35
    +1

    2автор: имхо не гоже в/к называть VGA лишь на основа коннектора для вывода картинки. Конечно не обязательно поддерживать все режимы, но 320х200(240)х256 и/или 640х480х16 всё же должны присутствовать. Как легко посчитать для таких режимов уже нужно 320х200х1=64000 байт или 640х480х0.5=153600 байт.


    1. vicsoftware
      30.06.2024 11:35

      320x240x256 - это ж слоёный режим, если мне память не изменяет (ModeX). Там на одной реализации регистров замучаешься.


      1. Zara6502
        30.06.2024 11:35
        +1

        это просто пример того какие разрешения були популярны для VGA, в играх 320х200х256, 320х240х256 по большей части.

        еще не забываем что VGA это не только разрешение, это еще и аппаратные вещи, куча функций биос.


        1. anonymous
          30.06.2024 11:35

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


          1. Zara6502
            30.06.2024 11:35

            аппаратка была еще в чипах конца 70-х, даже в моем ATARI 65XE есть аппаратные функции.


        1. hw_store
          30.06.2024 11:35

          320*200*256 - это, если не ошибаюсь, называлось MCGA


      1. shkal
        30.06.2024 11:35

        Это нестандартный режим VGA, требовал прямого программирования регистров контроллера, но был очень удобен поскольку аспект пиксела 1:1. Был описан в журнале доктор Доббс, я на основе этой статьи писал библиотечку на асме для вывода примитивов


  1. sami777
    30.06.2024 11:35
    +1

    Вопрос от "непотемщика"! А поставить делитель частоты (например всего один тригер) между генератором на 25,175 МГц и тем, чем вам нужно? Вы же все равно все на рассыпухе и самостоятельно делаете.


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

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


  1. hw_store
    30.06.2024 11:35

    А примерно такую же, но только для ввода сигнала SDI в PCI Express (или в QSPI) сможете?


    1. NutsUnderline
      30.06.2024 11:35

      PCI Express (или в QSPI)

      Это вроде все таки немножко разные материи. Но в любом случае для такого очень неплохо бы иметь СВЧ осциллограф так как речь идет на гигагерцы и схемотехнику на FPGA а никак не на мелкой логике


      1. hw_store
        30.06.2024 11:35

        не, ну понятно, что на 155 серии не соберёшь... даже на 100й/500й. Даже на 74HC.


        1. NutsUnderline
          30.06.2024 11:35

          так вот и непонятно а чем blackMagic не угодил то?


          1. hw_store
            30.06.2024 11:35

            тем что мы его не производим... ну и сложен в закупке и потенциально в техподдержке


  1. Maxtor_Enjoyer
    30.06.2024 11:35

    Я уж лучше куплю 3dfx. Мощнее, быстрее, и более красиво