Перейти к содержанию
    

Вытащить биты из фазового демодулятора

3 часа назад, repstosw сказал:

 

Перечитал посты. Не нашёл как нормировать отсчёты мгновенной частоты.   Кроме как что их надо как-то нормировать:

 

Пока сделал Rail-to-Rail Clipper: отсекаю значения всё что выше от 1/4 максимального размаха.  Потому что при отсутсвии полезного сигнала, амплитуды шумов в 4 раза выше, чем полезный сигнал.  Есть ещё возможность установить по-больше усиление в Si4463 - отсчёты фазы будут больше.

Цепочка такая:

Отсчёты фазы => отсчёты частоты => Клипирование => Масштабирование => Корень приподнятого косинуса => Блок синхронизации => Бинарный слайсер

Декодирование пакета работает правильно.

Можно ли улучшить?

 

Второй вопрос: возвращаясь к мягким отсчётам битов. Сейчас слайсер режет сигнал на биты.   Как теперь найти "мягкое значение" для каждого бита?   Вернуться к отсчётам частоты и времени максимума символа, найденного фильтром косинуса?  Или как?

 

 Ну, грубо говоря, находите минимум модуля разности между принятым символом и символами решетки, для которых соответствующий бит ноль. От этого вычитаете минимум модуля разности между принятым символом и символами решетки, для которых соответствующий бит 1. Получаете софтбит. В действительности все немного сложнее. Ддя начала и так сойдет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добавил аттенюатор приёмнику -30 дБ.  Мощность передатчика -10 дБм.  Передатчик отдалялся от приёмника в пределах 3 комнат.

Зафиксированы отсчёты бит с помехами.  На рисунке ниже показан бит, начиная с которого пакет терпит неудачу при проверке (длина пакета 6080 байт):

image.thumb.png.d0c62909264d9c1d03fa10264be6f0de.png

 

Мгновенная частота и фаза (отсчёты) в момент, когда данные не восстанавливаются:

image.thumb.png.6e6c5ef072df88a60b6d1599dc9e15d1.png

 

Чистый сигнал (для сравнения):

image.thumb.png.555efd98516ffa2a10087ea449b511d5.png

 

Как я понял, что нельзя считать "плoщадь отсчётов" на 1 бит для получения мягкого решения.

 

Есть ли способ восстановить эти биты?

 

 

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, repstosw сказал:

Есть ли способ восстановить эти биты?

Не-а. А если у вас подряд 100 одинаковых бит? А если 1000? Как их разделить? Особенно на вашей не вполне равномерной сетке? Вы пытаетесь решить не решабельную задачу.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это про нормировку:

В 10.03.2024 в 16:40, komah сказал:

Выход частотного детектора нужно поделить на (h * M_PI), где h - индекс модуляции.

Мягкие решения для (G)FSK2 - это амплитуда на выходе синхронизатора. Если нужны целочисленные - умножьте на максимальное значение и округлите. 

Изменено пользователем komah

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, repstosw сказал:

Есть ещё возможность установить по-больше усиление в Si4463 - отсчёты фазы будут больше.

Так-то не должны быть больше. Главное, чтобы динамического диапазона хватало.

9 часов назад, repstosw сказал:

Просто для выхода демодулятора в виде PAM с несколькими уровнями, нужно для каждого бита значения как-то нормировать. 

А это про мягкие решения для многоуровневой PAM. Весь диапазон выходных напряжений синхронизатора нужно разделить на области, соответствующие принятым символам. И нормировать значение относительно размера этих областей. Но если символ соответствует двум и более битам, а декодеру нужно мягкое решение для каждого бита, придется подумать.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, komah said:

Так-то не должны быть больше. Главное, чтобы динамического диапазона хватало.

Проверил: выставлял разный Gain для PGA, DAC - результат одинаковый. Ибо AРУ ещё есть потому что.

 

4 hours ago, komah said:

Мягкие решения для (G)FSK2 - это амплитуда на выходе синхронизатора. Если нужны целочисленные - умножьте на максимальное значение и округлите. 

Ну если так, тогда вот мягкие отсчёты - на выходе  синхронизатора (умноженные на 0.5,  для приведения к [-1..+1] ) - слева преамбула, потом синхрослово 0x5A0FBE66 и потом данные: байты от 0 до 255 :

image.thumb.png.3832e80699769ff7e9d3b58fd4a31b66.png

Это 50 кбит/c, девиация +/- 25 кГц.    12 отсчётов на бит(среднее).

 

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

И что самое интересное, мой "детский"  алгоритм тоже декодирует пакеты правильно.

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

 

4 hours ago, komah said:

Это про нормировку:

On 3/10/2024 at 11:40 PM, komah said:

Выход частотного детектора нужно поделить на (h * M_PI), где h - индекс модуляции.

Для 2FSK индекс модуляции понятно как считается.

А как он считается для 4FSK?  берется inner или outer девиация?

 

P.S. Усовершенствовал забор данных отсчётов фазы с Si4463: теперь  данные можно забирать со скоростью 1.615 млн. отсчётов в секунду.

Это соответствует заполнению одной половины кольцевого буфера 128 отсчётов за 0.079 мс.

image.thumb.png.32234810c39aba25ac1b48fbea3631be.png

 

По-хорошему надо интерполировать, так как некоторые смежные отсчёты фазы одинаковые.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-

11 минут назад, repstosw сказал:

Для 2FSK индекс модуляции понятно как считается.

Ога.    3/4? 1/4 Понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак...  Настало время вернуться к вопросу о манипуляции с данными с двух приёмников, чтобы спастись от плоских замираний.

Есть 2 приёмника с антеннами, которые разнесены на лямбда пополам или с взаимно-ортогональной ориентацией.   Есть доступ к мгновенным фазам с  фазового детектора:  atan2 и знак +/-.

Вопрос, как правильно "складывать" мощность сигналов  чтобы убрать вредительство от замирания?   Допустим, с одной антенны сигнал хороший, с другой плохой.  Нужно постоянно с каждым отсчётом манипулировать  данными отсчётов фазы.

petrov  что-то говорил пр EGC.   Но точно не уверен.  Интересует - какие операции нужно проделать над сигналами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для Equal Gain Combining нужен выход с квадратур, после жёсткого ограничения у вас собственно уже нет Equal Gain.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, petrov said:

Для Equal Gain Combining нужен выход с квадратур, после жёсткого ограничения у вас собственно уже нет Equal Gain.

Есть отсчёты мгновенных фаз: Ф1(t) и Ф2(t).   Из которых можно получить квадратуры  I1(t)=cos(Ф1(t)) Q1(t)=sin(Ф1(t))   I2(t)=cos(Ф2(t)) Q2(t)=sin(Ф2(t)).   Или отсчёты частоты F1(t) F2(t).

С них можно сделать EGC?

О каком ограничении идёт речь?   Если нельзя,  тогда вторая часть вопроса:   допустим есть две пары квадратур I1,I2, Q1, Q2. Для простоты считаем их комплексными отсчётами во времени.  Что дальше с ними делать для EGC?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

atan2 и есть жёсткое ограничение. Нужно суммировать после частотного детектора до жёсткого ограничения. Вы выше постили схему частотного детектора с DSPlib, деление на мгновенную мощность и есть жёсткое ограничение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, petrov said:

atan2 и есть жёсткое ограничение. Нужно суммировать после частотного детектора до жёсткого ограничения. Вы выше постили схему частотного детектора с DSPlib, деление на мгновенную мощность и есть жёсткое ограничение.

Просто просуммировать два сигнала как комплексные числа?  То, что в числителе на схеме.

Изменено пользователем repstosw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В выше приведённой схеме частотного детектора никаких комплексных чисел уже нет. Произвольный фазовый сдвиг между каналами устранён частотным детектором, почёму и можно просто всё сложить до операции деления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, petrov said:

В выше приведённой схеме частотного детектора никаких комплексных чисел уже нет. Произвольный фазовый сдвиг между каналами устранён частотным детектором, почёму и можно просто всё сложить до операции деления.

Приведённая схема частотного детектора с DSPlib и выход фазы демодулятора - это разные вещи.   Я ничего не делю.   По отсчётам фазы нахожу мгновенную частоту.

Можно ли по отсчётам фазы  просуммировать сигналы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...