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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как работают скоростные дифф линии?, CSI-2 D-PHY
AVR
сообщение Jan 17 2018, 08:04
Сообщение #1


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

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



Доброго времени суток!
У меня неудобный вопрос, который постыдно задавать, но вот я понимаю как работают обычные линии IO, представляю как работают мультигигабитные SERDESы.
Но у меня нет понятия, как работают быстрые дифференциальные линии в ПЛИС, пока не было опыта, но сейчас надо освоить.
Я так понимаю, к каждой (или один на несколько пар?) такой быстрой дифф паре приставлен, если рассматривать Xilinx, такой компонент как ISERDESE2.
И такой компонент надо тактировать на целевой частоте, но данные будут поступать на 1/8 частоте, которая получена из исходной высокой путем простого деления?

Сложнее для понимания прием таких сигналов, хотя такой задачи пока не стоит. Как осуществляется синхронизация? Нужно самостоятельно подкручивать фазу?
Извините, если вопросы новичка, и вообще не в тот раздел - перенесите тогда, пожалуйста.


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jan 17 2018, 09:55
Сообщение #2


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 645
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(AVR @ Jan 17 2018, 11:04) *
Сложнее для понимания прием таких сигналов, хотя такой задачи пока не стоит. Как осуществляется синхронизация? Нужно самостоятельно подкручивать фазу?

Я гонял 500Mbps, на приёмнике подстраивал фазу, проблем не заметил.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 17 2018, 10:14
Сообщение #3


В поисках себя...
****

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



del.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 17 2018, 11:08
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 402
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(AVR @ Jan 17 2018, 11:04) *
Доброго времени суток!
У меня неудобный вопрос, который постыдно задавать, но вот я понимаю как работают обычные линии IO, представляю как работают мультигигабитные SERDESы.
Но у меня нет понятия, как работают быстрые дифференциальные линии в ПЛИС, пока не было опыта, но сейчас надо освоить.
Я так понимаю, к каждой (или один на несколько пар?) такой быстрой дифф паре приставлен, если рассматривать Xilinx, такой компонент как ISERDESE2.
И такой компонент надо тактировать на целевой частоте, но данные будут поступать на 1/8 частоте, которая получена из исходной высокой путем простого деления?

Сложнее для понимания прием таких сигналов, хотя такой задачи пока не стоит. Как осуществляется синхронизация? Нужно самостоятельно подкручивать фазу?
Извините, если вопросы новичка, и вообще не в тот раздел - перенесите тогда, пожалуйста.

Если для 7 series FPGA, то используются ISERDESE2 и IDELAYE2 (может у каких-то нету), смысл синхронизации примерно в следующем:
1) клок поставить в центр "глаза" данных (АЦП гонит тест паттерн FF00, на линиях имеем 11110000 и 11110000, с помощью элемента IDELAYE2 меняем задержку клока линии данных, находим значение задержки при котором выход приёмника изменяется и запоминаем, далее увеличиваем задержку, находим второе значение при котором данные изменились, (зн_2+зн_1)/2 это центр данных, загоняем это значение в IDELAYE2 соответствующей линии
2) далее выстовляем тест паттерн на АЦП, битслипом добиваемся правильного приёма паттерна
3) синхронизация выполнена

Вообще у Xilinx много разных док на эту тему (xapp524, xapp585, xapp855, xapp586, xapp1064 - когда-то знающие люди советовали), и где-то тут обсуждалось, ищите.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 17 2018, 11:21
Сообщение #5


В поисках себя...
****

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



Цитата(doom13 @ Jan 17 2018, 14:08) *
Если для 7 series FPGA, то используются ISERDESE2 и IDELAYE2 (может у каких-то нету), смысл синхронизации примерно в следующем:
1) клок поставить в центр "глаза" данных (АЦП гонит тест паттерн FF00, на линиях имеем 11110000 и 11110000, с помощью элемента IDELAYE2 меняем задержку клока, находим значение задержки при котором выход приёмника изменяется и запоминаем, далее увеличиваем задержку, находим второе значение при котором данные изменились, (зн_2+зн_1)/2 это центр данных, загоняем это значение в IDELAYE2)
2) далее выстовляем тест паттерн на АЦП, битслипом добиваемся правильного приёма паттерна
3) синхронизация выполнена

Вообще у Xilinx много разных док на эту тему (xapp524, xapp585, xapp855, xapp586, xapp1064 - когда-то знающие люди советовали), и где-то тут обсуждалось, ищите.

