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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Выделение тактовой синхронизации
evg123
сообщение Sep 15 2006, 11:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Задача такая: Есть поток 16-ричных цифр - оцифровнный аналоговый сигнал на фоне гауссового шума со скоростью где-то 100-200 KSPS т.е. цифровой сигнал. Сигнал представляет собой медленную последовательность нулей и единиц (10 кБод) пропущенную через фильтр преподнятого косинуса и переданную в эфир. Из этих, полученных из эфира, волн требуется выделить тактовую синхронизацию, т.е. место стробирования в котором нулевая ISI. Задача классическая, может быть кто-то знает алгоритм как это сделать.

Сообщение отредактировал evg123 - Sep 15 2006, 11:32
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 15 2006, 12:26
Сообщение #2


Эксперт
*****

Группа: Свой
Сообщений: 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

Много букв, еле осилил wink.gif
Go to the top of the page
 
+Quote Post
Fast
сообщение Sep 15 2006, 13:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 31-03-05
Из: Зеленоград
Пользователь №: 3 839



только я не понял, какой вид модуляции используется: ФМ(ОФМ), ЧМ, ММС
там тактироваться по-разному придется
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 15 2006, 14:01
Сообщение #4


Эксперт
*****

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



Для большинства видов простой модуляции можно использовать упомянутые алгоритмы. Если выделить сначала "информационную" огибающую

Например для ЧМ - Ставим два фильтра на соответствующие частоты, фильтруем, вычитаем, возводим в квадрат. То, cё. Имеем огибающую.
Для ФМ - сносим на нулевую частоту, фильтруем согласованым фильтром, берём модуль сигнала (хоть действительного, хоть комплесного). Все дела, хоть BPSK, хоть QPSK
Ну и т.д. Примерно так можно сформировать сигнал который в основном постоянный, а в точках перехода (смены инф. символов) имеет выбросы. Эта огибающая есть случайный набор коротких импульсов с периодичностью равной исходной символьной. Случайный, с пропусками импульсов.
Строго периодическим он был бы только на меандре.
И все 3 упомянутых алгоритма будут работать.

Сообщение отредактировал fontp - Sep 15 2006, 15:03
Go to the top of the page
 
+Quote Post
evg123
сообщение Sep 15 2006, 14:36
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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

Много букв, еле осилил wink.gif

Спасибо. Логика понятна. Для чтырехуровневого сигнала - это будет три глаза. Но по-видимому это ничего не меняет.
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 15 2006, 14:55
Сообщение #6


Эксперт
*****

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



Типа того. Вы должны придумать нелинейную схему предварительной обработки при которой переход превращается в единичный импульс, а отсутствие перехода - идёт как постоянная составляющая, а лучше 0. Дальше всё будет работать
Go to the top of the page
 
+Quote Post
kons
сообщение Sep 18 2006, 08:23
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Для выделения тактовой синхронизации из baseband данных обычно использую ФАПЧ со следующим дискриминатором: err[k] = x[k-0.5]*(x[k]-x[k-1]), где x[k] - отсчеты с выхода согласованного фильтра, вычисляемые с удвоенной битовой частотой (отсюда - x[k-0.5]). Кроме того, использовал модификацию этого алгоритма для выделения тактов из комплексного QPSK сигнала, причем до восстановления несущей.
Go to the top of the page
 
+Quote Post
evg123
сообщение Sep 18 2006, 17:37
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 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 сигнала, причем до восстановления несущей.

Не совсем понятно. Две выборки на бит? Я что-то не догоняю, как это увязать в алгоритм. Можете по-подробней пояснить? В общем-то проблема еще и в том, что сигнал четырехрпозиционный.
Go to the top of the page
 
+Quote Post
kons
сообщение Sep 19 2006, 08:36
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 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]) )
Go to the top of the page
 
+Quote Post
kons
сообщение Sep 19 2006, 09:00
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 28-09-05
Пользователь №: 9 035



Пардон, последнюю строку надо читать:
err[k] = x[k-0.5]*( sign(x[k]) - sign(x[k-1]) )
Go to the top of the page
 
+Quote Post
evg123
сообщение Sep 19 2006, 09:01
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Идея понятна. АЦП стоит после согл. фильтра. Это звукоквой АЦП, который кидает 16-бит слова с частотой 44.1 КГц (AD1870) в синхронном последовательном формате. АЦП (по моему) не удасться запускать самому. Он берет сигнал, децимирует его и цифрует и дает поток данных. 9 выборок на символ. четыре символа, гладкая четырехгорбая волна. С частотй 4.8КГц. Но ваш алгоритм хороший. Пока не знаю как его присобачить.

Сообщение отредактировал evg123 - Sep 19 2006, 09:14
Go to the top of the page
 
+Quote Post
petrov
сообщение Sep 19 2006, 10:00
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Вот моделька простенькая для симулинка (7-ой матлаб), там 8-PSK но это не важно для QPSK тоже самое.

Сообщение отредактировал petrov - Sep 19 2006, 10:05
Прикрепленные файлы
Прикрепленный файл  dqpsk_19_09_2006.rar ( 10.43 килобайт ) Кол-во скачиваний: 156
 
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 19 2006, 10:12
Сообщение #13


Эксперт
*****

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



Цитата(petrov @ Sep 19 2006, 14:00) *
Вот моделька простенькая для симулинка (7-ой матлаб), там 8-PSK но это не важно для QPSK тоже самое.


Правда у него типа QFSK. Кроме того последовательные алгоритмы (с ФАПЧ) подходят больше для случая когда есть аппаратная возможность передвигать точку выборки АЦП. Пересчитывать на лету интерполятор не есть очень здорово в смысле быстродействия.
Go to the top of the page
 
+Quote Post
petrov
сообщение Sep 19 2006, 10:16
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 19 2006, 10:20
Сообщение #15


Эксперт
*****

Группа: Свой
Сообщений: 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. Можно и реализацию такую сделать чтоб на лету можно было менять, дополнительных ресурсов это практически не потребует.


частотная модуляция, не фазовая
Go to the top of the page
 
+Quote Post

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

 


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


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