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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> 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
serj1979
сообщение Sep 25 2018, 10:59
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-12-15
Из: Пенза
Пользователь №: 89 844



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

Без скремблирования (или что то наподобие) тут ИМХО трудно будет, какая тактовая частота ПЛИС?
А далеко передавать на такой "бешеной" скорости?

Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 25 2018, 11:00
Сообщение #3


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

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



Приветствую!
Цитата(AVR @ Sep 25 2018, 13:21) *
Есть связь из Spartan 7 в Cyclone 10 LP по одной дифференциальной паре проводников (есть и обратная пара). Хочется понять, как действовать, если хочется передавать данные без передачи клока?
...
Вообще, реально ли какими-то алгоритмическими мерами и кодами, просто принимая поток с LVDS (от 10 до 400 Мбит/с, но каждый раз это константа), учитывая что тактовые не синхронные (хотя их стабильность 50 ppm) и плавают, что мы не знаем где центр глаза, как-то принимать данные, как-то делать обнаруживать битовые сдвиги и компенсировать их?
Однако! - самое первое что на ум приходит Манчестер-II - восстанавливаем клок на приеме XORя поток с самим собой задержанным на пол такта жестко заданными задержками. Не знаю как на счет 400 Mbit но на 100 думаю запустится.

Удачи! Rob.






Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 25 2018, 11:05
Сообщение #4


Гуру
******

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



Цитата(AVR @ Sep 25 2018, 13:21) *
Есть связь из Spartan 7 в Cyclone 10 LP по одной дифференциальной паре проводников (есть и обратная пара). Хочется понять, как действовать, если хочется передавать данные без передачи клока?

ИМХО, забыть про LVDS, по одному проводу передавать клок, а по другому данные.
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 25 2018, 11:11
Сообщение #5


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

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



Цитата(blackfin @ Sep 25 2018, 14:05) *
ИМХО, забыть про LVDS, по одному проводу передавать клок, а по другому данные.
Тот же USB2.0 передает по двум проводам 480 Mb/s на расстояние до пяти метров и без всяких LVDS..

Вообще-то там диффпара, причем на low/full и high speed.

Вот тот же PCI-E 1.0 мог же работать от разных клоков - только данные идут, но там и приемная часть сильно хитрая, ничем не ограниченная в возможностях.

А я пока что внутренне не верю что эта задача не решается, чую есть тут способ. Расстояние всего 10-15 см.


--------------------
Go to the top of the page
 
+Quote Post
Aner
сообщение Sep 25 2018, 11:12
Сообщение #6


Гуру
******

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



QUOTE (blackfin @ Sep 25 2018, 14:05) *
ИМХО, забыть про LVDS, по одному проводу передавать клок, а по другому данные.

Это как так ?
... по одному проводу передавать клок, а по другому данные.
Относительно GND?
Да, чудненько так!


Go to the top of the page
 
+Quote Post
blackfin
сообщение Sep 25 2018, 11:14
Сообщение #7


Гуру
******

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



Цитата(Aner @ Sep 25 2018, 14:12) *
Это как так ?
... по одному проводу передавать клок, а по другому данные.
Относительно GND?
Да, чудненько так!

Память DDR3 именно так и работает.. biggrin.gif
Go to the top of the page
 
+Quote Post
Aner
сообщение Sep 25 2018, 11:19
Сообщение #8


Гуру
******

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



QUOTE (blackfin @ Sep 25 2018, 14:14) *
Память DDR3 именно так и работает.. biggrin.gif

Не нужно забывать, что там по стандарту в DDR3/4 внутри лог автоматы с обоих сторон интерфейса с подстройкой фронтов. А не просто лог вход/выход.
Так что не так.
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 25 2018, 11:27
Сообщение #9


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

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



Отставить флуд! rolleyes.gif
В задаче я вижу основную проблему: локальный клок приемника может уехать на середину места смены битового значения (на край глаз-диаграммы). И тогда битовый поток будет иметь множественные фатальные искажения. Если принимать на клоке с 8 разными фазами (как я видел в доках от TI) - то там да, можно будет на основе преамбулы очередного пакета выбирать версию с наилучшим положением, и этого выбора хватит на весь пакет, пакеты у меня до 2048 байт.

Основное решение пока вижу в приеме на 8 фазах + алгоритмическая некая обработка.

Вопрос: как это сделать на Cyclone 10 LP, ведь там LVDS приемник не позволяет ответвить 8 версий с 8 фазами.
Второе, может у PLL есть какая-то возможность с каждым фронтом данных, не реагируя на пропуски, подстраиваться под этот поток?


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


Гуру
******

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



Цитата(Aner @ Sep 25 2018, 14:19) *
Не нужно забывать, что там по стандарту в DDR3/4 внутри лог автоматы с обоих сторон интерфейса с подстройкой фронтов. А не просто лог вход/выход.

Во-первых, в Spartan 7 есть регулируемые линии задержки по входам:
Цитата
I/O Logic

Input Delay
All inputs can be configured as either combinatorial or registered. Double data rate (DDR) is supported by all inputs and outputs. Any input can be individually delayed by up to 32 increments of 78ps, 52ps, or 39ps each. Such delays are implemented as IDELAY. The number of delay steps can be set by configuration and can also be incremented or decremented while in use.

ISERDES and OSERDES
Many applications combine high-speed, bit-serial I/O with slower parallel operation inside the device. This requires a serializer and deserializer (SerDes) inside the I/O structure. Each I/O pin possesses an 8-bit IOSERDES (ISERDES and OSERDES) capable of performing serial-to-parallel or parallel-to-serial conversions with programmable widths of 2, 3, 4, 5, 6, 7, or 8 bits. By cascading two IOSERDES from two adjacent pins (default from differential I/O), wider width conversions of 10 and 14 bits can also be supported. The ISERDES has a special oversampling mode capable of asynchronous data recovery for applications like a 1.25Gb/s LVDS I/O-based SGMII interface.


