Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FSK декодер
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
rimidalv
добрый день, вопрос у меня следующий: на выходе FSK демодулятора имею восстановленную цифровую последовательность,НО каждому биту
соответствует N=Fдискр/Fвх.сигн. точек. Видимо, мне необходима децимация, но, чтобы ее сделать,нужна синхронизация,то есть я должен знать
номер отсчета, соответствующий началу бита и от него плясать. Как лучше сделать? Можно заложить длинную последовательность и, при наличии
хорошей корреляции с ней, считать, что привязались.Тогда, если, например, выбрать байт для привязки 0x55, эта последовательность будет
длиной 8*N точек,чередуются N 0-й и N 1-ц 4 раза. С ней и сравниваем каждые 8*N отсчетов входного сигнала. Если фрагмент похож - от этой
точки и пляшем. Или вообще не так делают?

PS не так давно спрашивал про модуляцию FSK-спасибо всем ответившим,разобрался,заработало...
Anton1990
Цитата(rimidalv @ Mar 12 2016, 23:55) *
добрый день, вопрос у меня следующий: на выходе FSK демодулятора имею восстановленную цифровую последовательность,НО каждому биту
соответствует N=Fдискр/Fвх.сигн. точек. Видимо, мне необходима децимация, но, чтобы ее сделать,нужна синхронизация,то есть я должен знать
номер отсчета, соответствующий началу бита и от него плясать. Как лучше сделать? Можно заложить длинную последовательность и, при наличии
хорошей корреляции с ней, считать, что привязались.Тогда, если, например, выбрать байт для привязки 0x55, эта последовательность будет
длиной 8*N точек,чередуются N 0-й и N 1-ц 4 раза. С ней и сравниваем каждые 8*N отсчетов входного сигнала. Если фрагмент похож - от этой
точки и пляшем. Или вообще не так делают?

PS не так давно спрашивал про модуляцию FSK-спасибо всем ответившим,разобрался,заработало...


Есть непонятные моменты. Например: Fдискр и Fвх.сигн. - они что кратны? Если нет, то не обойтись без дробной передискретизации работающей вместе с символьной синхронизацией. Если все-таки кратны, то необходима символьная синхронизация. Например так: "ловите" момент перехода через "ноль" - это и есть начало символа, отсчитываете N отсчетов - конец символа.
rimidalv
Частоты кратны(пока :-)). В приниципе, сейчас я так и делаю - ловлю переход через 0.
Но если передачи нет - на входе шумы, можно же привязаться к переходу, который
вызван шумами, или в этом случае именно сравнение с преамбулой посылки покажет,
что это не правильная посылка?
petrov
Цитата(rimidalv @ Mar 13 2016, 12:05) *
или в этом случае именно сравнение с преамбулой посылки покажет,
что это не правильная посылка?


В шуме любые преамбулы встречаются.
rimidalv
так в том-то и дело, понятно, что дальше есть crc сообщения, которая не будет равна для ошибочного приема,
но все таки как лучше синхронизироваться с моментом смены символов?
petrov
Цитата(rimidalv @ Mar 13 2016, 13:02) *
так в том-то и дело, понятно, что дальше есть crc сообщения, которая не будет равна для ошибочного приема,


И CRC любые в шуме встречаются.

Цитата(rimidalv @ Mar 13 2016, 13:02) *
но все таки как лучше синхронизироваться с моментом смены символов?


Разные способы есть. Например на выходе частотного детектора ставите чётную нелинейность, на выходе которой в спектре появляется гармоника символьной частоты, при наличии символьных переходов, выделяете эту гармонику узкополосным фильтром и используете для выборки отсчётов символов в моменты максимального отношения сигна/шум.
Fat Robot
Один из способов реализации: система фазовой автоподстройки частоты (ФАПЧ)
генератор с управляемой частотой, выход которого - тактовая символов
петлевой фильтр
дискриминатор

Литературы про фапч много.

Дискриминаторов фазы символов тоже много. Вот на выбор:
http://mathworks.com/help/comm/ref/gardner...ngrecovery.html
http://mathworks.com/help/comm/ref/earlyla...ngrecovery.html
http://mathworks.com/help/comm/ref/mueller...ngrecovery.html
http://mathworks.com/help/comm/ref/squarin...ngrecovery.html

Последнее - то, о чем говорил Petrov
rimidalv
Сейчас буду смотреть, спасибо.
=GM=
Цитата(rimidalv @ Mar 12 2016, 20:55) *
на выходе FSK демодулятора имею восстановленную цифровую последовательность,НО каждому биту соответствует N=Fдискр/Fвх.сигн. точек. Можно заложить длинную последовательность и, при наличии
хорошей корреляции с ней, считать, что привязались.Тогда, если, например, выбрать байт для привязки 0x55, эта последовательность будет
длиной 8*N точек,чередуются N 0-й и N 1-ц 4 раза. С ней и сравниваем каждые 8*N отсчетов входного сигнала


Обычно, в начале сообщения передают синхрослово (СС) определенной длины. Вашего байта 0x55 маловато будет для синхронизации. В своё время я использовал СС длиной 32 бита (на фидерной линии), причем программа допускала приём несколько неверных бит в любом месте СС, и то, на шумах каждые 18 минут появлялось ложное СС. Да, добавлю, что 32 битная последовательность имела хорошую АКФ, ну не как у кодов Баркера, а как у М-последовательностей...

В вашем случае последовательность будет состоять из N*32 точек, вот с ней и сравнивать. Можно и определенный процент искажений допустить. Для современных процов легко делается в реале.
rimidalv
Завтра буду пробовать
Corner
Цитата(rimidalv @ Mar 13 2016, 12:05) *
Частоты кратны(пока :-)).

Разброс частот, фаз и Доплер. Приемник никогда не совпадает по частоте с передатчиком. Помимо СС в начале, еще должна быть периодическая или встроенная синхронизация внутри данных. Преобразование без постоянного напряжения и скремблер в помощь.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.