Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Декодирование FSK
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Dmitry_R
Через мировой эфир передается цифровой сигнал со скоростью 333 бод, используя частотную манипуляцию без разрыва фазы. 1000Гц единичка, 1333Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 10 единичных бит.
Сейчас для декодирования этой посылки используется ФАПЧ настроенный на 1167Гц.
Так вот! Есть мысль, что используя цифровую обработку этой посылки, можно существенно повысить вероятность правильного приема, сильно обезображенной эфирными помехами посылки.
Так ли это? И если так то какие алкогоритмы лучше применить? Корреляционный когерентный метод спасет меня? Или по сравнению с ФАПЧ не будет ни какого выигрыша?
bmf
Насчет выигрыша с ФАПЧ не знаю, но сам метод и алгоритм декодировани FSK (теория) хорошо описан в http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa037
посмотри, может пригодится
proxi
Цитата(bmf @ Jun 24 2005, 13:27)
Насчет выигрыша с ФАПЧ не знаю, но сам метод и алгоритм декодировани FSK (теория) хорошо описан в http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa037
посмотри, может пригодится
*

Более того могу порекомендовать книгу Цифровая связь Бернард Скляр,если
не все то некоторые главы.Еще можно посмотреть готовые модемы подобные
применялись в NMT мобильниках Benefon Dancall производитель CML. cheers.gif
Fast
Цитата(Dmitry_R @ Jun 24 2005, 11:34)
Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.
Очень много зависит от индекса модуляции, т.е. отношения разноса частот к бодовой скорости. От этого будет и алгоритм плясать. Потом, какие требования к быстродействию и пожиранию ресурсов, какой канал: гаусса или релея.. ?
А пока, если можно, выложите образец сигнала в виде PCM-файла, например с частотой дискретизации Fd=8000Гц. Мне совершенно непонятно, почему 1200Гц 3100Гц при 9600 бод, т.е. 1900/9600=0.197916666 - нелепица, даже как ФМ не получается обрабатывать. Если только
0 - 1200Гц
1 - 3120Гц
9600 / (3120-1200) = 5 бод/Гц, я так понимаю не бод все-таки, а бит/Гц
т.е. коггерентно как ФМ-32 обрабатывать, ммм-да, фигня какая-то.
vm1
Цитата(Dmitry_R @ Jun 24 2005, 11:34)
Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.
*


Так не бывает при FSK, несущая здесь меньше скорости обмена.
Котельнков будет возмущатся.
Fast
Цитата(vm1 @ Jun 27 2005, 17:35)
Так не бывает при FSK, несущая здесь меньше скорости обмена. Котельнков будет возмущатся.
Вот и говорю: это 9600 бит / сек. Но тогда с часотами 0/1 нелепица.. Пусть лучше PCM-файл даст - разберемся как-нибудь
Tommyknocker
Цитата(vm1 @ Jun 27 2005, 17:35)
Цитата(Dmitry_R @ Jun 24 2005, 11:34)
Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.
*


Так не бывает при FSK, несущая здесь меньше скорости обмена.
Котельнков будет возмущатся.
*



Полагаю, что с несущей здесь какое-то недоразумение. Понятно, чтобы обеспечить передачу данных со скоростью 9600 бит/сек полоса сигнала нужна порядка 20 кГц. Наверное автор имел ввиду, что 1 это частота, отличающаяся от несущей (влево или вправо) на 1200 Гц, а 0 - соответственно на 3100 Гц.


Что касается обработки сигнала, то неплохо бы выяснить энергетику канала связи, дальность и т.д.
Корреляционный приемник вы в данном случае построить явно не сможете, поскольку, как я понял структура Вашего сигнала не содержит какой-либо поднесущей (код баркера, м-последовательность и т.д.).

Ну, а если ФАПЧ у Вас до сих пор работала, то зачем что-то искать еще ?

Если возмжно, примените современные методы кодирования с возможностью обнаружения и исправления ошибок (Коды Рида-Соломона как пример). Аппаратная реализация конечно усложнится: Вам придется разрабатывать либо соответствующую схему на ПЛИС либо решить все на каком-нибудь ЦСП (тактовая частота то у Вас будет не Бог весть какая и Вы все задачи сможете решить просто на математике), предварительно конечно поработав над теорией циклических кодов, но ведь стоит задача обеспечить робастность канала связи, а это сегодня общепринятые приемы для этого.
Кстати, если вы отважитесь замкнуть обратную связь своей схемы сопровождения через процессор, то Вы сможете оперативно менять дискриминаторы с ЧАП, которая более помехоустойчивая нежели ФАПЧ на дискриминатор ФАПЧ, менять шумовую полосу в фильтре контура сопровождения в случае если будет какая-то дополнительная динамика сигнала, вызванная движением объекта (если оно будет), определять отношение сигнал/шум и т.д.
Dmitry_R
[/quote]

Так не бывает при FSK, несущая здесь меньше скорости обмена.
Котельнков будет возмущатся.
*

[/quote]

Полагаю, что с несущей здесь какое-то недоразумение.

Ну, а если ФАПЧ у Вас до сих пор работала, то зачем что-то искать еще ?
*

[/quote]
Так и есть, напутал я с исходными данными.
1 -1000Гц
0 - 1333Гц
скорость передачи 333бод.
Вот я и хочу узнать можно ли с помощью ЦОС получить декодер лучше ФАПЧа?
Dmitry_R
Цитата(Fast @ Jun 27 2005, 15:12)
Цитата(Dmitry_R @ Jun 24 2005, 11:34)
ммм-да, фигня какая-то.
*

Напутал я с исходными данными. Извини, бес попутал smile.gif
1 -1000Гц
0 - 1333Гц
скорость передачи 333бод.
Преамбула около 10 единичек.
Хотел реализовать это не AT91SAM7S256, если не будет хватать вычислительных ресурсов то на ADuC702x (у него есть умножение с накоплением)
Канал релея. Ибо сильно плавает уровень сигнала, а белого шума на кодограмме я не заметил.
Привожу две кодограммы. Одна плохая, которую очень хотелось бы принимать, другая хорошая, которую нельзя не принять. smile.gif
Stanislav
Цитата(Dmitry_R @ Jun 24 2005, 11:34)
Через мировой эфир передается цифровой сигнал со скоростью 333 бод, используя частотную манипуляцию без разрыва фазы. 1000Гц единичка, 1333Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 10 единичных бит.
    Сейчас для декодирования этой посылки используется ФАПЧ настроенный на 1167Гц.
    Так вот! Есть мысль, что используя цифровую обработку этой посылки, можно существенно повысить вероятность правильного приема, сильно обезображенной эфирными помехами посылки.
    Так ли это? И если так то какие алкогоритмы лучше применить? Корреляционный когерентный метод спасет меня? Или по сравнению с ФАПЧ не будет ни какого выигрыша?
*

Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.
1. Чисто умозрительно представим сигнал в виде суммы двух сигналов с разными несущими.
2. Умножаем сигнал на exp(jW1t) и exp(jW2t), где W1 и W2 - несущие частоты.
3. Выделяем комплексные огибающие сигналов с этими несущими с помощью ФНЧ, согласованного с огибающей элементарной посылки.
4. Находим модули комплексных огибающих для частот W1 и W2.
5. С помощью сравнения выясняем, какой сигнал доминирует.
6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов.
7. С бодовой частотой (333 Гц) производим выборку (децимацию) в моменты, соответствующие ожидаемым максимумам доминирования одного сигнала над другим, и это все.
К этому можно добавить, что такой метод близок к оптимальному для большинства каналов, хотя и не содержит таких полезных вещей, как адаптивный эквалайзер, АРУ и др., которые при желании можно добавить.
Для уменьшения вычислительных затрат необходимо правильно выбрать частоту дискретизации. В вашем случае это 4000 Гц. При этом вполне приличный приемник можно сделать даже на AVR микроконтроллере, не говоря уже об ARMе.
Fast
Цитата(Stanislav @ Jul 4 2005, 21:51)
Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.
    1. Чисто умозрительно представим сигнал в виде суммы двух сигналов с разными несущими.
    2. Умножаем сигнал на exp(jW1t) и exp(jW2t), где W1 и W2 - несущие частоты.
    3. Выделяем комплексные огибающие сигналов с этими несущими с помощью ФНЧ, согласованного с огибающей элементарной посылки.
    4. Находим модули комплексных огибающих для частот W1 и W2.
    5. С помощью сравнения выясняем, какой  сигнал доминирует.
....
К этому можно добавить, что такой метод близок к оптимальному для большинства каналов, хотя и не содержит таких полезных вещей, как адаптивный эквалайзер, АРУ и др., которые при желании можно добавить.
Для уменьшения вычислительных затрат необходимо правильно выбрать частоту дискретизации. В вашем случае это 4000 Гц. При этом вполне приличный приемник можно сделать даже на AVR микроконтроллере, не говоря уже об ARMе.
*
Квазикоггерентные приемы бывают очень эффективны в каналах с замираниями. Здесь действительно АРУ не нужно, все работает на отношении откликов с 2х фильтров. Но корректор поставить в этом случае практически нереально и др. тоже.
Знаю еще один подобный автокорреляционный метод:
1. Умножаем сигнал на комплексную центральную частоту exp(0.5j(W1+W2))
2. согласованный фильтр (впритык по спектру сигнала), тоже комплексный
3. интерполяция на частоту, кратную частоте следования посылок (напр. 16*Vm = 16*333 = 5328 Гц). 16 отсчетов на посылку - хорошо тактироваться.
4. Компл. умножение отсчетов(16-ти) текущей посылки на сопряженные предыдущей посылки.
5. Отслеживаем перепады уровня по Re или по Im и тактируемся: перепад - начало новой посылки, нет перепада - счетчик по модулю 16, надо по сигналу смотреть. Уровням < 0 - соотв.0, > 0 - соотв.1 (или наоборот - надо опять смотреть по сигналу).
В общих чертах так.

Все равно, эти квази-псевдо-автокор.когг. методы будут неоптимальными. Для канала Релея надо такой огород городить, что МК задымится: коггерентно + и АРУ, и ФАПЧ, и нелинейный корректор с обратной связью с ограничителями по усилению, а может и алгоритм демодуляции Витерби или ставить фильтр Калмана - мне грустно становится...

Лучше посмотри вариант от Stanislav`а или мой - что понравится и по затратам подойдет - дешевле (гораздо!!) для здоровья выйдет.
moonrock
to Stanislav: а можно подробнее узнать о 6 пункте
"6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов."
Какие методики существуют, где почитать(можно на англицком)? Очень интересно!
Stanislav
Цитата(moonrock @ Jul 9 2005, 15:51)
to Stanislav: а можно подробнее узнать о 6 пункте
"6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов."
Какие методики существуют, где почитать(можно на англицком)? Очень интересно!
*


Ссылок, к сожалению, сейчас дать не имею возможности, могу только посоветовать почитать литературу по модемной тематике. Для вас же пришел в голову следующий простой способ (в предположении, что огибающая элементарной посылки близка к прямоугольной). Если где ошибся - укажите.
1а. Возведите модули комплексных огибающих в квадрат.
2а. Найдите сумму двух результирующих функций. В спектре суммы будет мощная составляющая с тактовой частотой (333 Гц).
3а. Выделите эту составляющую с помощью линейного фильтра. Положение максимумов этой функции будет соответствовать максимумам корреляции. В эти моменты и нужно производить окончательную выборку.
4а. Для повышения помехоустойчивости сделайте адаптивный "генератор импульсов" выборки с тактовой частотой (333 Гц), попросту счетчик, синхронизируйте его с результатом п.3а. Для повышения точности слежения можно применить счетчик с целой и дробной частями, а также интерполяцию модулей комплексных огибающих. Целочисленная арифметика даст результат лишь ненамного хуже, т.к. у вас хорошие соотношения тактовой и несущих частот.
Далее с п.7 предыдущего поста от Stanislav.
К этому следует добавить, что частоту выборки АЦП нужно сделать именно 4000 Гц, а в качестве самого АЦП использовать сигма-дельта с цифровым фильтром на входе (см. у Analog Devices или Maxim). Иначе большие вычислительные затраты неизбежны. Еще лучше, если можно плавно управлять частотой выборки АЦП. В этом случае ее нужно синхронизовать с результатом п.3а, а п.4а не нужен.
P.S. п.5 предыдущего поста от Stanislav следует перенести в самый конец.
moonrock
Спасибо за ответ, интересный способ!
У меня задача для BPSK.
Была рождена похожая идея, суть такая: перемножить несколько периодов огибающей с SIN и COS (с бодовой частотой), найти ARCTAN от всего этого и скорректировать счетчик. Разумеется это получится если синхронизирующая последовательность будет 10101010101...
В общем надо проверять. Хотел еще спросить, в чем лучше моделировать, точнее в чем быстрее?(я пока на С пишу модели).
Об АЦП. Внешний АЦП - не хочется. Как бы это все в AVR или MSP затолкать, используя то что есть.
Stanislav
Цитата(moonrock @ Jul 11 2005, 11:29)
Спасибо за ответ, интересный способ!
У меня задача для BPSK.
Была рождена похожая идея, суть такая: перемножить несколько периодов огибающей с SIN и COS (с бодовой частотой), найти ARCTAN от всего этого и скорректировать счетчик. Разумеется это получится если синхронизирующая последовательность будет 10101010101...
В общем надо проверять. Хотел еще спросить, в чем лучше моделировать, точнее в чем быстрее?(я пока на С пишу модели).
Об АЦП. Внешний АЦП - не хочется. Как бы это все в AVR или MSP затолкать, используя то что есть.
*


В воскресенье была возможность подумать над этой задачей более тщательно.
Более эффективный способ синхронизации (по сравнению с тем, что был в предыдущем посте) состоит в следующем.

1б. Вместо действия п.1а следует найти разность модулей комплексных огибающих.
2б. Взять модуль результирующей функции. У меня при моделировании на "чистом" сигнале получилась последовательность треугольных и трапецидальных импульсов. Тактовая частота в спектре выражена еще мощнее, чем в предыдущем способе, и, кроме того, не загрязнена комбинаторными составляющими шумов, которые возникают при возведении в квадрат.
Далее - с пункта 3а без изменений. Выбор линейного фильтра п.3а представляет собой некую исследовательскую задачу. Я использовал для модели согласованный КИХ-фильтр с нулевым средним.
Достоинством вышеприведенных методов является то, что они будут работать не только со специальными синхропоследовательностями, а будут давать четкий синхросигнал при подключении входа в любое время. А вообще, подобные задачи требуют комплексного подхода, а не "блочно-модульного". Если вопрос стоит того, пишите, посотрудничаем. Мой мэйл sauls@mail.ru.
По поводу АЦП. Единственным способом радикально избавиться от шумов и зеркальных частот на входе АЦП является использование входного цифрового фильтра, каковые есть почти во всех сигма-дельта АЦП (кстати, такие имеются и в некоторых МК). Применение же встроенного в процессор АЦП последовательных приближений оправдано только для простых систем. В качестве паллиативной меры могу предложить делать выборку в 2-4 раза чаще необходимой с последующим цифровым прореживанием.
P.S. Моделировать лучше всего в матлабе, лучше пока ничего не знаю.
vm1
Я из огибающих x и y для FSK получал сигнал по
формуле x*(y')+y*(x').
Stanislav
Цитата(vm1 @ Jul 11 2005, 19:05)
Я из огибающих x и y для FSK получал сигнал по
формуле x*(y')+y*(x').
*

А что есть x, y, x' и y'? Комплексные функции и их сопряжения или модули и производные?
Tommyknocker
Цитата(moonrock @ Jul 11 2005, 11:29)
Спасибо за ответ, интересный способ!
У меня задача для BPSK.
Была рождена похожая идея, суть такая: перемножить несколько периодов огибающей с SIN и COS (с бодовой частотой), найти ARCTAN от всего этого и скорректировать счетчик. Разумеется это получится если синхронизирующая последовательность будет 10101010101...
В общем надо проверять. Хотел еще спросить, в чем лучше моделировать, точнее в чем быстрее?(я пока на С пишу модели).
Об АЦП. Внешний АЦП - не хочется. Как бы это все в AVR или MSP затолкать, используя то что есть.
*

Что касается битовой синхронизации при фазовой манипуляции, то здесь есть колоссальное количество литературы, как на русском так и на английском. К примеру Спилкер. Цифровая Спутниковая Связь.
Самый широко используемый алгоритм выглядит следующим образом:

Пусть К - число сигнальных отсчетов, приходящихся на один бит. Стоит задача определить номер отсчета сигнала, который является концом/началом бита. Для этого создаем массив на К элементов и последовательно заполняем c суммированием каждый элемент массива в соответствие со следующим выражением:

W(к) = W(k-1) + ( I(k)*sign(I(k-1)) + Q(k)*sign(Q(k-1))),
где I и Q синфазная и квадратурная компоненты сигнала (I~D(t)cos(df) , Q~D(t)sin(df) ). После N проходов, то есть после N последовательных накоплений (усреднений) необходимо найти элемент массива, содержащий наименьшее значение. После этого записать в счетчик отсчетов сигнала (счетчик битовой синхронизации) номер той самой минимальной ячейки. Теперь Ваш счетчик работает в такт синронизирущей последовательности.

Число проходов N зависит от времени, которое Вам отводится на синхронизацию и от отношения сигнал/шум. Что касается последовательности, то она может быть любая, лишь бы был переход битов пусть не регулярный - это н етак важно, со временем Вы все равно засинхронизуетесь и начнете демодуляцию сообщения.

Все это очень тщательно промоделировано и реализовано в спутниковых приемниках, которые разрабатывает и выпускает моя фирма. Могу выслать результаты моделирования на матлабе.
vm1
X и Y фильтрованные компоненты после
перемножения с центральной несущей.
x' и y' их производные, но фактически
они представляют собой немного задержаные значения x и y.
Образно говоря, физический смысл формулы - это угловая скорость
камушка застрявшего в покрышке колеса где колесо это
фазовая диаграма.
При FSK точка на диаграме движется
по часовой стрелке при приеме 1
а при приеме 0 движется против.
X и Y желательно отнормировать на амплитуду сигнала.
vm1
Поправка: разницу между текущим и немного задержаным значением
Stanislav
Цитата(vm1 @ Jul 12 2005, 12:59)
X и Y фильтрованные компоненты после
перемножения с центральной несущей.
x' и y' их производные, но фактически
они представляют собой немного задержаные значения x и y.
Образно говоря, физический смысл формулы - это угловая скорость
камушка застрявшего в покрышке колеса где колесо это
фазовая диаграма.
При FSK точка на диаграме движется
по часовой стрелке при приеме 1
а при приеме 0 движется против.
X и Y  желательно отнормировать на амплитуду сигнала.
*

Мне кажется, что такой способ будет хуже предложенного мной из-за наличия дифференцирования, ухудшающего отношение сигнал/шум по сравнению с оптимальным.
Stanislav
Цитата(Dsurkov @ Jul 11 2005, 22:26)
... После N проходов, то есть после N последовательных накоплений (усреднений) необходимо найти элемент массива, содержащий наименьшее значение...
*

Если Вы применяете стандартный метод синхронизации, не совсем понятно, почему Вы ищете минимальное значение, ведь оно соответствует минимальному отношению сигнал/шум и, соответственно, ошибка будет максимальной. Кроме того, Вы можете неправильно определить момент максимума корреляции, так как он может быть смещен относительно середины бодового интервала. В то же время, поиск максимума в Вашем накопителе даст правильное значение, когда именно нужно делать выборку и которое будет более устойчиво к помехам.
Tommyknocker
Цитата(Stanislav @ Jul 12 2005, 15:16)
Цитата(Dsurkov @ Jul 11 2005, 22:26)
... После N проходов, то есть после N последовательных накоплений (усреднений) необходимо найти элемент массива, содержащий наименьшее значение...
*

Если Вы применяете стандартный метод синхронизации, не совсем понятно, почему Вы ищете минимальное значение, ведь оно соответствует минимальному отношению сигнал/шум и, соответственно, ошибка будет максимальной. Кроме того, Вы можете неправильно определить момент максимума корреляции, так как он может быть смещен относительно середины бодового интервала. В то же время, поиск максимума в Вашем накопителе даст правильное значение, когда именно нужно делать выборку и которое будет более устойчиво к помехам.
*


В данном случае речь идет о битовой синхронизации!, а не о вычислении корреляционной функции. Предполагается, что сигнал BPSK, согласно того что написал в своем посте moonrock. Также, насколько я понял сигнал не содержит какой-либо поднесущей (М-последовательности или кода Баркера). Просто стоит задача демодуляции сообщения, колторым промодулирована несущая по BPSK. Естсетсвенно, что в данном случае алгоритм будет работать при малой частной расстройке (единицы Гц), то есть в области нулевых частот. Так вот такой алгоритм работает очень хорошо. Его кстати же применяют и в приемниках спутниковой навигации GPS / ГЛОНАСС для демодуляции навигационного сообщения.
moonrock
Спасибо всем за ответы! cheers.gif
Мне очень понравился алгоритм от Dsurkov. По моему его проще всего в МК зашить. АВРка должна справиться с 300 бод.
Хотел спросить, а какой процент ошибок у вас получался при с/ш около 0 дБ, 3 дБ?
Stanislav
Цитата(Dsurkov @ Jul 12 2005, 20:56)
В данном случае речь идет о битовой синхронизации!, а не о вычислении корреляционной функции. Предполагается, что сигнал BPSK, согласно того что написал в своем посте moonrock. Также, насколько я понял сигнал не содержит какой-либо поднесущей (М-последовательности или кода Баркера). Просто стоит задача демодуляции сообщения, колторым промодулирована несущая по BPSK. Естсетсвенно, что в данном случае алгоритм будет работать при малой частной расстройке (единицы Гц), то есть в области нулевых частот. Так вот такой алгоритм работает очень хорошо. Его кстати же применяют и в приемниках спутниковой навигации GPS / ГЛОНАСС для демодуляции навигационного сообщения.
*

Да, такой способ вполне можно применять для определения бодовых интервалов для простых одномерных сигналов (кстати, он применялся в низкоскоростных модемах ранних стандартов). Однако, ему присущи существенные недостатки. Главный из них заключается в большом времени адаптации из-за чего, как Вы верно заметили, работает только при малых расстройках и требует большого времени вхождения в связь. Кроме того, метод обладает далекой от идеальной устойчивостью к шумам. От этих недостатков можно избавиться только применением "продвинутых" корреляционных (или близких к ним) методов выделения тактовых частот.
Tommyknocker
Цитата(moonrock @ Jul 13 2005, 13:20)
Спасибо всем за ответы! cheers.gif
Мне очень понравился алгоритм от Dsurkov. По моему его проще всего в МК зашить. АВРка должна справиться с 300 бод.
Хотел спросить, а какой процент ошибок у вас получался при с/ш около 0 дБ, 3 дБ?
*


Вообще-то битовая синхронизация при отношении сигнала амплитудой Am = 1 к СКО шума 1 1Am/cko=1 и рассстройке по частоте Df = 50 Гц получается довольно уверенно при усредении килогерцовых выборок сигналов в течение 1с ( при скорости передачи к примеру 50 бит/с ). Но в моем случае выборки, поступающие в ЦСП, кстати в самом деле являются результатами предварительного накопления сигнала в блоке цифровой обработки, который мы называем коррелятор. Так называемое когеретное накопление в корреляторе, которое происходит на тактовой частоте, идет в течение миллисекунды, поскольку длина псевдослучайной последовательности (так называя М-последовательность) составляет 1 мс.


Нажмите для просмотра прикрепленного файла


А на рисунке показана зависимость вероятности правильной идентификации битов от СКО шума при растройке по частоте близкой к нулю.
Но ведь в любом случае Вы должны произвести вначале захват по частоте и потом последовательно сначала задйствова ЧАПЧ, а потом после стягивания ошибки по частоте до полосы захвата ФАПЧ свести ошибку близкой к нулю, войдя таким образом в режми слежения несущей сигнала. А если у объекта, где стоит Ваш модем динамика низкая или отсутсвует, то ФАПЧ 2-го порядка будет работать хорошо (при хороших отношениях С/Ш) и как такого поиска по частоте видомо и не понадобится. Мы у себя ФАПЧ особо стараемся не задействовать, поскольку это известно, что устройство это очень тонкое и совсем непомехоустойчивое, а вот ЧАПЧ отличается высокой робастностью.

Ну вот примерно вот так ... smile.gif
Dmitry_R
[quote=Stanislav,Jul 4 2005, 21:51]

[/quote]
Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.
2. Умножаем сигнал на exp(jW1t) и exp(jW2t), где W1 и W2 - несущие частоты.
3. Выделяем комплексные огибающие сигналов с этими несущими с помощью ФНЧ, согласованного с огибающей элементарной посылки.
*

[/quote]
Станислав, а поясни пожалуйста что значит умножить на exp?

2. input(n) = input(n) * exp(j*2*PI*F1*n/Fs)

3. out_one(n) = SUM (input(m) * exp(j*2*PI*F1*m/Fs))
сумма от m = n до n + N1.
Где F1 - частота 1, Fs - частота дискретизации, input(n) - входная выборка, N1 - количество отсчетов на бит.
Я правильно понял? Если да, то зачем умножать входную последовательность?
Я смоделировал выше описанное (без п.2) в матлабе. Нормально получилось, но хочется большего. smile.gif) Может я не учел какие-нибудь тонкости?

Во вложенном файле Матлабовский проект.
Stanislav
Цитата(Dmitry_R @ Jul 25 2005, 10:05)
Цитата(Stanislav @ Jul 4 2005, 21:51)


Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.
    2. Умножаем сигнал на exp(jW1t) и exp(jW2t), где W1 и W2 - несущие частоты.
    3. Выделяем комплексные огибающие сигналов с этими несущими с помощью ФНЧ, согласованного с огибающей элементарной посылки.
*

Станислав, а поясни пожалуйста что значит умножить на exp?

2. input(n) = input(n) * exp(j*2*PI*F1*n/Fs)

3. out_one(n) = SUM (input(m) * exp(j*2*PI*F1*m/Fs))
сумма от m = n до n + N1.
Где F1 - частота 1, Fs - частота дискретизации, input(n) - входная выборка, N1 - количество отсчетов на бит.
Я правильно понял? Если да, то зачем умножать входную последовательность?
Я смоделировал выше описанное (без п.2) в матлабе. Нормально получилось, но хочется большего. smile.gif) Может я не учел какие-нибудь тонкости?

Во вложенном файле Матлабовский проект.
*



Вы совершенно правильно поняли суть проблемы. Ваше действие:
3. out_one(n) = SUM (input(m) * exp(j*2*PI*F1*m/Fs))
есть эквивалентное моим пунктам 2 + 3 пребразование, но только в случае прямоугольной огибающей элементарной посылки. Просто в технической литературе часто эти два действия приводят порознь для лучшего восприятия, а при реализации, конечно, конструируют комплексные фильтры подобно Вашему. При этом умножение на комплексную экспоненту, естественно, не нужно - оно заложено уже в структуре фильтра. Небольшое непонимание возникло лишь из-за того, что я говорил о ФНЧ, согласованного именно с огибающей, т.е. формой волнового пакета посылки. Если она прямоугольная, то Ваш комплексный фильтр будет будет близок к оптимальному, но только для определенного вида шумов (напр., гауссов белый шум). Дальнейшее улучшение достоверности декодирования может быть произведено путем "работы с шумом", а именно: измерение статистики шума, построение шумового профиля, построения "выбеливающего" шум фильтра, обработка сигнала этим фильтром, модификация приемного комплексного фильтра в соответствии с шумовым профилем и только после этого декодирование. Боюсь, что эта процедура Вам не подойдет не только из-за своей навороченности, сколько в связи с ее малым выигрышем по сравнению с предыдущим методом для большинства реальных шумов (большой выигрыш получается например, в случае мощной узкополосной помехи). Кроме того, в случае нестационарных шумов она может даже увеличить вероятность ошибок. Тема борьбы с шумами, однако, выходит за рамки форума, поскольку она всеобъемлюща.
P.S. Вашу модель не посмотрел - нет времени. Как посмотрю - отвечу.
Stanislav
Посмотрел матлабовский файл, добавил замечания. Система синх-ции у Вас, мягко говоря, не слишком хорошая (см. подредактированный файл).
Успехов!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.