Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АРУ для M-QAM старших порядков
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Grizzzly
Подскажите, пожалуйста, как правильно нормировать созвездие QAM на приемной стороне? Допустим, передатчик формирует сигнал со средней мощностью созвездия, равной 1. АРУ работает со смесью сигнала и шума. Получается, что на входе мощность (1+10^(-SNR/10)). То есть нужно еще оценивать отношение С/Ш, чтобы домножать созвездие для принятия решения? Ведь для малых SNR без этого опорное и принятое созвездия будут существенно отличаться по средней мощности.

UPD.: Нашел, как считают бины в созвездии: https://ecommons.usask.ca/bitstream/handle/...MQAM_Thesis.pdf. П. 4.5.1 и 4.5.2.

UPD2.: Нашел примерчик в Simulink, где используется, помимо АРУ, адаптивный фильтр, работающий по преамбуле, для более точной подстройки: https://www.mathworks.com/help/hdlcoder/exa...d-receiver.html
petrov
Цитата(Grizzzly @ Jan 25 2018, 22:09) *
UPD2.: Нашел примерчик в Simulink, где используется, помимо АРУ, адаптивный фильтр, работающий по преамбуле, для более точной подстройки: https://www.mathworks.com/help/hdlcoder/exa...d-receiver.html


АРУ, адаптивные фильтры тоже имеют смещение оценки в зависимости от SNR, что прекрасно видно у них по итоговому созвездию, можно внести поправочку в референсный сигнал, чтобы при каком-то наихудшем рабочем SNR смещения не было.
Grizzzly
Цитата(petrov @ Jan 26 2018, 13:43) *
АРУ, адаптивные фильтры тоже имеют смещение оценки в зависимости от SNR, что прекрасно видно у них по итоговому созвездию, можно внести поправочку в референсный сигнал, чтобы при каком-то наихудшем рабочем SNR смещения не было.

Спасибо. Попробую.
Сейчас замоделировал в MATLAB простенький пример анализа помехоустойчивости. Опорные созвездия имеют расстояние 2, в канале передается сигнал, средняя мощность которого равна 1. Для этого есть коэффициент scale. Перед демодуляцией в первом случае я увеличиваю мощность сигнала с учетом SNR, чтобы вписать его в опорное созвездие. Во втором - нет. Мне казалось, что будут результаты хуже, а они почти совпадают. Видимо, при малых SNR и так BER большой, а при больших эта поправка настолько мала, что соизмерима с дисперсией ошибки при генерации белого шума.

Код
N = 10000;

M = 16;
hMod = comm.RectangularQAMModulator('ModulationOrder',M);
hDemod = comm.RectangularQAMDemodulator('ModulationOrder',M);

const = step(hMod,(0:M-1)');
scale = modnorm(const, 'avpow', 1);

EbN0 = 5;
SNR = EbN0 + 10*log10(log2(M));

dataIn = randi([0 M-1],N,1);
txSig = step(hMod,dataIn);
txSig = txSig*scale;

rxSig = awgn(txSig,SNR);
rxSig = rxSig/std(rxSig);

rxSig1 = rxSig/scale*sqrt((1+10^(-SNR/10)));
dataOut1 = step(hDemod,rxSig1);

rxSig2 = rxSig/scale;
dataOut2 = step(hDemod,rxSig2);

bi = de2bi(dataIn); % input bits
bi = reshape(bi',1,N*log2(M));

bo1 = de2bi(dataOut1); % received bits
bo1 = reshape(bo1',1,N*log2(M));
bo2 = de2bi(dataOut2); % received bits
bo2 = reshape(bo2',1,N*log2(M));

sum(abs(rxSig1).^2)/length(rxSig1)
sum(abs(rxSig2).^2)/length(rxSig2)

BER1 = sum(xor(bi,bo1))/(N*log2(M))
BER2 = sum(xor(bi,bo2))/(N*log2(M))


UPD.: Разобрался. Построил scatterplot при отсутствии шума для разных коэффициентов, на которые умножается принятый сигнал. Посмотрел для разных М, с какого значения начинается ошибка в виде полки. Действительно, sqrt((1+10^(-SNR/10))) можно пренебречь. Теперь буду уже непосредственно с АРУ экспериментировать.
petrov
Цитата(Grizzzly @ Jan 26 2018, 14:36) *
Теперь буду уже непосредственно с АРУ экспериментировать.


Есть простой универсальный трюк, позволяющий отделять различные воздействия друг от друга, например, АРУ берётся с одного приёмника, который работает по сильно зашумлённому сигналу, и подаётся на вторую копию приёмника, которая работает по тому же, но чистому сигналу, чтобы на созвездии отделить смещение от шума.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.