реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Прием данных с АЦП AD9681
Art55555
сообщение Oct 3 2017, 14:19
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 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 МГц:




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

В чём может быть проблема?

Go to the top of the page
 
+Quote Post
AVR
сообщение Oct 3 2017, 14:23
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Art55555 @ Oct 3 2017, 17:19) *
И вижу такой результат при подаче с генератора синуса частоты 1 МГц:
В чём может быть проблема?

Помочь не смогу, но чисто предположение, исходя из собственных АЦП-страданий:
осциллограф показывает чистый синус с генератора? И с подключенным АЦП и с отключенным?


--------------------
Go to the top of the page
 
+Quote Post
Amurak
сообщение Oct 3 2017, 15:28
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 193
Регистрация: 18-11-12
Пользователь №: 74 459



А если скремблер подать?
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 3 2017, 19:38
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 207
Регистрация: 29-12-04
Пользователь №: 1 741



Так PN9 подайте и все сразу видно будет если цифровая часть врет. Вот только как там задержку в пайплайне подобрать правильную для синхронизации?
А если цифра не врет- то надо бы увеличить емкости фильтра перед входом АЦП, При емкости сравнимой с емкостями УВХ АЦП наблюдались подобные приключения. Можно еще пилу подать, на ней лучше видно в каком бите глюк.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Oct 3 2017, 20:14
Сообщение #5


Местный
***

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



Цитата
3) Используя перебор 32 значений IDELAYE2 и 8 bitslip-ов я добиваюсь того, чтобы на выходе ISERDESE2 появились искомые A8 54 на одном лэйне и AA 55 на другом. Автомат проверяет, чтобы стабильный результат на выходе был не менее 8192 раз. Если нет, то либо задержка, либо (если задержка достигает 32 - битслип).

При таком алгоритме вы попадете не в центр окна данных (sample window),а в его край, где данные боле-менее стабильны. Вроде и не страшно, но всё-же обратите на это внимание.
А схема тактирования какая ?
Go to the top of the page
 
+Quote Post
monty
сообщение Oct 4 2017, 04:15
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 19-12-05
Пользователь №: 12 399



не стоит городить велосипед - возьмите готовый ад-ый код.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 4 2017, 07:32
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 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 - разницы не увидел)


Go to the top of the page
 
+Quote Post
sawyer0
сообщение Oct 4 2017, 07:51
Сообщение #8





Группа: Участник
Сообщений: 9
Регистрация: 1-03-17
Из: РФ
Пользователь №: 95 661



Цитата(Art55555 @ Oct 4 2017, 07:32) *
В описании микросхемы на AD нет ничего для ПЛИС.

Посмотрите здесь, может есть что-нибудь: https://github.com/analogdevicesinc/hdl.git
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 4 2017, 16:33
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 102
Регистрация: 29-12-04
Пользователь №: 1 739



Посмотрите также Xilinx xapp524, xapp585, xapp1071/866, есть и соответствующие zip файлы с исходниками.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 6 2017, 12:44
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 7-10-10
Пользователь №: 59 981



Я, конечно же, брал за основу эти документы.

Бросается в глаза то, что я не использую FRAME для детектирование правильности данных.
Просто у меня калибровочная машина подключена к каждой Data-lane и я ожидаю с неё попеременно 2 разных числа, которые мне известны.
Далее, после каждого сердеса идёт фифо, выход которого уже идёт на выход.
Правильно ли это?


Ещё возник вопрос по поводу PN23.
Подумал, что не совсем корректно калиброваться по 2 выходным значениям. Решил попробовать с PN23.

По поводу изобретения велосипеда - на гитхабе этой АЦП нет, а те, что есть - непонятный принцип работы.
Что есть дата и как подавать стартовую последовательность для AD9681 0x7FFC?
Также не понятно, для чего эти входные данные нужны в режиме генератора, к тому же 23 бита в "рабочем векторе", а входные(выходные) данные только 16.
Какие генераторы я нашёл, а также самописный почему-то не дают последоватьельность 0x7F80, 0x8004, 0x7000, указанную в даташите.

Кто-нибудь встречался с данными проблемами?
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 6 2017, 16:14
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 102
Регистрация: 29-12-04
Пользователь №: 1 739



Кратко процесс калибровки: первый этап- поставить клок в центр (середину)
принимаемых данных (бита) меняя задержку Второй этап- управляя битслипом принять
правильно определенное значение (тестовый код).
Калибровка проводится на определенный тестовый код (например "1xsync", "1/0 bit toggle", "mixed bit frequency")
Те ацп при калибровке должен генерить простой код 12/16бит. Можно посчитать сколько единиц задержки ваше окно
Так если данные 1 Gbit (16 Bit)- период(окно) 1 нс и требуется всего 12-13 ед задержки (по 78 ps) для стабильного приема,
потом 2-3 единицы нестабильный прием (попали на переход-другое значение бита) и опять все снова. Это вы должны наблюдать в ручном режиме.
Окончательно устанавливается середина стабильного участка.
Калибровка выполняется на один тестовый код. Потом можно проверять результат калибровки разными способами.
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 6 2017, 16:36
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 3 207
Регистрация: 29-12-04
Пользователь №: 1 741



А информация из http://www.analog.com/media/en/technical-d...otes/AN-877.pdf для AD9681 применима? Там описаны биты сброса псевдослучайной последовательнсти.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 9 2017, 12:37
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 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 будет генерить и сравнивать значения.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 9 2017, 16:48
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 7-10-10
Пользователь №: 59 981



Я НЕ использую FRAME - калибруюсь по последовательности - это нормально? Для чего-то ведь этот сигнал существует)
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Oct 9 2017, 20:04
Сообщение #15


Местный
***

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



Цитата
Кратко процесс калибровки: первый этап- поставить клок в центр (середину)
принимаемых данных (бита) меняя задержку

А можно про этот процесс чуть подробнее ?
Допустим есть некий АЦП который управляется по SPI.
Мы либо запускаем АЦП в "нормальном" режиме - когда он гонит данные.
Либо запускаем АПЦ в режиме калибровки - когда он гонит тестовую последовательность.
Читал доки от xilinx но так и не понял как определяются границы бита, чтобы выставить клок в центр данных.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th October 2017 - 00:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016