|
|
  |
Синхронизация начала выборки АЦП |
|
|
|
May 19 2015, 15:54
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Здравствуйте! Разработана плата сбора и обработки данных на Spartan 6 XC6SLX100-3FGG676I. На борту стоит АЦП ADC08D1000 и две DDR3. Оцифровку делаю с частотй 960 МГц. АЦП мультиплексирует данные и они идут на FPGA с частотой 480 МГц: итого получаем 2x8x2=32 разряда. Далее через ISERDES2 частота делится на 4. Т.е. имеется шина данных 32x4=128 разрядов с частотой 120 МГц. Данные пишутся в две DDR3 (Четные отсчеты в одну, нечетные - в другую). Со сбором данных сейчас вроде все ОК))) Вопрос состоит в следующем: можно ли какими-то ухищрениями сделать внешнюю синхронизацию начала оцифровки с точностью +-Tд, где Tд - интервал дискретизации? Или довольствоваться величиной +-1/(120 МГц)? Заранее спасибо за ответы.
Сообщение отредактировал Fourier - May 19 2015, 15:56
|
|
|
|
|
May 19 2015, 16:35
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Цитата а что вам мешает завести внешнюю синхронизацию также через ISERDES2 ? Писать ее состояние так же в память, а потом на компе анализировать? Мне бы хотелось сделать так, чтобы в память записывались только те отсчеты, которые появились на выходе АЦП после появления фронта синхронизации. Причем флуктуации были +-Tд
Сообщение отредактировал Fourier - May 19 2015, 16:38
|
|
|
|
|
May 19 2015, 17:24
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Цитата а если сделать специальный "регистр смещения синхронизации", передавать всё на ПК, и уже там отсеять первые 0...7 отсчетов? Да, это вариант. Спасибо за идею. Надо только подумать как это реализовать. Надо наверное этот регистр защелкивать при начале записи, и когда массив нужного размера запишется в DDR, последним словом записать этот регистр. Т.е. в принципе с внешнего вывода вариант решения похоже найден))) И я думаю, что он рабочий. Но есть еще один момент. У меня задача то в общем следующая, я формирую некоторый сигнал, выдаю на ЦАП, далее в I/Q модулятор и жду ответа от другого устройства. Нужно померить задержку ответа. Для этого схема формирователя выдает строб и я начинаю оцифровку сигналов с квадратурного модулятор. Потом передаю на комп и там уже всю обработку делаю. Так вот этот строб формируется внутри ПЛИС, к нему бы как то хотелось тоже привзяться с шагом +-Tд. Цитата ps. если у вас есть тактовый для дискретизации 960 МГц в дифференциальном виде - то ISERDES2 можно применить с коэффициентом 1:8. задержку естественно придётся калибровать Я думал об этом. Но пока не решаюсь. В принципе если я получу привязку +-1/ (480 МГц) меня это вполне устроит. Цитата задержку естественно придётся калибровать А как Вы посоветуете калибровать задержку? Использовать механизм калибровки, как в XAPP1064. Т.е. делать конечный автомат, который мониторит сигналы ISERDES2 и формировать сигналы управления IODELAY или просто тупо подобрать нужные значения и константами вбить в UCF файл. Просто специфика сигнала такова, что сигнал VALID может и не вырабатываться (поскольку нет изменения данных). В общем я недопонимаю механизм калибровки IODELAY. Если можете поясните, пожалуйста)))
Сообщение отредактировал Fourier - May 19 2015, 17:25
|
|
|
|
|
May 19 2015, 18:03
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Спасибо Вам за ответы.))) Цитата почему и желателен loopback на старте Наверно, можно как то попробовать это сделать. А без калибровки в рантайме не обойтись? Цитата дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. Тактовая частота на передачу 120 МГц. Частота оцифровки 960 МГц, так как используется мультиплексирование шины данных АЦП, то на ПЛИС данные с АЦП идут с частотой 480 МГц. Думаю как правильно сделать привязку принимаемых данных к передаваемым, чтобы получить минимальное СКО оценки задержки от среднего значения.
|
|
|
|
|
May 20 2015, 12:15
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(Fourier @ May 20 2015, 01:03)  А без калибровки в рантайме не обойтись? Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт. Повторю вопрос: Цитата(krux @ May 20 2015, 00:53)  дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
May 20 2015, 16:44
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Цитата дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. Не зависят. Частоту дискретизации формирует внешний синтезатор, сигнал с синтезатора идет на АЦП, там делится на два, поступает в плис и делится на 4 в BUFIO. На передачу частота формируется из сигнала внешнего кварцевого генератора, в PLL ПЛИСины разгоняется до 120 МГц. Т.е. хотя обе частоты и 120 МГц, их фазовые соотношения не определены, так же может и точность установки частоты отличаться. Сделал так (может по неопытности), потому что требуется менять частоту оцифровки, а 120 МГц на передачу должны оставаться постоянными. Цитата Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт. Может я чего то недопонимаю просто. Я как рассуждаю: есть два канала 8-и разрядного АЦП, естесственно младшие разряды будут изменяться чаще, чем старшие. Т.е. чтобы провести калибровку надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП. К сожалению, на плате нет коммутатора с ЦАПа на АЦП, т.е. сигнал для калибровки брать либо из радиолинии (что не очень хорошо, потому что нельзя пропускать принимаемые сигналы) либо перед началом работы формировать достаточно мощный сигнал в передатчик, устанавливать максимальное усиление приемника и по просочке проводить калибровку. Я сейчас без калибровки сделал, но бывают сбои (особенно при смене частоты дискретизации), чувствую все-равно придется как то с калибровкой разбираться.
Сообщение отредактировал Fourier - May 20 2015, 17:03
|
|
|
|
|
May 20 2015, 18:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
Цитата А без калибровки в рантайме не обойтись? если с обратной связью уже не получится - то нужно придумать как её организовать хотя бы в заводских условиях. тогда калибровку можно прошить куда-нибудь в EEPROM как "заводскую" и считывать при старте. пересобирать проект с калибровкой под каждую плату - это жесть. да, я такое тоже видел, но при выпуске 23 изделий держать под рукой 23 прошивки, и в случае исправлений в коде пересобирать их все 23 - это...... я даже не знаю.... закат солнца вручную покажется детский забавой. Цитата надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП к примеру, формируете пилу. принимаете её после цапа в плис. желательно численно убеждаетесь в том что приходит именно пила, без выбросов разрядов. двигаете по одному поочередно каждый разряд при помощи IDELAY сначала одну сторону, чтобы начали появляться артефакты, затем в другую, также до появления артефактов. значения сдвигов IDELAY фиксируете. среднее между двумя значениями сдвигов с артефактами, и при котором артефактов нет, принимаете в качестве середины валидного окна. и так по каждому разряду.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
May 20 2015, 18:15
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 13-02-13
Из: Рыбинск
Пользователь №: 75 606

|
Спасибо большое за помощь))) Буду пробовать. Возможность записи калибровки во флешку на плате имеется.
Так то мне всего 4 комплекта надо выпустить... В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП. Но и эти 4 комплекта хотелось бы сделать так, чтобы в случае ремонта или каких-то корректировок у меня или других людей, кто это будет разгребать проблем было как можно меньше)))
Сообщение отредактировал Fourier - May 20 2015, 18:18
|
|
|
|
|
May 21 2015, 02:15
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(Fourier @ May 21 2015, 01:15)  В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП. И ещё заложите раздачу тактовой на ЦАП и АЦП от одного источника, чтобы когерентно было, тоже жизнь облегчите. Цитата(krux @ May 21 2015, 01:20)  да, и ещё в догонку - посмотрите, в АЦП может быть возможность поменять MSB/LSB - тогда это позволит правильно и точно сделать калибровку для младших разрядов Ещё АЦП бывают с возможностью рандомизации битов, т.е. кодирование данных по псевдослучайному закону, чтобы разровнять спектр наводок по (от) каждой линии. Ещё бывают с возможностью генерации на выход тестового паттерна. Но это похоже не Ваш случай ))
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|