DVI-HDMI with Audio для медиаплеера

для раздела Блоги
DVI-HDMI со звуком для медиаплеера
Небольшой рассказ (исследование) о том, как можно получить цифровой звук от видеокарт AMD/ATi. Используя любительский подход, также возможна самостоятельная сборка адаптера (переходника) DVI-HDMI, функционального аналога оригинального.

Содержание:
1. Введение
2. Исследование
3. Эксперименты
4. Вариант-1. Адаптер
5. Вариант-2. MODификация
6. Проверка
Итог

1. Введение
Если в медиаплеере (или ином компьютере) установлена видеокарта серии HD2xxx (и выше) от AMD/ATi, то существует возможность вывода через ее цифровой интерфейс не только видео, но и звука.
Однако воспользоваться этим возможно только, если вместе с видеокартой используется оригинальный (фирменный) адаптер. Не фирменный же адаптер или любой иной DVI-HDMI кабель работать со звуком не будет. Конечно, разумно сразу же купить видеокарту с таким адаптером, однако что делать, если она уже куплена без него? Кстати, если видеокарта нужна низкопрофильная, например для медиаплеера или медиацентра, это тоже будет проблема, так как для дешевых низкопрофильных видеокарт в комплект к ней такой адаптер не прилагается.

Этим летом, в новостях писали, что такой адаптер появился в продаже. Но, к сожалению, не в "нашей деревне". И хотя, стоит такой адаптер не дорого, но отдельно в продаже найти мне его не удалось. Можно было конечно, заказать через Интернет, но мне это пока не приемлемо.
Наверняка, с подобной проблемой столкнулся не я один…
И вот, случайно в мои руки попал оригинальный адаптер DVI-HDMI для видеокарт AMD/ATi. К сожалению не надолго, и пока было время, я решил его потестить, может быть в нем не все так хитро, и если получится сделать похожий ему аналог.

2. Исследование
Адаптер был с маркировкой ATi (Rev.A), и он соответствовал p/n номеру, как на указанной выше новостной ссылке.
Вначале, я проверил его с помощью мультиметра. Все необходимые соединения между контактами присутствовали и "прозванивались" также как и на обычном (стандартном) адаптере, или DVI-HDMI кабеле.


(кликните по картинке для увеличения)

Распайка стандартного DVI-HDMI адаптера (кабеля)
Именно с такой схемой распайки у меня существуют пара DVI-HDMI кабелей. Очевидно, что и в фирменном адаптере, банальных "перемычек" тоже не было.
Далее, я попробовал сделать перекрестную проверку между контактами, и оказалось, что между линиями SDA и SCL, и питающими выводами есть небольшие сопротивления, т.е. на этих контактах (внутри этого адаптера) наверняка присутствует какое-то устройство. Но, что бы это могло быть?

Известно, что для обмена данными между устройствами, часто применяется шина I2C (двунаправленная 2-проводная шина) использующая для этого линии SDA и SCL (линии данных и синхронизации). Как правило, в таких шинах используются различного рода I2C контроллеры и/или микросхемы EEPROM, в которых производитель может записывать какую-либо информацию. Устройства к I2C шине, как правило, подключаются так, как показано на рисунке ниже.



(кликните по картинке для увеличения)

I2C Device
Для некоторых DVI кабелей, их производители также могут устанавливать внутри разъемов специальные микросхемы памяти, которые могут содержать дополнительную информацию о режимах работы, например, разрешении для плазменной или ЖК панели, и прочее.
Так, на одном из форумов была обнаружена вот такая картинка (см. рисунок ниже). Человек специально разобрал DVI разъем, что бы посмотреть, что же там внутри и здесь у него оказалась микросхема типа EEPROM, подключенная к шине I2C.


(кликните по картинке для увеличения)

EEPROM inside DVI
Исходя из этого, у меня возникло предположение: Возможно, в оригинальном DVI-HDMI адаптере от AMD/ATi тоже находится нечто подобное?
Узнать, что за устройство находится на I2C шине, можно с помощью мониторинга шины, используя специальный инструмент (типа сканера). Но, у меня такого нет. Однако можно попробовать другой способ - это собрать простой ридер (и writer), и уже с помощью него прочитать шину и узнать модель микросхемы. Простейший ридер можно собрать, вот по такой схеме. Или же, вот по такой, слегка модифицированной схеме. Собранный ридер по своим размерам получается совсем не большой.


(кликните по картинке для увеличения)

