Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Декодирование ШМ-ПЧ сигнала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Dmitro25
Здравствуйте.
Встала тут задача демодуляции ШМ-ПЧ сигнала (точнее, ШМ2-ПЧ сигнала), вот такого:

Сигнал с выхода приёмника имеется только квантованный (т.е. значения только "0" и "1"). В присутствии шумов в сигнале появляются "просечки" из "0" в "1" и из "1" в "0", меняется ширина импульсов.
Самое неприятное, что частота (т.е. информационная скорость) передатчика может варьироваться плюс/минус 20% от номинальной, а также то, что в сигнале нет ни преамбулы, ни слова синхронизации. Длина одной посылки - 48 бит.
Информационная скорость, естественно, может отличаться для разных посылок, а не внутри одной посылки.

Можете ли подсказать, как наиболее оптимально декодировать такой сигнал или где можно прочитать про это?
Сейчас просто "тупо" измеряю ширину импульса, когда сигнал = "1", при этом отфильтровываю слишком короткие просечки в "0" и в "1". Если ширина импульса укладывается с определённым допуском в диапазон коротких импульсов - считаю, что принят "0", если длинных - "1".
litv
может это http://www.compitech.ru/html.cgi/arhiv/00_03/stat_72.htm
Dmitro25
litv
Вы имеете в виду идею Синхронизатора? А как он будет работать на разных информационных скоростях?
litv
Да, синхронизатора. От просечек сначала ФНЧ .
Вообще надо бы в матлабе записать в него входной файл реальных данных и потом на нем все прикидывать.
Dmitro25
litv
Да, согласен, данные я уже записал с осциллографа.
Не совсем понятно с синхронизатором, как он должен подстраиваться под информационную скорость принимаемого сигнала. ФАПЧ?
litv
Во первых слабовато о сигнале. Какая всетаки скорость информационная, Ваша частота дискретизации , ошибка установки по частоте?
Можно еще простым фильтриком вычислить среднюю мощность шума ,и обнулить все сигналы ниже опр. уровня.
Ну а там просто смотреть выше ниже заданного порога.
Dmitro25
litv
Информационная скорость примерно 600 Бод. Допуск примерно от 450 до 750 Бод. С частотой дискретизации сложнее: я планирую сделать декодирование на микроконтроллере общего назначения. Посмотрев реальный сигнал, понял, что можно просто использовать прерывания по фронтам для запуска отдельных частей алгоритма. Если считать по частоте счёта таймера/счётчика, который будет использоваться для измерения длительности положительных/отрицательных импульсов, получается величина частоты дискретизации примерно 1,4МSPS.

Тут попробовал модифицировать свой алгоритм следующим образом: сигнал сначала пропускается через некоторое подобие ФНЧ (на входе и выходе которого квантованный по уровню сигнал) - чтобы удалить просечки из сигнала. Затем измеряется длительность импульса логической "1" и длительность следующего за ним логического "0". Длительности сравниваются: если "1" длиннее - считаем, что приняли информационный символ "1"; если "0" длиннее - приняли символ "0". Первые пробы на записанном ранее сигнале показывают более высокую вероятность приёма посылки, чем алгоритм, описанный в моём первом посте.
Наверное, стоит ещё подумать над тем, чтобы делать предсказание относительно информационной скорости и в зависимости от него изменять постоянную времени ФНЧ...
=GM=
Считать длительности импульсов в шумах - гиблое дело, меняйте подход. Предлагаю устроить "цифровой импульсный фильтр". Заведите переменную SIGNAL, значение которой меняется после каждой выборки. Если входной сигнал равен лог.1, то SIGNAL инкрементируете, пока не достигнете максимального значения, скажем, МАХ=2000, если достигли, то ничего не делаете. Если входной сигнал равен лог.0, то SIGNAL декрементируете, пока не достигнете минимального значения 0, если достигли, то ничего не делаете. Если SIGNAL>МАХ/2, то принятый входной сигнал равен 1, в противном случае он равен 0. Далее можете измерять длительность отфильтрованного сигнала как обычно. Для выбора максимальной допустимой ширины просечек можно ещё поиграться переменной МАХ и частотой выборок. Для автонастройки скорости приёма используйте тот же приём, что и для приёма кода Морзе. Вроде всё...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.