Jump to content

    

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.

Share this post


Link to post
Share on other sites
Добрый день! Поделитесь опытом, кто работал с 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 у вас правильно прописан?

Share this post


Link to post
Share on other sites
EDID у вас правильно прописан?

 

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

Share this post


Link to post
Share on other sites

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

Share this post


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

 

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

Share this post


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

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

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

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

Share this post


Link to post
Share on other sites
То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе?

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

Share this post


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

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

Share this post


Link to post
Share on other sites
Как вариант. Но проще (и правильнее на самом деле) EEPROM подключить.

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

Share this post


Link to post
Share on other sites
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

 

Share this post


Link to post
Share on other sites
Rom для EDID с i2c слейвом придется все равно реализовывать.

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

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

Share this post


Link to post
Share on other sites
Тогда нужно в обязательном порядке предусматривать управление сигналом HPD, в противном случае

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

 

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

Share this post


Link to post
Share on other sites
HPD это сигнал для микросхемы...

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

Share this post


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

 

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

Share this post


Link to post
Share on other sites
Как подключить? К I2C напрямую? А что записать в это EEPROM?

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

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

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

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

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

 

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

Edited by lembrix

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now