реклама на сайте
подробности

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> Zynq подключение камеры, Вопросы новичка
Flip-fl0p
сообщение Nov 17 2017, 13:49
Сообщение #46


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(ilyaprok @ Nov 17 2017, 15:56) *
Но проблема в том, что сами данные с камеры еще до поступления в v_vid_in_axi4s_0 какие то неправильные. Почему то теряются такты. То есть вместо 752 - 751, 749 тактов. Причем это происходит когда подключена линия данных. когда ее нет - то сигнал LINE_VALID ровно 752 такта.

Скорее всего как раз дело в неправильном приёме данных.
Обратите внимание на страницу 35 даташита на камеру. Там Th и Ts всего по 14 нс. Велика вероятность того, что либо клок где-то в ПЛИС задерживается, либо данные. Нужны правильные входные констрейны.
Go to the top of the page
 
+Quote Post
toshas
сообщение Nov 17 2017, 18:22
Сообщение #47


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Vivado ILA может работать некорректно если частота jtag сравнима с частотой на которой ведется захват.
https://forums.xilinx.com/t5/Simulation-and...p/760288#M18214
Кроме того, если сама по себе частота jtag высокая тоже может сбоить
https://forums.xilinx.com/t5/Welcome-Join/i...-p/425710#M8730
так что поставьте "с запасом" 3 или 6 МГц.

Когда вы отключили линии данных, проект заработал ? На экране по идее должен был быть просто черный квадрат.
Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 17 2017, 18:50
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(Flip-fl0p @ Nov 17 2017, 18:49) *
Скорее всего как раз дело в неправильном приёме данных.
Обратите внимание на страницу 35 даташита на камеру. Там Th и Ts всего по 14 нс. Велика вероятность того, что либо клок где-то в ПЛИС задерживается, либо данные. Нужны правильные входные констрейны.

Спасибо за подсказку, да я посмотрел. Но я так полагаю 14 нс - это для максимальной частоты тактирования 27 МГц, при частоте 13,3 МГц - минимальные Th и Ts около 30 нс. По идее входящие с камеры сигналы идут только в одно ядро на прием, то есть я хочу сказать, что этот клок привязан к узкой области внутри кристалла и не должен затрагивать много цепей и терять синхронизацию. Но я лишь могу на это надеятся.
Может входящий клок с камеры перемапить на другой пин, потому что Вивадо ругается без этой директивы set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets vid_io_in_clk_IBUF], а из-за нее возможно теряются такты? Может такое быть?


Цитата(toshas @ Nov 17 2017, 23:22) *
Vivado ILA может работать некорректно если частота jtag сравнима с частотой на которой ведется захват.
https://forums.xilinx.com/t5/Simulation-and...p/760288#M18214
Кроме того, если сама по себе частота jtag высокая тоже может сбоить
https://forums.xilinx.com/t5/Welcome-Join/i...-p/425710#M8730
так что поставьте "с запасом" 3 или 6 МГц.

Вот интересное замечание, спасибо. действительно частота JTAG 15 МГц. Частоту поменял - ILA перестал выдавать ошибки! Спасибо большое!!!
Цитата(toshas @ Nov 17 2017, 23:22) *
Когда вы отключили линии данных, проект заработал ? На экране по идее должен был быть просто черный квадрат.

Хм, надо проверить. Спасибо. Отпишусь попозже

Сообщение отредактировал ilyaprok - Nov 17 2017, 19:11
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Nov 17 2017, 19:23
Сообщение #49


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(ilyaprok @ Nov 17 2017, 21:50) *

На сколько я смог разобраться, в Xilinx можно с IO пинов завести сигнал в клоковый буфер. Посмотрите, может будет толк.
Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 17 2017, 19:40
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(toshas @ Nov 17 2017, 23:22) *
Когда вы отключили линии данных, проект заработал ? На экране по идее должен был быть просто черный квадрат.


LINE_VALID четко 752 такта. На линии данных FF. Подсоединяю 4 линии данных , такты теряются.
обратно убираю все линии данных. Но в программе после перегона 1-2 строк у DMA внутренняя ошибка. То есть DMA даже не может всю картинку в память перслать.


Цитата(Flip-fl0p @ Nov 18 2017, 00:23) *
На сколько я смог разобраться, в Xilinx можно с IO пинов завести сигнал в клоковый буфер. Посмотрите, может будет толк.

А как это сделать? я вообще нуб.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Nov 17 2017, 19:53
Сообщение #51


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(ilyaprok @ Nov 17 2017, 22:40) *
А как это сделать? я вообще нуб.

С xilinx не работаю. Не знаю. Попробуйте посмотреть: https://www.xilinx.com/support/documentatio...es_Clocking.pdf
Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 18 2017, 10:22
Сообщение #52


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(Flip-fl0p @ Nov 18 2017, 00:53) *
С xilinx не работаю. Не знаю. Попробуйте посмотреть: https://www.xilinx.com/support/documentatio...es_Clocking.pdf

Спасибо за ссылку, посмотрю.

ILA тактируется от FCLK1 - 13.33 МГЦ. JTAG - 6 МГЦ. Теперь лог анализатор работает без ошибок.
Сигналы vid_io_in_clk и clk_cam смаприровал на clock capable pins, теперь вивадо не ругется и директива CLOCK_DEDICATED_ROUTE FALSE не нужна.
Притянул все линии PULLDOWN.
После этих изменений ситуация чуть улучшилась (в основном из-за PULLDOWN).
Теперь если отключить всю линию данных - то DMA без ошибок передает FF. То есть теперь транзакции и длина пакетов правильные, В лог анализаторе - действительно ровно 752 такта. То есть черный экран должен быть, если бы я визуализировал картинку.

Как только подключаю от 4 и более линий данных - DMA останавливается с внутренней ошибкой на 1 - 1000 транзакции.

Решил проверить на что влияет подключение линии данных. На PIXCLK или SCLK.
Так как ILA теперь тактируется от FCLK1, я вообще отключаю от ZYNQ PIXCLK (сам провод) и смотрю сколько тактов длина LINE_VALID при подключенной линии данных. Такты гуляют. То есть получается, что поключение к ZYNQ линии данных влияет на выходящий из ZYNQ клок для тактирования камеры Либо подключение линии данных к ZYNQ как то влияют на процессы внутри камеры, из-за чего она выдает неправильные сигналы
Причем если бы были завалены фронты LINE_VALID, то в лог. анализаторе я бы видел, что линии данных и LINE_VALID сигналы где то остают, где то опережают друг друга - а они синхронны.
То есть либо идет влияние на SCLK, либо через линии данных ZYNQ портит процессы синхронизации в камере, но это невероятно.

Я в тупике, может кто то найдет ошибку в моих рассуждениях? Или кто то с таким сталкивался? Может длина проводов на таких частотах мешает?

Сообщение отредактировал ilyaprok - Nov 18 2017, 10:25
Go to the top of the page
 
+Quote Post
toshas
сообщение Nov 18 2017, 11:22
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Цитата(ilyaprok @ Nov 18 2017, 13:22) *
Так как ILA теперь тактируется от FCLK1, я вообще отключаю от ZYNQ PIXCLK (сам провод)


Это неправильно, pclk для того и нужен, что имеет правильную фазу по отношению к данным,
хотите перейти на внутреннюю частоту - ставьте асинхронное фифо с записью по pclk и чтением по FCLK1.

Если проект полностью работает без линии данных вообще или при подключенных 2-3х, а при подключении 4-5 падает,
то это явно проблемы с помехозащищенностью, пока не сдалаете плату переходник ничего не получится.
Модуль я так понимаю с ebay/aliexpress, так что только автору модуля известно, что там с терминированием на линиях данных, фильтрацией питания и прочим.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Nov 18 2017, 11:24
Сообщение #54


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



А выводится картинка куда должна ? Через HDMI на монитор ?
Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 18 2017, 16:20
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(toshas @ Nov 18 2017, 16:22) *
Это неправильно, pclk для того и нужен, что имеет правильную фазу по отношению к данным,
хотите перейти на внутреннюю частоту - ставьте асинхронное фифо с записью по pclk и чтением по FCLK1.

Да это так, но само ядро на которое идут данные с камеры тактируется PIXCLK, а ILA тактируется от FCLK1 и не привязано к PIXCLK. Я таким образом проверял потерю тактов. Сейчас верну тактирование ILA на PIXCLK.
Цитата(toshas @ Nov 18 2017, 16:22) *
Если проект полностью работает без линии данных вообще или при подключенных 2-3х, а при подключении 4-5 падает,
то это явно проблемы с помехозащищенностью, пока не сдалаете плату переходник ничего не получится.
Модуль я так понимаю с ebay/aliexpress, так что только автору модуля известно, что там с терминированием на линиях данных, фильтрацией питания и прочим.

Плата с алиэксперсса это вы правильно подметили. Схему китайцы не дают. Если мне уже третий опытный человек говорит сделать нормальный монтаж - это я точно сделаю. Придет макетка - чуть лучше сделаю монтаж. Но как терминаторы поставить? Одной точкой на линию данных, другой - на землю? То есть 8 линий данных + 2 такта + 2 синка. на каждую линию по резистору? По сколько Ом? На камере и на плате ZYNQ? Я просто ни разу не видел терминаторы на параллельной шине, на дифференциальных видел.
Посмотрел еще несколько схем с этой камеры - нигде терминаторы не ставят. Фильтры по питанию есть, но это стандартный набор.
Извините за такие вопросы, если есть куда послать поучится - ткните пальцем.
А так бошльшущее спасибо форумачанам за помощь и советы. Особенно svedach, toshas, Flip-fl0p!

Цитата(Flip-fl0p @ Nov 18 2017, 16:24) *
А выводится картинка куда должна ? Через HDMI на монитор ?

Пока никуда. Надо еще как то начало кадра словить. Сигнал TUSER - слишком малой длительности похоже - и АРМ его не успевает заметить.
Потом когда нормальный поток видео будет транслироваться в DRAM - его уже по UDP буду передавать. А на компе визуализировать. Но это лишь для отладки 30 фпс хватит, чтобы просто удостоверится что картинка годная.

