|
|
  |
Выбираем униполярный самосинхронизирующийся код, Передача данных и CLK м/у ПЛИС по одному LVDS каналу |
|
|
|
Mar 1 2006, 18:56
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Цитата(makc @ Mar 1 2006, 19:32)  У ксайлинкса это xapp224. Там тоже делают 4 опорных клока, сдвинутых на 90 градусов. Вопрос в другом - кто-нибудь реально пользовался таким способом передачи даных? И на сколько это надежно? Ага, т.е. ксайлинкс тоже не умеет восстанавливать клок в явном виде, а использует чисто цифровой способ. А вы не видели среди xapp именно восстановления клока из потока данных? Что касается надежности, то у меня сложилось впечатление, что альтера обычно честно прорабатывает свои реф.дизайны, и они работают, как описано. У них, кстати, можно запросить исходники этого проекта. В принципе я не вижу в таком подходе ничего опасного - частота остается в пределах разумной (~200-300 Мгц), надо только внимательно смотреть на времянки и сообщения синтезатора и роутера - при 300 Мгц зазор между двумя фронтами (при 90 градусах сдвига) 0.8 нс. Схема, которая выделяет переход уровня во входном потоке, должна быть простой, чтобы успеть за такое время.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
Mar 1 2006, 19:57
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Gate @ Mar 1 2006, 21:56)  Цитата(makc @ Mar 1 2006, 19:32)  У ксайлинкса это xapp224. Там тоже делают 4 опорных клока, сдвинутых на 90 градусов. Вопрос в другом - кто-нибудь реально пользовался таким способом передачи даных? И на сколько это надежно?
Ага, т.е. ксайлинкс тоже не умеет восстанавливать клок в явном виде, а использует чисто цифровой способ. А вы не видели среди xapp именно восстановления клока из потока данных? Да, большинство примеров говорит именно об этом. Но есть xapp250, в котором они предлагают способ восставновления клока, но используют внешний элемент - VCO MAX2605. Мне этот вариант не нравится... Цитата Что касается надежности, то у меня сложилось впечатление, что альтера обычно честно прорабатывает свои реф.дизайны, и они работают, как описано. У них, кстати, можно запросить исходники этого проекта. В принципе я не вижу в таком подходе ничего опасного - частота остается в пределах разумной (~200-300 Мгц), надо только внимательно смотреть на времянки и сообщения синтезатора и роутера - при 300 Мгц зазор между двумя фронтами (при 90 градусах сдвига) 0.8 нс. Схема, которая выделяет переход уровня во входном потоке, должна быть простой, чтобы успеть за такое время. Тут есть две основные проблемы - метастабильность входных триггеров, которые защелкивают данные и величины задержек (которые должны оцениваться софтом и проверяться) элементов для обработки полученных данных. Как первое, так и второе может привести к случайным сбоям во время работы. С точки зрения дизайна - все правильно и должно работать. Но сам метод вызывает сомнения относительно стабильности работы... Вот отсюда у меня и появляется вопрос практической проверки надежности этого подхода. Будет время - обязательно попробую. Правда нужно еще найти на чем это сделать.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Mar 2 2006, 03:30
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(Gate @ Mar 1 2006, 18:54)  Например, feedback есть только у стратиксов (которые дороги), а в дешевых циклонах у pll есть только вход частоты, сигналы сброса и разрешения. Этот вход, насколько я понимаю, - для высшего пилотажа. Чтобы ОС делать снаружи плис - это для особых извратов. Цитата(Gate @ Mar 1 2006, 18:54)  делаются 4 клока опорной частоты, сдвинутые на 90 градусов каждый и смотрят когда во входном потоке есть переходы уровней Насколько я читал хэндбук на стратикс2, эта штучка называется DPA (dynamic phase alignment). Но это никак не значит, что входная частота не восстанавливается. Это нужно чтобы угадать правильный момент "защёлкивания" данных в сдвиговый регистр. А про восстановление клока из данных ничего не говорится: может и заработать, поскольку это отдельная задача, с DPA никак не связанная.
|
|
|
|
|
Mar 2 2006, 12:38
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(Gate @ Feb 26 2006, 21:39)  В USB применяется NRZ плюс битстаффинг (когда в канале подряд шесть 1 вставляется лишний 0, или наоборот) - тут полоса практически не расширяется. Однако для восстановления клока потребуется фактически аналоговая схема (pll плюс обвязка). Как это реализовать на fpga я не представляю, там pll функционально ограничен. Поправка, не NRZ, а NRZI. Вообще же битстаффинг заметно более эффективен, чем старт-стоппные кодировки (типа 8/10): он "сжирает" меньше полосы канала, при этом создает лучшие условия для PLL. Восстановление клока после битстаффинка в принципе не отличается от 8/10. Цитата(Gate @ Feb 26 2006, 21:39)  Имхо есть 2 пути 1. что-то типа манчестера 2. добавить линию и передавать клок Не-а. Реализовать в FPGA восстановление клока можно. Термин для гугления CDR - Clock and Data Recovery. Есть FPGA со встроенными serdes, способные на это, например, у Алтеры - Меркурий. Однако они стоят хрен знает сколько. Есть и другой путь. У Алтеры на эту тему есть пара аппликух и референс дизайн на Верилоге, где при помощи Стратикса или Циклона делается CDR из видеопотока SDI (270 Mbps) или HD-SDI (почти полтора гига), с полным декодированием. Фокус состоит в том, что используется оверсамплинг 3/2 или 5/4. Однако как это реализовать на практике - не так уж очевидно, для этого надо выходить на уровень фиттера и логических элементов, чего я лично, например, пока не умею.
|
|
|
|
|
Mar 3 2006, 03:39
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(=AK= @ Mar 2 2006, 18:38)  Вообще же битстаффинг заметно более эффективен, чем старт-стоппные кодировки (типа 8/10): он "сжирает" меньше полосы канала, при этом создает лучшие условия для PLL Почему вы считаете 8В/10В стартстопной кодировкой? Насколько я знаю - это непрерывный поток бит, просто закодирован так, чтобы больше 3х нулей или единиц подряд не встречались. А вот стартстопные кодировки - применяются в аппаратных сериализерах-десериализерах ЛВДС, о которых упоминалось в этой теме ранее. Там именно стартовый и стоповый биты, отличающиеся по форме от бит данных. Так что, на мой взгляд, мы с вами либо по-разному понимаем термин "стартстопный" либо вы не полностью представляете кодировку 8В/10В
|
|
|
|
|
Mar 5 2006, 00:15
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
PS: Посмотрел 8b/10b. Замысловатый код, однако эффективность использования полосы канала такая же, как у стартстопных, т.е. хуже чем у битстаффинга. В отличие от старт-стопных, 8b/10b позволяет обнаруживать одиночные ошибки, а также дает сбалансированное кол-во 0 и 1, что важно для транформаторной развязки. В общем, эзернетовский прикол, там ему и место, имхо.
|
|
|
|
|
Mar 6 2006, 07:02
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(=AK= @ Mar 5 2006, 03:15)  ... В отличие от старт-стопных, 8b/10b позволяет обнаруживать одиночные ошибки ... Не позволяет.
|
|
|
|
|
Mar 6 2006, 09:35
|
Местный
  
Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397

