Модуляция: AM и кольцевая модуляция
Разбираем модуляцию — операцию, на которой держатся радиосвязь и звуковые эффекты.
Модуляция — управление одним сигналом (несущей) с помощью другого (модулирующего); чаще всего это умножение или изменение амплитуды несущей по закону сообщения.
Зачем нужна модуляция? Низкочастотный звук (голос, музыка) нельзя эффективно излучить антенной — нужна высокочастотная несущая. Модуляция «сажает» сообщение на несущую, переносит его на радиочастоту, а на приёмнике демодуляция возвращает звук. В музыке та же операция даёт эффекты (тремоло, кольцевая модуляция).
Амплитудная модуляция (AM)
В AM амплитуда несущей меняется по закону сообщения: x[n] = (1 + m*msg[n]) * carrier[n], где m — глубина модуляции. Несущая — высокая частота, сообщение — низкая.
import math
fs = 64
carrier_f = 8.0 # несущая
msg_f = 1.0 # сообщение (медленное)
m = 0.5 # глубина модуляции
am = []
for n in range(8):
msg = math.sin(2 * math.pi * msg_f * n / fs)
carrier = math.sin(2 * math.pi * carrier_f * n / fs)
am.append(round((1 + m * msg) * carrier, 3))
print("AM-сигнал:", am)
Вывод:
AM-сигнал: [0.0, 0.742, 1.098, 0.81, 0.0, -0.874, -1.278, -0.931]
Быстрая несущая «дрожит» по амплитуде в такт медленному сообщению — отсюда характерная «огибающая» AM-сигнала. По радио AM так передаёт звук на сотнях килогерц.
Боковые частоты: откуда они берутся
Умножение двух синусов по тригонометрической формуле даёт сумму двух новых частот: cos(A)*cos(B) = 0.5*cos(A-B) + 0.5*cos(A+B). То есть модуляция несущей fc сообщением fm рождает частоты fc-fm и fc+fm — боковые полосы. Проверим на числах.
import math
# Перемножим cos(2 Гц) и cos(5 Гц) и убедимся: появились 3 Гц и 7 Гц
fs = 32
prod = [round(math.cos(2 * math.pi * 2 * n / fs) * math.cos(2 * math.pi * 5 * n / fs), 3)
for n in range(8)]
# Сумма двух косинусов 3 и 7 Гц с амплитудой 0.5
check = [round(0.5 * math.cos(2 * math.pi * 3 * n / fs) +
0.5 * math.cos(2 * math.pi * 7 * n / fs), 3) for n in range(8)]
print("произведение:", prod)
print("0.5*(3Гц+7Гц):", check)
print("Совпадают:", prod == check)
Вывод:
произведение: [1.0, 0.513, -0.271, -0.375, -0.0, -0.075, -0.653, -0.768] 0.5*(3Гц+7Гц): [1.0, 0.513, -0.271, -0.375, -0.0, -0.075, -0.653, -0.768] Совпадают: True
Произведение тонов 2 и 5 Гц математически равно сумме тонов 3 и 7 Гц. Умножение сдвинуло энергию на новые частоты — это и есть боковые полосы AM.
Как работает под капотом
Перенос спектра — суть модуляции. В частотной области умножение на несущую fc сдвигает весь спектр сообщения вверх на fc (и зеркально вниз). Поэтому голос с полосой 3 кГц, умноженный на несущую 1 МГц, превращается в сигнал вокруг 1 МГц шириной 6 кГц — его уже можно излучить антенной. На приёмнике обратное умножение на ту же несущую сдвигает спектр назад к нулю (демодуляция), после чего ФНЧ выделяет исходный звук. Кольцевая модуляция (ring modulation) — это та же операция без слагаемого «1»: чистое произведение двух сигналов, дающее металлический «робо-голос», любимый эффект синтезаторов.
Частые ошибки
- Глубина модуляции больше 1 в AM. При
m > 1огибающая уходит в минус — возникает перемодуляция и искажения. - Забыть про боковые полосы при выборе fs. Модуляция расширяет спектр до
fc+fm;fsдолжна покрывать и эту частоту по Найквисту. - Путать AM и кольцевую модуляцию. В AM есть несущая (слагаемое 1), в кольцевой — чистое произведение, несущая подавлена.
Итог
- Модуляция управляет несущей с помощью сообщения; AM меняет амплитуду несущей.
- Умножение синусов рождает боковые частоты
fc±fm— перенос спектра. - Этот перенос позволяет передавать низкочастотный звук на радиочастоте.
- Кольцевая модуляция — чистое произведение без несущей, источник эффектов в синтезе.