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

XILINX Vivado 18.3 IDELAY3 for ADS42LB49/69 in QDR. Как правильно задать ограничения для Frame

Добрый день. Нужна помощь. Работаю с АЦП (ADS42LB69) в QDR режиме. XILINX Vivado 18.3, использую сигналы FRAME для декодирования отчётов. Установил и настроил все необходимые IDELEY3 и ISERDES. Приём данных осуществляется верно, вся структура вроде работает. На плате 4 таких АЦП, в итоге имею 8 независимых каналов. Некоторые каналы работают всегда, некоторые работают, но очень не стабильно. От компиляции к компиляции разные результаты. Иногда проскакивают ошибки потери некоторых бит данных. Создал регистры для управления задержками на линиях данных и Фреймов (входные параметры "CNTVALUEIN" для мегафункции "IDELAY3"). Подставляя туда каждый раз разные значения и пересбрасывая систему удаётся подобрать те, с которыми прошивка будет работать корректно на всех каналах, но в следующей прошивке данные значения уже не актуальны и приходится подбирать снова.  Смотрел примеры и по ним входные сигналы Frame были заданы как клоки на определённой частоте (например так: create_clock -period 4.464 -name FRAME0 -waveform {0.000 2.232} [get_pins U_79/O] частота равная половине частоты дискретизации АЦП) Я так понимаю, это не совсем правильный подход. Возможно мне нужно жёстко объявить input/output delay для моих пинов? Работал раньше только в Quartus, он это дело делает и подбирает автоматически, Вивадо этого вроде не умеет и приходится делать ручками. Сталкивался кто нибудь с похожей проблемой?

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


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

По хорошему - фазовый детектор на каждую линию и автоподстройка задержек.

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


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

On 12/16/2020 at 11:05 AM, DS said:

По хорошему - фазовый детектор на каждую линию и автоподстройка задержек.

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

 

On 12/16/2020 at 11:00 AM, Kronac said:

Работаю с АЦП (ADS42LB69) в QDR режиме

У вас плата случайно не от Инсиса?

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


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

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

On 12/16/2020 at 9:00 AM, Kronac said:

 Возможно мне нужно жёстко объявить input/output delay для моих пинов? Работал раньше только в Quartus, он это дело делает и подбирает автоматически, Вивадо этого вроде не умеет и приходится делать ручками. Сталкивался кто нибудь с похожей проблемой?

Констрейны input|output delay не подбирают задержку, а лишь ограничивают процесс P&R в неких временных рамках.  К тому же  в вашем случае они смысла особого не имеют так как путь данных  от пина через IDELAY к ISERDES фиксирован, а самим значением задержки в IDELAY вы управляете в ручном режиме.  

Я бы  для начала  понял из за чего у вас "гуляют" задержки на разных  прошивках. Ведь  физ. положение входных цепей на кристалле не меняется значит меняется скорее всего задержки цепей клока или фаза опорной PLL.  

Хорошо бы для всех входных бит найти границы битового окна на разных прошивках (на тестовом паттерне ADC меняя задержки IDELAY) и сравнит как их абсолютную величину на предмет чистоты и качества сигнала на входе,  так и различия на разных прошивках с  STA временами для цепей клока и данных.  А иначе тяжело понимать  куда  копать  дальше. 

 

Удачи! Rob.

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


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

Нужно отработать общую структурную схему приема данных от 8 каналов АЦП   с учетом частоты дискретизации (и frame clk),   опираясь

допустим на xapp585, xapp1315. Важная деталь- выравнены ли длины сигналов на печатной плате для каждого канала.

И как указали выше -автоматическая подстройка  задержек для одного канала.  Такой модуль используется для всех остальных каналов.

Это все необходимо разработать, отладить. У xapp'ов есть исходники с констрейнтами.

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


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

On 12/16/2020 at 11:05 AM, DS said:

По хорошему - фазовый детектор на каждую линию и автоподстройка задержек.

Вопроса в выборке правильных данных нет. В общем поясню подробнее. По этому мануалу "UG571 (v1.12) August 28, 2019" построил цепочку приёма данных. В данный момент имеется 8 каналов АЦП с одного мезонина. На каждом клоке от канала стоит плл-ка просто пропускающая приёмную частоту (лок плл-ки использую чтобы держать систему в сбросе, если нет частоты) после каждой плл стоит буфер BUFG для приёма даннных на частоте АЦП и BUFGCE_DIV для деления частоты на 2, на каждом канале стоит последовательность из IDELAYE и ISERDES взятая из документа, дальше собственно битслип и расшифровка данных. В общем система рабочая. На верхнем уровне написали програму под ОС чтобы смотреть сигналы. Сделали механизм тестирования каналов. В самом АЦП на канале устанавливаем режим работы патерна со счётчиком, принимаем эти данные, выкладываем в память и сравниваем ожидание с действительностью. Суть в том, что иногда данные со счётчика принимаются не верно (некоторые биты в отчётах теряются, но в следующем всё правильно). Тут и вступает необходимость подбирать задержки. Подобрали необходимые значения задержек, прописали их в IDELAYE для каждого канала, подали сброс и всё хорошо. На этой прошивке всё работает от запуска к запуску на всех каналах. Стоит переделать прошивку и всё едет к чертям. из 8 каналов дай бог если 2-3 работают. Но старые значения уже не поставить, нужно подбирать новые... Вот от этой неопределённости хотелось бы и уйти.

On 12/18/2020 at 11:42 AM, 10ff said:

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

 

У вас плата случайно не от Инсиса?

Мезонин от Инсиса.. 

On 12/18/2020 at 12:28 PM, RobFPGA said:

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

