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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Восстановление частоты из потока цифр, Как получить качественную частоту?
Koluchiy
сообщение Apr 21 2011, 08:10
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Здравствуйте, уважаемые гуру.

Подскажите пожалуйста, как подступиться к следующей проблеме.

Для начала краткая предыстория.

Есть микросхема Spartan-6LXT.
К ней на вход GTP приходит поток STM-1 (155.52Mhz).
Надо восстановить из потока опорную частоту в более-менее приличном виде.

Трабла в следующем. GTP Спартана-6 поддерживает частоты от 614МГц.
Соответственно, работать напрямую с потоком 155.52 МГц оно не может.
Можно использовать передискретизацию - GTP настраивается на частоту в (допустим) 4 раза больше, принимать и передавать каждый бит 4 раза.

И я так делал, оно работало... Одна проблема - устойчивость к джиттеру слишком слабая, на большом джиттере встроенная PLL теряет синхронизацию.

Пришлось пойти по другому пути - GTP настроил на режим lock-to-reference, т.е. входной поток принимался на собственной частоте микросхемы (которая может быть отличной от частоты входного сигнала).
Входной поток получался вида:
0000111100001111000001111000011110000111100001111100001111
То есть в случае несоответствия частот принимаемого потока и опорной микросхемы в потоке периодически появляются биты "длиной" пять (или три, смотря в какую сторону расхождение) отсчетов, что довольно легко устраняется, в результате чего извлекаем нужные данные.

Такая реализация позволила поднять устойчивость к джиттеру, но появилась другая проблема.
Надо не только извлекать без потерь данные из входного потока, но и восстанавливать частоту, которая в дальнейшем должна идти на вход различных PLLек системы.
Описанный выше метод позволяет выдать лишь, по сути, собственную опорную частоту микросхемы, с изменяющейся довольно редко (частота изменения порядка 0...1000Гц в зависимости от разницы частот) фазой, но сразу на 90 градусов.
То есть, имеем выходную частоту вида:
001100110011...00110001100110011001100...110011100

В принципе, можно сделать так, чтобы скачки были не на 90, а на 45 градусов (поднять частоту дискретизации в 2 раза).

Собственно, вопрос.
Можно ли из этого как-то восстановить "нормальную" частоту входного сигнала?.
Так, чтобы с ней можно было работать как с нормальной частотой, подавать на входы PLLек и т.д..
Желательно, конечно, средствами ПЛИС - т.е. DCM&PLL.

Заранее спасибо за любые идеи.
Go to the top of the page
 
+Quote Post
Victor®
сообщение Apr 21 2011, 08:22
Сообщение #2


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Koluchiy @ Apr 21 2011, 11:10) *
Здравствуйте, уважаемые гуру.

Подскажите пожалуйста, как подступиться к следующей проблеме.

Для начала краткая предыстория.

Есть микросхема Spartan-6LXT.
К ней на вход GTP приходит поток STM-1 (155.52Mhz).
Надо восстановить из потока опорную частоту в более-менее приличном виде.

Трабла в следующем. GTP Спартана-6 поддерживает частоты от 614МГц.
Соответственно, работать напрямую с потоком 155.52 МГц оно не может.
Можно использовать передискретизацию - GTP настраивается на частоту в (допустим) 4 раза больше, принимать и передавать каждый бит 4 раза.

И я так делал, оно работало... Одна проблема - устойчивость к джиттеру слишком слабая, на большом джиттере встроенная PLL теряет синхронизацию.

Пришлось пойти по другому пути - GTP настроил на режим lock-to-reference, т.е. входной поток принимался на собственной частоте микросхемы (которая может быть отличной от частоты входного сигнала).
Входной поток получался вида:
0000111100001111000001111000011110000111100001111100001111
То есть в случае несоответствия частот принимаемого потока и опорной микросхемы в потоке периодически появляются биты "длиной" пять (или три, смотря в какую сторону расхождение) отсчетов, что довольно легко устраняется, в результате чего извлекаем нужные данные.

Такая реализация позволила поднять устойчивость к джиттеру, но появилась другая проблема.
Надо не только извлекать без потерь данные из входного потока, но и восстанавливать частоту, которая в дальнейшем должна идти на вход различных PLLек системы.
Описанный выше метод позволяет выдать лишь, по сути, опорную частоту, с изменяющейся довольно редко (частота изменения порядка 0...1000Гц в зависимости от разницы частот) фазой, но сразу на 90 градусов.
То есть, имеем выходную частоту вида:
001100110011...00110001100110011001100...110011100

В принципе, можно сделать так, чтобы скачки были не на 90, а на 45 градусов (поднять частоту дискретизации в 2 раза).

Собственно, вопрос.
Можно ли из этого как-то восстановить "нормальную" частоту входного сигнала?.
Так, чтобы с ней можно было работать как с нормальной частотой, подавать на входы PLLек и т.д..
Желательно, конечно, средствами ПЛИС - т.е. DCM&PLL.

Заранее спасибо за любые идеи.


Мне не очень понятно, почему приняли решение использовать именно GTP...
На LVDS буферах не было-бы проще это сделать?


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Apr 21 2011, 08:30
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата
Мне не очень понятно, почему приняли решение использовать именно GTP...
На LVDS буферах не было-бы проще это сделать?


Да ну в общем удобно... По крайней мере так казалось, пока не обнаружилась проблема с неустойчивостью к входному джиттеру.
Собственно, та же плата с другими настройками должна работать как STM-4, а там описанных выше проблем вроде нет...

Разницы-то большой нет, всё равно надо как-то получать частоту из того, что есть.
Хоть через GTP, хоть через LVDS...
Можно, конечно, поставить внешний CDR, который смог бы работать нормально на частоте 155.52...
Но хотелось бы обойтись без этого.
Лучше всего как-то найти решение внутри ПЛИС.
Как вариант - поставить какую-то внешнюю микросхему, которая из моей псевдочастоты восстановит исходную частоту потока...
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 21 2011, 08:44
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Koluchiy @ Apr 21 2011, 02:30) *
Можно, конечно, поставить внешний CDR, который смог бы работать нормально на частоте 155.52...

я бы сделал так %)


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Apr 21 2011, 08:45
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Koluchiy @ Apr 21 2011, 12:30) *
Да ну в общем удобно... По крайней мере так казалось, пока не обнаружилась проблема с неустойчивостью к входному джиттеру.
Собственно, та же плата с другими настройками должна работать как STM-4, а там описанных выше проблем вроде нет...

Разницы-то большой нет, всё равно надо как-то получать частоту из того, что есть.
Хоть через GTP, хоть через LVDS...
Можно, конечно, поставить внешний CDR, который смог бы работать нормально на частоте 155.52...
Но хотелось бы обойтись без этого.
Лучше всего как-то найти решение внутри ПЛИС.
Как вариант - поставить какую-то внешнюю микросхему, которая из моей псевдочастоты восстановит исходную частоту потока...

Я бы для плис использовал внешний тактовый генератор на 155,52. Тогда приём обычным ddr триггерами или iresdesами в ячейках ввода-вывода с передескритизацией в 4 раза. Данные потом корректруются алгоритмом (data recovery, описан в xapp) чтобы разность частот учесть. Вроде даже в logicore как то видел готовый модуль для data recovery.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Apr 21 2011, 09:00
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата(des00 @ Apr 21 2011, 12:44) *
я бы сделал так %)

Плату переделывать...

Цитата(dmitry-tomsk @ Apr 21 2011, 12:45) *
Я бы для плис использовал внешний тактовый генератор на 155,52. Тогда приём обычным ddr триггерами или iresdesами в ячейках ввода-вывода с передескритизацией в 4 раза. Данные потом корректруются алгоритмом (data recovery, описан в xapp) чтобы разность частот учесть. Вроде даже в logicore как то видел готовый модуль для data recovery.

О каком xapp речь, если не секрет?

Проблем с data recovery нет... Всё нормально восстанавливается.
Проблемы есть только с приведением восстановленной частоты к пристойному виду.
Думаю, такая проблема есть для любого алгоритма цифрового CDR, не только моего...

