После приёмной части (SDR RX стенд на STM32H723) логично было взяться за передающую. Для отладки решил сделать отдельный стенд. Однополосная модуляция формируется полярным (EER) методом. Впервые этот метод был предложен Леонардом Канном в 1952 году. Долгое время он оставался в тени классических фильтровых или фазовых методов из-за сложности реализации в аналоговую эпоху, однако сегодня переживает «второе рождение» в современных цифровых трансиверах (например, uSDX, QRP Labs QMX, FlexRadio Aurora (AU-510/520, новинка 2025–26)), благодаря SDR-технологиям и цифровым сигнальным процессорам (DSP). Классический метод Канна превратился в доминирующую промышленную технологию 4G/5G и Wi-Fi благодаря двум факторам — кремниевой интеграции (CMOS) и колоссальному скачку в скорости цифровой обработки сигналов.

Современные стандарты связи используют сигналы с огромным пик-фактором (PAPR). Попытка усиливать их «в лоб» линейными усилителями класса A или AB приводит к тому, что КПД передатчика смартфона падает до катастрофических 10–15%, превращая энергию батареи в тепло.

Леонард Канн предложил по-другому разделить сигнал на составляющие:

S(t) = A(t) · cos(φ(t))

где A(t) — огибающая, φ(t) — несущая с фазовой модуляцией. Фазовый тракт пропускается через нелинейный (ключевой) усилитель класса C или E, который работает как переключатель и потому имеет КПД 80–90 %, а амплитуда возвращается в сигнал уже на последнем каскаде — модуляцией его питания. Линейность обеспечивается не усилителем, а точностью разделения и восстановления.

ТЗ

SSB формируется двумя независимыми трактами, которые складываются уже в выходном каскаде:

  • фаза — генератор Si5351, перестраиваемый на каждом такте DSP;

  • амплитуда — огибающая модулирует питание стока выходного транзистора.

Весь стенд
Весь стенд

Что получилось

Только передача, диапазон 40 м, LSB/USB, 12 В питания, RD16HHF1:

Параметр

Значение

Выходная мощность

3,6–3,7 Вт

КПД выходного каскада

67,5 %

Ток

0,45 А на передаче, 0,08 А без передачи

IMD3 (двухтон)

19,2…23,0 дБ

IP3

40,2…42,3 dBm

Гармоники (один тон)

−42 и −58 дБц

Стенд собран на макете, и это важно для всех приведённых выше цифр.

Железо

Узел

Что стоит

MCU

WeAct Black Pill, STM32F411CEU6, 96 МГц

Синтез

Si5351A: CLK0 — несущая с фазовой модуляцией, CLK2 — опора для осциллографа

Драйвер CLK0

Si5351 3,3 В → 74ACT08 (3,3 → 5 В) → затвор

Огибающая

ШИМ PA8, 100 кГц, 10 бит

Модулятор

PA8 → TC4420 → IRF4905 → L 100 мкГн → 100 нФ + 4,7 мкФ → питание PA

PA

класс E: 2× BS170 или RD16HHF1

USB

UAC1 (звук) + CDC (CAT и сервисная консоль)

Схемы в PDF: rev 1.0, 2× BS170 и rev 1.1, RD16HHF1.

Модулятор питания

Основная сложность передачи — не фаза, а огибающая. Нужен источник, который быстро и точно меняет питание стока от 0 до 12 В. У uSDX питание стока постоянное: ШИМ через RC-фильтр и разделительный конденсатор подаётся на затвор 3× BS170. Здесь — ШИМ-модулятор 100 кГц: сигнал PA8 усиливается драйвером с 3,3 до 5 В и управляет затвором IRF4905, а на сток выходного транзистора через LC-фильтр подаётся уже модулированное питание.

Почему 100 кГц: при 96 МГц тактирования и ARR 959 получается 10-битная скважность, а частота пульсаций далеко от полосы огибающей. Фильтр 100 мкГн + 4,7 мкФ даёт срез около 7,3 кГц — с запасом выше 2,8 кГц полосы SSB, а 100 кГц давится примерно на 45 дБ.

Ключ — P-канальный IRF4905, драйвер TC4420. Диод свободного хода SS34 замыкает ток дросселя, когда ключ закрыт.

Здесь была отдельная история с землёй. На макете модулятор сначала «звенел» так, что смотреть огибающую было бессмысленно; после переделки силовой земли картинка стала такой:

Выход ШИМ-модулятора
Выход ШИМ-модулятора

Выход ШИМ-модулятора: FFT, 1 кГц/дел, маркеры 1 и 3 кГц.

И огибающая двухтона 1000/1100 Гц — биения 100 Гц, гребень 10,7 В, основание 0,8 В:

