Разработка алгоритмов низкосложной фазовой модуляции для встраиваемых систем

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

Понимание фазовой модуляции во встроенных контекстах

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

Встроенные приложения, такие как беспроводные сенсорные узлы, IoT-теги, удаленный вход без ключа и маломощная телеметрия, полагаются на простые схемы фазовой модуляции, такие как Binary Phase Shift Keying (BPSK) или Quadrature Phase Shift Keying (QPSK). Эти схемы выигрывают от снижения количества состояний и детерминированного времени, что упрощает как модуляцию, так и демодуляцию. Для углубленного фона обратитесь к обзору фазовой модуляции в Википедии .

Ограничения при вождении низкосложного дизайна

Разработка алгоритмов фазовой модуляции для встраиваемых систем требует устранения нескольких фундаментальных ограничений, которые отличаются от реализаций на настольных компьютерах или на основе FPGA.

Ограниченная пропускная способность обработки

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

Ограничения памяти и хранения

На чипе ОЗУ часто измеряется в килобайтах. Поисковые таблицы для фазовых сдвигов должны быть компактными, а буферизация должна быть сведена к минимуму. Например, полная синусовая таблица с 1024 входами при 16-битном разрешении занимает 2 КБ - значительную долю общей памяти. Инженеры должны отменять размер таблицы на фазовое разрешение и гармонические искажения.

Энергоэффективность

Устройства с батарейным питанием требуют алгоритмов, минимизирующих активное время ЦП и позволяющих глубоко спать между передачами. Модуляция низкой сложности уменьшает количество инструкций на символ, снижая динамическую мощность. Кроме того, использование более простых фазовых состояний уменьшает количество переходов, что может уменьшить потери переключения в аналоговом переднем конце.

Реальный детерминизм времени

Фазовая модуляция часто работает на строгих часах символов. Отсутствие срока испортило весь пакет. Алгоритмы должны быть предсказуемыми, с ограниченным и известным временем исполнения в худшем случае (WCET). Поисковые таблицы и арифметика с фиксированной точкой помогают достичь детерминированной производительности, потому что путь вычислений одинаков для каждого символа.

Основные стратегии для упрощения алгоритмов

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

Фиксированная арифметика над плавающей точкой

Встроенные микроконтроллеры без FPU должны эмулировать плавающую точку в программном обеспечении, которое является медленным и раздутым. Используя представление с фиксированной точкой (например, формат Q15) карты дробных значений для целых чисел, позволяя умножать и складывать с помощью целочисленных операций ALU. Это уменьшает количество циклов на порядок. Например, увеличение фазы может быть представлено как углы с фиксированной точкой, нормализованные до (16-битный круговой счетчик). Все дополнения и сравнения становятся простыми целочисленными операциями. Всестороннее обсуждение методов с фиксированной точкой доступно в этой статье по арифметике с фиксированной точкой .

Поисковые столы для Sine и Cosine

Даже при фиксированной точечной арифметике оценка синуса/косина через CORDIC или полиномиальное приближение может быть слишком медленной. Предвычисленные таблицы, хранящиеся в ПЗУ или флэш-памяти, обеспечивают доступ O(1) по стоимости памяти. Для минимизации размера таблицы инженеры могут использовать четвертьволновую симметрию (хранить только 0°-90°) и интерполировать линейно для углов между записями таблицы. Например, 256-входная четвертьволновая таблица обеспечивает угловое разрешение 0,35° с всего 256 словами хранения. Шаг интерполяции добавляет несколько целочисленных операций умножения и накопления, что приемлемо на большинстве MCU.

Сокращение состояния фазы

Модуляция более высокого порядка (8-PSK, 16-QAM) требует более точных фазовых углов и более строгих допусков ошибок, увеличивая сложность. Для многих встроенных ссылок BPSK или QPSK обеспечивают достаточную скорость передачи данных. Использование меньшего количества фазовых состояний упрощает отображение от битов до фазовых сдвигов и уменьшает количество различных выходных значений для генерации. Это также расслабляет требуемые фазовые шумы и характеристики джиттера локального осциллятора.

Прямой цифровой синтез (DDS) с фазовым аккумулятором

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

В глубине пример: ключи сдвига бинарных фаз (BPSK)

BPSK — простейшая схема фазовой модуляции, использующая два фазовых состояния, разделенных на 180°.Малая сложность делает его основным продуктом для встроенных передатчиков.

