Fourier 0 19 мая, 2015 Опубликовано 19 мая, 2015 (изменено) · Жалоба Здравствуйте! Разработана плата сбора и обработки данных на Spartan 6 XC6SLX100-3FGG676I. На борту стоит АЦП ADC08D1000 и две DDR3. Оцифровку делаю с частотй 960 МГц. АЦП мультиплексирует данные и они идут на FPGA с частотой 480 МГц: итого получаем 2x8x2=32 разряда. Далее через ISERDES2 частота делится на 4. Т.е. имеется шина данных 32x4=128 разрядов с частотой 120 МГц. Данные пишутся в две DDR3 (Четные отсчеты в одну, нечетные - в другую). Со сбором данных сейчас вроде все ОК))) Вопрос состоит в следующем: можно ли какими-то ухищрениями сделать внешнюю синхронизацию начала оцифровки с точностью +-Tд, где Tд - интервал дискретизации? Или довольствоваться величиной +-1/(120 МГц)? Заранее спасибо за ответы. Изменено 19 мая, 2015 пользователем Fourier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба а что вам мешает завести внешнюю синхронизацию также через ISERDES2 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fourier 0 19 мая, 2015 Опубликовано 19 мая, 2015 (изменено) · Жалоба а что вам мешает завести внешнюю синхронизацию также через ISERDES2 ? Писать ее состояние так же в память, а потом на компе анализировать? Мне бы хотелось сделать так, чтобы в память записывались только те отсчеты, которые появились на выходе АЦП после появления фронта синхронизации. Причем флуктуации были +-Tд Изменено 19 мая, 2015 пользователем Fourier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба а если сделать специальный "регистр смещения синхронизации", передавать всё на ПК, и уже там отсеять первые 0...7 отсчетов? есть конечно ещё вариант с выстраиванием gearbox, который будет крутить части вашего 128-битного слова в зависимости от регистра синхронизации до записи в память. ps. если у вас есть тактовый для дискретизации 960 МГц в дифференциальном виде - то ISERDES2 можно применить с коэффициентом 1:8. задержку естественно придётся калибровать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fourier 0 19 мая, 2015 Опубликовано 19 мая, 2015 (изменено) · Жалоба а если сделать специальный "регистр смещения синхронизации", передавать всё на ПК, и уже там отсеять первые 0...7 отсчетов? Да, это вариант. Спасибо за идею. Надо только подумать как это реализовать. Надо наверное этот регистр защелкивать при начале записи, и когда массив нужного размера запишется в DDR, последним словом записать этот регистр. Т.е. в принципе с внешнего вывода вариант решения похоже найден))) И я думаю, что он рабочий. Но есть еще один момент. У меня задача то в общем следующая, я формирую некоторый сигнал, выдаю на ЦАП, далее в I/Q модулятор и жду ответа от другого устройства. Нужно померить задержку ответа. Для этого схема формирователя выдает строб и я начинаю оцифровку сигналов с квадратурного модулятор. Потом передаю на комп и там уже всю обработку делаю. Так вот этот строб формируется внутри ПЛИС, к нему бы как то хотелось тоже привзяться с шагом +-Tд. ps. если у вас есть тактовый для дискретизации 960 МГц в дифференциальном виде - то ISERDES2 можно применить с коэффициентом 1:8. задержку естественно придётся калибровать Я думал об этом. Но пока не решаюсь. В принципе если я получу привязку +-1/ (480 МГц) меня это вполне устроит. задержку естественно придётся калибровать А как Вы посоветуете калибровать задержку? Использовать механизм калибровки, как в XAPP1064. Т.е. делать конечный автомат, который мониторит сигналы ISERDES2 и формировать сигналы управления IODELAY или просто тупо подобрать нужные значения и константами вбить в UCF файл. Просто специфика сигнала такова, что сигнал VALID может и не вырабатываться (поскольку нет изменения данных). В общем я недопонимаю механизм калибровки IODELAY. Если можете поясните, пожалуйста))) Изменено 19 мая, 2015 пользователем Fourier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба я предпочитаю не использовать IDELAY без крайней на то необходимости. задержку нужно калибровать при старте прошивки. более того, если есть возможность скоммутировать выход на вход на время старта - то это идеальный вариант. дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. механизм подстройки IDELAY заключается в том, чтобы измерить качество приема известного принимаемого сигнала при всех смещениях IDELAY на каждом из входных сигналов шины. после чего выставить оптимальные и дальше работать уже с ними. почему и желателен loopback на старте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fourier 0 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба Спасибо Вам за ответы.))) почему и желателен loopback на старте Наверно, можно как то попробовать это сделать. А без калибровки в рантайме не обойтись? дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. Тактовая частота на передачу 120 МГц. Частота оцифровки 960 МГц, так как используется мультиплексирование шины данных АЦП, то на ПЛИС данные с АЦП идут с частотой 480 МГц. Думаю как правильно сделать привязку принимаемых данных к передаваемым, чтобы получить минимальное СКО оценки задержки от среднего значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 20 мая, 2015 Опубликовано 20 мая, 2015 · Жалоба А без калибровки в рантайме не обойтись?Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт. Повторю вопрос: дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fourier 0 20 мая, 2015 Опубликовано 20 мая, 2015 (изменено) · Жалоба дальше всё зависит от того какие у вас частоты на передачу/прием, соотносятся ли они, зависят ли друг от друга, кратны ли. Не зависят. Частоту дискретизации формирует внешний синтезатор, сигнал с синтезатора идет на АЦП, там делится на два, поступает в плис и делится на 4 в BUFIO. На передачу частота формируется из сигнала внешнего кварцевого генератора, в PLL ПЛИСины разгоняется до 120 МГц. Т.е. хотя обе частоты и 120 МГц, их фазовые соотношения не определены, так же может и точность установки частоты отличаться. Сделал так (может по неопытности), потому что требуется менять частоту оцифровки, а 120 МГц на передачу должны оставаться постоянными. Да можно и обойтись попробовать... считать, что в температуре уплывёт несильно. Можно только по старту сделать, и успокоиться. А почему Вас в рантайме пугает? Положение фронтов можно ловить необязательно по заранее известному сигналу. Быстро задержка не уплывёт, а за это время хоть один фронт - да придёт. Может я чего то недопонимаю просто. Я как рассуждаю: есть два канала 8-и разрядного АЦП, естесственно младшие разряды будут изменяться чаще, чем старшие. Т.е. чтобы провести калибровку надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП. К сожалению, на плате нет коммутатора с ЦАПа на АЦП, т.е. сигнал для калибровки брать либо из радиолинии (что не очень хорошо, потому что нельзя пропускать принимаемые сигналы) либо перед началом работы формировать достаточно мощный сигнал в передатчик, устанавливать максимальное усиление приемника и по просочке проводить калибровку. Я сейчас без калибровки сделал, но бывают сбои (особенно при смене частоты дискретизации), чувствую все-равно придется как то с калибровкой разбираться. Изменено 20 мая, 2015 пользователем Fourier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 20 мая, 2015 Опубликовано 20 мая, 2015 · Жалоба А без калибровки в рантайме не обойтись? если с обратной связью уже не получится - то нужно придумать как её организовать хотя бы в заводских условиях. тогда калибровку можно прошить куда-нибудь в EEPROM как "заводскую" и считывать при старте. пересобирать проект с калибровкой под каждую плату - это жесть. да, я такое тоже видел, но при выпуске 23 изделий держать под рукой 23 прошивки, и в случае исправлений в коде пересобирать их все 23 - это...... я даже не знаю.... закат солнца вручную покажется детский забавой. надо сформировать какой-то шумовой сигнал во всем динамическом диапазоне АЦП к примеру, формируете пилу. принимаете её после цапа в плис. желательно численно убеждаетесь в том что приходит именно пила, без выбросов разрядов. двигаете по одному поочередно каждый разряд при помощи IDELAY сначала одну сторону, чтобы начали появляться артефакты, затем в другую, также до появления артефактов. значения сдвигов IDELAY фиксируете. среднее между двумя значениями сдвигов с артефактами, и при котором артефактов нет, принимаете в качестве середины валидного окна. и так по каждому разряду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fourier 0 20 мая, 2015 Опубликовано 20 мая, 2015 (изменено) · Жалоба Спасибо большое за помощь))) Буду пробовать. Возможность записи калибровки во флешку на плате имеется. Так то мне всего 4 комплекта надо выпустить... В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП. Но и эти 4 комплекта хотелось бы сделать так, чтобы в случае ремонта или каких-то корректировок у меня или других людей, кто это будет разгребать проблем было как можно меньше))) Изменено 20 мая, 2015 пользователем Fourier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 20 мая, 2015 Опубликовано 20 мая, 2015 · Жалоба да, и ещё в догонку - посмотрите, в АЦП может быть возможность поменять MSB/LSB - тогда это позволит правильно и точно сделать калибровку для младших разрядов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 21 мая, 2015 Опубликовано 21 мая, 2015 · Жалоба В следующий раз буду разрабатывать с учетом того, что надо в железе предусматривать коммутацию ЦАПа на АЦП.И ещё заложите раздачу тактовой на ЦАП и АЦП от одного источника, чтобы когерентно было, тоже жизнь облегчите. да, и ещё в догонку - посмотрите, в АЦП может быть возможность поменять MSB/LSB - тогда это позволит правильно и точно сделать калибровку для младших разрядовЕщё АЦП бывают с возможностью рандомизации битов, т.е. кодирование данных по псевдослучайному закону, чтобы разровнять спектр наводок по (от) каждой линии. Ещё бывают с возможностью генерации на выход тестового паттерна. Но это похоже не Ваш случай )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться