Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HDMI receiver
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Alexey_Rostov
Добрый день! Поделитесь опытом, кто работал с hdmi на ПЛИС.
Сделал свой HDMI передатчик на 720p 74.25 MHz. Подключаю к монитору, наблюдаю кадры, которые формирую с заданным разрешением.
Сделал свой HDMI приемник на 720p 74.25 MHz. На вход подключил выход своего передатчика. Chipscope вылавливаю данные, которые отправляю.

Подаю на вход приемника выход видеокарты компьютера, при этом разрешение экрана задаю 720p. Выловить данные не могу (даже пиксельклока нет).

Вопрос: видеокарта генерирует пиксельклок постоянной частоты (максимальной), независимо от выставляемого разрешения экрана?

В качестве источника видеосигнала могу использовать HDMI transmiter с MAX 10 Development kit. HDMI выполнен на микросхеме ADV7513. Кто нибудь запускал данную микросхему? Генерирую видеоданные параллельной шиной (hsync, vsync, de, rgb[23:0]) но видео сигнала на выходе HDMI нет.
Там еще I2C интерфейс для конфигурирования контрольных регистров. Может есть у кого готовый паттерн по I2C для запуска микросхемы? Интересует 480p или 720p для RGB.
Volkov
Цитата(Alexey_Rostov @ Jul 11 2018, 10:10) *
Добрый день! Поделитесь опытом, кто работал с hdmi на ПЛИС.
Сделал свой HDMI передатчик на 720p 74.25 MHz. Подключаю к монитору, наблюдаю кадры, которые формирую с заданным разрешением.
Сделал свой HDMI приемник на 720p 74.25 MHz. На вход подключил выход своего передатчика. Chipscope вылавливаю данные, которые отправляю.

Подаю на вход приемника выход видеокарты компьютера, при этом разрешение экрана задаю 720p. Выловить данные не могу (даже пиксельклока нет).

Вопрос: видеокарта генерирует пиксельклок постоянной частоты (максимальной), независимо от выставляемого разрешения экрана?

В качестве источника видеосигнала могу использовать HDMI transmiter с MAX 10 Development kit. HDMI выполнен на микросхеме ADV7513. Кто нибудь запускал данную микросхему? Генерирую видеоданные параллельной шиной (hsync, vsync, de, rgb[23:0]) но видео сигнала на выходе HDMI нет.
Там еще I2C интерфейс для конфигурирования контрольных регистров. Может есть у кого готовый паттерн по I2C для запуска микросхемы? Интересует 480p или 720p для RGB.


EDID у вас правильно прописан?
Alexey_Rostov
Цитата(Volkov @ Jul 11 2018, 13:33) *
EDID у вас правильно прописан?


Можно поподробней? Речь идет о параметрах монитора, настраиваемых в ПК или самом мониторе?
aaarrr
Ваш HDMI-приемник должен содержать EEPROM (или эмулятор) с корректной информацией EDID. В противном случае карта ничего выдавать и не станет.
Alexey_Rostov
Цитата(aaarrr @ Jul 11 2018, 14:44) *
Ваш HDMI-приемник должен содержать EEPROM (или эмулятор) с корректной информацией EDID. В противном случае карта ничего выдавать и не станет.


То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.
Flip-fl0p
Цитата(Alexey_Rostov @ Jul 11 2018, 15:39) *
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.

1. С какой FPGA вы работаете ?
2. Как согласовали FPGA с CML (физ. уровень TMDS) ?
3. Как происходит синхронизация с источником сигнала ? Т.е как определяете середину бита и находите первый бит в посылке ?
aaarrr
Цитата(Alexey_Rostov @ Jul 11 2018, 15:39) *
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе?

Как вариант. Но проще (и правильнее на самом деле) EEPROM подключить.
Volkov
Цитата(Alexey_Rostov @ Jul 11 2018, 15:39) *
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.

Да. Погуглите эту тему, z давно не работал уже с HDMI. EDID можно прочитать с монитора.
AVR
Цитата(aaarrr @ Jul 11 2018, 15:53) *
Как вариант. Но проще (и правильнее на самом деле) EEPROM подключить.

Как подключить? К I2C напрямую? А что записать в это EEPROM?
Alexey_Rostov
Цитата(Flip-fl0p @ Jul 11 2018, 15:47) *
1. С какой FPGA вы работаете ?
2. Как согласовали FPGA с CML (физ. уровень TMDS) ?
3. Как происходит синхронизация с источником сигнала ? Т.е как определяете середину бита и находите первый бит в посылке ?



1. Работаю со Spartan 6.
2. LVDS буфер (вообще использую готовую приставку HDMI https://embeddedmicro.com/products/hdmi-shield)
3. Для синхронизации во входных сериализованных данных вылавливаю Video Guardband (два пикселя длительноситью)


Цитата(Volkov @ Jul 11 2018, 15:57) *
Да. Погуглите эту тему, z давно не работал уже с HDMI. EDID можно прочитать с монитора.


Замкнул i2c монитора и видеокарты, побежал клок и сигналы с карты. Rom для EDID с i2c слейвом придется все равно реализовывать.
На гитхабе есть вот такой проект

https://github.com/tmatsuya/i2c_edid/blob/m.../rtl/i2c_edid.v
aaarrr
Цитата(Alexey_Rostov @ Jul 11 2018, 16:17) *
Rom для EDID с i2c слейвом придется все равно реализовывать.

Тогда нужно в обязательном порядке предусматривать управление сигналом HPD, в противном случае
хост не сможет считать EDID, пока FPGA не загружена.
Alexey_Rostov
Цитата(aaarrr @ Jul 11 2018, 16:28) *
Тогда нужно в обязательном порядке предусматривать управление сигналом HPD, в противном случае
хост не сможет считать EDID, пока FPGA не загружена.


HPD это сигнал для микросхемы типа ADV7513, мне на вход ПЛИС TMDS сигналы и i2c приходят на прямую.
aaarrr
Цитата(Alexey_Rostov @ Jul 11 2018, 16:52) *
HPD это сигнал для микросхемы...

Это сигнал на разъеме, по которому хост определяет подключение. Если он просто притянут к +5V, то нужно быть готовым выдать EDID в любой момент, что с I2C-слейвом на ПЛИС может быть затруднительно.
Alexey_Rostov
Цитата(aaarrr @ Jul 11 2018, 17:14) *
Это сигнал на разъеме, по которому хост определяет подключение. Если он просто притянут к +5V, то нужно быть готовым выдать EDID в любой момент, что с I2C-слейвом на ПЛИС может быть затруднительно.


Большое спасибо! Сегодня только рассуждали, как видеокарта определяет наличие монитора. Данные сигналы заведены в ПЛИС на hdmi mojo shield
lembrix
Цитата(AVR @ Jul 11 2018, 16:02) *
Как подключить? К I2C напрямую? А что записать в это EEPROM?

Да, напрямую и с питанием от HDMI.
В этой памяти должен содержаться блок данных определенной структуры называемый EDID. Он нужен для PnP и содержит информацию о режимах поддерживаемых монитором.
Только нужен какой-то девайс для записи этого EDID по I2C в EEPROM.
Сам EDID можно считать из монитора или создать вручную. Есть несколько программ для этого, я использовал Phoenix EDID Designer.
Есть еще удобная программа для расшифровки EDID - Monitor Asset Manager (раньше называлась moninfo) от EnTech. Ей можно проверить, что созданный файл корректный.

Можно заставить видеокарту выдать сигнал и при отсутствии I2C. Надо лишь в драйвер монитора нужный EDID подсунуть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.