Констрейны input|output delay не подбирают задержку, а лишь ограничивают процесс P&R в неких временных рамках.  К тому же  в вашем случае они смысла особого не имеют так как путь данных  от пина через IDELAY к ISERDES фиксирован, а самим значением задержки в IDELAY вы управляете в ручном режиме.  

Я бы  для начала  понял из за чего у вас "гуляют" задержки на разных  прошивках. Ведь  физ. положение входных цепей на кристалле не меняется значит меняется скорее всего задержки цепей клока или фаза опорной PLL.  

Хорошо бы для всех входных бит найти границы битового окна на разных прошивках (на тестовом паттерне ADC меняя задержки IDELAY) и сравнит как их абсолютную величину на предмет чистоты и качества сигнала на входе,  так и различия на разных прошивках с  STA временами для цепей клока и данных.  А иначе тяжело понимать  куда  копать  дальше. 

 

Удачи! Rob.

Спасибо, про  input|output delay не знал. А по поводу границ битового окна, так и делаю. Выше описал. Сделали это в программе на ОС (для простоты и скорости отладки) Забиваем в АЦП тестовый патерн счётчика и гоняем с разными задержками, постоянно меняя их и сбрасывая. На выходе получаем результат к примеру такой: для канала 1 работает при задержках от 1 до 43, на канале 2 работает на задержках от 4 до 67 и тд.. Выбираем что то среднее и задаём, всё работает. Но в итоге после перекомпиляций, эти окна значительно двигаются и стают совсем в другом месте...

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


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

Прочитал я xapp585, xapp1315. Примерно всё понятно. У себя ставил всё примерно также, за исключением блока "Calibration SM and Gearbox"... Его я не реализовывал, по крайней мере в ПЛИС. Сделал его аналог но через программу... Управляет задержками программа на ОС.  Остался ещё вопрос по блоку IDELAYCTRL. Я его использую, но не совсем понимаю его назначения. Как он взаимодействует физически с блоками IDELAYE3?  В моей системе я жду пока его сигнал RDY не установится в "1" после этого снимаю сброс с блоков IDELAYE3 и ISERDESE3. Подскажите более простыми словами, как он взаимодействует? Ещё в мануале читал сложную структуру, которая выбирает сколько вообще таких блоков (IDELAYCTRL)  вообще нужно в системе, в зависимости от количества использования пинов данных и банков ПЛИС.. Сколько мне их ставить для 8 каналов с 4-я дифференциальными линиями данных на каждом?

  image.thumb.png.21aaf300be8de1c2c53c194706a77bc0.png

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


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

Блок IDELAYCTRL просто один раз вводится в проект и работаем как сказано.

Он служит для автоматической калибровки величин задержек  IDELAYE3. Конечно, надо еще стремиться подключить все каналы

АЦП к одному банку. В целом, тулз сам автоматически вставляет необхоимое число блоков IDELAYCTRL

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

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


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

Ещё важный момент. В xapp585, xapp1315 указано описание работы для режимов DDR и режима работы "TIME"  Мне бы хотелось работать в более простом режиме  "COUNT" где исключены все эти сложности. Плюс у меня QDR. Я прогоняю FRAME и DATA_p (n) через блоки задержек вместо клока. Суть понятна но принцип немного другой...

18 hours ago, Алга said:

Блок IDELAYCTRL просто один раз вводится в проект и работаем как сказано.

Он служит для автоматической калибровки величин задержек  IDELAYE3. Конечно, надо еще стремиться подключить все каналы

АЦП к одному банку. В целом, тулз сам автоматически вставляет необхоимое число блоков IDELAYCTRL

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

Фух) Спасибо, аж камень с души. 

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


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

Неясно это частный (кастомный) проект или проект из готовых китов.

За основу брать проекты из xapp'ов и в процессе отладки смотреть, что получается и чтото возможно необходимо будет изменить, доработать,

те адаптировать проект под конкретные условия.

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


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

1 hour ago, Алга said:

Неясно это частный (кастомный) проект или проект из готовых китов.

За основу брать проекты из xapp'ов и в процессе отладки смотреть, что получается и чтото возможно необходимо будет изменить, доработать,

те адаптировать проект под конкретные условия.

Нет это не киты. Просто не хочется переделывать сейчас на этой стадии всю структуру.. Проект рабочий уже. Просто существует некоторое неудобство при подборе задержек на новой прошивке. Хотелось бы не сильно меняя структуру пофиксить эту проблему. С этой надеждой и написал на форум, может будет у кого совет как не городя этот сложный автомат автокалибровки побороть проблему на прикладном уровне.

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


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

Без автомата автокалибровки скорее всего не обойтись. И еслм это продукция будет,

то раньше сделал и никаких проблем.

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

При изменениях проекта тулз меняет также расположение компонентов, что приводит к изменению

задержек внутри кристалла. И тогда необходимо поработать констрейнами.

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


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

4 hours ago, Алга said:

Без автомата автокалибровки скорее всего не обойтись. И еслм это продукция будет,

то раньше сделал и никаких проблем.

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

При изменениях проекта тулз меняет также расположение компонентов, что приводит к изменению

задержек внутри кристалла. И тогда необходимо поработать констрейнами.

Раньше я о таких проблемах даже и не задумывался, работая с Intel в Quartus =D. Всё просто и  понятно. А тут слишком много низкоуровневых особенностей. В итоге данная проблема выявилась на самом последнем этапе..

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

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


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

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

При этом прием данных должен надежно работать. 

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


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

16 hours ago, Алга said:

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

При этом прием данных должен надежно работать. 

Хорошо, спасибо, буду думать..

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


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

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

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

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

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

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

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

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

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

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