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

в 7:20, , рубрики: AWGN, BER, dsp, numpy, python, QAM, QPSK, АБГШ, моделирование, цифровая обработка сигналов

Стандартная ситуация: разрабатывается сигнально-кодовая конструкция, хочется проверить её на устойчивость к шуму. Моделируем - и 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 равно 2sqrt{E_s}, тогда как у QAM-4 - sqrt{2E_s}.
То есть отношение расстояний:

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

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

Рис. 4. Три созвездия при одинаковой излучаемой мощности. У BPSK точки разнесены на 2sqrt{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=spscdot R_s, битовая скорость как R_b=mcdot 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 np

def 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.

Автор: Kot228begemot

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js