Доброго времени суток! Вашему вниманию хочу предложить проект аппаратного конвертера 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, подходящий для большинства матриц заказчика.
Фото работы конвертера
Фото релизной версии конвертера
Преимущества разработки
- аппаратная реализация конвертера;
- двухслойная печатная плата;
- универсальность;
- простота в настройке.
Спасибо за внимание!
UPD: По просьбам выкладываю БОМ и расположение компонентов на плате.
dl.dropboxusercontent.com/u/25037786/habr/HDMI-LVDS/HDMI-LVDS.zip
Комментарии (63)
K1801vm2
17.01.2017 20:07+4А где можно взять герберы? Или пустую палту приобрести?
the_bat
18.01.2017 16:18Гербера передать не могу, так как все-таки коммерческий проект, но решили подарить последний паллет (6шт) плат, который остался не запаянным. K1801vm2 получает одну плату, дальше пишите в личку, первые 5 получат по плате. Только просьба, не чтобы на стеночку повесить или на полку положить, а для дела. Ну и, естественно сразу подумайте как будете забирать из Питера, кто из других городов.
Arxitektor
17.01.2017 21:10Как я понимаю эта плата для преобгазования HDMI в сигнал для шлейфа матрицы монитора?
А на сколько высока задержка?
как я понимаю должна быть минимальна?
И какое разрешение поддерживает конвертер?
Просто интересует с точки зрения применения в шлеме для получения картинки с гоночного дрона.
Задержка критична. А для этого надо минимизировать её на всех этапах.the_bat
17.01.2017 22:11+1Да. Задержки на глаз незаметны. Если это критично, то нужно анализировать. 1920х1080 поддерживается без проблем.
AllexIn
17.01.2017 21:45+2оооо! Я как раз такое решение искал!
Где купить???the_bat
17.01.2017 22:18Мы разрабатываем под заказчика. На сайте ЭЛТЕХа плата доступна к заказу. Если Вы имеете ввиду не штучный экземпляр, а партию, то можем под Вас произвести.
AllexIn
17.01.2017 22:20Ох. Ценник у них не гуманный. Нужна одна штука. Но, конечно, не за 7000.
Odinokij_Kot
18.01.2017 11:14+1На али похожую тему можно за пару десятков баксов купить. Ещё там будет Вам тв тюнер и всякие кнопки.
Ищите по модели LA.MV9.P или LA.MV29.P
Фактически, это третий вариант решения проблемы.SchmeL
18.01.2017 15:52купил парочку таких по 600р за штуку. Одна сдохла через пару минут, вторая продержалась дней 9.
Теперь вот думаю как чинить, может у них компонент какой-нибудь слабый, который можно перепаять, но в диагностике я к сожалению не силен.
kAIST
17.01.2017 22:59+1На известном китайском сайте готовых решений за небольшие деньги полно же.
AllexIn
17.01.2017 23:01Уже. Не все так радужно. Пока найдешь годно работающее — в теже 7000 и влетишь. Я пока влетел на сумму в районе 4000. Последнее решение еще не имел возможности проверить… Может и до 7000 дойду.
kAIST
17.01.2017 23:06А с какими трудностями сталкивались? Я в одном проекте использую самую дешевую платку, проблем не было.
AllexIn
17.01.2017 23:09+1Да не работает и всё. :)
Я сейчас третью пробовать буду.
Первая тупо не видела HDMI сигнал. Причем от компа видела норм, а от SabreLIte — нет. Насколько я понял, что-то с форматами HDMI связано. У меня SabreLite и мониторы не все видят.
Вторая показывала изображение смещенное, как будто разрешение выше чем на матрице. В итоге строки ступеньками выстраивались. И это было даже без подключения HDMI кабеля. Уже сервисные надписи при включении так себя вели.kAIST
17.01.2017 23:14Странно. Тестировали несколько дешевых вот таких плат:
Скрытый текстthe_bat
17.01.2017 23:23+1На сабре нужно в линуксе параметры панели указывать, пиксельклок, разрешение и другое. В этом случае можно игнорировать параметры EDID вшитые в конвертор, правда это не всегда залог успеха, но мониторы должны работать. Наш конвертор без проблем работает на imx6.
ns3230
18.01.2017 09:12Я весной на подобной китайской сделал из древнего ЖК-монитора («квадратного») телевизор. Плату брал в Украине, что-то около 20 долларов. Там готовые прошивки есть, под разные матрицы, максимум кажись поддержка 1920х1200@60Hz. Что имеем: плату, которая подходит для большинства мониторных и ноутбучных матриц (шлейф продаван правильный положил), разъемы ВГА, ХДМИ, тюльпаны, звук, ЮСБ, управление пультом, телек. Также есть выводы для кнопок управления: можно готовую панельку подлючить (+ пара баксов), можно каждую кнопку на свой пин подпаять, можно все кнопки через один пин, с разделением кнопок резистивным методом (каждая кнопка коротит со своим сопротивлением). Чего не имеем: управления подсветкой (хотя выходы для ее драйвера есть, но уровень не регулируется. может, можно допилить, но мне это не надо было, вот и не вникал), цифрового ТВ (аналогичные решения с ним — в 2-3 раза дороже). Если такой вариант интересен — я поищу, вспомню, что за модель.
GennPen
18.01.2017 10:05По поводу подсветки. Есть два типа управлением яркостью подсветки: PWM и уровнем напряжения. Если типы выхода контроллера и вход драйвера подсветки не совпадают — регулироваться не будет, будет только 0% и 100%. Из PWM можно сделать в уровень напряжения путем добавления нескольких резисторов и конденсатора.
AllexIn
18.01.2017 12:02А я как раз сейчас такой вариант и прикупил. :) Скоро тестить буду.
Единственное — не знаю где брать прошивки и как прошивать. Не разбирался пока. Подскажите, пожалуйста, куда смотреть, если у вас сохранилась эта инфа.ns3230
18.01.2017 12:25Про прошивки, к сожалению, не скажу, так как там изначально была совместимая. На Али вроде у продавцов такой штуки находил ссылки, но они мне не понадобились. А шьется, если память мне не изменяет, путем загрузки на флешку файла прошивки автоматически, когда ее обнаруживает.
Stross
17.01.2017 22:02А для чего два пустующих места под конденсаторы в правом нижнем углу платы?.. Так понимаю, развязывающие, но почему в итоге решили не ставить?
the_bat
17.01.2017 22:14+1В релизной версии предусмотрел электролиты по питаниям, на случай если при разбросе параметров на серии питание станет хуже. На тестах увидел что все хорошо. Плата индастриал и электролиты ставить не хочется, керамики хватает.
x893
18.01.2017 00:17Достойный труд
Но можно купить и подешевле
https://www.chalk-elec.com/?page_id=1280#!/HDMI-to-LVDS-converter/p/14647633/category=3094861
http://www.ebay.com/itm/HDMI-DVI-VGA-Driver-LVDS-Inverter-Kit-Convert-a-Bare-Laptop-LCD-into-Monitor-/111115624120
и т.д.
Вопрос может не в тему:
Нет у Вас платы, что бы один HDMI (например 1600х600) разделить на две матрицы (например по 800х600)?
LVDS не обязателен, можно RGB.the_bat
18.01.2017 00:35Спасибо. Дешевле чем в России можно купить почти любую технику в Китае.
Смотря что Вы имеете ввиду под «разделить на две матрицы»? Если Вам нужно дублировать изображение, то можно просто распараллелить сигнал соблюдая волновое сопротивление и делая короткие линии. Я делал плату раздвоения на спец микросхемах (названия не помню) но решение было отвратным, микросхемы грелись и работали нестабильно. Распараллеливание решило проблему. В серии на FullHD матрицах никаких проблем. Кстати, разобрав пару Китайских разветвителей HDMI увидел самое обычное параллельное соединение (естественно i2c берется только от одного HDMI)x893
18.01.2017 01:33+1Нет, надо разделить на две части.
1600х600 -> левая 800х600 и правая 800х600
Хотел попробовать сделать по простому
TFP401 выделяет HSYNC, VSYNC, DE и остальное и на небольшой FPGA сделать по полкадра на каждую панель, только на каждую изменить HSYNC и DE — что бы сохранить интервал от HSYNC до DE.
То есть поменять соотношение на HSYNC/DE.
Думал может специалисты сталкивались с таким вариантом использования матриц.
daggert
18.01.2017 01:15+1Задумывая видеостену столкнулся с адовой стоимостью мониторов с мелкими краями. По итогу смотрел на голые матрицы + такие вот переходники + матроксовская карта на 6 моников.
Правда изначальный "дешевый колхоз" привел к финансовым потерям, по большей части со стороны "кетайских" конверторов и премудростям работы с продавцами, пишущими в 99% случаев "да да, все работать будет с вашей моделью".
После вашей статьи буду смотреть в сторону самого дичайшего колхоза — самопай (:
Zuy
18.01.2017 06:09+1Чип от TI позиционируется для использования в ТВ, всегда было интересно, как звук в таком случае вытягивается из потока, если чип этого не умеет.
Мне в свое время пришлось использовать решения от AD, что было дорого. Хорошо, что Китай выручает более дешевыми вариантами со звуком.
CSC и масштабирование чип тоже не умеет? У вас матрица масштабирует неродные разрешения и входной поток только RGB?
voidptr0
18.01.2017 09:36+2А это тоже ваша статья HDMI-LVDS — это просто? Просто смотрю — год 2014.
the_bat
18.01.2017 12:31Да, статья была написана ранее, в начале статьи написано что она дополнена. Я ее убирал, дописал когда сделали и протестировали релиз. Появилось время — выложил.
BOPOHA
18.01.2017 12:28ссылка на оригинал статьи http://habrahabr.ru/post/211753/
Вы пытаетесь открыть публикацию, написанную пользователем the_bat,
однако, публикация скрыта в черновики (самим автором или НЛО)Судя по всему, да, его.
BurlakovSG
18.01.2017 13:40Подскажите, пожалуйста, как можно скоммутировать два сигнала (AV и HDMI) на LVDS?
the_bat
18.01.2017 13:58+1Я делал только hdmi -cvbs, rgb — cvbs, других решений сходу не подскажу. Вам нужно cvbs, звук и hdmi? Нужно мониторить чипы.
BurlakovSG
18.01.2017 14:16Есть HDMI с RPi, есть аналоговый (тюльпан = CVBS?) — хочу выводить на экран (с LVDS входом). Получается мне нужен конвертер HDMI-LVDS как у Вас в статье, нужен конвертер СVBS-LVDS и нужен коммутатор, чтобы переключать между входами.
focs113
18.01.2017 15:41+1А просто использовать платы с убитых мониторов. Внутри уже все есть.минус заточено обычно под одно разрешение. В современные мониторах плата скаллера имеет габариты 5 на 5 см. Запчастей на 10-15 баксов. Разрешение матрицы меняется правкой прошивки. Использовал такую плату +доп питальник для подсветки для. Запуска матрицы планшета.
the_bat
18.01.2017 15:42+1На партию даже 100шт мониторов не наломаете)
Убитые мониторы я обычно ремонтирую.
TheCoreFactory
18.01.2017 16:27Пару месяцев назад разрабатывал такую же штуку на -40, вариантов как оказалось не так много.
Хорошая статья, но критически не хватает информации о том, что по факту вся статья базируется на данном документе и более подробно стоит смотреть в нем:
http://www.ti.com/lit/an/slla325a/slla325a.pdfthe_bat
18.01.2017 16:27Да, по сути нужен только этот документ и шиты на микросхемы и все станет понятно.
Zuy
18.01.2017 18:05Чип от TI позиционируется для использования в ТВ, всегда было интересно, как звук в таком случае вытягивается из потока, если чип этого не умеет.
Мне в свое время пришлось использовать решения от AD, что было дорого. Хорошо, что Китай выручает более дешевыми вариантами со звуком.
CSC и масштабирование чип тоже не умеет? У вас матрица масштабирует неродные разрешения и входной поток только RGB?
MonkeyD
18.01.2017 18:11Яб заказал вместе с инструкцией. Причем купил бы штук 6. Ибо стекол полно, а мамки на них подохшие. С китайской платой устал копаться. А еще я бы к ним БПшки заказал какие требуется. Чтоб не искать по ебею.
Автор, продолжай. Хорошие идеи, способы реализации и главное результаты)))
melchermax
Отличнейшая публикация, непременно пишите ещё! Хотелось бы, правда, немного больше подробностей, особенно по компоновке и разводке таких сложных плат.
the_bat
Спасибо! Разводка RGB и похожих интерфейсов на двух слоях — это да, отдельная тема. Наберу побольше материала может напишу статью.
Izy125
присоединюсь, был бы очень интересно почитать про нюансы разводки подобных плат
Strannii
Да уж, развести такое количество дифпар на двух слоях — это грандиозный челлендж. Что у вас с импедансами получилось? Какой стек платы?
the_bat
Импеданс я примерно рассчитывал (если Вы про HDMI и LVDS).
Стек стандартный резонитовский. Двухслойка, 18 фольга.
(если интересно: 0,3/0,7 отверстия, 0,2 линии, 0,2 зазор)
Как-то так:
Strannii
То есть у вас дифпары HDMI идут без опорного слоя? А возвратные токи? Либо я что-то не понимаю в интерфейсе HDMI, либо это просто чудо, что у вас все заработало. Это же идет вразрез со всеми мыслимыми правилами разводки высокоскоростных интерфейсов. Даже примерная прикидка дифпары 0.2-0.2 на плате толщиной 1.5мм дает импеданс 150 Ом при необходимых 90.
Какой размер картинки передаете? Судя по фото, это 1366х768. Вы пробовали запускать изображение крупнее?
Может, у вас есть какой-то секрет применительно к HDMI (короткая линия, личные эксперименты)?
the_bat
Да, импеданс не сходится, но тестами установил что все гуд. Пришлось делать вырез в полигонах на hdmi и lvds.
lelik363
Плата будет испытываться на соответствие промышленным(температура, вибрация, помехоэмиссия, статика и пр.) стандартам?
the_bat
Пока платы тестируется только у заказчика. Если будет необходимость исправления, будем тестировать на эмс, температуру м вибрации.
SlavikMIPT
по эмс точно не пройдет)
the_bat
Спорный вопрос, вот статику скорее всего не пройдет.