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

 
 
> Детектирование сигналов (корреляция, коды Баркера и т.п.)
Zike
сообщение May 30 2007, 06:07
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 22-12-05
Пользователь №: 12 550



Мужики! Помогите чайнику, посоветуйте алгоритм или принцип.
Нужно решить две подобных задачи

-------------------------------------------------------
Задача первая:
На одной линии сидят несколько передатчиков (к примеру 10 шт.), в линию каждый постоянно шумит своим кодом.В один момент времени (давольно длительный ) не все передатчики могут быть включены.

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

-------------------------------------------------------
Задача вторая (схожая):
На один фото приемник кратковременно светят несколько лазеров (к примеру 10 шт.), сигнал одного может попасть в фотоприемник в момент когда другие не светят (тут всй просто - лазер передает свой код), а иногда сигналы нескольких попадают почти одновременно.

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

--------------------------------------------------------

Думал использовать коды Баркера и смотреть автокорреляцию, в таком виде четко фиксирую сигнал одного передатчика, а как быть приемнику если несколько передатчиков свои коды Баркера наложат друг на друга?

Сообщение отредактировал Zike - May 30 2007, 06:08
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
megadocent
сообщение Sep 26 2011, 06:12
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 20-11-09
Из: Пермь
Пользователь №: 53 747



Я коррелирую на ДСП, но я там ищу последовательность битов в переданном фазово-модулированном сигнале. По сути в ДСП реализовано то, что у вас в радиомодуле. Потому работаю не с битами, а с большим количеством отсчетов. Раскажу как у меня, и как бы на вашем месте делал.

Цитата
1. В каком виде анализируется поток данных - в аналоговом (с выхода смесителя подаем на АЦП), или в цифровом (после смесителя стоит скажем триггер Шмидта, а с его выхода уже двоичный сигнал поступает на DSP) ?

У меня цепочка сигнала такова -
аналоговый вход -> аналоговый фильтр (передаем в зашумленной полосе, дабы отсеять шум за пределами нашей полосы) -> АЦП -> ДСП.
Весь анализ в ДСП. И ДСП анализирует и коррелирует не биты двоичного сигнала, а семплы.
У вас приходят сразу биты, так что у вас должно быть Радиомодуль->Атмега.

Цитата
2. Сколько семплов приходится на один битик Баркеровской последовательности?

Зависит от вашей частоты дискретизации и скорости передачи данных. Частоты дискретизации зависит от скорости несущей. У меня на 1 бит 24 отсчета. Но у меня не биты с радиомодуля, а аналоговый сигнал оцифрованный.
Из того, что я понял, у вас сразу идут биты. Минимально достаточно 1 семпл на бит (при условии что тактовые приемника и передатчика идеальны). Больше семплов - точнее синхронизация. Я бы опрашивал раза в 2-4 чаще, если мощности хватает. Идут у вас 100 бит/с - я бы опрашивал ногу с частотой 200-400раз в секунду. Так легче синхронизироваться.

Цитата
3. Наверное DSP всетаки делают честную свертку - умножают и складывают. Умножают и складывают. ?

Да. Если в лоб - каждый отсчет сигнала на образец. Если не в лоб - можно применять БПФ.

Цитата
4. Какой уровень погрешности допускают нормальные корреляторы? Если есть возможность делать С семплов на бит, а сама последовательность Баркера N-битная, то максимум коррелятора равен N*C. При достаточно большом С можно вводить погрешности равные или больше N. Верно рассуждаю?


Корреляторы обычно делают так, чтобы они не зависели от чего-либо. И на выходе получаем float число от -1 до 1. С другой стороны у вас сигнал без амплитуды, так что имеет смысл говорить в абсолютных числах. Но, имхо, о погрешности мало смысла говорить. Тут скорее не погрешность, а граница срабатывания, которую мы сами задаем.



Не вижу смысла на каждый семпл пытаться определить 1 или 0 и коррелировать. Вам надо точно синхронизироваться (вот тут корреляция и нужна). А потом уже каждый xx отсчетов сравнивать с последовательностью, задав, что если количество совпавших семплов <xx/2 у вас 0, а если больше, у вас 1.

Или у вас данные не пакетами/непрерывно, а переодически может быть 1 бит данных?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 02:27
Рейтинг@Mail.ru


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