Снова про SSB

Что мы всё про войну, давайте про радио поговорим. Благо радио неразрывно связано с преппингом к этой самой войне.

Читаю я всё, читаю про генерацию боковой полосы методом квадратурной модуляции, и все говорят, что да, метод норм, и несущая прекрасно давится на -40 децибел. Самое сложное во всей операции — это сдвиг фазы для модулирующего сигнала на девяносто градусов. Если бы там была одна частота, то было бы без проблем. Но речь при связи на КВ — это полоса от 300 герц до 2700 герц, и двигать по фазе все эти сигналы задача уже нетривиальная.

Можно сделать это на микросхемах ОУ. Каждый такой блок сдвигает сигнал определённой полосы, чтобы сдвинуть весь сигнал, таких блоков понадобится несколько. Вот, например, схема из американского радиолюбительского журнала QST от Апреля 1993 года.

Тут потребуется аж шесть операционных усилителей — в схеме, правда, используются счетверённые ОУ микросхемы NE5514, так что физически их нужно только две:

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

А не можно ли попроще? Оказывается, можно. Правда, это попроще уже лично мне, так как я нимношка умею в программирование. Это не обязательно будет попроще всем.

Сдвигать сигнал по фазе можно методами цифровой обработки звука. В частности, у нас есть преобразование Гильберта. В русской Википедии про него написано косожопо и непонятно, поэтому даю ссылку на английскую версию. Преобразование Гильберта, тесно связанное с обратным преобразованием Фурье, сдвигает сигналы всех частот на π⁄2 радиан (90 градусов). То, что и было нужно.

Скажите, вы любите язык программирования Питон? Я да. Разумеется, не за косорукий синтаксис, и не за выделение блоков кода отступлением, когда поиск того, что выполняется и когда в сложном вложенном if(), становится мукой. Я люблю язык программирования Питон за то, что в нём есть просто ТУЕВА ХУЧА нужного, что не надо писать самостоятельно с нуля руками. Особенно круты модули Numpy и SciPy — ну, я вот даже не знаю, как бы я без них жил.

И что бы вы думали, преобразование Гильберта там тоже есть: scipy.signal.hilbert

Так что оцифровываем кусочек в ℝ массив, суём его scipy.signal.hilbert. Оцифрованный и обработанный звук можно совать в выход звуковой карточки: в левом канале не обработанный звук, в правом обработанный.

Если очень хочется без “большого” компьютера, современные микроконтроллеры на архитектуре ARM тоже смогут. Например, модели плат Teensy постарше. И писать преобразование Гильберта с нуля там тоже не надо, люди уже написали Teensy Audio Library, где всё это уже есть.

В-общем, конечно, современное радио — это SDR. Формально оно сложное, так как требует процессорных мощностей, но это как раз тот случай, когда сделать сложно — проще.