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

Приветствую.

Задача: вывести на монитор тестовый шаблон по HDMI на Artix AC701.

Исходные данные: работаю в Vivado 2017.1, имеется монитор Dell 2408WFP с поддержкой HDMI, и, собственно, сама плис Artix. Изображение для начала можно любого формата, главное, чтоб заработало. Я взяла режим 1920х1080р 60Гц, 24-Bit RGB (4:4:4) с раздельной синхронизацией.

Проблема: Первая и самая главная - изображение отсутствует. Однако сигнал, судя по анализатору ILA в виваде, идет. У меня в наличии еще имеется маленький 7 дюймовый монитор hdmi lcd 1024x600 для raspberry pi (режим, разумеется, поменяла), на нем отображается не соответствующая шаблону картинка да еще и скачущая. Возможно, проблема с синхронизацией?

Подробно о моем проекте.

Создала в вивадо стандартный проект с процессором Microblaze (картинку прикрепила). Из документа ac701-schematic узнаю, что на борту артикс есть некая микросхема ADV7511 - это кодек HDMI, обеспечивает интерфейс между плис и портом hdmi, откликается по адресу 0х39. Дальнейшее изучение назначений ножек привело меня к еще одной микросхеме - PCA9548 - это IIC мультиплексор. Т.е. чтобы получить доступ к ADV, нужно пройти через коммутатор IIC по адресу 0х74. Нам нужно использовать 5 канал этого коммутатора для доступа к ADV. 

 Из официального документа AN-1270 фирмы Analog Devices на микросхему ADV я нашла схему, как "собрать" все это безобразие плюс исходные коды на верилог для создания собственного IP ядра в виваде. Итак, картинка сложилась: добавляем в проект собственное ядро ADV7511 c предоставленными кодами (на схеме выделено красным), добавляем ядро AXI-IIC (выделено зеленым), поскольку для вывода в формате HDMI микросхема ADV должна быть запрограммирована на запись в соответствующие регистры IIC. Еще добавила блок Clock Wizard для генерации т.н. pixel frequency (для режима 1080p - 148.5 МГц) - на картинке выделен голубым.

Ну и разумеется, прога в SDK для "оживления" всей этой аппаратной части. Сразу замечу, что скрипт для шины IIC из документа AN1270 вызвал у меня некоторые подозрения, ибо там дублируются одни и те же регистры с разными значениями. Поэтому в SDK я прописала значения регистров, взятые из ADV7511 Programming guide.

Помогите, пожалуйста. Я много копалась на форуме Xilinx, но пока решение не нашла. Уповаю на наше сообщество. Если нужны еще подробности, документы с которыми работаю, все предоставлю.

мой проект.png

AN-1270.pdf

Изменено пользователем Jul'etta

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


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

Приветствую!

 

Видели эту ссылку.  Такие вещи удобно изучать имея рабочий reference design.

 

Успехов!  Rob.

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


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

45 minutes ago, RobFPGA said:

Приветствую!

 

Видели эту ссылку.  Такие вещи удобно изучать имея рабочий reference design.

 

Успехов!  Rob.

Посмотрю, спасибо!

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


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

проверьте, соблюдаются ли времянки (front porch, sync pulse width, back porch), которые прописаны именно для вашего монитора.

148,5 МГц - это пиксельная частота стандартная для 1080p из спецификации VESA, но у каждого моника могут быть иные времянки и пиксельная частота. эту инфу можно узнать через EDID или, если есть инфа, в документации на монитор

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


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

6 hours ago, quato_a said:

проверьте, соблюдаются ли времянки (front porch, sync pulse width, back porch), которые прописаны именно для вашего монитора.

148,5 МГц - это пиксельная частота стандартная для 1080p из спецификации VESA, но у каждого моника могут быть иные времянки и пиксельная частота. эту инфу можно узнать через EDID или, если есть инфа, в документации на монитор

я первым делом это проверила. из параметров такого "низкого" уровня как front  и back porch, в документации на моник прописаны только sync polarity (это я прописала в соответствии с разрешением), pixel clock ну и horizontal/vertical freq. Первый параметр (sync polarity) прописывается в регистрах ADV по IIC, остальные выбираются в соответствии с режимом в коде верилог в описании AN-1270. Пока глухо, монитор не откликается.

Untitled.png

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


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

41 minutes ago, Jul'etta said:

я первым делом это проверила. из параметров такого "низкого" уровня как front  и back porch, в документации на моник прописаны только sync polarity (это я прописала в соответствии с разрешением), pixel clock ну и horizontal/vertical freq. Первый параметр (sync polarity) прописывается в регистрах ADV по IIC, остальные выбираются в соответствии с режимом в коде верилог в описании AN-1270. Пока глухо, монитор не откликается.

чет меня в сомнение пускает - что это за таблица "Preset Display Modes"?

вроде же этому монику нужно слать столько 1920x1200, остальное он не воспримет, если у него нет внутри image scaler. а image scaler внедряют далеко не во все моники

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


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

37 minutes ago, quato_a said:

чет меня в сомнение пускает - что это за таблица "Preset Display Modes"?

вроде же этому монику нужно слать столько 1920x1200, остальное он не воспримет, если у него нет внутри image scaler. а image scaler внедряют далеко не во все моники

Таблица из документации к монитору :) Монитор, правда, старенький, но рабочий, проверяла, подключив к компу. 1920х1200 - это оптимальный для него режим, но не единственный, который он поддерживает, по идее. Документ прикрепила.

dell-2408wfp_user's guide_en-us.pdf

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


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

Вам надо сначала запрограммировать ADV7511 в требуемый режим работы (при переподключении кабеля HDMI необходимо ADV7511 заново пограммировать):

//iic_adv7511( reg, data )

iic_adv7511( 0x41, 0x10 );//power up, disable sync_adjustment (0x12 - enable sync_adjustment)

iic_adv7511( 0x15, 0x00 );//24 bit RGB

iic_adv7511( 0x16, 0x34 );//RGB 8 bit style 2

//iic_adv7511( 0x17, 0x60 );//sync polariry low

iic_adv7511( 0x17, 0x00 );//sync polariry high

и далее выводить изображение точно также как на интерфейс VGA:

https://www.fpga4fun.com/HDMI.html

http://we.easyelectronics.ru/blog/plis/2713.html

 

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


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

2 hours ago, esokol said:

Вам надо сначала запрограммировать ADV7511 в требуемый режим работы (при переподключении кабеля HDMI необходимо ADV7511 заново пограммировать):

//iic_adv7511( reg, data )

iic_adv7511( 0x41, 0x10 );//power up, disable sync_adjustment (0x12 - enable sync_adjustment)

iic_adv7511( 0x15, 0x00 );//24 bit RGB

iic_adv7511( 0x16, 0x34 );//RGB 8 bit style 2

//iic_adv7511( 0x17, 0x60 );//sync polariry low

iic_adv7511( 0x17, 0x00 );//sync polariry high

и далее выводить изображение точно также как на интерфейс VGA:

https://www.fpga4fun.com/HDMI.html

http://we.easyelectronics.ru/blog/plis/2713.html

 

Вот за ссылки отдельная благодарность! особенно за вторую - все шаги последовательно разобраны. А все настройки АDV у меня прописаны для регистров шины IIC в SDK, т.е. уже на софтверном уровне. Там и для ADV и для мультиплексора PCA9548.

 

А может, Вы знаете, зачем инвертируют частоту пикселей?  Что в описании к ADV (документ AN1270), что во второй Вашей ссылке:

assign pixel_clk_N = ~pixel_clk; // инвертированный PixelClock
Изменено пользователем Jul'etta

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


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

В этих проектах формируются сигналы цвета и синхронизации по фронту "pixel_clk", а ADVшка защелкивает данные по фронту "pixel_clk_n" (описано в Hardware UG ADV7511 стр. 13-14, setup/hold по 2нс).

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


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

On 9/3/2021 at 8:24 PM, esokol said:

В этих проектах формируются сигналы цвета и синхронизации по фронту "pixel_clk", а ADVшка защелкивает данные по фронту "pixel_clk_n" (описано в Hardware UG ADV7511 стр. 13-14, setup/hold по 2нс).

Спасибо!

 

 

Эх, бьюсь третью неделю. Пока никак. А казалось, что все сложилось. 

Изменено пользователем Jul'etta

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


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

Наткнулась на годные уроки  xilinx video series. 

https://forums.xilinx.com/t5/Video-and-Audio/Xilinx-Video-Series/td-p/849583

В 16 уроке идет речь о блоке VTC (Video Timing Controller). https://forums.xilinx.com/t5/Video-and-Audio/Video-Beginner-Series-16-Understanding-Video-Timing-with-the-VTC/td-p/899769

Подскажите, возможно ли подключить его в мой проект? Там уже автоматом прописаны все нужные тайминги для режимов.

 

 

Что значит, если код на верилоге подсвечивается голубым? Картинку прикрепила

1.jpg

Изменено пользователем Jul'etta

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


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

Для получения "видеотаймингов" можно воспользоваться калькулятором https://www.epanorama.net/faq/vga2rgb/calc.html.

А вывод статического изображения можно сделать примерно так

 

 

send2adv7511.v

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


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

On 9/6/2021 at 10:52 PM, esokol said:

Для получения "видеотаймингов" можно воспользоваться калькулятором https://www.epanorama.net/faq/vga2rgb/calc.html.

А вывод статического изображения можно сделать примерно так

 

 

send2adv7511.v 1.49 kB · 2 downloads

глянула, спасибо. Ваш код гораздо короче, чем код от AD :)

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


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

Ознакомьтесь с этой статьей. Мне в своё время она очень помогла написать RX часть DVI.

https://marsohod.org/projects/proekty-dlya-platy-marsokhod3/307-max10-hdmi

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...