Jul'etta 0 1 сентября, 2021 Опубликовано 1 сентября, 2021 (изменено) · Жалоба Приветствую. Задача: вывести на монитор тестовый шаблон по 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, но пока решение не нашла. Уповаю на наше сообщество. Если нужны еще подробности, документы с которыми работаю, все предоставлю. AN-1270.pdf Изменено 1 сентября, 2021 пользователем Jul'etta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 30 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба Приветствую! Видели эту ссылку. Такие вещи удобно изучать имея рабочий reference design. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 1 сентября, 2021 Опубликовано 1 сентября, 2021 · Жалоба 45 minutes ago, RobFPGA said: Приветствую! Видели эту ссылку. Такие вещи удобно изучать имея рабочий reference design. Успехов! Rob. Посмотрю, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 2 сентября, 2021 Опубликовано 2 сентября, 2021 · Жалоба проверьте, соблюдаются ли времянки (front porch, sync pulse width, back porch), которые прописаны именно для вашего монитора. 148,5 МГц - это пиксельная частота стандартная для 1080p из спецификации VESA, но у каждого моника могут быть иные времянки и пиксельная частота. эту инфу можно узнать через EDID или, если есть инфа, в документации на монитор Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 2 сентября, 2021 Опубликовано 2 сентября, 2021 · Жалоба 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. Пока глухо, монитор не откликается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 2 сентября, 2021 Опубликовано 2 сентября, 2021 · Жалоба 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 внедряют далеко не во все моники Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 2 сентября, 2021 Опубликовано 2 сентября, 2021 · Жалоба 37 minutes ago, quato_a said: чет меня в сомнение пускает - что это за таблица "Preset Display Modes"? вроде же этому монику нужно слать столько 1920x1200, остальное он не воспримет, если у него нет внутри image scaler. а image scaler внедряют далеко не во все моники Таблица из документации к монитору :) Монитор, правда, старенький, но рабочий, проверяла, подключив к компу. 1920х1200 - это оптимальный для него режим, но не единственный, который он поддерживает, по идее. Документ прикрепила. dell-2408wfp_user's guide_en-us.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esokol 0 3 сентября, 2021 Опубликовано 3 сентября, 2021 · Жалоба Вам надо сначала запрограммировать 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 3 сентября, 2021 Опубликовано 3 сентября, 2021 (изменено) · Жалоба 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 Изменено 3 сентября, 2021 пользователем Jul'etta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esokol 0 3 сентября, 2021 Опубликовано 3 сентября, 2021 · Жалоба В этих проектах формируются сигналы цвета и синхронизации по фронту "pixel_clk", а ADVшка защелкивает данные по фронту "pixel_clk_n" (описано в Hardware UG ADV7511 стр. 13-14, setup/hold по 2нс). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 6 сентября, 2021 Опубликовано 6 сентября, 2021 (изменено) · Жалоба On 9/3/2021 at 8:24 PM, esokol said: В этих проектах формируются сигналы цвета и синхронизации по фронту "pixel_clk", а ADVшка защелкивает данные по фронту "pixel_clk_n" (описано в Hardware UG ADV7511 стр. 13-14, setup/hold по 2нс). Спасибо! Эх, бьюсь третью неделю. Пока никак. А казалось, что все сложилось. Изменено 6 сентября, 2021 пользователем Jul'etta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 6 сентября, 2021 Опубликовано 6 сентября, 2021 (изменено) · Жалоба Наткнулась на годные уроки 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 Подскажите, возможно ли подключить его в мой проект? Там уже автоматом прописаны все нужные тайминги для режимов. Что значит, если код на верилоге подсвечивается голубым? Картинку прикрепила Изменено 6 сентября, 2021 пользователем Jul'etta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esokol 0 6 сентября, 2021 Опубликовано 6 сентября, 2021 · Жалоба Для получения "видеотаймингов" можно воспользоваться калькулятором https://www.epanorama.net/faq/vga2rgb/calc.html. А вывод статического изображения можно сделать примерно так send2adv7511.v Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jul'etta 0 8 сентября, 2021 Опубликовано 8 сентября, 2021 · Жалоба 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 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 8 сентября, 2021 Опубликовано 8 сентября, 2021 · Жалоба Ознакомьтесь с этой статьей. Мне в своё время она очень помогла написать RX часть DVI. https://marsohod.org/projects/proekty-dlya-platy-marsokhod3/307-max10-hdmi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться