Ловушка добавления АБГШ

от автора

Стандартная ситуация: разрабатывается сигнально-кодовая конструкция, хочется проверить её на устойчивость к шуму. Моделируем — и BER-кривая оказывается на 3 дБ левее теоретической (Рис.1). Знакомо? Тут два варианта: либо ваша система действительно хороша и стоит задуматься о патенте, либо стоит проверить правильность добавления шума к сигналу.

Рис. 1. Та самая ситуация: смоделированная кривая помехоустойчивости ровно на 3 дБ лучше теоретической.

Рис. 1. Та самая ситуация: смоделированная кривая помехоустойчивости ровно на 3 дБ лучше теоретической.

Сегодня разберём АБГШ (AWGN, Additive White Gaussian Noise — аддитивный белый гауссовский шум) — самую популярную модель шума в цифровой связи — и разберёмся, сколько нужно «насыпать» шума, чтобы моделировать правильно.

Итак, что такое АБГШ?

Сначала разберёмся с аббревиатурой:

Аддитивный — шум просто складывается с полезным сигналом r(t) = s(t) + n(t) (Рис. 2)

Рис. 2. Сверху чистый модулированный сигнал, посередине шум, снизу их сумма - то, что видит приёмник.

Рис. 2. Сверху чистый модулированный сигнал, посередине шум, снизу их сумма — то, что видит приёмник.

Белый — это шум, спектральная плотность мощности (СПМ) которого равномерно распределена по всем частотам (Рис. 3, справа). Белый шум — это математическая модель, физически он существовать не может, поскольку его мощность бесконечно большая. Но у реального теплового шума (когда речь идёт об АБГШ, это означает, что мы моделируем тепловой шум приёмника) СПМ практически постоянна вплоть до частот порядка терагерц, а полоса любой системы связи на порядки уже. Поэтому в пределах полосы приёмника тепловой шум неотличим от белого.

Гауссовский — отсчёты шума имеют нормальное распределение (Рис. 3, слева). Тепловой шум — сумма огромного количества хаотично движущихся электронов, а сумма большого числа независимых случайных величин стремится к гауссовскому распределению.

Рис. 3. Один и тот же шум с двух сторон. Слева - гистограмма отсчётов идеально ложится на плотность вероятности. Справа - спектральная плотность мощности постоянная на всех частотах.

Рис. 3. Один и тот же шум с двух сторон. Слева — гистограмма отсчётов идеально ложится на плотность вероятности. Справа — спектральная плотность мощности постоянная на всех частотах.

Сколько шума насыпаем?

Переходим к практике. Есть модулированный сигнал, хотим добавить шум и посмотреть на помехоустойчивость. Первый вопрос — в каких координатах строить кривую помехоустойчивости: SNR или E_b/N_0? Оказывается, от ответа зависит, будут ли вообще сравнимы результаты модуляций.

SNR и Eb/N0

Итак, допустим, мы хотим понять, что такое SNR и E_b/N_0 и почему в цифровой связи принято использовать именно E_b/N_0.

Пусть мы передаём в эфире два сигнала с одинаковой символьной скоростью и одинаковой излучаемой мощностью. Один сигнал — BPSK, другой — QAM-4.

Хочется понять взаимосвязь BER и SNR для каждого из сигналов.

Чтобы мощность P была одинаковой, должны быть одинаковыми энергии (E_s) и длительности символов (T_s), а значит, и амплитуды символов будут равны: A=\sqrt{E_s}.

В таком случае чисто геометрически понятно (Рис. 4), что расстояние между соседними точками созвездия у BPSK равно 2\sqrt{E_s}, тогда как у QAM-4 — \sqrt{2E_s}.
То есть отношение расстояний:

\frac{d_{BPSK}}{d_{QAM}} = \frac{2\sqrt{E_s}}{\sqrt{2E_s}} = \sqrt{2}

Рис. 4. Три созвездия при одинаковой излучаемой мощности. У BPSK точки разнесены на , у QAM-4 соседние точки ближе: , поэтому при равной мощности он ошибается чаще. Справа - BPSK с увеличенной скоростью передачи до скорости QAM-4: энергия символа упала вдвое, и расстояния между точками сравнялись.

Рис. 4. Три созвездия при одинаковой излучаемой мощности. У BPSK точки разнесены на 2\sqrt{E_s}, у QAM-4 соседние точки ближе: \sqrt{2E_s}, поэтому при равной мощности он ошибается чаще. Справа — BPSK с увеличенной скоростью передачи до скорости QAM-4: энергия символа упала вдвое, и расстояния между точками сравнялись.

Вероятность ошибки определяется расстоянием между ближайшими точками созвездия, тогда, чтобы BPSK ошибался так же часто, как QAM-4, ему нужно понизить энергию символа в 2 раза. Поэтому при равной символьной скорости и энергии символов BPSK выигрывает 3 дБ по оси SNR, и причина этому — геометрическая.

Но вот проблема: BPSK и QAM-4 переносят разное количество информации в единицу времени, а «расход» мощности у них одинаковый — кажется, что так сравнивать не слишком честно. Поэтому попробуем сравнить два цифровых вида модуляции по количеству доставленных бит.

Чтобы BPSK доставлял столько же бит, сколько QAM-4, надо увеличить скорость передачи в два раза. Тогда длительность символа уменьшится, а с ней в два раза уменьшится и энергия символа. При таком подходе расстояния между точками созвездий сравняются (Рис. 4, справа), и 3 дБ по оси SNR исчезнут.

В чём ключевая идея перехода от SNR к Eb/N0?

Каждый символ несёт определённое количество бит, и если перейти от символов к битам, то у обеих систем совпадёт энергия, приходящаяся на один бит:

P = \frac{E_s}{T_s} = \frac{m \cdot E_b}{m \cdot T_b} = E_b \cdot R_b

откуда E_b = P/R_b. Мощность осталась неизменной, а скорость передачи в обоих случаях стала одинаковой — поэтому зафиксируем эту величину и выразим через неё SNR:

SNR = \frac{P}{P_{noise}} = \frac{E_b \cdot R_b}{N_0 \cdot W} = \frac{E_b}{N_0} \cdot \frac{R_b}{W}

Осталось выразить соотношение:

\frac{E_b}{N_0} = SNR \cdot \frac{W}{R_b}

где:
m — количество бит в символе
R_b — скорость передачи бит
T_s — длительность символа
W — частота дискретизации
N_0 — СПМ шумовой полки

SNR содержит в себе две независимые сущности: энергию на один бит и количество бит в одном герце полосы (за вторую BPSK заплатил вдвое большей полосой). А BER определяется только первой — поэтому её и выносят на отдельную ось (Рис. 5).

Рис. 5. Одни и те же BPSK и QAM-4 в разных координатах. По оси SNR кривые расходятся на 3 дБ, и кажется, что BPSK «лучше». По оси Eb/N0 кривые совпали: за 3 дБ выигрыша BPSK платит вдвое большей полосой на тот же битрейт. BER определяется энергией на бит, поэтому честная ось - Eb/N0.

Рис. 5. Одни и те же BPSK и QAM-4 в разных координатах. По оси SNR кривые расходятся на 3 дБ, и кажется, что BPSK «лучше». По оси Eb/N0 кривые совпали: за 3 дБ выигрыша BPSK платит вдвое большей полосой на тот же битрейт. BER определяется энергией на бит, поэтому честная ось — Eb/N0.

Так сколько же шума добавить-то?

Чтобы ответить на этот вопрос, нужно получить формулу мощности шума. У нас уже есть соотношение:

\frac{E_b}{N_0} = SNR \cdot \frac{W}{R_b}

И в SNR входит мощность шума, которая нам и нужна.

Частота дискретизации считается как W=sps\cdot R_s, битовая скорость как R_b=m\cdot R_s. Собирая всё написанное вместе, получим:

SNR=\frac{E_b}{N_0} \cdot \frac{R_b}{W}=\frac{E_b}{N_0}\cdot \frac{m}{sps}

откуда:

P_{noise} = P \cdot \frac{N_0}{E_b} \cdot \frac{sps}{m}

Итого:

  • задали целевое значение E_b/N_0;

  • посчитали мощность сигнала P;

  • посмотрели, сколько бит переносит один символ (m);

  • посмотрели, сколько отсчётов приходится на один символ (sps).

Исходя из этих параметров, рассчитали необходимую мощность шума.
И не забудьте: для комплексного сигнала мощность шума делится поровну между квадратурами: \sigma_I^2 = \sigma_Q^2 = P_{noise}/2.

Как это выглядит в коде

Код на Python, рассчитывающий правильную мощность шума, выглядит так:

import numpy as npdef add_awgn(signal, ebno_db, m, sps):     p_signal = np.mean(np.abs(signal) ** 2)    p_noise = p_signal * 10 ** (-ebno_db / 10) * sps / m    sigma = np.sqrt(p_noise / 2)    i = np.random.normal(0, sigma, len(signal))    q = np.random.normal(0, sigma, len(signal))    return signal + i + 1j * q

Заключение

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

P.S. Спасибо, что дочитали! Про цифровую обработку сигналов и технологии в сфере телекоммуникаций пишу в своём телеграм-канале Inspectrum DSP.

ссылка на оригинал статьи https://habr.com/ru/articles/1065700/