Как стать автором
Обновить

Декодирование BPSK Модуляции из Звука (или передача данных по воздуху)

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.1K
Всего голосов 21: ↑19 и ↓2+22
Комментарии25

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

"Как в декодированном BPSK потоке семплов найти начало бита, если уже долгое время передаются только нули (или только единицы)?"
Никак. Нет смены значения битов -> нет смены фазы -> нечего искать.

"-Как бороться с тем, что в BPSK модуляции данные можно интерпретировать и принять как инвертированные биты?"
Вы сами ответили на этот вопрос в тексте: "Видимо это задача протокола канального уровня."
Используются уникальная комбинация битов/проверка CRC/особые виды кодирования: https://wirelesspi.com/resolving-phase-ambiguity-through-unique-word-and-differential-encoding-and-decoding/
https://en.wikipedia.org/wiki/Differential_coding

Так же как и как и в радио - добавить преамбулу и синхрослово.

вообще вроде как BPSK не используется без OFDM. преамбула и синхрослово определяются на уровне OFDM.

В GPS BPSK  точно используется без OFDM.

да я как то не так выразился, с GPS действительно, не приходилось разбираться. Тогда и мне интересно как синхронизацию делают, когда нет OFDM. Но в GPS очень маленький трафик, там можно просто перерывами синхранизацию обеспечить на сколько я понимаю.

Но в GPS очень маленький трафик

Каждый спутник GPS передает 50 бит в секунду. А если считать C/A код разделения каналов, то получается 1023541 бит/s =1.023 Mbit/s. 1 chip = 977ns! И надо минимум 4 канала. Получается надо принять 4.092 Mbit/s.

Это больше чем надо для передачи видео.
Там только из аналоговой части по ADC данные выгребаются на частоте 16....38 MHz.
Так что GPS - это очень большой трафик.

А если считать C/A код разделения каналов, то получается 1023541 бит/s =1.023 Mbit/s.

а я не помню что такое "C/A код разделения каналов".

Что-то как то уж очень много получается, может это все таки OFDM? там как раз все под такое "много" заточено?

Передатчик то один сигнал передает, или на каждый чип свой передатчик?

В GPS используется кодовое разделение данных, все спутники предают сигнал на одной частоте.

Про то, как устроена передача данных в GPS, я писал здесь: https://habr.com/ru/articles/765402/

Навигационные данные идут с низкой скоростью - 50bit/s, дальномерный код - 1.023 Mbit/s. Но дальномерный код просто повторяется, и, упрощенно говоря, является синхроимпульсами сложной формы.

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

я не понимаю как это все спутники предают сигнал на одной частоте, как их приемник разбирает, да еще после какого-то XOR-а.

В GNSS навигации происходит кодовое разделение канала CDMA.
https://habr.com/ru/articles/765402/#comment_26593591

В Youtube есть ролик: "как по одному проводу разговаривают одновременно миллионы"

На самом деле технологию CDMA мы используем чаще чем кажется, причем на самом бытовом уровне.

Вот оставил кто-то машину в неположенном месте у ТРЦ с номерами a120еу 177 и
администратор торгового центра говорит в мегафон

Владелец автомобиля с номером: Авраам ,1, 2, 0, Евлампий , Урий ,1, 7, 7 просьба отогнать автомобиль.

Тут вместо букв используют имена, которые начинаются на эти буквы (код). Поэтому так чётче слышно на фоне всеобщего шума.

общие принципы я знаю, мне хотелось бы понять как это считается в реальной цифровой системе на практике с точки зрения математики-реальных вычислений. Я знаю даже что там ортогональные сигналы используются, я даже понимаю (примерно помню:) что это такое :).

мне хотелось бы понять как это считается в реальной цифровой системе на практике с точки зрения математики-реальных вычислений.

Вот у @iliasam есть культовый текст про реализацию навигационного приёмника: SDR приемник GPS на микроконтроллере https://habr.com/ru/articles/789382/

Там вообще однобитная арифметика задействована, чтобы снизить объём вычислений.

