|
8b/10b code. Восстановление тактовой синхронизации |
|
|
|
 |
Ответов
(1 - 12)
|
Nov 10 2010, 12:21
|
Участник

Группа: Свой
Сообщений: 73
Регистрация: 9-08-10
Из: Украина
Пользователь №: 58 828

|
8b/10b комма действительно только границу пакета определяет, для синхронизации приемника с передатчиком важно то, что частоты и фазы разные, еще и дышат, и без подстройки частоты, или еще каких либо "танцев" Вы не получите результат без сбоев. можете почитать про метастабильность, но сразу предупреждаю решение проблем с метастабильностью не решает проблемы синхронизации
|
|
|
|
|
Nov 10 2010, 12:46
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
OFF: Разница частот специфицирована в протоколах типа PCIe, 10Gb Ethernet, USB3.0 - специально смотрел, а распространенное решение этой проблемы - эластичный буфер - выдумка реализаторов. Наихудший случай, когда разница в частотах максимальная, а пакет наибольшей длины. Это несколько символов, в разных протоколах по разному. Тоже самое может быть в другую сторону, когда быстрый кварц оказался в противоположном устройстве. И все было б не так плохо, если бы эластичный буфер заполнялся перед приемом пакета именно на это время. USB superspeed 8 символов, PCI-e 4 символа, Infiniband 3 символа. В трансиверах FPGA он заполняется на половину своего размера, да и в других устройствах тоже, retiming repeaters этим тоже грешат. Соответственно, данные почти всегда будут отставать на эти несколько символов на каждом хопе. В FPGA этот же буфер используется для выравнивания каналов и кое-что можно простить, но не 16 символов. Вообще, лишний символ "/" в "http://" может оказаться ерундой по сравнению с потерями на PCI-e компьютерах при коротких запросах.
|
|
|
|
|
Nov 10 2010, 13:59
|
Местный
  
Группа: Участник
Сообщений: 306
Регистрация: 11-11-04
Из: Москва
Пользователь №: 1 106

|
Цитата(Костян @ Nov 10 2010, 15:56)  Возможно ли в FPGA c применением доп. внеш элементов восстановить битовую синхронизацию в 8b/10b decoder -е ? Подобный модуль реализован на схеме CDR в RocketIO , но мне совершенно не понятны принципы его работы. Выделение в CDR синхронизации идет только по comma symbol , либо также по данным ? Восстановление битовой тактовой частоты возможно с применением цифровой ФАПЧ, правда для ее нормальной работы внутренняя тактовая частота должна быть по крайней мере в 8 раз выше битовой частоты. Джиттер при этом будет нехилый, ну так никто и не знает, какой он Вам нужен...
|
|
|
|
|
Nov 10 2010, 14:42
|
Знающий
   
Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059

|
QUOTE (DmitryR @ Nov 10 2010, 10:34)  Зачем на стадии 8b/10 нужна битовая синхронизация? Все уже параллельно, нужна словная. Что касается RocketIO - то я недавно сделал на нем SATA-II, совершенно не пытаясь вникнуть в то, как он достает синхронизацию. Он подавал мне наружу слова и словную синхру, а как там внутри - кому это надо голову ломать? это понятно, поясню, нужно захватить сигнал в кодировке 8b/10b (сформированный тем же RocketIO) на спартане3 , который не имеет ни CDR, ни RocketIO. Поэтому и разбираюсь как там внутри.
|
|
|
|
|
Nov 10 2010, 16:00
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Непонятно, это круглая лошадь при низком давлении или реальная плата с экономически обоснованными решениями? Чтобы просто поиграть на какой получится частоте, можно сделать цифровую модель PLL, которая содержит, ясное дело, регулируемый генератор и компаратор детектор фазы, который определяет, какой сигнал поменялся раньше, входной или принимаемя и дает команду чуточку сменить частоту. Реагировать компаратор детектор фазы должен только внутри битового периода. Обычная спартановская PLL частоту захватит, так как тренировка идет на символах с кодировкой 101010101..., но скорее всего будет терять синхронизацию. Я не знаю, как именно устроеных PLL в FPGA и как они относятся к пропускам импульсов. http://en.wikipedia.org/wiki/Multi-gigabit_transceiver
|
|
|
|
|
Nov 10 2010, 16:57
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 19-06-10
Пользователь №: 58 021

|
QUOTE (Костян @ Nov 10 2010, 14:56)  Возможно ли в FPGA c применением доп. внеш элементов восстановить битовую синхронизацию в 8b/10b decoder -е ? Подобный модуль реализован на схеме CDR в RocketIO , но мне совершенно не понятны принципы его работы. Выделение в CDR синхронизации идет только по comma symbol , либо также по данным ? K28.5 кома - Это единственный символ который позволяет выделить 10 битные границы в последовательном потоке 8В10В данных. Остальные символы имеют алиасы.
|
|
|
|
|
Nov 11 2010, 06:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(Костян @ Nov 10 2010, 17:42)  это понятно, поясню, нужно захватить сигнал в кодировке 8b/10b (сформированный тем же RocketIO) на спартане3 Или вам все же не понятно, или вы не можете объяснить, что вам нужно. Повторю: чтобы захватить выход RocketIO чем угодно нужно использовать восстановленную в RocketIO СЛОВНУЮ синхронизацию. Надо начинать не с разбирательств как устроен RocketIO внутри, а с того как устроен его интерфейс. Потому что понимание внутренних алгоритмов его работы конечно полезно, но работать с интерфейсом не помогает никак вообще. И еще абсолютно непонятно, зачем к большой FPGA, в которой есть RoketIO еще рядом приделывать Spartan3. А, на всякий случай: если вы хотите захватить в Spartan3 ПОСЛЕДОВАТЕЛЬНЫЙ поток, который где-то выходит из RocketIO - забудьте: там слишком высокая частота. Если бы это было возможно - RocketIO никто бы не делал.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|