Перейти к содержанию

    

HDMI receiver

Добрый день! Поделитесь опытом, кто работал с 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Добрый день! Поделитесь опытом, кто работал с 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 у вас правильно прописан?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EDID у вас правильно прописан?

 

Можно поподробней? Речь идет о параметрах монитора, настраиваемых в ПК или самом мониторе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваш HDMI-приемник должен содержать EEPROM (или эмулятор) с корректной информацией EDID. В противном случае карта ничего выдавать и не станет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ваш HDMI-приемник должен содержать EEPROM (или эмулятор) с корректной информацией EDID. В противном случае карта ничего выдавать и не станет.

 

То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.

1. С какой FPGA вы работаете ?

2. Как согласовали FPGA с CML (физ. уровень TMDS) ?

3. Как происходит синхронизация с источником сигнала ? Т.е как определяете середину бита и находите первый бит в посылке ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе?

Как вариант. Но проще (и правильнее на самом деле) EEPROM подключить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.

Да. Погуглите эту тему, z давно не работал уже с HDMI. EDID можно прочитать с монитора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Как вариант. Но проще (и правильнее на самом деле) EEPROM подключить.

Как подключить? К I2C напрямую? А что записать в это EEPROM?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1. С какой FPGA вы работаете ?

2. Как согласовали FPGA с CML (физ. уровень TMDS) ?

3. Как происходит синхронизация с источником сигнала ? Т.е как определяете середину бита и находите первый бит в посылке ?

 

 

1. Работаю со Spartan 6.

2. LVDS буфер (вообще использую готовую приставку HDMI https://embeddedmicro.com/products/hdmi-shield)

3. Для синхронизации во входных сериализованных данных вылавливаю Video Guardband (два пикселя длительноситью)

 

 

Да. Погуглите эту тему, z давно не работал уже с HDMI. EDID можно прочитать с монитора.

 

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

На гитхабе есть вот такой проект

 

https://github.com/tmatsuya/i2c_edid/blob/m.../rtl/i2c_edid.v

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Rom для EDID с i2c слейвом придется все равно реализовывать.

Тогда нужно в обязательном порядке предусматривать управление сигналом HPD, в противном случае

хост не сможет считать EDID, пока FPGA не загружена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Тогда нужно в обязательном порядке предусматривать управление сигналом HPD, в противном случае

хост не сможет считать EDID, пока FPGA не загружена.

 

HPD это сигнал для микросхемы типа ADV7513, мне на вход ПЛИС TMDS сигналы и i2c приходят на прямую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
HPD это сигнал для микросхемы...

Это сигнал на разъеме, по которому хост определяет подключение. Если он просто притянут к +5V, то нужно быть готовым выдать EDID в любой момент, что с I2C-слейвом на ПЛИС может быть затруднительно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Это сигнал на разъеме, по которому хост определяет подключение. Если он просто притянут к +5V, то нужно быть готовым выдать EDID в любой момент, что с I2C-слейвом на ПЛИС может быть затруднительно.

 

Большое спасибо! Сегодня только рассуждали, как видеокарта определяет наличие монитора. Данные сигналы заведены в ПЛИС на hdmi mojo shield

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Как подключить? К I2C напрямую? А что записать в это EEPROM?

Да, напрямую и с питанием от HDMI.

В этой памяти должен содержаться блок данных определенной структуры называемый EDID. Он нужен для PnP и содержит информацию о режимах поддерживаемых монитором.

Только нужен какой-то девайс для записи этого EDID по I2C в EEPROM.

Сам EDID можно считать из монитора или создать вручную. Есть несколько программ для этого, я использовал Phoenix EDID Designer.

Есть еще удобная программа для расшифровки EDID - Monitor Asset Manager (раньше называлась moninfo) от EnTech. Ей можно проверить, что созданный файл корректный.

 

Можно заставить видеокарту выдать сигнал и при отсутствии I2C. Надо лишь в драйвер монитора нужный EDID подсунуть.

Изменено пользователем lembrix

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти