При разработке новой версии синхронизатора на восьмиразрядном микроконтроллере AVR было решено для высвобождения процессорного времени формировать синхропоследовательности с помощью встроенных таймеров микроконтроллера и предусмотреть возможность работы с обоими распространёнными форматами экрана - 16:9 и 4:3.
Для создания видеоэффектов нужно выполнять двойное преобразование аналоговых сигналов с выходов ЦДУ. Они должны быть оцифрованы, обработаны в цифровом виде (например, к ним добавлена фоновая подсветка), затем вновь преобразованы в аналоговый вид и поданы на видеовходы монитора.
Из восьмиразрядных микроконтроллеров AVR наиболее подходящими для реализации такого устройства автор считает микроконтроллеры ATxmega исполнения A3U. От других микроконтроллеров AVR их выгодно отличает возможность оперативной программной перестройки тактовой частоты. Это существенно облегчает формирование с минимальными погрешностями синхросигналов для видеорежимов с различной частотой следования пикселов. Наличие семи 16-разрядных таймеров, четыре из которых имеют по четыре канала захвата/сравнения, позволяет формировать все сигналы синхронизации и гашения с минимальным привлечением процессора.
В этих микроконтроллерах имеется система событий, позволяющая передавать сигналы межмодульного взаимодействия по отдельным каналам, дополнительно разгружая этим процессор микроконтроллера. Возможность установки конфигурации выходных линий портов микроконтроллера "открытый сток" и "открытый исток" позволяет более гибко формировать выходные сигналы без использования дополнительных логических микросхем.
В ходе работы над синхронизатором было принято решение не делать его отдельным модулем, а дополнить входным усилителем и канальными фильтрами, т. е. создать полную ЦДУ, на вход которой можно подать звуковой сигнал, а к выходу подключить компьютерный монитор.
Основные технические характеристики
Напряжение входного сигнала, мВэфф .............300...2000
Размер изображения, пкс на экране формата 4:3 ...640x480
на экране формата 16:9 ...1280x720
Интерфейс монитора............... аналоговый
Напряжение питания, В.........7...12
Потребляемый ток, мА, не более ........................65
Принципиальная схема ЦДУ изображена на рис. 1. Его аналоговая часть не требует особых пояснений, так как построена на базе разработанной ранее и подробно описанной в [2] и [3]. Поэтому подробно рассмотрим устройство и работу лишь сопряжённого с ней синхронизатора, построенного на базе микроконтроллера ATxmega256A3U, который может быть заменён любым из ATxmega64A3U, ATxmega128A3U, ATxmega192A3U.
Рис. 1. Принципиальная схема ЦДУ
Микроконтроллер управляет работой цифровой АРУ, обеспечивая постоянство амплитуды сигнала на входах фильтров аналоговой части ЦДУ, формирует необходимые импульсы синхронизации и гашения для монитора. Он оцифровывает сигналы, поступающие с выходов аналоговой части ЦДУ, заполняет их паузы фоновой подсветкой и формирует цифровые выходные сигналы цветовых каналов R, G и B. Внешние ЦАП преобразуют эти сигналы в аналоговые, пригодные для подачи на видеовходы монитора.
Сигналы синхронизации и гашения формируют таймеры TCC0 и TCD0 микроконтроллера. Таймер TCC0 тактируется с частотой следования пикселов в выбранном видеорежиме, а его коэффициент пересчёта установлен равным числу пикселов в полной строке. В регистры сравнения таймера занесены коды, соответствующие моментам наступления в течение каждой строки характерных событий: начала и конца области гашения, начала и конца строчного синхроимпульса. В моменты совпадений текущего состояния счётчика таймера с кодами в регистрах сравнения формируются запросы прерывания. В подпрограммах их обслуживания процессор микроконтроллера изменяет состояния соответствующих выходов, формируя на них ССИ и СГИ.
Аналогичным образом таймер TCD0 формирует КСИ и КГИ. Он считает строки внутри полного кадра, поэтому сигналы тактирования для него - события переполнения таймера TCC0, происходящие в моменты окончания каждой строки. Сигналы об этих событиях поступают на вход тактирования таймера TCD0 по одному из каналов системы событий микроконтроллера. Коэффициент пересчёта этого таймера установлен равным числу полных строк в кадре. Строчные синхроимпульсы поступают на выход PF1, а кадровые - на выход PF0.
Микроконтроллер формирует также смесь импульсов гашения (СГИ + КГИ) и выдаёт её параллельно на выходы PE0, PE2 и PE4. Эти выходы действуют как ключи, в интервалах гашения соединяющие с общим проводом цепи соответственно видеосигналов B, R и G. Они сконфигурированы как выходы с общим стоком, поэтому закрытые ключи не оказывают никакого влияния на видеосигналы. Наличие таких выходов - большое достоинство микроконтроллеров семейства ATxmega. С микроконтроллерами предыдущих поколений, имеющими только двухтактные выходы, для гашения видеосигналов пришлось бы использовать внешние элементы.
На схеме видно, что параллельно каждому из упомянутых выходов импульсов гашения подключён ещё один, соответственно PЕ1, PЕ3 и PЕ5, также в конфигурации с "открытым стоком". Это сделано для того, чтобы создать независимые от СГИ и КГИ каналы гашения видеосигналов. Они дают возможность раздельно гасить видеосигналы в произвольные моменты времени при создании видеоэффектов.
Необходимо остановиться на особенностях тактирования самого микроконтроллера. Как отмечалось в [1], частоту тактирования нельзя выбирать произвольно. Чтобы формировать временные диаграммы сигналов синхронизации с минимальными погрешностями, важно обеспечить равенство или кратность частоты тактирования и частоты следования пикселов. Нецелое отношение этих частот приводит к неизбежным погрешностям формирования требуемых интервалов времени.
В рассматриваемом случае микроконтроллер формирует интервалы времени, необходимые для видеорежимов 640x480 пкс или 1280x720 пкс. В первом случае частота следования пикселов - 24 МГц, во втором - 40 МГц. Предельное значение тактовой частоты микроконтроллера ATxmega, согласно документации, - 32 МГц. Но эксперименты показали, что они без перегрева и сбоев работают при тактовой частоте до 48 МГц (выше автор не проверял). Поэтому было принято решение тактировать микроконтроллер с частотой следования пикселов выбранного видеорежима.
Механизм программного изменения тактовой частоты используемого микроконтроллера позволяет переключать её "на ходу". Образцовой для системы тактирования служит частота кварцевого генератора (4 МГц), которую повышает до заданной тактовой встроенный блок умножения частоты микроконтроллера. Для видеорежима 4:3 коэффициент умножения равен 6, для видеорежима 16:9 - 10.
Сигналы с выходов аналоговой части ЦДУ микроконтроллер оцифровывает с помощью четырёх каналов своего АЦП. На вход ADC0 поступает напряжение, сравнивая которое с пороговыми значениями, микроконтроллер управляет цифровой АРУ. На входы ADC1-ADC3 поступают напряжения, пропорциональные уровням сигналов на выходах аналоговых каналов соответственно низкой, средней и высокой частоты. Обработанные программой сигналы частотных каналов через внешние ЦАП подают на входы монитора.
Сформулируем основные требования, которым должны удовлетворять ЦАП:
- разрядность входного кода - 8 (256 уровней яркости);
- максимальное выходное напряжение на нагрузке 75 Ом - 0,7 В;
- ток короткого замыкания выхода - не более 20 мА, что обусловлено предельной нагрузочной способностью выходов микроконтроллера, бланкирую-щих видеосигнал;
- нелинейность преобразования - не более 10....15 %.
Быстродействие ЦАП обычно характеризуют параметром "время преобразования". Это время необходимо, чтобы на выходе цАп установилось напряжение, соответствующее входному цифровому коду. Его допустимое значение определяют исходя из максимальной частоты смены кодов на входе ЦАП. Например, если необходима независимая установка цвета каждого пиксела, то время преобразования ЦАП должно быть не более 1/Fпкс, где Fпкс - частота следования пикселов. Несложно подсчитать, что для видеорежима 1280x720 время преобразования не должно превышать 25 нс.
В простейшем варианте ЦДУ, использующей компьютерный монитор в качестве экрана, выходные сигналы цветовых каналов в течение кадра отображения остаются практически неизменными. Поэтому время преобразования ЦАП может быть многократно увеличено. Однако медленный ЦАП не даёт возможности отображать какие-либо видеоэффекты, а ведь быстродействующий микроконтроллер позволяет их создавать.
В общем случае и микроконтроллер не способен выполнить поэлементную обработку видеосигнала, поскольку для обсчёта каждого пиксела ему необходимо время; по прикидке автора, минимум 5-10 машинных тактов. Значит, минимально достижимая дискретность изменения изображения на экране - 5-10 пикселов. Но чтобы переход между соседними цветовыми зонами был чётким, он не должен растягиваться нанесколько пикселов. Это означает, что для полноценной реализации световых эффектов всё-таки необходим ЦАП с временем преобразования 25 нс.
Широко распространено привычное и самое простое, с точки зрения аппаратной реализации, преобразование сигнала из цифровой в аналоговую форму с помощью ШИМ. Однако такой способ допустим лишь в тех случаях, когда всеми источниками света одного цветового канала управляют (включают и выключают их) одновременно. Для монитора, в котором пикселы засвечиваются поочерёдно в соответствии с ходом развёртки, этот способ неприемлем. Подача на видеовход монитора ШИМ сигнала приведёт к тому, что пикселы, через которые проходит развёртка в течение действия высокого уровня импульса, будут иметь максимальную яркость, а оставшиеся просто не будут светиться.
Предварительное сглаживание импульсов с ШИМ с помощью интегрирующей RC-цепи тоже не даёт удовлетворительного результата, поскольку в паузах между импульсами конденсатор разряжается, что приводит к неравномерной засветке экрана. Увеличение ёмкости конденсатора уменьшает неравномерность, однако затягивает переходные процессы. А при гашении видеосигнала быстрая зарядка и разрядка интегрирующего конденсатора большой ёмкости требуют применения мощных ключей, усложняя конструкцию ЦДУ. Быстродействие такого ЦАП весьма мало, ведь частота следования импульсов при восьмиразрядной ШИМ как минимум в 256 раз ниже тактовой частоты микроконтроллера, а изменять скважность импульсов можно лишь один раз за их период.
Использование встроенного двухканального ЦАП микроконтроллера также нецелесообразно. Во-первых, для отображения трёх основных цветов требуется ещё один аналогичный ЦАП, во-вторых, длительность преобразования (1,5 мкс в двухканальном режиме) существенно больше требуемой. Использование внешних микросхем высокоскоростных ЦАП не рассматривается ввиду экономической и технологической нецелесообразности.
Однако у применённого микроконтроллера имеется достаточно свободных линий ввода-вывода, к которым можно подключить ЦАП параллельного действия на резисторах. Это значительно проще и дешевле. Общеизвестны две схемы таких ЦАП - с весовыми резисторами и так называемые R-2R. В первой из них число резисторов равно числу двоичных разрядов преобразуемого кода, причём сопротивление каждого следующего резистора должно быть ровно в два раза больше сопротивления предыдущего. Число резисторов в преобразователе по схеме R-2R вдвое больше числа разрядов, но они только двух номиналов, различающихся в два раза.
Заметим, что в обоих случаях требуется подборка сопротивления резисторов с относительной погрешностью, меньшей цены младшего разряда преобразуемого кода. Нарушение этого требования приводит к немонотонности характеристики преобразования. Поэтому при промышленном изготовлении таких преобразователей используют лазерную подгонку сопротивлений, а в любительских условиях число разрядов редко удаётся сделать больше шести.
Для реализации ЦАП с весовыми резисторами крайне желательно, чтобы выходы микроконтроллера имели свойства ключей, либо подключающих нужные резисторы к плюсу источника, либо оставляющих их не подключёнными. Кроме того, в случае типовых двухтактных выходов усложняется расчёт сопротивлений резисторов, образующих ЦАП.
Примечание. С этими утверждениями автора согласиться нельзя. В варианте с последовательными ключами ЦАП представляет собой, по существу, переменный резистор с цифровым управлением, включённый последовательно с нагрузкой. С увеличением сопротивления нагрузки зависимость напряжения на ней от преобразуемого кода становится всё более нелинейной. При использовании двухтактных ключей преобразователь становится управляемым кодом делителем напряжения с не зависящим от кода выходным сопротивлением. Нагрузка в этом случае лишь изменяет коэффициент преобразования, не влияя на его линейность. Расчёт сопротивления резисторов в обоих случаях совершенно одинаков.
Ввиду того что линии портов микроконтроллера ATxmega можно сконфигурировать как выходы с открытым истоком, было принято решение строить ЦАП по схеме с весовыми резисторами, более простой и компактной по сравнению с R-2R.
Например, ЦАП канала R состоит из восьми резисторов R37-R44, на которые подают напряжение питания микроконтроллера через последовательные ключи - выходные драйверы линий портов микроконтроллера с открытым стоком. Сумма токов, протекающих через замкнутые ключи и соединённые с ними последовательно резисторы, создаёт зависящие от преобразуемого кода падение напряжения на входном сопротивлении видеовхода монитора, равном 75 Ом. Для гашения видеосигнала открытый выходной ключ драйвера линии гашения соединяет выход ЦАП с общим проводом. При этом ток нагрузки линии гашения не превышает 10 мА, что вполне допустимо для неё.
ЦАП каналов G и B выполнены аналогично на резисторах R29-R36 и R17- R24 соответственно.
Режимы работы программы микроконтроллера устанавливают с помощью перемыче и S2. Перемычкой S1 выбирают один из двух вариантов фоновой подсветки экрана в паузах между фонограммами. С помощью перемычки S2 задают видеорежим. Когда она снята, размер изображения - 640x480 пкс, а когда установлена - 1280x720 пкс.
Питают ЦДУ от любого нестабилизи-рованного источника постоянного напряжения 7...12 В. Входной стерео- или монофонический сигнал подают на разъём XS1. Разъём XS2 (15-контактная розетка DHB-15F) служит для подключения VGA-кабеля, идущего к монитору. Разъём ХP1 предназначен для загрузки программы в микроконтроллер.
ЦМУ собрано на печатной плате размерами 93x123 мм, чертёж которой изображён на рис. 2, а схема расположения на ней элементов - на рис. 3. Установленные на плате элементы - для поверхностного монтажа, за исключением разъёмов ХР1 и XS2, кварцевого резонатора ZQ1, колодок для съёмных перемычек S1 и S2. Все резисторы и конденсаторы типоразмера 1206. Выключатель SA1, штекерное гнездо XS1 и разъём для подачи напряжения питания устанавливают на корпусе устройства.
Рис. 2. Чертёж печатной платы ЦМУ
Рис. 3. Схема расположения на лементов на плате
Как уже было сказано, микроконтроллер ATxmega256A3U-AU в описываемом ЦМУ можно заменить любым из ATxmega64 A3U-AU, ATxmega128A3U-AU, ATxmega 192A3U-All. При этом не придётся вносить изменений в печатную плату, достаточно перетранслировать программу, указав тип применённого микроконтроллера.
Вместо ОУ МСР601-I/SN и MCP604-I/SL можно использовать и другие, способные работать при однополярном питании напряжением 5 В. Цифровой переменный резистор MCP4011-502E/SN можно заменить на MCP4021-502E/SN, выполненный в другом корпусе, поэтому потребуется корректировка печатной платы. Она может потребоваться и при замене других микросхем, если их аналоги имеют другой корпус и назначение выводов.
Программа микроконтроллера написана на языке компилятора BASCOM AVR с включением в неё критичных по времени выполнения фрагментов на языке ассемблера. Разряды конфигурации микроконтроллера программируют в соответствии с таблицей.
Таблица
Разряд | Состояние |
BODACT | BOD выключен |
BODPD | BOD выключен |
BOOTRST | Сброс приложения |
WDP | 8 циклон (8 мс при 3.3 В) |
WDWP | 8 циклов (8 мс при 3.3 В) |
BODLVL | 1,6 В |
JTAGUSERID | Любое |
SUT | 0 мс |
JTAGEN | Не запрограммирован |
DVSDON | Не запрограммирован |
EESAVE | Запрограммирован |
RSTOISBL | Не запрограммирован |
WDLOCK | Не запрограммирован |
При включении ЦДУ происходит запуск рабочей программы микроконтроллера и её инициализация. Прежде всего проверяется наличие перемычки S2 и, в зависимости от этого, настраиваются система синхронизации микроконтроллера, таймеры, отвечающие за формирование сигналов синхронизации и гашения, другие модули микроконтроллера.
В ходе дальнейшей работы программа состояние перемычки S2 не проверяет, поэтому её установка или удаление "на ходу" не приводит к смене уже действующего видеорежима. На практике изменять видеорежим приходится довольно редко (только при замене монитора на имеющий другой формат экрана) и нет смысла тратить процессорное время на периодическую проверку необходимости выполнения этой операции.
По окончании инициализации программы начинается выдача на монитор синхропоследовательностей, а параллельно с этим - приём и оцифровка с помощью АЦП сигналов с выходов аналоговой части ЦДУ, их обработка и выдача на цАп. Эти процессы жёстко привязаны к синхроимпульсам по следующим причинам:
- изменять коды видеосигналов на входах ЦАП можно только в интервалах гашения, в противном случае засветка экрана будет неравномерной;
- между моментами получения отсчётов оцифрованного сигнала из АЦП и выдачи их на ЦАП должно быть достаточно времени для их обработки.
В рассматриваемом случае выполняется привязка к импульсам кадровой синхронизации и гашения. В момент начала КСИ одновременно запускается преобразование в четырёх каналах АЦП и начинается выдача кодов видеосигналов, сформированных в предыдущем кадре, в три ЦАП. Приблизительно через 9 мкс после запуска АЦП завершает преобразование. Выдача кодов в ЦАП длится дольше из-за ограниченного быстродействия программного кода, сформированного компилятором BASCOM AVR.
После этого программа присваивает коды из регистров АЦП соответствующим переменным. С этого момента и до начала следующего КСИ у процессора есть время для обработки полученных сигналов. Таким образом, отображение информации идёт с отставанием на один кадр, что на практике совершенно незаметно, так как уровни сигналов на выходах фильтров частотных каналов ЦДУ изменяются довольно медленно.
В отсутствие на входе ЦДУ сигнала программа микроконтроллера выполняет одну из двух подпрограмм фоновой подсветки. По экрану монитора плавно перемещаются, изменяя размеры, цветные области.
Проверка ЦДУ в действии проводилась с монитором Samsung LS22E390, имеющим диагональ экрана 21,5 дюйма при соотношении сторон экрана 16:9. Подтверждена его работоспособность во всех режимах.
Программа микроконтроллера и файл печатной платы в формате Sprint Layout 6.0 имеются здесь.
Литература
1. Савченко А. Компьютерный монитор - экран ЦДУ - Радио, 2017, № 6, с. 38-40.
2. Савченко А. Аналого-цифровая цветодинамическая установка. - Радио, 2014, № 1, с. 39-42.
3. Савченко А. Усовершенствованная аналого-цифровая ЦДУ - Радио, 2014, № 9, с. 30-34.
Автор: А. Савченко, пос. Зеленоградский Московской обл.