Картирование и осуществление

Биты данных сопоставляются с фазовыми сдвигами: 0 → 0° смещение, 1 → 180° смещение. Используя DDS, передатчик сохраняет значение текущего фазового аккумулятора. При поступлении нового бита (при скорости символа) смещение фазы составляет либо 0, либо π (половина полноразмерного аккумулятора). Смещение просто добавляется к аккумулятору. Не требуется умножение; изменение символа является единичным целым дополнением. Получающаяся форма волны генерируется путем поиска синусовой амплитуды из предвычисленной таблицы и вывода ее на штифт DAC или PWM.

Соображения в отношении демодуляции

While this article focuses on modulation, it is worth noting that low-complexity modulation often pairs with simple non-coherent or differentially coherent demodulation (e.g., differential BPSK). This avoids the need for carrier recovery loops, further reducing receiver complexity. For more on BPSK, see the BPSK description on Wikipedia.

компромиссы

Простота BPSK достигается за счет спектральной эффективности: он передает только 1 бит на символ. Для более высоких скоростей передачи данных инженеры могут принять QPSK (2 бита / символ), который требует четырех фазовых состояний (0°, 90°, 180°, 270°). QPSK может быть реализован с использованием двух модуляторов BPSK в квадратуре, но это удваивает сложность: две таблицы поиска или одна таблица с косинусными и синусовыми выходами. Компромисс между сложностью и эффективностью пропускной способности должен оцениваться на основе требований скорости передачи данных приложения и условий канала.

Передовые технологии с низкой сложностью

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

Offset QPSK (OQPSK)

OQPSK уменьшает фазовые переходы на 180°, шатая в фазе и квадратуре биты на половину периода символа. Это снижает вариацию оболочек, делая её более подходящей для нелинейных усилителей мощности. Алгоритм модуляции почти идентичен QPSK, но требует дополнительного контроля времени для задержки одного канала. Сложность немного выше, но часто компенсирует усиление эффективности усилителя мощности.

Минимальная клавиша переключения передач (MSK)

MSK представляет собой непрерывную фазовую модуляцию, где фаза развивается линейно, избегая резких разрывов. Его можно рассматривать как OQPSK с полусинусоидальным импульсным формированием. Подход фазового аккумулятора работает естественным образом: фазовый прирост не постоянен, а получен из бита данных. MSK обеспечивает постоянную оболочку (без амплитудной модуляции) и отличную спектральную сдерживание. Сложность реализации умеренная; для генерации плавной фазовой траектории требуется немного большая таблица поиска (или интерполяция). Многие стандарты малой мощности (например, Bluetooth) используют гауссовский MSK (GMSK), который добавляет гауссовский фильтр - все еще осуществим на современных MCU.

CORDIC алгоритм для ротации фазы

Алгоритм цифрового компьютера с координационным вращением (CORDIC) вычисляет синус и косинус без множителей, используя только операции сдвига и добавления. Он идеально подходит для чипов без аппаратного множителя. Для фазовой модуляции CORDIC может заменить таблицу поиска, если память чрезвычайно плотная (например, статья CORDIC < 128 bytes of ROM). However, CORDIC requires multiple iterations (e.g., 16 iterations for 16-bit precision), consuming more cycles than a table lookup. On many embedded cores, the table approach is faster unless the table size is prohibitive. A good overview of CORDIC is provided by Википедии ).

Практические соображения по осуществлению

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

Фазовый шум и джиттер

Встроенные локальные осцилляторы (LC осцилляторы, RC осцилляторы или кристаллические PLL) страдают от фазового шума и джиттера. Алгоритмы модуляции с низкой сложностью, которые предполагают идеальное управление фазой, могут ухудшаться в шумных условиях. Использование дифференциального кодирования (например, DPSK) позволяет избежать абсолютной фазовой отсчета, что делает связь надежной для медленного фазового дрейфа. Это добавляет небольшое количество сложности (один XOR-шлюз на бит в модуляторе), но может значительно повысить надежность.

Процент проб и анти-алиасинг

Скорость выхода DAC или PWM должна быть как минимум вдвое выше самой высокой частотной составляющей модулированного сигнала (Nyquist). Для QPSK на несущей 1 МГц со скоростью символа 100 кГц полоса пропускания составляет около 100 кГц, поэтому достаточно 200 кГц DAC. Однако увеличение частоты фазового аккумулятора при скорости выборки, а не скорости символа. Использование более высокой частоты выборки улучшает спектральную чистоту вывода, но увеличивает нагрузку на ЦП. Инженеры должны выбрать минимальную частоту выборки, которая соответствует целям гармонических искажений, часто в 4-8 раз больше несущей частоты для простых выходов квадратной волны с небольшой фильтрацией.

Обработка прерываний в реальном времени

Обычно процедура модуляции называется от прерывания таймера. Обычный режим обслуживания прерываний (ISR) должен быть кратким: считывать смещение фазы, добавлять в аккумулятор, приносить значение синуса, записывать на выходной регистр. Сохранение и восстановление контекста может доминировать над накладными расходами, если не оптимизировать. Использование предвычисленных таблиц поиска в оперативной памяти или на чипе вспышки с прямым доступом к памяти (DMA) может разгрузить процессор. Например, канал DMA может передавать образцы предвычисленной модуляции в DAC с фиксированной скоростью, в то время как процессор обновляет таблицу смещение фазы только один раз на символ. Этот метод резко снижает использование процессора.

Основополагающая сложность

Для количественной оценки снижения сложности рассмотрим типичный 8-битный микроконтроллер (например, Atmel AVR), реализующий BPSK с DDS. Операции по выборке:

Это примерно 5-10 циклов на образец. При частоте выборки 200 кГц процессор тратит около 1-2 MIPS на модуляцию, оставляя много места для обработки протокола или считывания датчиков. Аналогичная реализация с плавающей точкой потребует десятков циклов на образец и библиотеки эмуляции FPU, увеличивая размер кода и потребляемую мощность.

Для QPSK верхние двойники (два фазовых аккумулятора или один с cosine + sine). Использование 256-входной четвертиволновой таблицы с линейной интерполяцией добавляет еще несколько циклов, но все еще вписывается в менее 20 циклов на образец на 16-битной MCU. Отпечаток памяти для таблиц, фазовых аккумуляторов и буферов остается ниже 2 КБ, что подходит для многих недорогих устройств.

Примеры применения

Беспроводные сенсорные сети

Приемопередатчики с низким энергопотреблением в сенсорных узлах (например, полоса ISM 868/915 МГц) часто встраивают простой фазовый модулятор на выделенный чип. Однако для гибких, программно-определяемых модуляторов, которые могут переключаться между BPSK, OOK и MSK, привлекательна реализация на основе MCU. Низкая сложность позволяет MCU спать между передачами, экономя время автономной работы.

Теги IoT Sub-GHz

Активные RFID-метки и пульты дистанционного управления используют OOK или FSK традиционно, но для лучшего помехоустойчивости набирает популярность BPSK. Алгоритм низкой сложности гарантирует, что даже дешевый 4-битный MCU может генерировать модулированную несущую непосредственно на штифте ввода/вывода путем переключения на несущей частоте (подход к ключам с частотным сдвигом) или с помощью PWM с фазовым аккумулятором. Размер кода может быть ниже 1 КБ.

Аудио и ультразвуковые ссылки данных

Передача данных на короткие расстояния по аудио (например, с использованием микрофонов и динамиков) может использовать фазовую модуляцию в ультразвуковой полосе. Поскольку частота выборки низкая (~48 кГц), алгоритм модуляции может быть чрезвычайно простым. Таблица поиска для 16- или 32-фазных состояний с линейной интерполяцией обеспечивает достаточное качество для доставки сообщений.

Заключение

Разработка алгоритмов фазовой модуляции с низкой сложностью имеет важное значение для успешного развертывания встроенной системы, где ресурсы ограничены. Используя арифметику с фиксированной точкой, компактные таблицы поиска, архитектуры фазовых аккумуляторов и уменьшенные количества состояний сигнала, инженеры могут создавать надежные модуляторы, которые работают на недорогих микроконтроллерах с минимальным потреблением энергии. Компромиссы между сложностью, памятью и скоростью передачи данных должны быть тщательно сбалансированы с требованиями приложений. Такие методы, как CORDIC, дифференциальное кодирование и выход DMA, предлагают дальнейшие пути оптимизации. С помощью стратегий, изложенных в этой статье, разработчики могут реализовать эффективную фазовую модуляцию без перегрузки ограниченных аппаратных ресурсов, обеспечивая надежную беспроводную связь в самых ограниченных встроенных средах.