Вот думаю, будет ли плодотворна следующая идея.
На вход DCM подается собственная опорная частота.
И через интерфейс внешнего управления DCM изменять ее, частоты, фазу согласно сигналам из алгоритма CDR.
При этом, из алгоритма CDR поступают команды на сдвиг фазы на 90 градусов, а фазу DCM двигать не рывком на 90, а плавно, шажочками, насколько это возможно... А потом переключаться на выход, сдвинутый по фазе на 90.
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Apr 21 2011, 12:17
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Koluchiy @ Apr 21 2011, 12:00) *
Плату переделывать...


О каком xapp речь, если не секрет?

Проблем с data recovery нет... Всё нормально восстанавливается.
Проблемы есть только с приведением восстановленной частоты к пристойному виду.
Думаю, такая проблема есть для любого алгоритма цифрового CDR, не только моего...

Вот думаю, будет ли плодотворна следующая идея.
На вход DCM подается собственная опорная частота.
И через интерфейс внешнего управления DCM изменять ее, частоты, фазу согласно сигналам из алгоритма CDR.
При этом, из алгоритма CDR поступают команды на сдвиг фазы на 90 градусов, а фазу DCM двигать не рывком на 90, а плавно, шажочками, насколько это возможно... А потом переключаться на выход, сдвинутый по фазе на 90.

Data recovery разный есть, xapp древний не помню. Смысл вообще не восстанавливать тактовую, не двигать фазой dcm и частотой pll. Есть стабильная тактовая с pll, по ней снимаются данные со входа. А конечный автомат выдаёт каждый такт либо один бит данных (почти всегда), либо 2 бита данных иногда, если тактовая меньше частоты данных, либо 0 бит данных - если больше. Преимущества - не надо обучать, нет потерь, работает на больших разницах частот и при большом джиттере входных данных. Минус - ограничение по частоте данных, слишком большую нельзя выбирать в нескольких точках.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Apr 21 2011, 12:23
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата
Смысл вообще не восстанавливать тактовую, не двигать фазой dcm и частотой pll. Есть стабильная тактовая с pll, по ней снимаются данные со входа. А конечный автомат выдаёт каждый такт либо один бит данных (почти всегда), либо 2 бита данных иногда, если тактовая меньше частоты данных, либо 0 бит данных - если больше.

Так я так сейчас и делаю.
И трабла именно в том, что тактовая всё равно нужна.
Не для работы собственно CDR, а для других нужд.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 21 2011, 15:19
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Koluchiy @ Apr 21 2011, 07:23) *
И трабла именно в том, что тактовая всё равно нужна.

вот именно по этому надо было закладывать нормальный CDR, на такие жертвы порой приходится идти ради получение на приемной стороне чистого клока biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Apr 21 2011, 15:55
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Koluchiy @ Apr 21 2011, 19:23) *
Так я так сейчас и делаю.
И трабла именно в том, что тактовая всё равно нужна.
Не для работы собственно CDR, а для других нужд.

Тактовая нужна именно 155МГц или поровну какая, лишь бы что-то было?
В системе нет других стабильных источников? Если есть то в чём проблема перейти
через фифошку (на входе - recovered clock, на выходе - стабильный клок) в другой
домен с заведомо более шустрыми клоками. Поток данных регулировать с помощью дополнительного
сигнала валидности. При желании - сгородить автомат на выходе фифошки, который будет "нарезать"
поток на блоки определённой длины?


Цитата(des00 @ Apr 21 2011, 22:19) *
вот именно по этому надо было закладывать нормальный CDR, на такие жертвы порой приходится идти ради получение на приемной стороне чистого клока biggrin.gif

ИМХО клок с выхода CDR по определению "чистым" быть не может, ибо он recovered, у него приличный джиттер. Правильнее работать от кварцованного источника,
несоответствие частот разруливать средствами протокола.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 21 2011, 16:08
Сообщение #11


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Bad0512 @ Apr 21 2011, 09:55) *
ИМХО клок с выхода CDR по определению "чистым" быть не может, ибо он recovered, у него приличный джиттер. Правильнее работать от кварцованного источника,
несоответствие частот разруливать средствами протокола.

ну прям, посмотрите на все CDR для OC потоков. везде стоят гуны + петли + задаются определенные маски на джиттер. средствами протокола разруливать SDH достаточно геморойное занятие. Кроме того гасители джиттера не зря для таких вещей придумали


--------------------
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Apr 21 2011, 16:32
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(des00 @ Apr 21 2011, 23:08) *
ну прям, посмотрите на все CDR для OC потоков. везде стоят гуны + петли + задаются определенные маски на джиттер. средствами протокола разруливать SDH достаточно геморойное занятие. Кроме того гасители джиттера не зря для таких вещей придумали

Могу сказать про область, с которой сам довольно плотно общался, а именно SDI video. Так вот, в приложениях, где надо принять видео, обработать и потом отдать на выход в случаях HD (1.5GHz) и 3G(3GHz)
никогда никто recovered clock для тактирования выхода не пользует. Именно из-за высоких требований на джиттер.Да, можно сделать внешнюю ПЛЛ-ку, управляемую из FPGA, такие даже существуют (см. например GS4911), но есть и другой способ. Выход работает на своей кварцованной частоте. Данные со входа валятся во фреймбуфер во внешней памяти, выход кормится тоже из этого фреймбуфера. Для устранения коллизий буферов обычно бывает несколько (минмум - два). Понятно, что примерно раз 10^4 кадров приходится либо дропать кадр либо повторять его, но в этом нет ничего страшного - никто не увидит.Способ этот хорош тем, что никакие казусы на входе (нестабильный клок, пропадение сигнала, etc.) не приводят к остановке выхода, более того вся логика, тактируемая от кварцованного клока в такой схеме, неубиваема. В случае внешней плл-ки пропажа входного сигнала может привести к печальным последствиям.
В общем, подводя резюме, всё зависит от протокола и задачи - допустимо ли свдвигать данные по времени и рулить потоком в данном приложении.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 21 2011, 16:40
Сообщение #13


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Bad0512 @ Apr 21 2011, 11:32) *
Могу сказать про область, с которой сам довольно плотно общался, а именно SDI video.

здесь как я понял речь идет именно об SDH иерархии, в частности STM-1, а там за такое
Цитата
Понятно, что примерно раз 10^4 кадров приходится либо дропать кадр либо повторять его, но в этом нет ничего страшного - никто не увидит.

руки обрывают по самую голову biggrin.gif

там требования на остаточный коэффициент ошибок 2^-13 (одна битовая ошибка в два дня), а вы кадр дропать/повторять....

2 Koluchiy
поставили бы и не парились biggrin.gif


--------------------
Go to the top of the page
 
+Quote Post
wolfman
сообщение Apr 21 2011, 17:33
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 529
Регистрация: 15-06-05
Из: Питер
Пользователь №: 6 032



to Koluchiy Я вроде бы Вам, в свое время, указывал на необходимость CDR, но тогда у Вас была задача STM-4 поднять. laughing.gif
Если не забуду завтра спрошу у коллеги, у него что-то похожее было, правда на альтере.


--------------------
Россия это даже не страна.
Россия это секрет, завернутый в загадку и укрытый не проницаемой тайной...
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Apr 22 2011, 07:16
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата(Bad0512 @ Apr 21 2011, 19:55) *
Тактовая нужна именно 155МГц или поровну какая, лишь бы что-то было?

Нужна частота, кратная частоте приходящего потока.
Один из основных принципов SDH - синхронность, т.е. аппаратура работает на одной частоте, задаваемой высокостабильным источником. Эта частота передается через потоки данных, ее надо уметь восстановить, тактироваться от нее и передавать дальше.

Цитата(des00 @ Apr 21 2011, 20:40) *
2 Koluchiy
поставили бы и не парились biggrin.gif


Да я найду, чего поставить из CDR.
Но хотца ставить не CDR, а какую-нибудь мегаPLL, которая сможет справиться с моей "крякозяброй" типа 0011001110011 или подобной и сделать из нее нормальную частоту.
Выигрыш будет в том, что такую микросхему можно поставить одну, а CDR надо ставить по одной на канал...

Цитата(wolfman @ Apr 21 2011, 21:33) *
to Koluchiy Я вроде бы Вам, в свое время, указывал на необходимость CDR, но тогда у Вас была задача STM-4 поднять. laughing.gif
Если не забуду завтра спрошу у коллеги, у него что-то похожее было, правда на альтере.

Было, да. Но тогда я еще не знал о том, что по приему STM1 будет трабла с устойчивостью к джиттеру...
Go to the top of the page
 
+Quote Post

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

 


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


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