Перейти к содержанию
    

Через мировой эфир передается цифровой сигнал со скоростью 333 бод, используя частотную манипуляцию без разрыва фазы. 1000Гц единичка, 1333Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 10 единичных бит.

Сейчас для декодирования этой посылки используется ФАПЧ настроенный на 1167Гц.

Так вот! Есть мысль, что используя цифровую обработку этой посылки, можно существенно повысить вероятность правильного приема, сильно обезображенной эфирными помехами посылки.

Так ли это? И если так то какие алкогоритмы лучше применить? Корреляционный когерентный метод спасет меня? Или по сравнению с ФАПЧ не будет ни какого выигрыша?

Изменено пользователем Dmitry_R

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насчет выигрыша с ФАПЧ не знаю, но сам метод и алгоритм декодировани FSK (теория) хорошо описан в http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa037

посмотри, может пригодится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насчет выигрыша с ФАПЧ не знаю, но сам метод и алгоритм декодировани FSK (теория) хорошо описан в http://focus.ti.com/docs/mcu/catalog/resou...actName=slaa037

посмотри, может пригодится

Более того могу порекомендовать книгу Цифровая связь Бернард Скляр,если

не все то некоторые главы.Еще можно посмотреть готовые модемы подобные

применялись в NMT мобильниках Benefon Dancall производитель CML. :cheers:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.
Очень много зависит от индекса модуляции, т.е. отношения разноса частот к бодовой скорости. От этого будет и алгоритм плясать. Потом, какие требования к быстродействию и пожиранию ресурсов, какой канал: гаусса или релея.. ?

А пока, если можно, выложите образец сигнала в виде PCM-файла, например с частотой дискретизации Fd=8000Гц. Мне совершенно непонятно, почему 1200Гц 3100Гц при 9600 бод, т.е. 1900/9600=0.197916666 - нелепица, даже как ФМ не получается обрабатывать. Если только

0 - 1200Гц

1 - 3120Гц

9600 / (3120-1200) = 5 бод/Гц, я так понимаю не бод все-таки, а бит/Гц

т.е. коггерентно как ФМ-32 обрабатывать, ммм-да, фигня какая-то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.

 

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

Котельнков будет возмущатся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так не бывает при FSK, несущая здесь меньше скорости обмена. Котельнков будет возмущатся.
Вот и говорю: это 9600 бит / сек. Но тогда с часотами 0/1 нелепица.. Пусть лучше PCM-файл даст - разберемся как-нибудь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через мировой эфир передается цифровой сигнал со скоростью 9600 бод, используя частотную манипуляцию без разрыва фазы. 1200Гц единичка, 3100Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 20 единичных бит.

 

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

Котельнков будет возмущатся.

 

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

 

 

Что касается обработки сигнала, то неплохо бы выяснить энергетику канала связи, дальность и т.д.

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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

Котельнков будет возмущатся.

 

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

 

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

Так и есть, напутал я с исходными данными.

1 -1000Гц

0 - 1333Гц

скорость передачи 333бод.

Вот я и хочу узнать можно ли с помощью ЦОС получить декодер лучше ФАПЧа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ммм-да, фигня какая-то.

Напутал я с исходными данными. Извини, бес попутал :)

1 -1000Гц

0 - 1333Гц

скорость передачи 333бод.

Преамбула около 10 единичек.

Хотел реализовать это не AT91SAM7S256, если не будет хватать вычислительных ресурсов то на ADuC702x (у него есть умножение с накоплением)

Канал релея. Ибо сильно плавает уровень сигнала, а белого шума на кодограмме я не заметил.

Привожу две кодограммы. Одна плохая, которую очень хотелось бы принимать, другая хорошая, которую нельзя не принять. :)

__________.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Через мировой эфир передается цифровой сигнал со скоростью 333 бод, используя частотную манипуляцию без разрыва фазы. 1000Гц единичка, 1333Гц нолик (значения частот приблизительные, точные не помню). В начале посылки длинная преамбула 10 единичных бит.

    Сейчас для декодирования этой посылки используется ФАПЧ настроенный на 1167Гц.

    Так вот! Есть мысль, что используя цифровую обработку этой посылки, можно существенно повысить вероятность правильного приема, сильно обезображенной эфирными помехами посылки.

    Так ли это? И если так то какие алкогоритмы лучше применить? Корреляционный когерентный метод спасет меня? Или по сравнению с ФАПЧ не будет ни какого выигрыша?

Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.

1. Чисто умозрительно представим сигнал в виде суммы двух сигналов с разными несущими.

2. Умножаем сигнал на exp(jW1t) и exp(jW2t), где W1 и W2 - несущие частоты.

3. Выделяем комплексные огибающие сигналов с этими несущими с помощью ФНЧ, согласованного с огибающей элементарной посылки.

4. Находим модули комплексных огибающих для частот W1 и W2.

5. С помощью сравнения выясняем, какой сигнал доминирует.

6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов.

7. С бодовой частотой (333 Гц) производим выборку (децимацию) в моменты, соответствующие ожидаемым максимумам доминирования одного сигнала над другим, и это все.

К этому можно добавить, что такой метод близок к оптимальному для большинства каналов, хотя и не содержит таких полезных вещей, как адаптивный эквалайзер, АРУ и др., которые при желании можно добавить.

Для уменьшения вычислительных затрат необходимо правильно выбрать частоту дискретизации. В вашем случае это 4000 Гц. При этом вполне приличный приемник можно сделать даже на AVR микроконтроллере, не говоря уже об ARMе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Следующий метод приема будет гораздо эффективнее такой примитивной ФАПЧ.

    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`а или мой - что понравится и по затратам подойдет - дешевле (гораздо!!) для здоровья выйдет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to Stanislav: а можно подробнее узнать о 6 пункте

"6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов."

Какие методики существуют, где почитать(можно на англицком)? Очень интересно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

to Stanislav: а можно подробнее узнать о 6 пункте

"6. На основе получаемых данных создаем систему временной синхронизации для точного выделения бодовых интервалов."

Какие методики существуют, где почитать(можно на англицком)? Очень интересно!

 

Ссылок, к сожалению, сейчас дать не имею возможности, могу только посоветовать почитать литературу по модемной тематике. Для вас же пришел в голову следующий простой способ (в предположении, что огибающая элементарной посылки близка к прямоугольной). Если где ошибся - укажите.

1а. Возведите модули комплексных огибающих в квадрат.

2а. Найдите сумму двух результирующих функций. В спектре суммы будет мощная составляющая с тактовой частотой (333 Гц).

3а. Выделите эту составляющую с помощью линейного фильтра. Положение максимумов этой функции будет соответствовать максимумам корреляции. В эти моменты и нужно производить окончательную выборку.

4а. Для повышения помехоустойчивости сделайте адаптивный "генератор импульсов" выборки с тактовой частотой (333 Гц), попросту счетчик, синхронизируйте его с результатом п.3а. Для повышения точности слежения можно применить счетчик с целой и дробной частями, а также интерполяцию модулей комплексных огибающих. Целочисленная арифметика даст результат лишь ненамного хуже, т.к. у вас хорошие соотношения тактовой и несущих частот.

Далее с п.7 предыдущего поста от Stanislav.

К этому следует добавить, что частоту выборки АЦП нужно сделать именно 4000 Гц, а в качестве самого АЦП использовать сигма-дельта с цифровым фильтром на входе (см. у Analog Devices или Maxim). Иначе большие вычислительные затраты неизбежны. Еще лучше, если можно плавно управлять частотой выборки АЦП. В этом случае ее нужно синхронизовать с результатом п.3а, а п.4а не нужен.

P.S. п.5 предыдущего поста от Stanislav следует перенести в самый конец.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ, интересный способ!

У меня задача для BPSK.

Была рождена похожая идея, суть такая: перемножить несколько периодов огибающей с SIN и COS (с бодовой частотой), найти ARCTAN от всего этого и скорректировать счетчик. Разумеется это получится если синхронизирующая последовательность будет 10101010101...

В общем надо проверять. Хотел еще спросить, в чем лучше моделировать, точнее в чем быстрее?(я пока на С пишу модели).

Об АЦП. Внешний АЦП - не хочется. Как бы это все в AVR или MSP затолкать, используя то что есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ, интересный способ!

У меня задача для BPSK.

Была рождена похожая идея, суть такая: перемножить несколько периодов огибающей с SIN и COS (с бодовой частотой), найти ARCTAN от всего этого и скорректировать счетчик. Разумеется это получится если синхронизирующая последовательность будет 10101010101...

В общем надо проверять. Хотел еще спросить, в чем лучше моделировать, точнее в чем быстрее?(я пока на С пишу модели).

Об АЦП. Внешний АЦП - не хочется. Как бы это все в AVR или MSP затолкать, используя то что есть.

 

В воскресенье была возможность подумать над этой задачей более тщательно.

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

 

1б. Вместо действия п.1а следует найти разность модулей комплексных огибающих.

2б. Взять модуль результирующей функции. У меня при моделировании на "чистом" сигнале получилась последовательность треугольных и трапецидальных импульсов. Тактовая частота в спектре выражена еще мощнее, чем в предыдущем способе, и, кроме того, не загрязнена комбинаторными составляющими шумов, которые возникают при возведении в квадрат.

Далее - с пункта 3а без изменений. Выбор линейного фильтра п.3а представляет собой некую исследовательскую задачу. Я использовал для модели согласованный КИХ-фильтр с нулевым средним.

Достоинством вышеприведенных методов является то, что они будут работать не только со специальными синхропоследовательностями, а будут давать четкий синхросигнал при подключении входа в любое время. А вообще, подобные задачи требуют комплексного подхода, а не "блочно-модульного". Если вопрос стоит того, пишите, посотрудничаем. Мой мэйл [email protected].

По поводу АЦП. Единственным способом радикально избавиться от шумов и зеркальных частот на входе АЦП является использование входного цифрового фильтра, каковые есть почти во всех сигма-дельта АЦП (кстати, такие имеются и в некоторых МК). Применение же встроенного в процессор АЦП последовательных приближений оправдано только для простых систем. В качестве паллиативной меры могу предложить делать выборку в 2-4 раза чаще необходимой с последующим цифровым прореживанием.

P.S. Моделировать лучше всего в матлабе, лучше пока ничего не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...