Программатор EEPROM (плата)
Такой ридер (совместимый с SI Prog), может работать вместе с программатором PonyProg.
В настройках "interface setup" этого программатора, нужно установить I/O port на SI Prog I/O и выбрать необходимый COM порт.
Подключив ридер к контактам 6,7,14,15 на DVI разъеме оригинального адаптера можно попытаться определить, что же там внутри…


(кликните по картинке для увеличения)

Читаем оригинальный адаптер
Но, оказалось не все так просто, и с первого раза у меня ничего не прочиталось.
Так как шина I2C может поддерживать несколько устройств, то прежде чем обратиться к тому или иному устройству на этой шине, нужно знать точный его адрес. Благо, таких адресов не очень много, и их вполне можно вычислить. Адрес "неизвестного" устройства был найден мной вручную, т.е. тупым методом перебора. Для этого, в файле настроек программы "ponyprog.ini" нужно было последовательно менять адреса, пока не найдется нужный адрес. Установить нужный мне адрес удалось, поменяв следующий параметр: I2CBaseAddress=0xD0. Почему производитель выбрал именно этот адрес? – х.з.
По этому адресу, программатор успешно определил (нашел) устройство, и прочитал из него данные. Поиск же по другим (свободным) адресам ничего не дал, значит, внутри было только одно устройство.

Итак, предположение оказалось верным, и внутри адаптера существует микросхема памяти EEPROM. Программатор, в режиме Auto, определил ее как 2416x. Содержимое памяти amd_24c16x.bin приведено на рисунке ниже.


Содержимое микросхемы EEPROM
Обратите внимание, из всего объема памяти микросхемы, реально данных только 17 байт, которые записаны как простой текст AMD…6141054300G. Не трудно догадаться, что это есть p/n (part number) адаптера (см. ссылку вначале) и тем самым, ничего секретного здесь более нет. Попытки записи в эту микросхему не проходят (и.м.б. защита от записи), а следовательно остальная память микросхемы уже никак не используется.

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

3. Эксперименты
В начале, решено было попробовать поэкспериментировать с микросхемами из серии 24C16x, которые существуют в свободной продаже и у различных фирм, стоимостью примерно 0,5$ за штуку.
Первой попробовал микросхему AT24C16A (от фирмы Atmel). Она была смонтирована на миниатюрной плате (схема ниже), а затем запрограммирована.


(кликните по картинке для увеличения)

Собираем схему
И тут, тоже по началу случилась неудача. При опросе микросхемы, адрес устройства не соответствовал оригинальному адаптеру.
Пришлось обратиться к спецификациям, и оказалось, что микросхемы этой серии, (именно с буквой A), не имеют возможности "железного" выбора адреса устройства. К сожалению, программа программатора, не показывает точное название микросхемы. Впрочем, здесь я и сам виноват. Нужно было заранее изучить спецификации.
В результате дальнейших поисков, нашлась нужная микросхема. Это микросхема AT24C164 (тоже Atmel). Как выяснилось позднее, к сожалению, из всей серии, только эта микросхема может быть использована в данном случае.
Снова собрал схему.


(кликните по картинке для увеличения)

Программируем микросхему
И вот, наконец, все получилось!
Для микросхемы 24C164 (pdf ~190k), манипулируя линиями A0, A1 и A2 можно выбирать и назначать тот или иной адрес. Установить же нужный мне адрес удалось, подав на все адресные входы высокий потенциал.
Возможно микросхемы других серий или даже других производителей, также могут (и будут) работать, но я не стал тратить время на поиски, и проводить дополнительные эксперименты.
Принципиальная схема функционального аналога DVI-HDMI адаптера AMD/ATi приведена на рисунке ниже. Отличие его от обычного (стандартного) адаптера только в том, что добавлена небольшая схема, которая здесь выделена пунктиром.


Распайка DVI-HDMI адаптера (с микросхемой внутри)
Схема подключения микросхемы была выбрана типовая.
Сопротивления R1 и R2 (подтягивающие) нужны для надежного уровня на шине. R3 обеспечивает защиту записи, если же микросхему потребуется перезаписать, то вывод 7 нужно замкнуть на GND. Посредством R4 устанавливается высокий потенциал на адресных линиях. Конденсатор C1 нужен для устранения возможных помех по питанию. Кстати, сопротивления R3 и R4 можно значительно уменьшить, или совсем исключить из схемы, заменив перемычками.
Забегая вперед, скажу, что уже на этом этапе, я сразу проверил работоспособность схемы в связке с видеоадаптером (и все успешно заработало), а уже затем стал делать все остальное.
Далее, нужно было придумать, как оформить (собрать) новое устройство в какой-либо корпус.