Но есть нюанс. Если это не АЦП, который умеет выдавать тестовую последовательность. А некий протокол передачи где тестовая последовательность чередуется с данными, то нужен несколько иной алгоритм... Отличия незначительные, но они есть. Могу рассказать как я делал. Правда делал на Altera, но смысл от этого не поменяется.
P.S.
А вообще гораздо интереснее можно ли потом после подстройки как-то динамически отслеживать изменение фазы. И корректировать её. Мало ли температура в помещении повысилась и задержка стала другой.... Я пока не нашел решения.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 17 2018, 12:16
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 402
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Flip-fl0p @ Jan 17 2018, 14:21) *
Но есть нюанс. Если это не АЦП, который умеет выдавать тестовую последовательность. А некий протокол передачи где тестовая последовательность чередуется с данными, то нужен несколько иной алгоритм... Отличия незначительные, но они есть. Могу рассказать как я делал. Правда делал на Altera, но смысл от этого не поменяется.
P.S.
А вообще гораздо интереснее можно ли потом после подстройки как-то динамически отслеживать изменение фазы. И корректировать её. Мало ли температура в помещении повысилась и задержка стала другой.... Я пока не нашел решения.

Не вопрос, написал то, с чем имел делоsm.gif
На альтере - Cyclone V, если не ошибаюсь, будет отличаться, там нет возможности регулировать задержку для каждой линии в отдельности, тут есть.

Немного обманул, давно было, не клок должен задерживаться с помощью IDELAYE2, а каждая линия данных относительно клока.
1. Центр бита данных совмещается с фронтом клока
2. Синхронизация с АЦП

У Вас ведь фаза PLL крутилась, как быть в случае кривизны платы, когда для всех линий задержки отличаются и значительно?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 17 2018, 12:37
Сообщение #7


В поисках себя...
****

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



Цитата
На альтере - Cyclone V, если не ошибаюсь, будет отличаться, там нет возможности регулировать задержку для каждой линии в отдельности, тут есть.

Именно так. Хотя в I/O Buffer есть линии задержки. И вроде к управлению этими линиями можно получить доступ через ядро мегавизарда.
Цитата
У Вас ведь фаза PLL крутилась, как быть в случае кривизны платы, когда для всех линий задержки отличаются и значительно.

Для каждой линии применять отдельную частоту и подстраиваться индивидуально...
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 17 2018, 12:50
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 402
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(Flip-fl0p @ Jan 17 2018, 15:37) *
Именно так. Хотя в I/O Buffer есть линии задержки. И вроде к управлению этими линиями можно получить доступ через ядро мегавизарда.

Динамически менять их нельзя, тут можно.

Цитата(Flip-fl0p @ Jan 17 2018, 15:37) *
Для каждой линии применять отдельную частоту и подстраиваться индивидуально...

Прикольно конечно, но сколько же PLL в многоканальной системе скушает
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jan 17 2018, 12:57
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 645
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(doom13 @ Jan 17 2018, 15:50) *
Динамически менять их нельзя, тут можно.

Это смотря в какой Альтере. В Arria V легко.
Go to the top of the page
 
+Quote Post
doom13
сообщение Jan 17 2018, 13:00
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 402
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(_Anatoliy @ Jan 17 2018, 15:57) *
Это смотря в какой Альтере. В Arria V легко.

Хитрый Вы какойsm.gif
Go to the top of the page
 
+Quote Post
AVR
сообщение Jan 19 2018, 07:37
Сообщение #11


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

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



Спасибо за инфу про алгоритмы синхронизации. Попробую первые шаги обмена, появятся более конкретные вопросы со временем.


--------------------
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 19 2018, 08:01
Сообщение #12


В поисках себя...
****

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



Посмотрите ещё на xapp460 и xapp495.
Go to the top of the page
 
+Quote Post
AVR
сообщение Feb 21 2018, 20:36
Сообщение #13


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

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



Дело идет к практике. Не знаю, возможно стоили бы создать отдельную тему, но и сюда тоже подходит.

Про сериализацию через ISERDESE2 я понял.
Но выяснилось что нужно не просто сериализовать сигнал и выдать его как дифф пару, но и поднять ее на смещение 200 мВ с размахом 200 мВ, чтобы сигнал болтался от 100 до 300 мВ.

Смещение 200 мВ мне схемотехники уже подсказали как ввести, а как заставить выход SERDES давать размах лишь 200 мВ?


--------------------
Go to the top of the page
 
+Quote Post
Aner
сообщение Feb 21 2018, 22:42
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 840
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



А из того перечня стандартов LVDSов у Xilinx ничего не подходит вам?
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 22 2018, 05:53
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 121
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(AVR @ Feb 21 2018, 23:36) *
Но выяснилось что нужно не просто сериализовать сигнал и выдать его как дифф пару, но и поднять ее на смещение 200 мВ с размахом 200 мВ, чтобы сигнал болтался от 100 до 300 мВ.
Смещение 200 мВ мне схемотехники уже подсказали как ввести, а как заставить выход SERDES давать размах лишь 200 мВ?

Смотрите xapp894 от Xilinx (там не только размах и смещение нужно, там ещё есть низкоскоростной канал, он тоже нужен)
Ещё - https://github.com/twlostow/dsi-shield

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th September 2018 - 08:00
Рейтинг@Mail.ru


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