тут вот возможно хороший пример чтобы одну закономерность, которую я наблюдаю снова и снова.

Вот там приведена и упоминается схема, вот так :

Какие же операции нужно производить в GPS приемнике? Вот так выглядит классическая структурная схема цепочки операций:

Мне кажется для понимания принципа кодирования-декодирования важно привести теорию которая выводит эту схему (эту формулу, последовательность операций), но этой теории там нет. Эта теория настолько очевидна что автор не дал ее описания, или она очень сложна и требует другой статьи поэтому она опущена?

Закономерность в том что как обычно ключевой момент для понимания достаточно сложной темы оказывается пропущен, мне интересно почему всегда так получается!

важно привести теорию которая выводит эту схему (эту формулу, последовательность операций), но этой теории там нет. 

Мне сложно придумать раздел математики, который бы не использовался в теории GNSS навигации

Я специально не приводил формулы в статье.
"Любая формула, включенная в книгу, уменьшает число ее покупателей вдвое".
В статье дана ссылка на книгу, в которой есть нужные формулы: https://www.ocf.berkeley.edu/~marsy/resources/gnss/A Software-Defined GPS and Galileo Receiver.pdf
И да, теории там много.

Тогда надо больше картинок.

похоже на то что мне нужно, почитаю на досуге, спасибо.

Я думаю, что как в большинстве протоколов, нечувствительных к 0 и 1 - бит-стаффингом, т.е. если N бит передается неизменными - вставляется противоположный, раздвигая поток.
Если здесь поискать статьи про USB, есть кодирование с J,K и другими состояниями.

Спасибо, интересный эксперимент!
Про отличия BPSK я бы сказал иначе - она лучше по "качеству", но сложнее в декодировании.

Зато записывать и воспроизводить звук намного дешевле, проще и удобнее, чем радиоволны.

...

Декодировать BPSK из записи звука на диктофоне.

...

Затем я воспроизвел этот *.wav файл на одном мобильном телефоне и записал диктофоном на другой телефон.

Я совершенно профан в низком уровне (когда частоты, фазы и связанная математика начинают фигурировать - мне описания цифровых режимов от любительского радио хватает, чтобы погрустнеть) - но мне казалось, что именно с Phase Shift в звуке - некоторые проблемы. Микрофоны несколько плохо к такому издевательству относятся. Я неправ?

И смена фазы разве не создает существенные помехи на частоте кратной битовой скорости? Для слышимого аудио (300Гц-20000кГц) это уже существенно - всю начальную часть спектра можно забить и сделать непригодной для использования в протоколе?

Интересная работа. Правда на мой взгляд не плохо было бы дополнить кодом для наглядности.

Интересно посмотреть на спектр управляющего сигнала LO на реальной передаче.

Были ли попытки поднять частоту несущей, например до fs/4?

Вместо FIR применить IIR

Разжевано все очень неплохо, но некоторые моменты напрягают.

что касается практических применений то в первую очередь вспоминаются программы для компов 80х-90х записанные на кассетные магнитофоны. Там, правда, модуляция и обработка попроще была. Ну и в общем то модемы для аналоговых линий. Те кто наслушался этих звуков может ностальгически и оценят передачу данных динамиком и микрофоном, но песни эти не слишком музыкальны. (Гораздо) более выскокочастотные сигналы и органы чувств не раздражают и работают быстрее.

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

Почему и есть куча ограничений на защищаемые помещения и технику. Не говоря даже о выделенных. Там вообще мрак.

--Было бы здорово сделать FPGA или даже ASIC, который в реальном времени сможет декодировать акустический BPSK и выдавать в SPI сырые данные m(t), которые он снял из BPSK сигнала. Проблема в том что каждый семпл надо успеть рассчитать за 1/44100Hz = 22.676 us. Самое ёмкое в вычислениях это два FIR фильтра нижних частот порядка 100...200.

И вот тут плата от ASIC Antminer, про которую недавно была статья, впишется идеально по характеристикам! Мощная SoC, FPGA, куча интерфейсов.

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

Публикации

Истории