|
Цитата(=AK= @ Mar 5 2006, 06:15)  PS: Посмотрел 8b/10b. Замысловатый код, однако эффективность использования полосы канала такая же, как у стартстопных, т.е. хуже чем у битстаффинга. В отличие от старт-стопных, 8b/10b позволяет обнаруживать одиночные ошибки, а также дает сбалансированное кол-во 0 и 1, что важно для транформаторной развязки. В общем, эзернетовский прикол, там ему и место, имхо.  Если не затруднит, дайте ссылку на алгоритм организации битстаффинга в USB.
|
|
|
|
|
Mar 7 2006, 13:21
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(=AK= @ Mar 7 2006, 15:00)  Цитата(dsmv @ Mar 6 2006, 16:32)  Цитата(=AK= @ Mar 5 2006, 03:15)  В отличие от старт-стопных, 8b/10b позволяет обнаруживать одиночные ошибки
Не позволяет. it can detect all single-bit and many other errors;Это ошибка в описании. Нигде больше про это не говориться. Действительно, по коду 8/10 можно обнаружить некоторые ошибки. Но говорить, что он обнаружит все ошибки, нельзя. Например привожу 10 битный код для двух символов: K28.3 001111 0011 K28.4 001111 0010 - ошибка в младшем бите не будет обнаружена. P.S. Может я все-таки не прав?
Сообщение отредактировал dsmv - Mar 7 2006, 13:47
|
|
|
|
|
Mar 7 2006, 14:10
|
Частый гость
 
Группа: Свой
Сообщений: 122
Регистрация: 21-02-05
Из: Питер
Пользователь №: 2 811

|
Цитата(dsmv @ Mar 7 2006, 16:21)  Это ошибка в описании. Нигде больше про это не говориться. Действительно, по коду 8/10 можно обнаружить некоторые ошибки. Но говорить, что он обнаружит все ошибки, нельзя. Например привожу 10 битный код для двух символов: K28.3 001111 0011 K28.4 001111 0010 - ошибка в младшем бите не будет обнаружена.
P.S. Может я все-таки не прав? Думаю, что не ошибка :) Прошу прощения за тавтологию, но ошибка в младшем бите будет обнаружена, т.к. есть еще "running disparity", который вы измените поменяв бит, единственное, что ошибка обнаружится только при приеме следующего слова. К тому же любая нарушающая баланс ошибка, а не только одиночная, будет обнаружена :)
--------------------
Dies diem docet.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|