Art55555 0 3 октября, 2017 Опубликовано 3 октября, 2017 · Жалоба Есть Artix7 и AD9681. Приём сделан по схеме DATA_PIN- IBUFDS-IDELAYE2-ISERDESE2. К выходу ISERDESE2 я подключил калибратор. Выбранный режим приёма - DDR two-lane, bytewise. Далее привожу алгоритм. 1) По SPI выбираю режим передачи данных DDR two-lane, bytewise -0x21 значение 30. 2) По SPI выбираю режим передачи тестовой последовательности, состоящей из 2 слов. - 0x0D значение 04. 3) Используя перебор 32 значений IDELAYE2 и 8 bitslip-ов я добиваюсь того, чтобы на выходе ISERDESE2 появились искомые A8 54 на одном лэйне и AA 55 на другом. Автомат проверяет, чтобы стабильный результат на выходе был не менее 8192 раз. Если нет, то либо задержка, либо (если задержка достигает 32 - битслип). В итоге стабильно добиваюсь такого результата: 4) По SPI выбираю режим отключения тестовой последовательности, состоящей из 2 слов. - 0x0D значение 00. И вижу такой результат при подаче с генератора синуса частоты 1 МГц: Т.е. явно видно, что какой-то бит явно "врёт", хотя если опять вернуться на тестовую последовательность, то всё по-прежнему ок. В чём может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 3 октября, 2017 Опубликовано 3 октября, 2017 · Жалоба И вижу такой результат при подаче с генератора синуса частоты 1 МГц: В чём может быть проблема? Помочь не смогу, но чисто предположение, исходя из собственных АЦП-страданий: осциллограф показывает чистый синус с генератора? И с подключенным АЦП и с отключенным? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Amurak 0 3 октября, 2017 Опубликовано 3 октября, 2017 · Жалоба А если скремблер подать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 42 3 октября, 2017 Опубликовано 3 октября, 2017 · Жалоба Так PN9 подайте и все сразу видно будет если цифровая часть врет. Вот только как там задержку в пайплайне подобрать правильную для синхронизации? А если цифра не врет- то надо бы увеличить емкости фильтра перед входом АЦП, При емкости сравнимой с емкостями УВХ АЦП наблюдались подобные приключения. Можно еще пилу подать, на ней лучше видно в каком бите глюк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 3 октября, 2017 Опубликовано 3 октября, 2017 · Жалоба 3) Используя перебор 32 значений IDELAYE2 и 8 bitslip-ов я добиваюсь того, чтобы на выходе ISERDESE2 появились искомые A8 54 на одном лэйне и AA 55 на другом. Автомат проверяет, чтобы стабильный результат на выходе был не менее 8192 раз. Если нет, то либо задержка, либо (если задержка достигает 32 - битслип). При таком алгоритме вы попадете не в центр окна данных (sample window),а в его край, где данные боле-менее стабильны. Вроде и не страшно, но всё-же обратите на это внимание. А схема тактирования какая ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quest 2 4 октября, 2017 Опубликовано 4 октября, 2017 · Жалоба не стоит городить велосипед - возьмите готовый ад-ый код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 4 октября, 2017 Опубликовано 4 октября, 2017 · Жалоба не стоит городить велосипед - возьмите готовый ад-ый код. В описании микросхемы на AD нет ничего для ПЛИС. При таком алгоритме вы попадете не в центр окна данных (sample window),а в его край, где данные боле-менее стабильны. Вроде и не страшно, но всё-же обратите на это внимание. А схема тактирования какая ? Согласен. Для проверки после проведения калибрации уже вручную играюсь значением задержки, лучше сигнал не становится. Причём видно, что искажение сигнала происходит на уровне конкретного бита (как в положительной, так и отрицательной области). Теперь про такт. От АЦП заходит быстрый DCO. Защёлкиваю его IBUFGDS. Получили сигнал ACLK. Далее из него делаю инверсный через конструкцию aclk_inv<=not aclk; Параллельно с помощью BUFR делением на 4 получаю aclk_div. Все эти дела подаются на ISERDESE2. Да, подстройку по IDELAYE2 делаю по такту другому - 100 МГц (хотя делал и по делённому aclk_div - разницы не увидел) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sawyer0 0 4 октября, 2017 Опубликовано 4 октября, 2017 · Жалоба В описании микросхемы на AD нет ничего для ПЛИС. Посмотрите здесь, может есть что-нибудь: https://github.com/analogdevicesinc/hdl.git Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 4 октября, 2017 Опубликовано 4 октября, 2017 · Жалоба Посмотрите также Xilinx xapp524, xapp585, xapp1071/866, есть и соответствующие zip файлы с исходниками. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 6 октября, 2017 Опубликовано 6 октября, 2017 · Жалоба Я, конечно же, брал за основу эти документы. Бросается в глаза то, что я не использую FRAME для детектирование правильности данных. Просто у меня калибровочная машина подключена к каждой Data-lane и я ожидаю с неё попеременно 2 разных числа, которые мне известны. Далее, после каждого сердеса идёт фифо, выход которого уже идёт на выход. Правильно ли это? Ещё возник вопрос по поводу PN23. Подумал, что не совсем корректно калиброваться по 2 выходным значениям. Решил попробовать с PN23. По поводу изобретения велосипеда - на гитхабе этой АЦП нет, а те, что есть - непонятный принцип работы. Что есть дата и как подавать стартовую последовательность для AD9681 0x7FFC? Также не понятно, для чего эти входные данные нужны в режиме генератора, к тому же 23 бита в "рабочем векторе", а входные(выходные) данные только 16. Какие генераторы я нашёл, а также самописный почему-то не дают последоватьельность 0x7F80, 0x8004, 0x7000, указанную в даташите. Кто-нибудь встречался с данными проблемами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Алга 0 6 октября, 2017 Опубликовано 6 октября, 2017 · Жалоба Кратко процесс калибровки: первый этап- поставить клок в центр (середину) принимаемых данных (бита) меняя задержку Второй этап- управляя битслипом принять правильно определенное значение (тестовый код). Калибровка проводится на определенный тестовый код (например "1xsync", "1/0 bit toggle", "mixed bit frequency") Те ацп при калибровке должен генерить простой код 12/16бит. Можно посчитать сколько единиц задержки ваше окно Так если данные 1 Gbit (16 Bit)- период(окно) 1 нс и требуется всего 12-13 ед задержки (по 78 ps) для стабильного приема, потом 2-3 единицы нестабильный прием (попали на переход-другое значение бита) и опять все снова. Это вы должны наблюдать в ручном режиме. Окончательно устанавливается середина стабильного участка. Калибровка выполняется на один тестовый код. Потом можно проверять результат калибровки разными способами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 42 6 октября, 2017 Опубликовано 6 октября, 2017 · Жалоба А информация из http://www.analog.com/media/en/technical-d...otes/AN-877.pdf для AD9681 применима? Там описаны биты сброса псевдослучайной последовательнсти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 9 октября, 2017 Опубликовано 9 октября, 2017 · Жалоба А информация из http://www.analog.com/media/en/technical-d...otes/AN-877.pdf для AD9681 применима? Там описаны биты сброса псевдослучайной последовательнсти. Сброс последовательности мне не требуется, старт я вижу сразу, генератор PN23 будет генерить и сравнивать значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Art55555 0 9 октября, 2017 Опубликовано 9 октября, 2017 · Жалоба Я НЕ использую FRAME - калибруюсь по последовательности - это нормально? Для чего-то ведь этот сигнал существует) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 9 октября, 2017 Опубликовано 9 октября, 2017 · Жалоба Кратко процесс калибровки: первый этап- поставить клок в центр (середину) принимаемых данных (бита) меняя задержку А можно про этот процесс чуть подробнее ? Допустим есть некий АЦП который управляется по SPI. Мы либо запускаем АЦП в "нормальном" режиме - когда он гонит данные. Либо запускаем АПЦ в режиме калибровки - когда он гонит тестовую последовательность. Читал доки от xilinx но так и не понял как определяются границы бита, чтобы выставить клок в центр данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться