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

 
 
> LVDS под одной паре (без клока), Cyclone10LP и Spartan7
AVR
сообщение Sep 25 2018, 10:21
Сообщение #1


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

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



Есть связь из Spartan 7 в Cyclone 10 LP по одной дифференциальной паре проводников (есть и обратная пара). Хочется понять, как действовать, если хочется передавать данные без передачи клока?
Допустим, задействую такой код 8/10, где байт будет передаваться так, чтобы хотя бы раз в три бита будет инверсия. Ведь сам поток данных это по сути прерывистые нерегулярные такты.
Или например, буду добавлять преамбулы в начала пакетов, escape-последовательности.

Вообще, реально ли какими-то алгоритмическими мерами и кодами, просто принимая поток с LVDS (от 10 до 400 Мбит/с, но каждый раз это константа), учитывая что тактовые не синхронные (хотя их стабильность 50 ppm) и плавают, что мы не знаем где центр глаза, как-то принимать данные, как-то делать обнаруживать битовые сдвиги и компенсировать их?

Нужно именно не задействовать хитрые режимы PLL, задержки, приемы на разных фазах, потому что возможности Cyclone 10 LP тут ничтожны. Или я ошибаюсь?

Опираюсь на бутылочное горлышко - на ту ПЛИС из этих двух, что имеет наименьшие возможности (C10LP), пусть будет единое со Spartan 7 решение.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
blackfin
сообщение Sep 26 2018, 03:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(MegaVolt @ Sep 26 2018, 00:32) *
Это не решит проблемы если разбежка за пакет больше пары бит.

Не будет там такой "разбежки"..

У ТС клоки на обоих концах линка равны с точностью до 100 ppm. Из этого следует, что сдвиг на один бит случится после 10 тысяч бит. Меж тем, у ТС длина пакета 2048 бит. То есть, за время передачи пакета накопленная ошибка будет не больше 1/5 битового интервала.

Цитата(AVR @ Sep 25 2018, 13:21) *
... поток с LVDS (от 10 до 400 Мбит/с, но каждый раз это константа), учитывая что тактовые не синхронные (хотя их стабильность 50 ppm) и плавают, ...
Цитата(AVR @ Sep 25 2018, 14:27) *
... можно будет на основе преамбулы очередного пакета выбирать версию с наилучшим положением, и этого выбора хватит на весь пакет, пакеты у меня до 2048 байт.

PS. Только сейчас заметил, что у ТС длина пакета указана в байтах. То есть, в битах это 16384. Так что ошибка в один бит вполне реальна. Тогда только кодировка 8/10 и подстраивать момент выборки бита на лету..
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 26 2018, 08:03
Сообщение #3


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

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



Цитата(blackfin @ Sep 26 2018, 06:54) *
Не будет там такой "разбежки"..
У ТС клоки на обоих концах линка равны с точностью до 100 ppm. Из этого следует, что сдвиг на один бит случится после 10 тысяч бит. Меж тем, у ТС длина пакета 2048 бит. То есть, за время передачи пакета накопленная ошибка будет не больше 1/5 битового интервала.
PS. Только сейчас заметил, что у ТС длина пакета указана в байтах. То есть, в битах это 16384. Так что ошибка в один бит вполне реальна. Тогда только кодировка 8/10 и подстраивать момент выборки бита на лету..

Т.е. не надо никакого реклокинга, так получается? Я опасаюсь, а не вылезет ли в месте перехода цепочка из десятков бит, раскиданных по обе стороны от граничной ситуации?


--------------------
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 26 2018, 08:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(AVR @ Sep 26 2018, 11:03) *
Т.е. не надо никакого реклокинга, так получается? Я опасаюсь, а не вылезет ли в месте перехода цепочка из десятков бит, раскиданных по обе стороны от граничной ситуации?

Если вы откалибровались по преамбуле и длина пакета не превышает 2500 бит, то "реклокинг" внутри пакета уже не нужен. Можно также поставить более дорогие TXCO с лучшей начальной точностью и стабильностью. Скажем, 10 ppm будет не сильно дороже, а расхождение клоков на обеих сторонах линка будет в пять раз меньше. Как следствие, допустимый размер пакета будет тоже в пять раз больше.
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 26 2018, 08:24
Сообщение #5


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

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



Цитата(blackfin @ Sep 26 2018, 11:15) *
Если вы откалибровались по преамбуле и длина пакета не превышает 2500 бит, то "реклокинг" не нужен. Можно также поставить более дорогие TXCO с лучшей начальной точностью и стабильностью. Скажем, 10 ppm будет не сильно дороже, а расходжение клоков на обеих сторонах линка будет в пять раз меньше. Соответстенно, допустимый размер пакета будет тоже в пять раз больше.

А что значит откалиброваться по преамбуле? Допустим, принимаю преамбулу, вижу ее смещение (у меня уже есть такое решение в модели) - определив величину битового смещения, начинаю кушать пакет. Что защищает от ситуации, чтобы не попасть на зону перехода, когда после приема 1250 бит пойдет зона на десятки бит, где битовое положение будет колбаситься туда-сюда из-за джиттера???

Цитата(ViKo @ Sep 26 2018, 10:27) *
Протянули бы уже тактовый сигнал. Ради связи на 15 см столько фантазий.

Таково жесткое требование на данное устройство. Пока макет - у меня есть клок уже, причем общий для приемной и передающей стороны - вообще халява. Но теперь я обязан убрать общий клок на приемной и передающей стороне, и не давать клок в параллель с данными.


--------------------
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 26 2018, 08:56
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(AVR @ Sep 26 2018, 11:24) *
А что значит откалиброваться по преамбуле? Допустим, принимаю преамбулу, вижу ее смещение (у меня уже есть такое решение в модели) - определив величину битового смещения, начинаю кушать пакет. Что защищает от ситуации, чтобы не попасть на зону перехода, когда после приема 1250 бит пойдет зона на десятки бит, где битовое положение будет колбаситься туда-сюда из-за джиттера???

Ну, я ориентируюсь на xapp523. Там каждый бит данных семплируется четыре раза. При таком семплировании наибольшая ошибка в определении положения максимума в линии данных не будет превышать 0.25*UI. Далее вы начинаете принимать пакет, но поскольку клок на приемной стороне имеет систематическую ошибку, со временем возникает сдвиг между центром бита и временем семплирования этого бита. Джиттер здесь влияния не оказывает, так как его величина мала по сравнению с длительностью одного бита на частоте 400 МГц и он не приводит к систематическому смещению фронта данных.

Цитата(AVR @ Sep 26 2018, 11:24) *
Таково жесткое требование на данное устройство.
...
Но теперь я обязан убрать общий клок на приемной и передающей стороне, и не давать клок в параллель с данными.

А чем вызвано столь "жесткое требование"?

Цитата(Leka @ Sep 26 2018, 11:39) *
Для самопального много проще и компактнее по ресурсам будет принимать по всем фазам и выбрать правильные.
Пишем 8 потоков, а дальше пускаем только 1 из них с правильным контрольным кодом.

Не соглашусь. Проще и компактнее то, как описано у Xilinx'а в xapp523. Один конечный автомат на четыре состояния, один триггер для граничных условий и немного логики для управления этим автоматом. Этот метод, кроме всего прочего, позволяет подстраивать момент выборки бита на интервале меньшем десяти бит (для кодировки 8/10) и не зависеть от длины пакета в принципе. Ваш же метод при большой длине пакета может привести к ситуации, когда во всех восьми блоках памяти будут лежать данные с неверными CRC.
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 26 2018, 13:50
Сообщение #7


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

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



Цитата(blackfin @ Sep 26 2018, 11:56) *
Не соглашусь. Проще и компактнее то, как описано у Xilinx'а в xapp523. Один конечный автомат на четыре состояния, один триггер для граничных условий и немного логики для управления этим автоматом. Этот метод, кроме всего прочего, позволяет подстраивать момент выборки бита на интервале меньшем десяти бит (для кодировки 8/10) и не зависеть от длины пакета в принципе. Ваш же метод при большой длине пакета может привести к ситуации, когда во всех восьми блоках памяти будут лежать данные с неверными CRC.

Скачал xapp523.zip размером 5138659 байт 75138e67fc7f40fda0e89e998214e645
Но там много пустых каталогов, нет файлов проекта, нет PDF-файлов с описанием. Вроде качал с официального сайта, но это странно очень.

xapp224.zip не могу нигде скачать, но подозреваю там другой метод и другая идея, которая не так хороша, как в xapp523 - верно?

Мне нравится xapp523, я почти уловил мысль, но не до конца. Там пример на 1250 мегабит SGMII, но я ожидаю, что могу взять не 8 а всего 4 фазы для этой идеи и обойтись лишь одним десериализатором (а не двумя, сдвинутыми на сколько-то пс при помощи IDELAY). Но нужно посимулить и понять идею глубже.


--------------------
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 26 2018, 16:45
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(AVR @ Sep 26 2018, 16:50) *
Там пример на 1250 мегабит SGMII, но я ожидаю, что могу взять не 8 а всего 4 фазы для этой идеи и обойтись лишь одним десериализатором (а не двумя, сдвинутыми на сколько-то пс при помощи IDELAY). Но нужно посимулить и понять идею глубже.

С четырьмя семплами и одним десериализатором не получится следить за направлением смещения фронта данных относительно точек семплирования. В этом случае алгоритм "Bit Skip" работать не будет.

Иными словами FSM из рисунка 9 должен шагать строго по кругу - либо по часовой стрелке, либо против. Недопустимы переходы между состояниями "по диагонали"..
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 27 2018, 04:33
Сообщение #9


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

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



Цитата(blackfin @ Sep 26 2018, 19:45) *
С четырьмя семплами и одним десериализатором не получится следить за направлением смещения фронта данных относительно точек семплирования. В этом случае алгоритм "Bit Skip" работать не будет.
Иными словами FSM из рисунка 9 должен шагать строго по кругу - либо по часовой стрелке, либо против. Недопустимы переходы между состояниями "по диагонали"..

Так, похоже идея работать не будет, потому что в C10LP нет такого элемента как задержка входного сигнала на X пикосекунд. Где-то даже читал на форумах альтеры ответ сотрудника что типа "а нафига это теоретически было бы надо". К тому же не знаю, можно ли подать с одного входа на два десериализатора в C10LP задав соответствующие констрейны чтоб не расползалось.


--------------------
Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 27 2018, 04:43
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(AVR @ Sep 27 2018, 07:33) *
Так, похоже идея работать не будет, потому что в C10LP нет такого элемента как задержка входного сигнала на X пикосекунд.

А в чем смысл скрещивать ужа Altera и ежа Xilinx в одном проекте? Страсть к мазохизму?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AVR   LVDS под одной паре (без клока)   Sep 25 2018, 10:21
- - serj1979   Цитата(AVR @ Sep 25 2018, 13:21) Вообще, ...   Sep 25 2018, 10:59
- - RobFPGA   Приветствую! Цитата(AVR @ Sep 25 2018, 13...   Sep 25 2018, 11:00
- - blackfin   Цитата(AVR @ Sep 25 2018, 13:21) Есть свя...   Sep 25 2018, 11:05
|- - AVR   Цитата(blackfin @ Sep 25 2018, 14:05) ИМХ...   Sep 25 2018, 11:11
|- - Aner   QUOTE (blackfin @ Sep 25 2018, 14:05) ИМХ...   Sep 25 2018, 11:12
|- - blackfin   Цитата(Aner @ Sep 25 2018, 14:12) Это как...   Sep 25 2018, 11:14
|- - Aner   QUOTE (blackfin @ Sep 25 2018, 14:14) Пам...   Sep 25 2018, 11:19
|- - blackfin   Цитата(Aner @ Sep 25 2018, 14:19) Не нужн...   Sep 25 2018, 11:30
|- - AVR   Цитата(blackfin @ Sep 25 2018, 14:30) Во-...   Sep 25 2018, 11:47
|- - blackfin   Цитата(AVR @ Sep 25 2018, 14:47) Может я ...   Sep 25 2018, 11:57
|- - umarsohod   Когдато давно, соединял две CPLD сдедующим образом...   Sep 25 2018, 12:13
||- - andrew_b   Цитата(umarsohod @ Sep 25 2018, 15:13) эт...   Sep 25 2018, 12:30
|- - MegaVolt   Цитата(blackfin @ Sep 25 2018, 14:57) Есл...   Sep 25 2018, 12:47
|- - blackfin   Цитата(MegaVolt @ Sep 25 2018, 15:47) По ...   Sep 25 2018, 13:13
|- - MegaVolt   Цитата(blackfin @ Sep 25 2018, 16:13) xap...   Sep 25 2018, 13:59
|- - blackfin   Цитата(MegaVolt @ Sep 25 2018, 16:59) ISE...   Sep 25 2018, 14:22
- - AVR   Отставить флуд! В задаче я вижу основную пр...   Sep 25 2018, 11:27
- - MegaVolt   Цитата(AVR @ Sep 25 2018, 13:21) Допустим...   Sep 25 2018, 11:39
|- - AVR   Цитата(MegaVolt @ Sep 25 2018, 14:39) Пут...   Sep 25 2018, 11:54
|- - MegaVolt   Цитата(AVR @ Sep 25 2018, 14:54) На Spart...   Sep 25 2018, 12:44
|- - AVR   Цитата(MegaVolt @ Sep 25 2018, 15:44) 1. ...   Sep 25 2018, 12:50
|- - DuHast   Цитата(AVR @ Sep 25 2018, 15:50) 3. Есть ...   Sep 25 2018, 12:54
|- - MegaVolt   Цитата(AVR @ Sep 25 2018, 15:50) 1. Я пон...   Sep 25 2018, 13:00
|- - Zig   Цитата(AVR @ Sep 25 2018, 15:50) 3. Есть ...   Sep 25 2018, 13:12
|- - RobFPGA   Приветствую! Цитата(AVR @ Sep 25 2018, 15...   Sep 25 2018, 18:02
- - DuHast   А вариант с внешней микросхемой СDR не рассматрива...   Sep 25 2018, 11:54
- - Leka   Если Cyclone10LP не хуже Сyclone4, то задача решае...   Sep 25 2018, 12:14
- - AVR   Я месяц назад создавал тему примерно, там выяснили...   Sep 25 2018, 12:45
|- - MegaVolt   Цитата(AVR @ Sep 25 2018, 15:45) Я месяц ...   Sep 25 2018, 12:52
|- - Leka   Цитата(AVR @ Sep 25 2018, 15:45) Похоже о...   Sep 25 2018, 13:22
|- - AVR   Цитата(Leka @ Sep 25 2018, 16:22) Клок во...   Sep 25 2018, 14:05
|- - Zig   Цитата(AVR @ Sep 25 2018, 17:05) Вижу у X...   Sep 25 2018, 14:21
|- - Leka   Цитата(AVR @ Sep 25 2018, 17:05) На какой...   Sep 25 2018, 16:32
|- - AVR   Цитата(Leka @ Sep 25 2018, 19:32) Статьи ...   Sep 25 2018, 17:58
|- - Leka   Цитата(AVR @ Sep 25 2018, 20:58) Выше кин...   Sep 25 2018, 20:34
|- - MegaVolt   Цитата(Leka @ Sep 25 2018, 23:34) М/б и д...   Sep 25 2018, 21:32
- - doom13   В старых версиях QII было ядро ASI, которое выполн...   Sep 25 2018, 13:57
- - andrewkrot   У Lattice есть дешевые чипы с SERDES. А на спартан...   Sep 25 2018, 20:26
- - Leka   2Кбайта, это логический пакет, на физическом уровн...   Sep 26 2018, 07:22
- - ViKo   Протянули бы уже тактовый сигнал. Ради связи на 15...   Sep 26 2018, 07:27
- - Leka   По преамбуле калиброваться нет смысла, тк слишком ...   Sep 26 2018, 08:39
- - bogaev_roman   Можно попробовать сделать 4 параллельные семы прие...   Sep 26 2018, 14:30
- - andrewkrot   Дык, если есть обратная пара так по ней клок и пер...   Sep 27 2018, 19:54
- - Plain   А собрать трёхфазный генератор 200 МГц на ножках —...   Sep 28 2018, 07:17


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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 07:27
Рейтинг@Mail.ru


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