HDMI-LVDS. От макета к релизу
Доброго времени суток! Вашему вниманию хочу предложить проект аппаратного конвертера HDMI‑LVDS построенный на микросхемах Texas Instruments. Статья была модифицирована и дополнена.
Постановка задачи
Разработать конвертер HDMI‑LVDS не имеющий прошивки. Аппаратная реализация на доступной элементной базе. Конвертер должен быть универсальным, поддерживать различные типы матриц (с одно- и двух-канальным LVDS) и напряжения управляющих сигналов инверторов. Работа в индустриальном температурном диапазоне.
Сформулированные основные технические требования:
- два канала LVDS (с возможностью переключения и использования одного);
- схемотехника платы должна включать в себя питатель для инвертора подсветки матрицы (желательно универсальный для матриц 12/24В);
- двухпиксельный режим работы конвертера;
- поддержка 24-bit матриц;
- рабочее напряжение конвертера 12/24В;
- рабочее напряжение панели 3,3В, 5В, 12В (24В от отдельного БП);
- управление яркостью/включением подсветки: 3,3В и 5В;
- иметь возможность управления изображением матрицы (зеркалить, переключать битность и т.д.);
Требования к конструктиву:
- простое (механическое) конфигурирование платы (DIP-переключатели);
- геометрические размеры платы не критичны;
- включение/выключение, регулировка яркости кнопками на плате;
- индикация включения/выключения.
Поиск решения
Первый вариант. Texas Instruments в линейке своей продукции предлагает конвертеры HDMI-RGB и RGB-LVDS. Микросхемы TFP401A, SN75LVDS83B и DS90C387A. Отличие SN75LVDS83B от DS90C387A в основном в том, что последний имеет два канала LVDS. Структурная схема такая (взято из документации TI):
Второй вариант — это использование микросхем ПЛИС (программируемая логическая интегральная схема). Минусом такой системы является добавление программной части для реализации конвертации, что, в свою очередь, дает и ряд преимуществ, например организация меню для настройки, возможность изменения размера картинки и т.д.
Также существует и третий вариант — это использование специализированных контроллеров. Тоже тянет программную часть на базе ОС, хотя и имеет множество преимуществ, в том числе настройки цвета/яркости картинки, регулировка отступов и размеров картинки, наличие меню и т.д.
После некоторой аналитической работы перевес был на стороне первого решения, основанного на микросхемах TI. Данная сборка дает возможность реализации конвертера под необходимые требования.
Выбор элементной базы для осуществления питания
Для питания платы напряжением 24В был выбран преобразователь LM22670 компании TI (24В -> 12В).
Напряжения 3,3В и 5В были получены с помощью конвертеров NCP3170 компании ON Semiconductor, так же прорабатывался вариант использования преобразователей ST1S10PHR компании STMicroelectronics, но изучив характеристики обеих микросхем в соотношении цена-качество оказались более доступными первые.
Управление подсветкой и настройками панели
Включение подсветки панели и регулировка яркости осуществляется напряжением 3,3В и 5В (зависит от конкретной модели матрицы). Включение происходит по средствам подачи логической единицы на определенный пин инвертора, регулировка — с помощью ШИМ. Для управления выведены кнопки на плату (так же имеется разъем для подключения внешней клавиатуры).
Обработчик кнопок и ШИМ реализованы на контроллере STM32F100, который так же управляет светодиодной индикацией (включение/выключение/прошивка EDID). Стоит отметить, что есть два типа управления подсветкой (ШИМ): логическая единица максимальная яркость или логический ноль максимальная яркость. В данной конструкции это реализуется по средствам прошивки контроллера, но можно было сделать DIP-переключатель. В разъем LVDS на плате был заведен пин 3,3В/5В/GND (через DIP-переключатель). На матрицах часто присутствуют управляющие пины: MAP (карта данных), BIT (выбор битности), MODE (обычный и зеркальный режим) и т.д… При необходимости управления этими параметрами можно завести соответствующий пин матрицы в разъем LVDS конвертера и изменять один них.
Настройка и первое включение
Настройка конвертера сводится к следующему:
1. Прошивка контроллера. Для этого был выведен разъем SWD, так как в планах не было изготовление 100к партии.
2. Установка параметров EDID. Тут пришлось долго разбираться с полями и версиями EDID.
Если кратко, то существует свободно распространяемое приложение «Deltacast E-EDID Editor». Самый простой способ — это «слить» EDID с любого монитора, а потом его редактировать под конкретный набор матриц и проверять на устройстве.
Приложение «Deltacast E-EDID Editor»
Все основные параметры находятся в даташите на матрицу. EDID на программаторе зашивается в микросхему eeprom (например M24C02). При подключении к ПК данные eeprom читаются и у пользователя появляется возможность выбирать параметры разрешения, частоты и т.д.
3. Подключение и тестирование. С некоторыми оговорками первый макет запустился и была отлажена прошивка контроллера и eeprom.
В итоге было сделано три итерации платы (включая релиз). Несколько вариантов печатных плат (1 и 2 — одно-канальный LVDS, 3 — двухканальный LVDS):
Печатные платы макетов с производства
В релизной версии платы было решено прошивать EDID в плату с помощью контроллера. Был написан простенький софт для ПК. Конвертер подключается к ПК по UART с помощью переходника USB-UART.
Приложение «EDID LOADER»
По релизному КД было сделано порядка 100 плат. Все работают, картинка отличного качества, регулировка и управление матрицей без нареканий. Сконфигурирован универсальный EDID, подходящий для большинства матриц заказчика.
Фото работы конвертера
Фото релизной версии конвертера
Преимущества разработки
- аппаратная реализация конвертера;
- двухслойная печатная плата;
- универсальность;
- простота в настройке.
Спасибо за внимание!
Источник
H Часть 1. HDMI-LVDS — это просто в черновиках Из песочницы
комментарии ( 28 )
То есть я правильно понимаю что вот эта штука способна на полной скорости переваривать HDMI сигнал? Может выйдет на такой же аппаратной платформе сделать нормальный ambilight?
Да, про HDMI Вы совершенно правы. По поводу Аmbilight у меня уже есть несколько мыслей — изучаю )
CPLD на 512 макроселлов более чем достаточно 😉 (говорю, потому что мы похожую приблуду делали)
Очень интересно, пишите, пожалуйста про разводку.
В итоге, заработало на двух слоях?
Спасибо! Забегая вперед, да. На двух слоях все работает, HD в идеальном качестве. Пока не удалось проверить двухпиксельный режим из-за временного отсутствия матрицы.
Тогда жду следующих статей, где вы уделите побольше внимания вопросам разводки сигнальных проводников!
Будем реалистами, согласовать импедансы на двухслойке (даже при том, что под ними будет сплошная земля) нельзя. То есть теоретически можно, если сигнальные дорожки были бы толщиной в несколько миллиметров (емнип, их толщина должна быть не меньше расстояния до слоя земли, то есть
1,5 мм для двухслойки, а зазор между парами и того больше, чтобы не было перекрестных наводок) — но в реальности нельзя (тупо шаг ножек микросхемы и разъема не позволит).
Был бы осциллограф с подходящей полосой — интересно было бы глянуть, как именно сигнал выглядит.
Подробнее, пожалуйста про трассировку и согласование сопротивлений диф пар с учетом допусков производства. Актуальная тема для начинающих, тем более для пользователей Альтиума, а на хабре слабо освещена. Могу кстати посоветовать всем интересующимся отличнейший блог fedevel.com, можете считать рекламой, но блог того стоит. Ведет его Роберт Феранек — сениор трассировщик, метринки, процессоры и тп, очень содержательные видео.
Хорошо, подробности будут, но сразу оговорюсь что часто при разводке плат здравый смысл, инфа в шитах и интуиция смешиваются, но девайс работает и это главное.
Как раз это и ценно! Опыт человека, который по своему совместил свой здравый смысл, инфу шитах и интуицию и у него заработало! Часто ведь бывает, люди решают задачу разными способами и у каждого получается правильный ответ. Обывателю же интересно ознакомиться с обоими личными подходами для того, чтобы сделать собственные выводы по теме, мне кажется.
Спасибо за статью!
А есть возможность на лету менять формат стерео? Например из SideBуSide (анаморфная горизонтальная стереопара) в intercolumned или чересстрочный?
Источник
Разработка скалера LVDS с двумя интерфейсами DisplayPort
Доброго времени суток, Хабр!
Описание проекта платы скалера, разработанного на чипе компании Realtek – RTD2662, для двухканальной матрицы. Кому тема интересна, добро пожаловать под кат.
Меня всегда привлекала тематика вывода изображения на матрицы. Ранее мной была разработана плата скалера на чипе TSUMV59 (совместима с TSUMV29), очень интересный экземпляр от компании MStar. Думаю, что я напишу отдельную статью на эту тему. Казалось бы, все хорошо в этом чипе, но чего-то не хватало, а именно возможности писать свой софт для вывода экранного меню и обработки GPIO. Все прошивки распространяются в бинарном виде и прошиваются через USB, а исходников найти не удалось (если кто-то что-то знает/слышал, прошу написать, так как тема очень интересна). До определенного времени для каких-то своих нужд этого вполне хватало. Были моменты, когда было не подобрать прошивку для какой-то конкретной матрицы, например с нестандартным соотношением сторон, но это все мелочи, пока не появился заказ на разработку устройства, в котором должно было быть строго определенное меню, логотип, и логика работы устройства в целом. Тогда мы начали думать как быть и в какую сторону идти. Основной проблемой было отсутствие времени, нужно было в кротчайшие сроки получить первую партию устройств – 100шт. Второе – это наличие двух интерфейсов DisplayPort на борту. Третье – малое количество устройств, что не позволяет работать/получать документацию и семплы от производителей/дистрибьютеров чипов.
Перечислю основные программные/аппаратные моменты, которые требовалось поддержать:
— DisplayPort – 2 шт;
— Ethernet 10/100 – 1 шт;
— Двухканальный LVDS для 32” матрицы – 1 шт;
— Поддержка емкостной клавиатуры из 4-х кнопок – 1 шт;
— Датчик температуры на плате – 1 шт;
— WEB-интрефейс;
— OS Linux;
— Внешнее питание 24В.
Теперь немного обо всем и по порядку.
DisplayPort
Тут казалось все относительно просто, нужно выбрать чип с входным HDMI, ставить переключатель и преобразователи из DisplayPort в HDMI. Этот же чип должен иметь выход двухканального LVDS на матрицу и поддерживать FullHD. Также, желательно, чтобы он имел на борту RMII (Ethernet) и возможность отрисовки меню поверх изображения. И тут начались проблемы. Ничего похожего, чтобы можно было быстро купить, отмакетировать и запустить партию, найти не удалось.
В качестве хобби, я занимаюсь ремонтом техники и дело тут не в доходе, а в приобретаемых навыках, очень полезных при разработке своих проектов и черпании идей и технологий. Кто разбирал оригинальную технику Sony и Panasonic, тот поймет. Особенном меня привлекают аудио/видео/автомобильные устройства. Качество прокладки полигонов (даже на верхних слоях), аналоговые земли и питания, взаимное расположение питателей на плате, трассировка оперативки, ВЧ … голова кругом от того, как красиво и продуманно все сделано (конечно, так бывает не всегда).
Ладно, о чем это я? Так вот, если вспомнить что обычно ставят в бюджетные телевизоры, первое что пришло на ум – это TSUMV29/TSUMV59, но как помним они нам не подходят. На чем еще делают телевизоры и мониторы, но что можно штучно купить? Коллега предложил Realtek, что вроде даже к нему есть исходники, что очень упростит задачу. Оказалось, что исходники действительно есть для Keil, для чипа RTD2662. Чип не самый новый, но имеет два HDMI входа и поддержку FullHD.
Рис.1. RTD2662
Схема включения как во всех шасси для ТВ. Чип питается двумя напряжениями – 3,3В и 1,8В. Полноценного даташита найти так и не удалось, да и не нужно было. Добавить нужно было только конвертеры из DisplayPort. После непродолжительных поисков был выбран преобразователь от Texas Instruments – SN75DP139. Рекомендую в разработках, хороший чип. Микросхемы расположены на bottom платы (сделать так пришлось, чтобы избежать перекрестия линий данных, возможно буду пробовать переразводить на одной стороне).
Рис.2. Схема включения SN75DP139
Схема включения получилась такая. С интерфейсом DisplayPort связался впервые и для меня стало неким откровением что вход и выход данного интерфейса имеют разную распиновку, то есть на разъеме ПК она одна, на мониторе – другая. Хотя какая-то логика в этом и есть.
Прошивка Realtek хранится в отдельной SPIFlash.
Ethernet 10/100
Ethernet нужен для нескольких вещей: мониторинг устройства, конфигурирование и обновление; поэтому физики 10/100 вполне достаточно. Ставил LAN8742AI от Microchip, использовал ее впервые, а выбрал именно ее, так как заказчику нужна была некая функция “Wake on LAN”, до этого такой надобности не было. Если в двух словах, то поддержка WoL позволяет пробуждать устройство по сети Ethernet.
Рис.3. Ethernet 10/100
Физика почти не требует обвязки и проста в трассировке. Работает стабильно, ни одного отваливания сети не было.
Два канала необходимы для подключения матрицы AUO 32”. Разъем и распиновку использовал стандартные. Напряжение питания 12В, делал на DC/DC TPS54560DDAR – это отличный питатель на 5А от TI. Подсветка матрицы 24В, брал от входного напряжения. Матрица имеет встроенный драйвер подсветки с возможностью регулировки и выключения. Плата сделана на 4-х слоях, так что проблем с трассировкой LVSD, HDMI и DisplayPort не было.
Рис.4. Трассировка LVDS
Как видно тут все напрямую, небольшое расхождение длин совершенно не влияет на качество изображения.
Кнопки реализованы на микросхеме SX8634 от Semtech Corporation – это несколько неоднозначный по своей работе чип. Программистам пришлось перепиливать весь драйвер чтобы получить ожидаемый результат. Получилось как-то так: есть 4 кнопки для перехода по меню, они сенсорные (емкостные через стекло) с подсветкой RGB светодиодами изнутри через отверстия в плате. Постоянно светится только нижняя кнопка, она же переход в спящий режим и обратно (со сменой свечения). При поднесении руки на 5см подсвечиваются остальные кнопки и выскакивает меню напротив них. Убираем руку, через 3с меню пропадает, кнопки гаснут. Выглядит интересно.
Рис.5. Плата сенсорных кнопок
Верхняя часть платы (top) прилегает к стеклу, поэтому на ней нет компонентов, все они располагаются на bottom. Сложность в настройке и калибровке была обусловлена шириной платы, она всего 12мм. Если кому-то скучно жить, могут использовать данную микросхему в своих проектах.
Температура внутри корпуса измеряется с помощью термодатчика LM75AD от NXP по шине I2C. Поставлен был так как легко доставаемый и лежит на складах в больших объемах.
Web-интерфейс и сам проект реализованы на основе молодого движка рожденного независимой командой 11-parts — это наш партнер по разработке ПО для систем на базе Linux.
Платформа имеет множество блоков, обеспеченные технической поддержкой и гарантией с возможностью доработок и обновления.
Если еще проще – это рамочный проект, с продвинутым функционалом, который постоянно улучшается и наращивает функционал. Из основных блоков можно отметить сетевой менеджер, динамический WEB интерфейс, обновление и сборщик проектов. На базе движка, можно реализовать различные устройства начиная от mp3 плеера, заканчивая многопортовым 10Gbit SIP сервером. а это как раз то, что нам было необходимо в данном проекте.
Из web-интерфейса можно не только контролировать параметры панели, но и изменять настройки, например, яркость, контрастность, четкость изображения, отслеживать к какому из портов подключен ПК и какой в данный момент из них активен, переключаться между ними.
Также в данном проекте реализована поддержка SNMP 1,2 и 3 версии с поддержкой SET, GET команд и отправкой трапов по интервалу или по событию. Т.е. информацию о любом параметре, например яркость/контрастность можно передавать на сервер по протоколу SNMP, при нажатии на кнопку изменения параметра или, например, раз в 10 сек. Выключить дисплей или поменять параметр можно удаленно с помощью SNMP SET команды. SNMP так же входит в состав движка.
iMX6ULL
Так как чип Realtek не имеет на борту Ethernet, в данном проекте установлен процессор iMX6ULL от NXP, на котором крутится OS Linux и выполняется основная логика работы. iMX и Realtek связаны между собой по UART и обмениваются между собой командами. Для быстрых событий есть несколько GPIO.
Рис.6. iMX6ULL
Вся информация хранится в NAND, u-boot загружается из SPIFlash. Одна микросхема оперативной памяти и ничего лишнего. SD карта выведена для обновления ПО (это помимо возможности это делать из web).
POWER
Вторичное питание 5В реализовано на таком же DC/DC как и для питания матрицы – TPS54560DDAR. Питания 1,8В и 1,35В на AP3418 от Diodes, а 3,3В на ST1S10PHR от ST.
Рис.7. DC/DC
Микросхемы DC/DC были выбраны с большим запасом, так как у матрицы большие пиковые токи по питанию и по подсветке, а так как была только одна итерация, рисковать очень не хотелось.
Все питания разведены полигонами в отдельном слое, за исключением питания матрицы, так как очень не хотелось резать основные питания этим проводником. Скрины трассировки приводить бесполезно, разве что кому-то будет интересен какой-либо интерфейс. По полигонам питания и земель хочу также уделить отдельную статью, например, в этом проекте суммарно 27 полигонов, в моем новом проекте на iMX7 из будет порядка 100, и в рамках этой статьи это просто не поместится.
Если еще немного углубиться в логику работы платы. iMX работает с Ethernet и кнопками передней панели. Он связан с Realtek, которые забирает изображение с активного DisplayPorta и выдает на матрицу LVDS. Команды от кнопок, SNMP и web летят в Realtek, которые в свою очередь реагирует на них и меняет параметры дисплея, выводит меню и т.д.
В итоге получился довольно интересный проект за короткие сроки. Наверное, он содержит в себе слишком много модулей, но на момент разработки, по моему мнению, это было оптимальным решением в соответствии со сроками, затратами и рисками.
Источник