Сообщение отредактировал ilyaprok - Nov 18 2017, 16:41
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 18 2017, 18:41
Сообщение #56


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Извините, не было возможности писать...
Вы когда пины назначаете - можете выбрать тип подтяжки входного пина - к земле, к питанию, или без. Попробуйте подтянуть к земеле.


Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 18 2017, 22:02
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(svedach @ Nov 18 2017, 23:41) *
Извините, не было возможности писать...
Вы когда пины назначаете - можете выбрать тип подтяжки входного пина - к земле, к питанию, или без. Попробуйте подтянуть к земеле.

Спасибо, да вы советовали до этого. Я им Воспользовался - стало получше! Это вы хорошо подметили! Спасибо еще раз sm.gif
На текущий момент - ситуация такова. На плате камеры стоял кварцевый генератор, он тактировал камеру вместо SCLK. Но после покупки я генератор сразу выпаял.
После того как я выяснил, что наводки идут имеенно на SCLK. Я попробовал не тактировать камеру из ZYNQ. Припаял обратно кварцевый генератор. Теперь данные идут на частоте 26,6 МГЦ - 60 фпс. Без ошибок, DMA пересылает данные в память. В дальнейшем - я разведу плату получше и возможно верну линию SCLK, обратно выпаяю кварц, и буду тактировать ZYNQ'ом.
Сейчас пока данные идут без ошибок, хотелось бы получить картинку, НО прерывание по TUSER не вызывается. Я посмотрел в лог. анализторе - длительность в высоком состоянии сигнала TUSER всего 3-4 такта. Может стоит продлить сигнал - но ведь до вызова прерывания в DMA уже поступят первые несколько пикселей, то есть первые несколько пикселей в первой строке будут потеряны и вся синхронизацяи кадра тоже. Как стоит поступитть? как поймать начало кадра? Может все-таки VDMA?

Сообщение отредактировал ilyaprok - Nov 18 2017, 22:02
Go to the top of the page
 
+Quote Post
svedach
сообщение Nov 19 2017, 07:13
Сообщение #58


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Сигнал TUSER должен быть 1 такт! Если это не так - надо искать в логике обработки входных сигналов... Какое ядро для входа Вы используете сейчас? Посмотрите в даташите на него как оно формирует этот сигнал.
Go to the top of the page
 
+Quote Post
toshas
сообщение Nov 19 2017, 07:31
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 372
Регистрация: 14-02-06
Пользователь №: 14 339



Если все синхронно, то 1 такта должно хватать.
Выложите полную картину вашего Block Design (File - Export - Export Block Design - pdf)
Вы не теряете строки, по прерыванию начнется обработка кадра с самого начала,
просто тем самым вы вносите некоторую задержку, хотите ее избежать стройте проект вообще без буферизации в DDR.
Go to the top of the page
 
+Quote Post
ilyaprok
сообщение Nov 19 2017, 11:58
Сообщение #60


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 29-10-17
Пользователь №: 99 964



Цитата(svedach @ Nov 19 2017, 12:13) *
Сигнал TUSER должен быть 1 такт! Если это не так - надо искать в логике обработки входных сигналов... Какое ядро для входа Вы используете сейчас? Посмотрите в даташите на него как оно формирует этот сигнал.

В идеале он 1 такт, но так как скорость поступления данных меньше, чем DMA их забирает. То длительность сигнала TUSER возрастает в 100,0МГЦ/26,6МГц - 3,75 раза. то есть 4 такта. Я сейчас использую Vide In To AXI4 Stream.
Вот его датаграмма (используется ILA тактируемое от FCLK0 - 100 Мгц):

На ней видно что сигнал прерывания от DMA около 30-60 тактов. Поэтому я сделал вывод, что может стоит продлить.
Есть проект с ядром AV2AXISV, но сигнал TUSER поймать у меня не получилось. DMA итакже работает без ошибок. Это ядро немного по-друггому генерирует сигналы AXI, я так понимаю логике работы шины это не противоречит и допускаются такие различия.
Вот датаграмма с ядром AV2AXISV:

Я полагаю надо поправить констанаты в файле AVInput.

Цитата(toshas @ Nov 19 2017, 12:31) *
Если все синхронно, то 1 такта должно хватать.
Выложите полную картину вашего Block Design (File - Export - Export Block Design - pdf)
Вы не теряете строки, по прерыванию начнется обработка кадра с самого начала,
просто тем самым вы вносите некоторую задержку, хотите ее избежать стройте проект вообще без буферизации в DDR.

Это проект с ядром Video In To AXI4 Stream.
Формировал сигналы hblank vblank исходя из даташита на камеру MT9V034 и документа "AXI4-Stream Video IP and System Design Guide" UG934 То есть hblank = ~LINE_VALID, vblank = ~FRAME_VALID, active_video = LINE_VALID&FRAME_VALID.


Сообщение отредактировал ilyaprok - Nov 19 2017, 12:03
Прикрепленные файлы
Прикрепленный файл  design_1.pdf ( 138.58 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 22:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016