4. Вариант-1. Адаптер
Очевидно для того, чтобы собрать адаптер аналогичный оригиналу, нужно как минимум два разъема - DVI и HDMI. Но, к сожалению, в продаже разъемов типа HDMI найдено не было. Зато, были (и есть) разъемы DVI, и стоимость их не велика, примерно 1,5$ за штуку, найти их можно, например, здесь. Поэтому, решено было попробовать собрать адаптер в варианте DVI (мама) – DVI (папа).
Внутри адаптера к разъему DVI (папа), была подпаяна плата, с которой я ранее производил эксперименты. Все остальные контакты были соединены согласно схеме показанной выше.


(кликните по картинке для увеличения)

Собираем адаптер (переходник)
Порядок сборки:
    1 - Разъемы, DVI (мама, на плату) и DVI (папа, на кабель) вместе с корпусом.
    2 - Обрезаем корпус по форме, и разрезаем экран для разъема DVI (мама).
    3 - Примерно так, должны будут установлены разъемы.
    4 - Подпаиваем к DVI (папа), плату с микросхемой, к контактам 6,7 и 14,15.
    5 - Подпаиваем короткие проводки к разъему DVI (мама).
    6 - Подпаиваем одну часть проводков.
    7 - Окончательно подпаиваем все проводки.
    8 - Собираем адаптер, разъемы здесь входят достаточно плотно.
    9 - Окончательно собранный DVI (мама) - DVI (папа) адаптер.
На сборку такого адаптера, у меня ушло не очень много времени, но делать все нужно было достаточно аккуратно.


(кликните по картинке для увеличения)

Сравнение адаптеров
Однако если кому-то такое не под силу, то можно немного упростить задачу, например, не собирая подобный адаптер, сразу припаять плату с микросхемой к DVI разъему стандартного DVI-HDMI кабеля, конечно при условии, что DVI разъем такого кабеля разборный.
Но, есть еще более простой вариант, когда ни адаптер, ни плату вообще можно не собирать.

5. Вариант-2. MODификация
Позже, в процессе экспериментов выяснилось, что собирать адаптер или плату, вовсе и не обязательно. Например, если планируется один из выходов видеокарты использовать только для HDMI подключения, то все можно значительно упростить.
Для этого нужно заранее запрограммированную микросхему, поместить (или приклеить) где-либо, в ближайшем месте от DVI разъема видеокарты, и с помощью коротких проводков подпаять ее к нужным контактам разъема.


(кликните по картинке для увеличения)

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


Схема подключения для модификации видеокарты
Несомненный плюс такой модификации, если до этого все уже было подключено нужными кабелями к вашей A/V технике, то уже нет никакой необходимости дополнительно устанавливать какие-либо переходники.
IMHO, пока это есть самый дешевый и простой способ решения проблемы со звуком для видеокарт этого производителя. Затраты на модификацию = равны стоимости микросхемы!

6. Проверка
Для чистоты эксперимента, тестировался также и оригинальный адаптер.
Проверка производилась с двумя различными видеокартами, MSI HD2400Pro (256MB, 64bit) и ASUS HD2600Pro (256MB, 128bit), фирменными адаптерами они не комплектовались. Низкопрофильная видеокарта HD2400Pro у меня была установлена в сетевом HD медиаплеере. Ранее, здесь использовался только DVI выход (для видео), а звук шел отдельным (аналоговым) проводом.
Новая схема подключения стала выглядеть следующим образом:


Подключение аппаратуры
Теперь, от медиаплеера по кабелю DVI-HDMI, сигнал поступает сначала на ресивер (который выделяет звук), а затем транзитом через кабель HDMI-DVI идет на проектор. Для просмотра фильмов сейчас я использовал проектор.
Если устройство отображения (дисплей, проектор и пр.) у вас единственное, то адаптер должен быть заранее подключенным именно к этому выходу компьютера (до инициализации). Если к этому выходу уже подпаяна микросхема, то задумываться об этом не надо.
Кстати, подобную схему подключения рекомендует и AMD, на своей странице техподдержки.

-------

[Update: 29/11/2008] Не так давно мной был прибретен LCD телевизор, и в качестве эксперимента, я попробовал немного изменить схему подключения. Так как, сам по себе ящик имеет множество различного типа входных разъемов, то он вполне мог бы быть и коммуникационным центром:


Подключение к LCD