Во-вторых, 400 Mb/s это все-таки не 800 Mb/s на которых работает контроллер DDR3 Spartan'a:
Цитата
The SSTL I/O standard can support data rates of up to 800Mb/s for DDR3 interfacing applications.

См. DS171, page 5,6
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Sep 25 2018, 11:39
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(AVR @ Sep 25 2018, 13:21) *
Допустим, задействую такой код 8/10, где байт будет передаваться так, чтобы хотя бы раз в три бита будет инверсия. Ведь сам поток данных это по сути прерывистые нерегулярные такты.
Или например, буду добавлять преамбулы в начала пакетов, escape-последовательности.

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


Не вижу больших проблем. Разве что частоты 400 могут вызывать вопросы.

Путь номер 1. Затащить данные на встроенные PLL и получить внутренний клок привязанный к данным. Потом принятые данные перенести в другой клоковый домен.
Путь номер 2. Тактируем с передискретизацией и воостанавливаем поток данных. Подробности описаны например тут https://www.xilinx.com/support/documentatio...tes/xapp250.pdf
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 25 2018, 11:47
Сообщение #12


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

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



Цитата(blackfin @ Sep 25 2018, 14:30) *
Во-первых, в Spartan 7 есть регулируемые линии задержки по входам:

Я недавно создавал тему тут, как раз по этому вопросу. На тему что делать, если подобных задержек в C10LP нету.
В Spartan7 они есть, и работают, правда позволяют регулировать задержку +- 0,5 клока, причем идиотским способом. Теоретически, +- 0,5 времени символа достаточно, только вот на границе -0,5 там невозможно быстро перейти к +0,5. Половина диапазона там тупо недоступна. Может я что-то не понял, но тем не менее - функция не вполне рабочей кажется.

На первом макете некоего устройства (не скоро сделают) у меня будет клоковая линия. Но это сейчас, потом от нее нужно будет отойти как от костыля. И вот, может ПЛИС выбрать нужно другую? Может Cyclone 10 GX? И вот в ней уже я знаю есть многое что нужно, те же DPA.

Вижу такой документ: https://www.ti.com/lit/ds/slls570d/slls570d.pdf
Тут как раз передача данных без клока по LVDS, и при этом в приемнике есть Clock Recovery.


--------------------
Go to the top of the page
 
+Quote Post
DuHast
сообщение Sep 25 2018, 11:54
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



А вариант с внешней микросхемой СDR не рассматриваете?
Go to the top of the page
 
+Quote Post
AVR
сообщение Sep 25 2018, 11:54
Сообщение #14


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

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



Цитата(MegaVolt @ Sep 25 2018, 14:39) *
Путь номер 1. Затащить данные на встроенные PLL и получить внутренний клок привязанный к данным. Потом принятые данные перенести в другой клоковый домен.

Это называется CDR? Clock&Data Recovery?
Цитата
Путь номер 2. Тактируем с передискретизацией и воостанавливаем поток данных. Подробности описаны например тут https://www.xilinx.com/support/documentatio...tes/xapp250.pdf

На Spartan7 не проблема, это ясно, а вот на C10LP?

Вот эти варианты я и рассматриваю как самые реальные. Но с точки зрения самой "тупой" ПЛИС из этих двух.
Решение создать клок на основе данных а затем через FIFO перетащить в основной домен - идеальное решение.
Но как называется эта функция? Я запутался в куче этих всяких режимов и опций. Это и есть CDR - верно?

Цитата(DuHast @ Sep 25 2018, 14:54) *
А вариант с внешней микросхемой SDR не рассматриваете?

Нет, причем это требование "свыше". Вот для себя для дома-хозяйства, я бы именно так и сделал в этом случае - ставил бы микросхемы, например SN65LV1023A + SN65LV1224A.


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


Гуру
******

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



Цитата(AVR @ Sep 25 2018, 14:47) *
Может я что-то не понял, но тем не менее - функция не вполне рабочей кажется.

А xapp1017 и xapp585 читали?

Цитата(AVR @ Sep 25 2018, 14:47) *
И вот, может ПЛИС выбрать нужно другую? Может Cyclone 10 GX?

Странный выбор.. Тогда уж лучше выбрать Spartan-7 + Artix-7 (или Kintex-7, или Kintex Ultra)..

Кстати, ещё раз процитирую DS171:
Цитата
The ISERDES has a special oversampling mode capable of asynchronous data recovery for applications like a 1.25Gb/s LVDS I/O-based SGMII interface.

Если я правильно понимаю, Spartan таки умеет аппаратно восстанавливать клок из данных. То есть, достаточно одной пары LVDS..

Цитата
The serial gigabit media-independent interface (SGMII) is a variant of MII, a standard interface used to connect an Ethernet MAC block to a PHY. It is used for Gigabit Ethernet but can also carry 10/100 Mbit/s Ethernet.

It uses differential pairs at 625 MHz clock frequency DDR for TX and RX data and TX and RX clocks. It differs from GMII by its low-power and low pin-count serial 8b/10b-coded interface (commonly referred to as a SerDes). Transmit and receive path each use one differential pair for data and another differential pair for clock. The TX/RX clocks must be generated on device output but are optional on device input (clock recovery may be used alternatively).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 18:14
Рейтинг@Mail.ru


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