|
|
  |
FSK декодер |
|
|
|
Mar 12 2016, 20:55
|
Группа: Участник
Сообщений: 7
Регистрация: 26-02-16
Пользователь №: 90 625

|
добрый день, вопрос у меня следующий: на выходе FSK демодулятора имею восстановленную цифровую последовательность,НО каждому биту соответствует N=Fдискр/Fвх.сигн. точек. Видимо, мне необходима децимация, но, чтобы ее сделать,нужна синхронизация,то есть я должен знать номер отсчета, соответствующий началу бита и от него плясать. Как лучше сделать? Можно заложить длинную последовательность и, при наличии хорошей корреляции с ней, считать, что привязались.Тогда, если, например, выбрать байт для привязки 0x55, эта последовательность будет длиной 8*N точек,чередуются N 0-й и N 1-ц 4 раза. С ней и сравниваем каждые 8*N отсчетов входного сигнала. Если фрагмент похож - от этой точки и пляшем. Или вообще не так делают?
PS не так давно спрашивал про модуляцию FSK-спасибо всем ответившим,разобрался,заработало...
|
|
|
|
|
Mar 13 2016, 05:48
|
Частый гость
 
Группа: Участник
Сообщений: 155
Регистрация: 26-04-12
Пользователь №: 71 584

|
Цитата(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 отсчетов - конец символа.
|
|
|
|
|
Mar 13 2016, 09:05
|
Группа: Участник
Сообщений: 7
Регистрация: 26-02-16
Пользователь №: 90 625

|
Частоты кратны(пока :-)). В приниципе, сейчас я так и делаю - ловлю переход через 0. Но если передачи нет - на входе шумы, можно же привязаться к переходу, который вызван шумами, или в этом случае именно сравнение с преамбулой посылки покажет, что это не правильная посылка?
|
|
|
|
|
Mar 13 2016, 10:02
|
Группа: Участник
Сообщений: 7
Регистрация: 26-02-16
Пользователь №: 90 625

|
так в том-то и дело, понятно, что дальше есть crc сообщения, которая не будет равна для ошибочного приема, но все таки как лучше синхронизироваться с моментом смены символов?
|
|
|
|
|
Mar 13 2016, 10:24
|
Гуру
     
Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937

|
Цитата(rimidalv @ Mar 13 2016, 13:02)  так в том-то и дело, понятно, что дальше есть crc сообщения, которая не будет равна для ошибочного приема, И CRC любые в шуме встречаются. Цитата(rimidalv @ Mar 13 2016, 13:02)  но все таки как лучше синхронизироваться с моментом смены символов? Разные способы есть. Например на выходе частотного детектора ставите чётную нелинейность, на выходе которой в спектре появляется гармоника символьной частоты, при наличии символьных переходов, выделяете эту гармонику узкополосным фильтром и используете для выборки отсчётов символов в моменты максимального отношения сигна/шум.
|
|
|
|
|
Mar 13 2016, 16:39
|
Группа: Участник
Сообщений: 7
Регистрация: 26-02-16
Пользователь №: 90 625

|
Сейчас буду смотреть, спасибо.
|
|
|
|
|
Mar 13 2016, 18:26
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(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 точек, вот с ней и сравнивать. Можно и определенный процент искажений допустить. Для современных процов легко делается в реале.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 13 2016, 20:00
|
Группа: Участник
Сообщений: 7
Регистрация: 26-02-16
Пользователь №: 90 625

|
Завтра буду пробовать
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|