В этой схеме подключения, цифровой A/V сигнал от медиаплеера сначала идет на HDMI вход LCD телевизора, а затем (только звук), с цифрового (оптического) SPDIF выхода ящика, поступает на один из цифровых входов ресивера.
К сожалению, звук пока в этой схеме только двухканальный, как выяснилось позже, телевизор не позволяет "транзитом" выводить многоканальный звук.
Поэтому, я оставил схему подключения старую, только лишь в место проектора у меня теперь LCD телевизор.

-------

Вывод звука также проверялся как на LCD панели, так еще и с преобразователем форматов фирмы Dune.
В итоге, проверка показала, что для этих двух видеокарт ATi серии 2000 (см. выше), как оригинальный адаптер, так и самодельный адаптер, а также просто подпаянная к плате микросхема, работали без проблем.


(кликните по картинке для увеличения)

Адаптер подключенный к медиаплееру
Проверялся звук на фильмах, в нескольких вариантах AC3, PCM и dts, как с файлов, скаченных из сети, так и с дисков DVD. Все нормально воспроизводилось. Кстати, на своем сайте AMD/ATI предупреждает, что для 2000 серии видео карт ATi звук формата PCM возможен только в двухканальном варианте. А для серии 4000 звук MLPCM уже будет возможно извлекать многоканальный. В любом случае, пока это не большая потеря, так как существует еще и dts, качество которого выше чем AC3, и он также нормально здесь воспроизводится.


(кликните по картинке для увеличения)

Проверка вывода звука
Что бы получить звук с видеокарт AMD/ATI, в настройках панели управления "Звуки и аудио устройства" вашей операционной системы (в.д.с. WinXP), нужно выбрать устройство вывода звука по умолчанию "ATI HD Audio rear output".
Теперь все звуки, которые могут быть извлечены из операционной системы, будут нормально воспроизводятся. Если же у вас установлен TV тюнер, способный передавать звук по PCI шине, то в его настройках нужно указать вывод звука через ATI HD Audio (лично было проверено мной с моделью тюнера "GoTView PCI DVD").
В конечном итоге, встроенный на материнской плате (моего медиаплеера) аудио кодек, я просто отключил за ненадобностью, так все звуки теперь прекрасно идут через DVI разъем.
Кстати, звуковой драйвер программно никак не связан с видео драйвером, и если вы не хотите, то также и CCC тоже можно не устанавливать, так как и без него все нормально работает.

Важное замечание! Прежде чем собирать адаптер (или паять микросхему), следует убедиться, что ваша видео карта в состоянии выводить звук в цифровом виде.
Дело в том, что на своем сайте AMD/ATI предупреждает, что не со всеми видеокартами их собственный адаптер может работать.
Но, так как графические процессоры, имеющие блок UVD, у них одинаковые, то рискну предположить, что некоторые производители видеокарт могут просто исключить такую возможность из BIOS. Если при установке видеокарты в компьютер вам ни разу не предлагалось установить "неизвестное устройство", именуемое как "ATI Function Driver for High Definition Audio", то скорее всего ваша видеокарта такой вывод звука не поддерживает. Если же вы уверены, что она должна это делать, то в таком случае решение, вероятно, нужно искать в перешивке БИОСа видеокарты.

-------
[Update: 3/04/2008] Следует заметить, что фирменный адаптер (переходник), а также описанный в этой статье, подходит только к 2000 серии карт. А к новым сериям (3000, 4000 и выше) сидео карт, нужны уже другие переходники, точнее с другим внутренними номерами (например, AMD…6140063500G - Rev.B. и т.д.).
Например, если вы уже приобрели фирменный адаптер от 2000 серии, то использовать его с видеокартами других серий уже не сможете, нужно или покупать новый переходник, или опять - "танцы с бубном".
Вот так! Даже свои фирменные адаптеры AMD/ATi решила сделать "не совместимыми" друг с другом !!!

-------


Итог
Можно сказать, что вся проделанная выше работа была выполнена не зря, и искать фирменный адаптер совсем не обязательно.
Конечно, самый простой способ получить звук с видеокарт AMD/ATI, это припаять дешевую микросхему к выводам на самой видеокарте, затраты минимальны. Кстати, если паять аккуратно, то и гарантию на видеокарту вполне можно сохранить.
Также хороший вариант, когда плату (с микросхемой) можно припаять внутрь DVI разъема в каком-либо готовом DVI-HDMI кабеле.
Впрочем, здесь каждый сам для себя решит, как лучше поступить.

P.S. Оригинальный (фирменный) адаптер AMD/ATI можно заказать тут.

Задать вопросы и высказать критику можно здесь.

Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 1.0 из 5
голосов: 1

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают