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

 
 
> Детектирование сигналов (корреляция, коды Баркера и т.п.)
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
Ответов
Waso
сообщение Sep 26 2011, 06:54
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



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

В том-то и дело, что длинными пакетами до 255 байт данных + служебная информация. Толи кварцы так врут, толи эффекты в радиоэфире такие случаются, толи погрешность интервалов семплирования у меня набегает - но в реальных условиях если синхронизироваться только по старту длинного пакета, то к концу синхра теряется. Поэтому надо периодически корректировать номер семпла.

Меня Баркер привлек своей АКФ и тем что применение псевдослучайных последовательностей позволяет искусственно увеличить чуствительность приемника. Т.е. выделять сигнал при меньшем SNR. Но, как видится теперь, это лучше всего работает при анализе аналогового сигнала с приемника. А у меня данные с радиомодуля выходят в двоичном виде. 0 и 1.

Буду применять манчестер и оверсемплинг - это классика в моей ситуации. Если кому понадобится - погуглите "Oversampling and data decision". Мне этот труд был известен и ранее, но хотелось попробовать Баркера. sm.gif
Go to the top of the page
 
+Quote Post
megadocent
сообщение Sep 26 2011, 07:56
Сообщение #3


Участник
*

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



Цитата(Waso @ Sep 26 2011, 12:54) *
megadocent, спасибо за развернутый ответ!

В том-то и дело, что длинными пакетами до 255 байт данных + служебная информация. Толи кварцы так врут, толи эффекты в радиоэфире такие случаются, толи погрешность интервалов семплирования у меня набегает - но в реальных условиях если синхронизироваться только по старту длинного пакета, то к концу синхра теряется. Поэтому надо периодически корректировать номер семпла.

Меня Баркер привлек своей АКФ и тем что применение псевдослучайных последовательностей позволяет искусственно увеличить чуствительность приемника. Т.е. выделять сигнал при меньшем SNR. Но, как видится теперь, это лучше всего работает при анализе аналогового сигнала с приемника. А у меня данные с радиомодуля выходят в двоичном виде. 0 и 1.

Буду применять манчестер и оверсемплинг - это классика в моей ситуации. Если кому понадобится - погуглите "Oversampling and data decision". Мне этот труд был известен и ранее, но хотелось попробовать Баркера. sm.gif

Пожалуйста. sm.gif

1) Тактирование кварцом? Ну тогда хз. Не должно убегать сильно за пару сотен байт. Хотя... Вы опрашиваете ножку? Сами? И посылаете дергая из программы ножку? Тогда ничего удивительного. А если у вас прерывание важное пришло? Одна Атмега потупила, не послала байт, послала с опозданием, вторая протупила, пропустила бит и пошла опрашивать со сдвигом. Тут очень внимательно надо 7 раз перепроверить, что принимаете вы точно с той же частотой, что и передаете.

2) Пробовали на листе бумаги (excel тоже удобно) 2 колонки написать. Что приняли и что пришло?
Попробуйте. Очень полезно.
а) Если у вас именно систематически (и довольно редко) уезжает - увидите на скольких битах вы уезжаете. Проверяйте кварцы.
001100110011001100110011
001100100110010011001001
каждый 7 бит теряется. От кварца, конечно, должно не так ехать... А 1 бит в кучу-кучу-кучу бит... Но тем не менее.
б) Если у вас уезжает случайно, не систематически, тогда я грешу на то, что опрашиваете/посылаете не равномерно.
001100110011001100110011
001100100110110011001100
Потерян 8 и 14 биты.
в) Случайные битовые ошибки - тогда и правда шум.
001100110011001100110011
001010110001001110110101

3) Синхро надо не только зацепить, но и корректировать. Это как бы само собой. У меня на бит данных 16 бит ПСП. В бите данных 512 отсчетов. Выгоднее раз в 512 отсчетов проверить 2 соседних, и посмотреть, не уезжаю ли я, чем каждый отсчет гадать что у нас, 1 или 0.

4) ПСП рулит. =) Должна сильно устойчивость к помехам подняться. В разы, по сравнению с сигналом без ПСП. И это не зависит от того, как вы биты получаете. Я вот анализируя сигнал тоже, по сути, выделяю биты, а уже потом биты сравниваю с образцами ПСП. Просто я делаю это за 1 проход и чуть точнее, анализируя сигнал.

5) Сдается мне, у вас не в канале дело. Где-то ошибка. Иначе применение баркера дало бы довольно ощутимые результаты по сравнению с его отсутствием.


Я бы посоветовал:
а) Выписать передаваемый сигнал (поток битов), принимаемый сигнал, сравнить.
б) Проверить что у вас частота, с которой вы выплевываете биты точно равна частоте, с которой опрашиваете.

Сообщение отредактировал megadocent - Sep 26 2011, 07:58
Go to the top of the page
 
+Quote Post

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


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:18
Рейтинг@Mail.ru


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