Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADS5400 + FPGA.
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Цифровые схемы, высокоскоростные ЦС
InsaneLogic
Здравствуйте, вуажаемые форумчане!

У нас есть плата с ADS5400 на борту. Она соединяется с микромодулем, несущим ПЛИС
через высокоскоростные разъёмы расширения. Проблема в том, что при считывании данных
с АЦП видны сильные выбросы при пересечении нуля синусом. Причём, сбой возникает в
одном бите и только в момент пересечения нуля.
Картина вот такая:
Нажмите для просмотра прикрепленного файла
Чем это может быть вызвано?

С уважением, Михаил.
Джеймс
Хорошая картинка, но еще понадобится подробное описание в каком режиме работает ADS5400, как он сконфигурирован. Частота CLK как я понял (телепат...) 250MHz?
dm.pogrebnoy
Дифф. пары не инвертированы? Перевод в дополнительный код где производится?
InsaneLogic
Входная тактовая частота - 1024 МГц;
Вывод данных - по одной шине (Шина "А");
Частота дискретизации входного сигнала - 1024 МГц;
Тактовая частота выходных данных - 512 МГц (используется DDR);
Источник опорного напряжения - внутренний;
Формат данных - двоичный дополнительный;
Режим синхронизации данных - отключен;
Опции LVDS - нормальный режим;
Выходной ток LVDS 3,5 мА;
Опции внутренней терминации LVDS - внутренний 100 Ом резистор.
_pv
какая-то определённая комбинация младших битов умудряется опрокинуть 8ой бит.
посмотрите на гистограмме шумов около нуля всегда ли так? ну и что происходит на 8 бите шины может сопли какие?
InsaneLogic
Дифф пары не инвертированы. Перевод в дополнительный код происходит в АЦП.
На малых частотах дискретизации такого явления не наблюдается.
Джеймс
Цитата(_pv @ Apr 18 2013, 15:12) *
какая-то определённая комбинация младших битов умудряется опрокинуть 8ой бит.

Нее, просто t_setup/t_hold "на пределе". Может constrain-ы не заданы или неправильно заданы. Или нужно тонко двигать фазу CLK.
А может даже в трассировке печатной платы проблема. Все-таки 500 MHz.
dm.pogrebnoy
Что за ПЛИСина? Данные на входе ПЛИС десериализуются хотя бы в два раза?
ViKo
Разряд D9, который дает скачек на 512 единиц, не успевает установиться до того, как регистрируется в ПЛИС.
InsaneLogic
ПЛИС - Spartan-6 xc6slx150. Данные поступают в ПЛИС, там принимаются с использованием DDR (получается 1024MSPS) и десериализируются восьмикратно - на выходе десериализатора имеем 8 шин данных с частотой 128 МГц. От этой частоты тактируется и внутренняя логика ПЛИС и, собственно, ChipScope, посредством которого были сняты данные.
dm.pogrebnoy
ЕМНИП, BUFIO2 тянут только 500 МГц. Какой спидгрейд кристалла у вас?
InsaneLogic
Спидгрейд кристалла -3. Тактовая частота данных, подаваемых на кристалл, 512 МГц. DDR создаётся за счёт двух BUFIO2, на одном из которых сигнал инвертирован (всё как описано в XAPP1064).
dm.pogrebnoy
Джиттер тактового синтезатора? Хотя нет, не то. Было как-то раз - были смешные тычки в АЦП от E2V в одном и том же месте. Оказалось это фича. Вообщем сдаюсь.
rsv
А входные тайминги как прописаны? Картинка выглядит так, как будто повалились тайминги
InsaneLogic
По поводу таймингов - очень возможно такое. Но на всякий случай, выложу и картинку с разводкой линий данных.

Нажмите для просмотра прикрепленного файла

Это - верхний слой. Меня терзают смутные сомнения по поводу, собственно, геометрии дорожек в шине данных. Опыта, просто, у нас в таких высокоскоростных вещах нет.
rsv
Дорожки и правда неважно выглядят, но если бы там какая то грязь наводилась или звенело - то скорее всего мусор бы был не только в местах изменения знака. Плохо что этот прибор не имеет возможности генерировать тестовые паттерны, так что придется отлаживать его по шумам. Настройте смещение ацп так, чтоб среднее значение шума было как можно ближе к нулю. При неправильных таймингах вместо красивого шума будет куча некрасивых иголок, как на вашей картинке в момент перехода через ноль. Ну и покажите как вы настраиваете тайминги offset in на сигналы шины ацп. Хуже всего, если там вследствие некорректной разводки возник перекос по шине, хотя по картинке его вроде не наблюдается. Этот перекос придется врукопашную выравнивать при помощи idelay
dm.pogrebnoy
Надо бы рассчитать окно где данные валидны, посмотреть как ложится на него такт. Как я понимаю дорожки выровнены, но не понятно что по другую сторону разъема. У этого АЦП всетаки есть немного настроек, можно попробовать повыдавать тестовые последовательности, а также поменять формат данных на беззнаковый, может быть это будет полезным. И кстати, а ничего что АЦП максимум до 1 ГГц. На какой частоте пропадают выбросы?
faa
Цитата(dm.pogrebnoy @ Apr 18 2013, 23:11) *
Как я понимаю дорожки выровнены, но не понятно что по другую сторону разъема.

И учтен ли разбег в длине связей в чипе Спартана - от шарика до кристалла?
InsaneLogic
И ещё одинг вопрос: какова последовательность программирования регистров ADS5400? У меня складывается такое ощущение, что мы не можем его корректно запрограммировать. По поводу последовательности программирования регистров в даташите нничего не сказано. Мы программируем их в прямом порядке (1-й, 2-й и т.д.). А по другую сторону разъёма у нас немецкий микромодуль от Trenz Electronics GigaBee TE0600 со spartan-6 xc6slx150. И ещё вопрос: в каком ПО лучше получится симулировать прохождение цифрового сигнала по шинам на плате с учётом влияния физических параметров линий передачи данных на длины фронтов, амплитуды сигналов, рассчитать время их прохождения друг относительно друга?

А дорожки выравнивались. Максимальная разность в длине их составляет 10 мм относительно друг друга. Единственное, влияние кривизны их на целостность сигнала. Оно не рассчитывалось.
dm.pogrebnoy
Так и остался вопрос, почему вы решили что на 1024 МГц будет работать без сбоев. При каких значениях тактовой исчезают выбросы?
InsaneLogic
Цитата(dm.pogrebnoy @ Apr 20 2013, 00:16) *
Так и остался вопрос, почему вы решили что на 1024 МГц будет работать без сбоев. При каких значениях тактовой исчезают выбросы?

На 512 МГц работает идеально. А решил, что на 1024 МГц будет работать без сбоев на основании технической документации (конкретно, XAPP1064, UG381).
dm.pogrebnoy
Нет, вы не поняли. АЦП по документации может работать на 1ГГц максимум.
khach
Включите генератор тестового паттерна (регистр 6 биты 6,7 Data Output Mode 11 toggling test pattern) и крутите фазу клока (регистр 3 Fine Clock Phase Adjustment) определите границы устойчивого приема каждого бита. Т е. подстройкой фазы добейтесь перехода 0 в 1 и 1 в 0 на каждой отдельной линии данных и найдите среднее значение. Понадобится написать свой софт с гистограммой. Потом выберете оптимальное значение для всех линий. Или прийдется вносить задержки в дизайн ПЛИС, если фронты по разным линиям данных налазять друг на друга из-за ошибок в разводке платы.
Да, оптимальная фаза плывет с температурой кристалла- поэтому неплохо бы составить табличку оптимальный фазы в зависимости от температуры кристалла (регистр 8). И предусмотреть процедуру самокалибровки в фирмвари прибора- ХЗ, как фаза будет менятся при старении кристалла.
dm.pogrebnoy
Цитата(khach @ Apr 20 2013, 11:23) *
Включите генератор тестового паттерна (регистр 6 биты 6,7 Data Output Mode 11 toggling test pattern) и крутите фазу клока (регистр 3 Fine Clock Phase Adjustment) определите границы устойчивого приема каждого бита. Т е. подстройкой фазы добейтесь перехода 0 в 1 и 1 в 0 на каждой отдельной линии данных и найдите среднее значение. Понадобится написать свой софт с гистограммой. Потом выберете оптимальное значение для всех линий. Или прийдется вносить задержки в дизайн ПЛИС, если фронты по разным линиям данных налазять друг на друга из-за ошибок в разводке платы.
Да, оптимальная фаза плывет с температурой кристалла- поэтому неплохо бы составить табличку оптимальный фазы в зависимости от температуры кристалла (регистр 8). И предусмотреть процедуру самокалибровки в фирмвари прибора- ХЗ, как фаза будет менятся при старении кристалла.


Фаза клока в этом АЦП меняется для УВХ, а не для цифровых данных на выходе. Это нужно для включения нескольких АЦП в параллель, так что не надо ничего крутить - не поможет. А вот паттерны погонять, частоту снизить до 1000 МГц стоит.
VCO
Я бы всё-таки посмотрел в сторону верификации проекта для Spartan-6 - уж больно скорости высокие, возможны глюки при двенадцати 0.
Глюк АЦП маловероятен и его легко выловить, а вот во внутренних цепях ПЛИС и на меньших частотах часто проблемы возникают.
Если верификация не даст результатов - выведите тестовую параллельную шину на LVDS, если есть такая возможность, там всё увидите.
khach
Цитата(dm.pogrebnoy @ Apr 20 2013, 09:49) *
Фаза клока в этом АЦП меняется для УВХ, а не для цифровых данных на выходе. Это нужно для включения нескольких АЦП в параллель, так что не надо ничего крутить - не поможет. А вот паттерны погонять, частоту снизить до 1000 МГц стоит.

Сорри, недочитал даташит. Жалко, что такой полезный блок и для цифровой части не реализован. Мы в процессе отладки крутили задержку по фазе средствами клок-дистрибьютора.
InsaneLogic
Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.