Цитата(evg123 @ Sep 15 2006, 15:31)

Задача такая: Есть поток 16-ричных цифр - оцифровнный аналоговый сигнал на фоне гауссового шума со скоростью где-то 100-200 KSPS т.е. цифровой сигнал. Сигнал представляет собой медленную последовательность нулей и единиц (10 кБод) пропущенную через фильтр преподнятого косинуса и переданную в эфир. Из этих, полученных из эфира, волн требуется выделить тактовую синхронизацию, т.е. место стробирования в котором нулевая ISI. Задача классическая, может быть кто-то знает алгоритм как это сделать.
Надо понимать так, что у вас амплитудно-модулированый сигнал. Можно считать что это последовательность из 1, -1. Алгоритм зависит от того какая точность вам нужна. Кроме того
зависит от того блочно или последовательно вы будете весть обработку.
Простейший алгоритм будет пытаться определить фазу точек перехода через 0 (1 -> -1 или -1 -> 1).
В простейшем случае возводим сигнал в квадрат и для N позиций тактовой фазы внутри битового интервала (N число отсчётов на бит) посдчитываем сумму этих самых квадратов с шагом Tb.
T/e считается N сумм с индексом суммирования t= t(i) + Tb*j, сумма по j, t(i) = Tb/N*i, i=0...N-1
К той фазе, которая даст минимум, добавим половину битового интервала Tb/2. Иногда вместо квадрата используют модуль или ещё какую нелинейную функцию.
Всё.
Очень грамотно для блочной обработки делать так. Если огибаящая S(t) (квадрат сигнала в данном случае)
подсчитываем
A = СУММА (S(t)*sin(2*pi*t/Tb))
B = СУММА (S(t)*cos(2*pi*t/Tb)),
Tb - бодовый интервал (битовый в данном случае)
тогда фаза Ф точки тактовой выборки (eye openning point) есть
Ф = arctg(A/B)
В какой-то степени эти алгоритмы можно переформулировать в последовательном виде.
Вообще-то для последовательного обнаружения есть своя наука например алгоритм Гарднера
+ ФАПЧ
http://www.edaboard.com/viewtopic.php?t=18...ght=timingerrorМного букв, еле осилил