Огибающая двухтона
Огибающая двухтона

Тракт DSP

Такт модулятора — 8000 Гц. Число не случайное: оно должно быть целым делителем частоты USB-звука 48 кГц. 48 000 / 6 = 8000, 48 000 / 5 = 9600. Попытка использовать 9600 Гц у меня закончилась печально: я упёрся в скорость шины I2C для управления генератором Si5351. Остановился на 8000 Гц.

Обработка одного отсчёта:

  1. Вход: тест-тон, двухтон, шум или голос с ПК.

  2. ФВЧ Баттерворта 200 Гц — нижняя граница полосы; полоса 200…2800 Гц.

  3. Аналитический сигнал: линия задержки 16 отсчётов, I = v[7]·2, Q — 15-отводный Гильберт.

  4. Огибающая: |z| = √((i/2)² + (q/2)²) точным arm_sqrt_f32, затем сдвиг и ограничение.

  5. Фаза: arm_atan2_f32, разворачивание скачка ±π, пересчёт в герцы.

  6. Выход: сначала огибающая (ШИМ/ЦАП), потом запуск неблокирующей записи фазы в Si5351.

Порядок важен: амплитуда отсчёта фиксируется раньше, чем стартует передача фазы, иначе половины полярного сигнала расходятся по задержке, а это прямой путь к IMD. Остаточный разбег компенсируется балансом syn (±6 тактов).

Огибающая пишется в Si5351-независимый путь: HAL_I2C_Mem_Write_IT, такт шину не ждёт. Раньше было блокирующее, и это съедало бюджет целиком. Теперь неблокирующая запись регистров генератора Si5351.

Измерения

Стенд RD16HHF1, 40 метров, питание 12 В, прибор OSA103-mini:

ТР при тоне 1 кГц
ТР при тоне 1 кГц
АЧХ при тоне 1 кГц
АЧХ при тоне 1 кГц
ИМД двухтона 800/1500 Гц
ИМД двухтона 800/1500 Гц

На картинке — ИМД двухтона 800/1500 Гц.

Отдельно про смещение RD16HHF1: оно выставляется подстроечником R3 по компромиссу «наилучший IMD при минимальном токе покоя, т. е. высоком КПД». При завышенном смещении транзистор перестаёт полностью закрываться, режим уходит от класса E к линейному A/B: IMD может улучшиться, но КПД и нагрев ухудшаются. При заниженном растут IMD и требуемая раскачка. При питании стока выходного транзистора выше 12…13,8 В выходная мощность растёт, но смещение надо корректировать и следить за нагревом.

Софт

Прошивка на C, CMake, CMSIS-DSP. Приложение — WPF, .NET 8, один exe.

Приложение работает через тот же COM-порт: опрос состояния, настройки, CAT-команды; все сервисные команды идут поверх CAT-протокола. Настройки стенда хранятся во флеше МК, приложение их читает, а не навязывает.

Приложение
Приложение

CAT — Kenwood TS-480, проверено с WSJT-X/JTDX и fldigi. Скорость 9600 не имеет значения для USB CDC, можно и 115200.

Работа стенда в моде FT8 под управлением JTDX, диапазон 40 м.
Работа стенда в моде FT8 под управлением JTDX, диапазон 40 м.
Стенд в диспетчере устройств
Стенд в диспетчере устройств

Ограничения и что дальше

  • Только передача. Приёмник отдельный, реле антенны можно повесить на ключ от PC13, где висит светодиод передачи.

  • ЦАП-тракт не доведён до ума. PCM5102 по I2S выводит огибающую, но аппаратной части питания стока через ЦАП нет — выход остаётся контрольным. Это задел на будущее.

  • Разрешение огибающей — 8 бит амплитуды и 10 бит скважности. Шаг ~12 мВ, продукты квантования слышны в мелочах. Возможно, вылечится дизерингом ШИМ.

  • 15-отводный Гильберт даёт разбаланс амплитуд 1–3 %, это порядка −36 дБ зеркального канала. 31 отвод должен дать +15–20 дБ к подавлению зеркалки, но IMD3 упирается не в него, а в модулятор и PA.

  • Макет. Земля, петля затвора и наводки — сейчас главный источник грязи. Правильно разведённая плата даст больше, чем любая правка DSP.

Планы на будущее: плата, дизеринг ШИМ, предкоррекция огибающей по измеренной кривой duty → напряжение, и уже потом 31-отводный Гильберт.

Ссылки

Видео работы стенда
Видео работы стенда

В роли SDR-приёмника с HDSDR — OSA103-mini; с 01:50 запись звука с аналогового трансивера.

73!