|
АЦП ADS42LB49/69, QDR режим, как использовать FRAME |
|
|
|
May 2 2016, 17:55
|
Частый гость
 
Группа: Свой
Сообщений: 116
Регистрация: 29-12-04
Пользователь №: 1 739

|
Cогласно Xapp585 предусмотрена следующая структура : -Вход frameclk поступает на MMCME для генерации битклока, те здесь производится умножение частоты для приема данных в ISERDES, например в моем случае frameclk равен 62.5 Mhz, битклок необходим 375 Mhz для приема 12 бит данных в режиме DDR. Параллельно Вход frameclk поступает на IDELAY, ISERDES. -Каждый Вход данных подключены через IDELAY, ISERDES. -На ППМ длина проводников frameclk (клоковый вход фпга) и данных выравнены. Работа автомата калибровки следующая: производится поиск центра БИТданных, для этого установливается начальная задержка IDELAY равная нулю, Производится прием данных frameclk, и фиксируются эти данные. Увеличиваем задержку. Считываем данные frameclk'а и сравниваем с предыдущим значением. Если эти данные не совпали (это означает что попали на фронт,спад данных) то запоминается величина задержки и данные frameclk'а. Далее увеличивая задержку ищем второй переход(изменение данных) и также запоминаем. Затем вычисляется разница кода задержки первого и второго переходов, делится на 2 добавляется к задержке первого перехода (или вычитается из задержки второго перехода) и устанавливается полученное значение задержки в IDELAY. Поскольку frameclk и линии данных выравнены то задержки для всех IDELAY также равны. Далее калибровка- битслип выравнивание принимаемых 12 бит данных по границе. Производится путем сравнения принимаемых данных с кодом frameclk = 000000111111 и управляя сигналом BITSLIP ISERDES. Делается мах 12 циклов чтобы получить желаемый код frameclk'a. Калибровки закончены. Ждем следующего запуска. Если frameclk и линии данных имеют разную длину, То АЦП нужно установить в режим калибровки (тестовый режим когда он генерирует код допустим похожий на код frameclk (000000111111). И С КАЖДОЙ линией данных провести операцию по подстройке задержки для поиска центра (середины). И потом битслип операция. xapp585
|
|
|
|
|
May 31 2016, 10:54
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Алга @ May 2 2016, 20:55)  ... Если эти данные не совпали (это означает что попали на фронт,спад данных) ... Что можете сказать по поводу длительности фронта? Можно ли по однократному несовпадению утверждать, что попали на фронт? Есть 12 каналов АЦП (3 АЦП по 4 канала), режим работы: 8-bit serialization, 2-line mode (каждый канал передаётся по двум линиям), DDR LVDS, битовый клок 400 МГц, иногда один/два канала синхронизируются криво (тестовая последовательность 0xF0 на линии принимается нормально, но при переключении в рабочий режим данные принимаются неправильно, на последовательность 0xAA вообще не каждый канал может настроиться).
|
|
|
|
|
Jun 1 2016, 13:37
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Спасибо. Пока нашёл баг в своей стейтмашине, вернее в самом алгоритме - 3 тапа на переходные процессы после нахождения фронта, в найденном примере использовалось окно 4 тапа и я так же сделал (ранее не использовал окно при нахождении первого фронта). Стало работать стабильнее. Сейчас стало синхронизироваться и на 0xAA, но всё равно иногда вылетает один канал (всегда один и тот же). Цитата(Алга @ Jun 1 2016, 15:18)  Дополню: берете самый худший АЦП и снимаете характеристику задержка (0-31) и принимаемые данные. У вас должен быть стабильный участок длиной 16 ед задержки 400Mhz= 2.5 ns, DDR, полпериода 1.25 ns/78 ps= 16 eд. Лучше считается участок более ближний к нулю, меньше джиттер. И в результате этой калибровки нужно получить средину этого участка. Те задержка равна средине этого участка. Длительность бита 1.25 ns/78 ps= 16 eд, т.е. длительность стабильного участка будет меньше?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|