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

Синхронизация начала выборки АЦП

Здравствуйте!

Разработана плата сбора и обработки данных на Spartan 6 XC6SLX100-3FGG676I.

На борту стоит АЦП ADC08D1000 и две DDR3.

Оцифровку делаю с частотй 960 МГц. АЦП мультиплексирует данные и они идут на FPGA с частотой 480 МГц: итого получаем 2x8x2=32 разряда.

Далее через ISERDES2 частота делится на 4. Т.е. имеется шина данных 32x4=128 разрядов с частотой 120 МГц.

Данные пишутся в две DDR3 (Четные отсчеты в одну, нечетные - в другую). Со сбором данных сейчас вроде все ОК)))

Вопрос состоит в следующем: можно ли какими-то ухищрениями сделать внешнюю синхронизацию начала оцифровки с точностью +-Tд, где Tд - интервал дискретизации?

Или довольствоваться величиной +-1/(120 МГц)?

Заранее спасибо за ответы.

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

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


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

а что вам мешает завести внешнюю синхронизацию также через ISERDES2 ?

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


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

а что вам мешает завести внешнюю синхронизацию также через ISERDES2 ?

Писать ее состояние так же в память, а потом на компе анализировать?

 

Мне бы хотелось сделать так, чтобы в память записывались только те отсчеты, которые появились на выходе АЦП после появления фронта синхронизации. Причем флуктуации были +-Tд

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

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


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

а если сделать специальный "регистр смещения синхронизации", передавать всё на ПК, и уже там отсеять первые 0...7 отсчетов?

 

есть конечно ещё вариант с выстраиванием gearbox, который будет крутить части вашего 128-битного слова в зависимости от регистра синхронизации до записи в память.

 

ps. если у вас есть тактовый для дискретизации 960 МГц в дифференциальном виде - то ISERDES2 можно применить с коэффициентом 1:8.

задержку естественно придётся калибровать

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


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

а если сделать специальный "регистр смещения синхронизации", передавать всё на ПК, и уже там отсеять первые 0...7 отсчетов?

Да, это вариант. Спасибо за идею.

Надо только подумать как это реализовать.

Надо наверное этот регистр защелкивать при начале записи, и когда массив нужного размера запишется в DDR, последним словом записать этот регистр.

Т.е. в принципе с внешнего вывода вариант решения похоже найден))) И я думаю, что он рабочий.

 

Но есть еще один момент.

У меня задача то в общем следующая, я формирую некоторый сигнал, выдаю на ЦАП, далее в I/Q модулятор и жду ответа от другого устройства. Нужно померить задержку ответа.

Для этого схема формирователя выдает строб и я начинаю оцифровку сигналов с квадратурного модулятор.

Потом передаю на комп и там уже всю обработку делаю. Так вот этот строб формируется внутри ПЛИС, к нему бы как то хотелось тоже привзяться с шагом +-Tд.

 

ps. если у вас есть тактовый для дискретизации 960 МГц в дифференциальном виде - то ISERDES2 можно применить с коэффициентом 1:8.

задержку естественно придётся калибровать

Я думал об этом. Но пока не решаюсь. В принципе если я получу привязку +-1/ (480 МГц) меня это вполне устроит.

 

задержку естественно придётся калибровать

А как Вы посоветуете калибровать задержку? Использовать механизм калибровки, как в XAPP1064. Т.е. делать конечный автомат, который мониторит сигналы ISERDES2 и формировать сигналы управления IODELAY или просто тупо подобрать нужные значения и константами вбить в UCF файл.

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

В общем я недопонимаю механизм калибровки IODELAY. Если можете поясните, пожалуйста)))

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

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


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

я предпочитаю не использовать IDELAY без крайней на то необходимости.

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

дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли.

 

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

почему и желателен loopback на старте.

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


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

Спасибо Вам за ответы.)))

 

почему и желателен loopback на старте

Наверно, можно как то попробовать это сделать.

А без калибровки в рантайме не обойтись?

 

дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли.

Тактовая частота на передачу 120 МГц.

Частота оцифровки 960 МГц, так как используется мультиплексирование шины данных АЦП, то на ПЛИС данные с АЦП идут с частотой 480 МГц.

 

Думаю как правильно сделать привязку принимаемых данных к передаваемым, чтобы получить минимальное СКО оценки задержки от среднего значения.

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


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

А без калибровки в рантайме не обойтись?
Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт.

 

 

Повторю вопрос:

дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли.

 

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


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

дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли.

Не зависят. Частоту дискретизации формирует внешний синтезатор, сигнал с синтезатора идет на АЦП, там делится на два, поступает в плис и делится на 4 в BUFIO.

На передачу частота формируется из сигнала внешнего кварцевого генератора, в PLL ПЛИСины разгоняется до 120 МГц.

Т.е. хотя обе частоты и 120 МГц, их фазовые соотношения не определены, так же может и точность установки частоты отличаться.

Сделал так (может по неопытности), потому что требуется менять частоту оцифровки, а 120 МГц на передачу должны оставаться постоянными.

 

Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт.

 

Может я чего то недопонимаю просто. Я как рассуждаю: есть два канала 8-и разрядного АЦП, естесственно младшие разряды будут изменяться чаще, чем старшие. Т.е. чтобы провести калибровку надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП. К сожалению, на плате нет коммутатора с ЦАПа на АЦП, т.е. сигнал для калибровки брать либо из радиолинии (что не очень хорошо, потому что нельзя пропускать принимаемые сигналы) либо перед началом работы формировать достаточно мощный сигнал в передатчик, устанавливать максимальное усиление приемника и по просочке проводить калибровку.

Я сейчас без калибровки сделал, но бывают сбои (особенно при смене частоты дискретизации), чувствую все-равно придется как то с калибровкой разбираться.

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

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


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

А без калибровки в рантайме не обойтись?

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

тогда калибровку можно прошить куда-нибудь в EEPROM как "заводскую" и считывать при старте.

 

пересобирать проект с калибровкой под каждую плату - это жесть.

да, я такое тоже видел, но при выпуске 23 изделий держать под рукой 23 прошивки, и в случае исправлений в коде пересобирать их все 23 - это...... я даже не знаю.... закат солнца вручную покажется детский забавой.

 

 

надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП

к примеру, формируете пилу.

принимаете её после цапа в плис.

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

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

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


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

Спасибо большое за помощь))) Буду пробовать. Возможность записи калибровки во флешку на плате имеется.

 

Так то мне всего 4 комплекта надо выпустить...

В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП.

Но и эти 4 комплекта хотелось бы сделать так, чтобы в случае ремонта или каких-то корректировок у меня или других людей, кто это будет разгребать проблем было как можно меньше)))

 

 

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

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


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

да, и ещё в догонку - посмотрите, в АЦП может быть возможность поменять MSB/LSB - тогда это позволит правильно и точно сделать калибровку для младших разрядов

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


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

В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП.
И ещё заложите раздачу тактовой на ЦАП и АЦП от одного источника, чтобы когерентно было, тоже жизнь облегчите.

 

 

да, и ещё в догонку - посмотрите, в АЦП может быть возможность поменять MSB/LSB - тогда это позволит правильно и точно сделать калибровку для младших разрядов
Ещё АЦП бывают с возможностью рандомизации битов, т.е. кодирование данных по псевдослучайному закону, чтобы разровнять спектр наводок по (от) каждой линии. Ещё бывают с возможностью генерации на выход тестового паттерна. Но это похоже не Ваш случай ))

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


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

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

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

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

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

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

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

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

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

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