Влияние повышения ЧД на демодуляцию

ЦОС, обработка видео и изображений в MATLAB\Simulink

Модератор: Admin

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Ср сен 25, 2019 11:28 am

Доброго времени суток.
Имею демодулятор FSK-2 сигнала. При демодуляции использую некогерентный прием (см. пример в учебном пособии Сергиенко А.Б "Цифровая связь" раздел 2.2.4, рис.2.14). При приеме предполагается идеальная символьная и частотная синхронизация.
Демодулятор работает нормально, графики BER совпадают с теми, что можно найти в bertool.

Я хочу увеличить частоту дискретизации входного сигнала с целое число раз. Использую функцию interp. После увеличения ЧД результаты демодуляции хуже (кривая BER смещается в правую сторону).
Также пытался повысить ЧД с помощью функции resample, но результат оказался таким же.

Вопрос: я что-то делаю не так или такой результат и должен быть?

sandy
Эксперт
Сообщения: 5601
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение sandy » Ср сен 25, 2019 7:40 pm

Учли ли вы повышение частоты дискретизации при добавлении шума к сигналу?
С уважением

Александр Сергиенко

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Чт сен 26, 2019 4:34 pm

sandy писал(а):Учли ли вы повышение частоты дискретизации при добавлении шума к сигналу?

Нет, не учитывал.
Я некорректно задал вопрос. ЧД я увеличиваю на приемной стороне, уже после того, как к сигналу добавился шум. Вроде бы смысла в этом нет, ведь шум уже добавлен к сигналу.

sandy
Эксперт
Сообщения: 5601
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение sandy » Чт сен 26, 2019 7:41 pm

ЧД я увеличиваю на приемной стороне

А зачем?
С уважением



Александр Сергиенко

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Пт сен 27, 2019 9:23 am

sandy писал(а):
ЧД я увеличиваю на приемной стороне

А зачем?

Помимо самой демодуляции необходимо реализовать тактовую синхронизацию (чтобы знать начало символа). В случае, когда оценка временной отстройки дробная, необходимо делать интерполяцию сигнала. Я пока не реализовывал функции интерполяции, но мне кажется, что при низком кол-ве отсчетов на символ, в интерполяция вносит некоторые искажения в сигнал.
Я хочу увеличить ЧД входного сигнала в несколько раз. Тогда возможно обойтись вообще без интерполяции, и просто округлять оценку временной отстройки к ближайшему отсчету (предварительно отнормировав ее к новому число отсчетов на символ).

sandy
Эксперт
Сообщения: 5601
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение sandy » Пт сен 27, 2019 10:40 am

Покажите код, где вы пытались повышать частоту дискретизации. По идее, помехоустойчивость не должна была измениться. Во сколько раз, кстати, повышали и насколько большие потери оказались?
С уважением



Александр Сергиенко

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Пт сен 27, 2019 11:36 am

sandy писал(а):Покажите код, где вы пытались повышать частоту дискретизации.

Вот сам скрипт:

Код: Выделить всё

clear all
close all

Fs = 19200;      % Частота дискретизации (Гц)
Fd = 4800;       % Символьная скорость (1/с)
FsFd = Fs/Fd;    % Число бит на символ
h = 1;         % Индекс модуляции
numBits = 5*1e6;   % Кол-во генерируемых бит
m = 1;           % Число бит на символ
M = 2^m;         % Порядок модуляции

EbN0 = [12:0.5:15];
BER = zeros(1,length(EbN0));
for j=1:length(EbN0)
    bitFlow = [1 0 randi([0 1],1,numBits)];
    symbols = bi2de(reshape(bitFlow,m,[])','left-msb')';
    signal = MSK_Modulator(symbols,m,Fs,Fd,h);

    signal_noise = awgn(signal,EbN0(j) - 10*log10(FsFd) + 10*log10(log2(M)),'measured');

    demodBits = Demodulation(signal_noise,m,h,Fs,FsFd,numBits);
    demodBits = ~demodBits;
    numErr = sum(xor(demodBits,bitFlow));
    BER(j) = numErr/length(demodBits(1:end-1));
    sprintf('BER = %d; Ebn0 = %d', BER(j), EbN0(j))
end
semilogy(EbN0,BER);
grid on;hold on;

Функция Demodulation:

Код: Выделить всё

function [demodBits] = Demodulation(signal,m,h,Fs,FsFd,lenOfSignal)

demodBits = zeros(1,lenOfSignal);
%% Формирование опорных сигналов
FsFd_new = FsFd*8; % Тут задаю новую ЧД
map = (0:2^m-1)*2-(2^m -1);
refSignals = zeros(FsFd_new,2);
for i=0:(2^m)-1
    PAM = map(i+1)/2;
    PAM = upsample(PAM,FsFd_new);
    PAM = filter(ones(1,FsFd_new),1,PAM);
    Freq = 2*pi*h*PAM/(FsFd_new);
    Phase = cumsum(Freq);
    refSig_tmp = exp(1i*Phase);
    refSignals(:,i+1) = refSig_tmp;
end

% Повышение ЧД
signal = interp(signal,FsFd_new/FsFd);

for i=1:(lenOfSignal)
    inputSignal = signal(FsFd_new*(i-1)+ 1:FsFd_new*i);
    corr = inputSignal*refSignals;
    corr = abs(corr).^2;
    [~,maxPos] = max(corr);
    referenceSignal = refSignals(:,maxPos);
    demodBits(i) = maxPos-1;
end

end

Тут пока не реализована система синхронизации.

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Пт сен 27, 2019 11:40 am

sandy писал(а):Во сколько раз, кстати, повышали и насколько большие потери оказались?

Повышал в 8 раз.
Знаете, сейчас промоделировал еще раз, кривые BER совпали. Видимо, где-то был какой-то косяк.
По идее данное увеличение ЧД не должно никаким образом влиять на BER, правильно?

sandy
Эксперт
Сообщения: 5601
Зарегистрирован: Ср сен 22, 2004 4:49 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение sandy » Пт сен 27, 2019 3:17 pm

Знаете, сейчас промоделировал еще раз, кривые BER совпали.

Вот и хорошо.
По идее данное увеличение ЧД не должно никаким образом влиять на BER, правильно?

Не должно.
С уважением



Александр Сергиенко

humbert_humbert
Пользователь
Сообщения: 29
Зарегистрирован: Пн сен 17, 2018 9:58 pm

Re: Влияние повышения ЧД на демодуляцию

Сообщение humbert_humbert » Пт сен 27, 2019 3:20 pm

sandy писал(а):
Знаете, сейчас промоделировал еще раз, кривые BER совпали.

Вот и хорошо.
По идее данное увеличение ЧД не должно никаким образом влиять на BER, правильно?

Не должно.

Большое спасибо за помощь!