|
Выделение тактовой синхронизации |
|
|
|
Sep 15 2006, 12:26
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(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Много букв, еле осилил
|
|
|
|
|
Sep 15 2006, 14:01
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Для большинства видов простой модуляции можно использовать упомянутые алгоритмы. Если выделить сначала "информационную" огибающую
Например для ЧМ - Ставим два фильтра на соответствующие частоты, фильтруем, вычитаем, возводим в квадрат. То, cё. Имеем огибающую. Для ФМ - сносим на нулевую частоту, фильтруем согласованым фильтром, берём модуль сигнала (хоть действительного, хоть комплесного). Все дела, хоть BPSK, хоть QPSK Ну и т.д. Примерно так можно сформировать сигнал который в основном постоянный, а в точках перехода (смены инф. символов) имеет выбросы. Эта огибающая есть случайный набор коротких импульсов с периодичностью равной исходной символьной. Случайный, с пропусками импульсов. Строго периодическим он был бы только на меандре. И все 3 упомянутых алгоритма будут работать.
Сообщение отредактировал fontp - Sep 15 2006, 15:03
|
|
|
|
|
Sep 15 2006, 14:36
|
Местный
  
Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282

|
Уточняю: Речь идет на самом деле о черырех-уровневом сигнале., т.е. QFSK. Но сигнал уже перенесен на BASEband, посредством частотного дискриминатора. Т.е. получен из эфира, снесен на ПЧ, снесен на BaseBand, и имею такие гладкие четырех-уровневые видео волны (с возможными прыжками между самым нижним и самым верхним уровнями), только не в аналоге, а в цифровом потоке. Цитата(fontp @ Sep 15 2006, 16:26)  Цитата(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Много букв, еле осилил  Спасибо. Логика понятна. Для чтырехуровневого сигнала - это будет три глаза. Но по-видимому это ничего не меняет.
|
|
|
|
|
Sep 18 2006, 17:37
|
Местный
  
Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282

|
Цитата(kons @ Sep 18 2006, 12:23)  Для выделения тактовой синхронизации из baseband данных обычно использую ФАПЧ со следующим дискриминатором: err[k] = x[k-0.5]*(x[k]-x[k-1]), где x[k] - отсчеты с выхода согласованного фильтра, вычисляемые с удвоенной битовой частотой (отсюда - x[k-0.5]). Кроме того, использовал модификацию этого алгоритма для выделения тактов из комплексного QPSK сигнала, причем до восстановления несущей. Не совсем понятно. Две выборки на бит? Я что-то не догоняю, как это увязать в алгоритм. Можете по-подробней пояснить? В общем-то проблема еще и в том, что сигнал четырехрпозиционный.
|
|
|
|
|
Sep 19 2006, 08:36
|
Частый гость
 
Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035

|
Надо определиться, где стоит АЦП. Если после аналогового согласованного фильтра, то достаточно двух выборок на бит. При этом должна быть возможность двигать фазу выборки (управлять таймером, пускающим АЦП). Если же согласованный фильтр цифровой, то желательно иметь хотя бы 4 выборки. Фазу можно двигать как управляя таймером, так и интерполируя между выборками Если выборок > 8...16, то можно двигать фазу дискретно. В любом случае отсчеты с выхода согласованного фильтра берутся 2 раза за битовый интервал. Для четырехпозиционного сигнала могу навскидку предложить: err[k] = (x[k-0.5] - (x[k]+x[k-1])/2)*(x[k]-x[k-1]) или (сигнал должен быть симметричен относительно 0, позиции: -A,-A/3,A/3,A): err[k] = x[k-0.5]*( abs(x[k]) - abs(x[k-1]) )
|
|
|
|
|
Sep 19 2006, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(fontp @ Sep 19 2006, 14:12)  Цитата(petrov @ Sep 19 2006, 14:00)  Вот моделька простенькая для симулинка (7-ой матлаб), там 8-PSK но это не важно для QPSK тоже самое.
Правда у него типа QFSK Ну эту модельку 3 секунды переделать на BPSK, QPSK, 8-PSK.....n-PSK. Можно и реализацию такую сделать чтоб на лету можно было менять, дополнительных ресурсов это практически не потребует. ФАПЧ там нету, всё feedforward. В модели отсчёт с выхода согласованного фильтра берётся с точностью до количества отсчётов на символ(в модели 8). Если этого не достаточно можно поставить интерполятор Farrow, он не требует высоких вычислительных затрат, и хорошо работает при условии передискретизации больше чем в 4,5 отсчёта на символ(зависит ещё от коэффициента ската приподнятого косинуса) что как раз выполняется у автора топика.
Сообщение отредактировал petrov - Sep 19 2006, 10:26
|
|
|
|
|
Sep 19 2006, 10:20
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(petrov @ Sep 19 2006, 14:16)  Цитата(fontp @ Sep 19 2006, 14:12)  Цитата(petrov @ Sep 19 2006, 14:00)  Вот моделька простенькая для симулинка (7-ой матлаб), там 8-PSK но это не важно для QPSK тоже самое.
Правда у него типа QFSK Ну эту модельку 3 секунды переделать на BPSK, QPSK, 8-PSK.....n-PSK. Можно и реализацию такую сделать чтоб на лету можно было менять, дополнительных ресурсов это практически не потребует. частотная модуляция, не фазовая
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|