Перейти к содержанию

АРУ для M-QAM старших порядков

Подскажите, пожалуйста, как правильно нормировать созвездие 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

Поделиться сообщением


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


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(petrov @ Jan 26 2018, 13:43) <{POST_SNAPBACK}>
АРУ, адаптивные фильтры тоже имеют смещение оценки в зависимости от 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))) можно пренебречь. Теперь буду уже непосредственно с АРУ экспериментировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Grizzzly @ Jan 26 2018, 14:36) <{POST_SNAPBACK}>
Теперь буду уже непосредственно с АРУ экспериментировать.


Есть простой универсальный трюк, позволяющий отделять различные воздействия друг от друга, например, АРУ берётся с одного приёмника, который работает по сильно зашумлённому сигналу, и подаётся на вторую копию приёмника, которая работает по тому же, но чистому сигналу, чтобы на созвездии отделить смещение от шума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация