|
|
  |
Прием данных с АЦП AD9681 |
|
|
|
Oct 3 2017, 14:19
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Есть 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 МГц:  Т.е. явно видно, что какой-то бит явно "врёт", хотя если опять вернуться на тестовую последовательность, то всё по-прежнему ок. В чём может быть проблема?
|
|
|
|
|
Oct 3 2017, 20:14
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата 3) Используя перебор 32 значений IDELAYE2 и 8 bitslip-ов я добиваюсь того, чтобы на выходе ISERDESE2 появились искомые A8 54 на одном лэйне и AA 55 на другом. Автомат проверяет, чтобы стабильный результат на выходе был не менее 8192 раз. Если нет, то либо задержка, либо (если задержка достигает 32 - битслип). При таком алгоритме вы попадете не в центр окна данных (sample window),а в его край, где данные боле-менее стабильны. Вроде и не страшно, но всё-же обратите на это внимание. А схема тактирования какая ?
|
|
|
|
|
Oct 4 2017, 07:32
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Цитата(monty @ Oct 4 2017, 08:15)  не стоит городить велосипед - возьмите готовый ад-ый код. В описании микросхемы на AD нет ничего для ПЛИС. Цитата(Flip-fl0p @ Oct 4 2017, 00:14)  При таком алгоритме вы попадете не в центр окна данных (sample window),а в его край, где данные боле-менее стабильны. Вроде и не страшно, но всё-же обратите на это внимание. А схема тактирования какая ? Согласен. Для проверки после проведения калибрации уже вручную играюсь значением задержки, лучше сигнал не становится. Причём видно, что искажение сигнала происходит на уровне конкретного бита (как в положительной, так и отрицательной области). Теперь про такт. От АЦП заходит быстрый DCO. Защёлкиваю его IBUFGDS. Получили сигнал ACLK. Далее из него делаю инверсный через конструкцию aclk_inv<=not aclk; Параллельно с помощью BUFR делением на 4 получаю aclk_div. Все эти дела подаются на ISERDESE2. Да, подстройку по IDELAYE2 делаю по такту другому - 100 МГц (хотя делал и по делённому aclk_div - разницы не увидел)
|
|
|
|
|
Oct 4 2017, 07:51
|
Группа: Участник
Сообщений: 10
Регистрация: 1-03-17
Из: РФ
Пользователь №: 95 661

|
Цитата(Art55555 @ Oct 4 2017, 07:32)  В описании микросхемы на AD нет ничего для ПЛИС. Посмотрите здесь, может есть что-нибудь: https://github.com/analogdevicesinc/hdl.git
|
|
|
|
|
Oct 6 2017, 12:44
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Я, конечно же, брал за основу эти документы.
Бросается в глаза то, что я не использую FRAME для детектирование правильности данных. Просто у меня калибровочная машина подключена к каждой Data-lane и я ожидаю с неё попеременно 2 разных числа, которые мне известны. Далее, после каждого сердеса идёт фифо, выход которого уже идёт на выход. Правильно ли это?
Ещё возник вопрос по поводу PN23. Подумал, что не совсем корректно калиброваться по 2 выходным значениям. Решил попробовать с PN23.
По поводу изобретения велосипеда - на гитхабе этой АЦП нет, а те, что есть - непонятный принцип работы. Что есть дата и как подавать стартовую последовательность для AD9681 0x7FFC? Также не понятно, для чего эти входные данные нужны в режиме генератора, к тому же 23 бита в "рабочем векторе", а входные(выходные) данные только 16. Какие генераторы я нашёл, а также самописный почему-то не дают последоватьельность 0x7F80, 0x8004, 0x7000, указанную в даташите.
Кто-нибудь встречался с данными проблемами?
|
|
|
|
|
Oct 9 2017, 12:37
|
Частый гость
 
Группа: Участник
Сообщений: 184
Регистрация: 7-10-10
Пользователь №: 59 981

|
Цитата(khach @ Oct 6 2017, 20:36)  А информация из http://www.analog.com/media/en/technical-d...otes/AN-877.pdf для AD9681 применима? Там описаны биты сброса псевдослучайной последовательнсти. Сброс последовательности мне не требуется, старт я вижу сразу, генератор PN23 будет генерить и сравнивать значения.
|
|
|
|
|
Oct 9 2017, 20:04
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата Кратко процесс калибровки: первый этап- поставить клок в центр (середину) принимаемых данных (бита) меняя задержку А можно про этот процесс чуть подробнее ? Допустим есть некий АЦП который управляется по SPI. Мы либо запускаем АЦП в "нормальном" режиме - когда он гонит данные. Либо запускаем АПЦ в режиме калибровки - когда он гонит тестовую последовательность. Читал доки от xilinx но так и не понял как определяются границы бита, чтобы выставить клок в центр данных.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|