Обновить

Разработка цифрового радиолюбительского протокола на базе OFDM. PHY‑уровень

Уровень сложностиСредний
Время на прочтение53 мин
Охват и читатели17K
Всего голосов 36: ↑36 и ↓0+47
Комментарии15

Комментарии 15

cfo_shifts = np.arange(-self._max_cfo, self._max_cfo + 1)

Решение использовать перебор для подстройки частоты выглядит не очень красиво и оптимально по использованию вычислительных ресурсов. Почему не использован вариант, применяемый в 802.11? Там для подстройки используют два участка (STF\LTF) с разным периодом автокорреляции для грубой и точной подстройки.

На этапе прототипирования некоторые решения делались в лоб. В перспективе более детально уделю внимание решению из 802.11.

ZC конечно хороша, но коррелятор на нее в time domain весьма ресурсен, и на мой взгляд неоправданно вносит сложность. Попробуйте комплексную m последовательность. Она работает ± также. На приеме никакого "единичного пика" шириной в 1 отсчет не происходит даже в самых лабораторных условия. Но есть максимум корреляции. Один, если допплер умеренный. Ну а дальше дело уже значительно проще.

На 2М диапазоне полосу голосового тракта можно взять существенно шире, тем самым либо увеличить скорость, либо существенно понизить BER.

Ну и пара вопросов:

  1. Планируется ли выпустить готовое решение типа DireWolf для оперсорсных ОС ?

  2. Почему макс размер пакета = 255 бит ? Сделайте длины кратные степеням двойки. Ну и в 31 байтах много не унесешь, это даже не LoRa. :)

  3. Какова длительность передачи одного пакета максимальной длины при QPSK и SNR = 0 dB ?

  4. Было ли проведено тестирование на КВ диапазонах ?

73! de R9LAJ.

Ширину старался взять дефолтную, то есть заранее влезть в узкие рамки.

Ответы на вопросы:

  1. Следующий этап -- реализация сетевого уровня.
    Когда дойдет до чего-то больше, чем набор скриптов -- пока не загадываю, но думаю, что будет какой-то артефакт.

  2. На этапе прототипирования, чтобы не уйти в бесконечный цикл доработок, было принято зафиксировать решение и добиться его работы.
    Еще одна из причин -- синхронизациия, было решено посылать несколько коротких пакетов, каждый со своей преамбулой, нежели переодическая синхронизация; тем не менее, было желание выделить еще один-два бита под макс объем пакета, но опять же бесконечный цикл переделок;
    Это тоже следующий этап разработки.

  3. 1.8 сек (преамбула + данные).

  4. На КВ предпринимались попытки провести тестирование, но не удавалось принять свой собственный сигнал на WebSDR приемники.

Было ли проведено тестирование на КВ диапазонах ?

На КВ успешно OFDM используется во FreeDV. Там даже голос через codec2 передают в нем.

о радиолюбительском протоколе VarAC, который по описанию выглядел как что-то "невероятное"

так вы тоже сделали что-то невероятное! Интересно сколько человек трудилось над таким достижением? Так смотришь у нас где-то цифровые радиостанции научатся делать!

но Питон для PHY-уровня меня конечно впечатляет)

Интересно сколько человек трудилось над таким достижением?

Один.

вот это вот странно что один! Это никому больше не интересно или вы это в большом секрете делали? И то и другое печально!

Многим интеерсно, вот я например делаю модем для передачи на КВ/УКВ через аналоговые радиостанции - https://github.com/reticulum-spb/Reticulum-TNC

Поставил Вам звездочку за использование Си. Надеюсь, доведёте проект до рабочего состояния.

Так он рабочий вполне (; Собирается в составе прошивки для RNS-Gate

Интерсно конечно, но и правда - почему Python то? Почему сразу не сделать (нормально ;) на Liquid-DSP например. Там примерно 75% из всего этого уже готово. Передача на УКВ получится только через SSB. Если модулировать OFDM через FM - не пролезет (я пробовал). Нелинейность и pre-emphasis все портят. Через FM работает максимум QPSK, даже для 16PSK уже не хватает фазовой стабильности. 73 de R1CBU

Интерсно конечно, но и правда - почему Python то? 

Библиотека numpy предоставляет большой инструментарий (си-оптимизированный). Для проверки гипотез проще и быстрее.

А так, были мысли, что когда дойдет до стадии артефакта, то придется переписывать на си.

Ну да, если как исследовательская задача то да. Но если с прицелом потом использовать в деле - то наверное проще сразу на Си. Тесты там тоже можно писать, в общем то максимум AWGN модель канала нужна и все.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации