Здравствуйте, уважаемые гуру.
Подскажите пожалуйста, как подступиться к следующей проблеме.
Для начала краткая предыстория.
Есть микросхема 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.
Заранее спасибо за любые идеи.