Агат-7. Создание Rev.0. Видео выход.

Последнее время я занимался отладкой 140К дисковода на STM32L для моего проекта реплики «Агат-7». Для экономии пинов ПЛИС, обмен с дисководом был переделан на SPI. Это позволило уменьшить количество требуемых пинов с 12 до 5. Для дисковода 840К экономия будет еще больше. В ходе работ я столкнулся с проблемой большого количества ошибок при обмене данными ввиду длинных проводов, поэтому пришлось посылать байты сериями по три. При надежном качестве соединения можно будет избавиться еще от одного провода синхронизации и довести кол-во необходимых пинов до 4-х для каждого дисковода. Вот так выглядит сигнал SCLK после того как он доходит до отладочной платы STM32L от DE1:

При таком качестве обмена затруднительно продолжать отладку. Кроме того, хотелось бы отладить и прочие элементы компьютера — I2C расширитель портов, видео выход и пр. Таким образом я решил создать первую отладочную версию платы Rev.0 и изготовить компьютер на ней. Это поможет решить проблему с соединениями и проводами, опробовать некоторые решения в реальной работе.

Я начал подготовку схемы проекта с учетом имеющихся разработок и планов. По сравнению с окончательной версией, эта плата не будет изготовлена под какой-либо корпус, на ней будут выведены тестовые пины для облегчения отладки, не будет встроенного параллельно-последовательного интерфейса и разъема для «родных» плат расширения. Но при этом все неиспользуемые пины ПЛИС (около 40-50) будут выведены на разъемы расширения для возможности дальнейшего создания и подключения остальных модулей.

Итак, сегодня я представляю модуль видео выхода. Он рассчитан на возможность вывода на экран VGA дисплея с разрешением 1024х768х65Гц или телевизор в стандарте PAL через композитный выход и/или разъем S-Video. Вот его схема:

Выбор между телевизором и VGA монитором будет осуществляться переключателем, сигнал с которого подается на схему (вход «SW_VGA»), а также подключен к одному из пинов I2C расширителя портов. В зависимости от выбранного режима ПЛИС переключает стандарты видео выхода.

Для видео требуется 6 пинов ПЛИС: Red, Green, Blue, Y (яркость), HSync и VSync. Они поступают на вход модуля из ПЛИС уже в требуемом формате. Бит яркости общий для всех цветов и нам надо объединить его с каждым каналом цвета по отдельности. Для смешивания этого сигнала с сигналами цветов я использую простейший ЦАП на резисторах, поэтому необходимо разрешить подачу сигнала яркости к цвету только если этот цвет включен. Эта задача решается микросхемой U6, которая является быстрой версией стандартного набора И-логики 74HC08. Важно использовать именно эту версию логики, т.к. ее задержка составляет лишь около 3нс, что, при длительности самой маленькой точки (АЦР-64) в VGA режиме около 31нс, не будет заметно. Тогда как со стандартным 74HC08 задержка будет около 12нс, что почти половина точки. Кроме того, выбранная микросхема работает от 3.3В.

Цветовые сигналы притянуты к «земле» резисторами 75ом в мониторе или у микросхемы PAL кодера AD725. Таким образом, резисторы R7-R12 фактически создают с ними делитель напряжения от которого зависит яркость точки. Они рассчитаны так, чтобы напряжение не превышало разрешенные 0.714В, а точки с пониженной яркостью хорошо читались.

Далее сигналы поступают на аналоговый переключатель TS5V330C, который направляет их на разъем VGA или телевизор в зависимости от положения выключателя «SW_VGA».

Сигнал для телевизора кодируется при помощи микросхемы PAL кодера AD725. Ее обвязка выполнена в соответствии с рекомендациями из даташит на нее. Ввиду того, что используемая ПЛИС имеет только 2 PLL и оба они задействовны в проекте, а также для экономии ног ПЛИС, AD725 тактируется от собственного генератора тактов на кристалле 17.734475МГц и инверторе 74HC04.

Сигналы синхронизации не требуют делителей и могут быть напрямую подключены к двоим выходам без применения переключателей, что я и сделал с сигналом «VGA_VSYNC». Сигнал «VGA_HSYNC» может быть подключен аналогично, но я использовал для него оставшуюся часть переключателя TS5V330C.

Пожалуйста, дайте мне знать если вы обнаружите какие-либо ошибки в схеме или появятся идеи по ее улучшению. Если таковых не будет, то я планирую начать разводку платы на следующей неделе, когда я завершу остальные части схемы. По мере готовности я буду выкладывать и остальные части. До встречи!

Leave a Reply