|
Восстановление частоты из потока цифр, Как получить качественную частоту? |
|
|
|
Apr 21 2011, 08:10
|
Знающий
   
Группа: Свой
Сообщений: 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.
Заранее спасибо за любые идеи.
|
|
|
|
|
 |
Ответов
|
Apr 21 2011, 08:30
|
Знающий
   
Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543

|
Цитата Мне не очень понятно, почему приняли решение использовать именно GTP... На LVDS буферах не было-бы проще это сделать? Да ну в общем удобно... По крайней мере так казалось, пока не обнаружилась проблема с неустойчивостью к входному джиттеру. Собственно, та же плата с другими настройками должна работать как STM-4, а там описанных выше проблем вроде нет... Разницы-то большой нет, всё равно надо как-то получать частоту из того, что есть. Хоть через GTP, хоть через LVDS... Можно, конечно, поставить внешний CDR, который смог бы работать нормально на частоте 155.52... Но хотелось бы обойтись без этого. Лучше всего как-то найти решение внутри ПЛИС. Как вариант - поставить какую-то внешнюю микросхему, которая из моей псевдочастоты восстановит исходную частоту потока...
|
|
|
|
|
Apr 21 2011, 08:45
|
Знающий
   
Группа: Свой
Сообщений: 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.
|
|
|
|
Сообщений в этой теме
Koluchiy Восстановление частоты из потока цифр Apr 21 2011, 08:10 Victor® Цитата(Koluchiy @ Apr 21 2011, 11:10) Здр... Apr 21 2011, 08:22 des00 Цитата(Koluchiy @ Apr 21 2011, 02:30) Мож... Apr 21 2011, 08:44  Koluchiy Цитата(des00 @ Apr 21 2011, 12:44) я бы с... Apr 21 2011, 09:00   dmitry-tomsk Цитата(Koluchiy @ Apr 21 2011, 12:00) Пла... Apr 21 2011, 12:17 Koluchiy ЦитатаСмысл вообще не восстанавливать тактовую, не... Apr 21 2011, 12:23 des00 Цитата(Koluchiy @ Apr 21 2011, 07:23) И т... Apr 21 2011, 15:19 Bad0512 Цитата(Koluchiy @ Apr 21 2011, 19:23) Так... Apr 21 2011, 15:55  des00 Цитата(Bad0512 @ Apr 21 2011, 09:55) ИМХО... Apr 21 2011, 16:08   Bad0512 Цитата(des00 @ Apr 21 2011, 23:08) ну пря... Apr 21 2011, 16:32    des00 Цитата(Bad0512 @ Apr 21 2011, 11:32) Могу... Apr 21 2011, 16:40  Koluchiy Цитата(Bad0512 @ Apr 21 2011, 19:55) Такт... Apr 22 2011, 07:16   wolfman ЦитатаБыло, да. Но тогда я еще не знал о том, что ... Apr 22 2011, 14:54 wolfman to Koluchiy Я вроде бы Вам, в свое время, указывал... Apr 21 2011, 17:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|