BER FSK при неточной временной синхронизации

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

Модератор: Admin

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

BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Ср июн 19, 2019 5:43 pm

Доброго времени суток. Я разбираюсь с влиянием неточной временной синхронизации на помехоустойчивость системы. Использую модуляцию FSK-2. Привожу код скрипта, которым пользуюсь:

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

clear all
close all

lenDataSym = 100;%Число символов для модуляции
M = 2;%Порядок модуляции
Fs = 600000*4;%Частота дискретизации
symbRate = 600000;%Символьная скорость
samplePerSymb = Fs/symbRate;%Число отсчетов на символ
indexMod = 1;%Индекс модуляции
freqSep = indexMod*symbRate;%Расстояние между частотами модуляции
timeOffset = 1/4;
samplesOffset = timeOffset*samplePerSymb;%Временная отстройка выраженная в отсчетах

EbN0 = [7:0.25:12];
ber = zeros(1,length(EbN0));

for i=1:1:length(EbN0)
    numerr = 0;
    numbit = 0;
    for numExp=1:2000
        data  = randsrc(1,lenDataSym, [0 1; 0.5 0.5]);%Генерация битового потока
        dataSymb = bi2de(reshape(data,log2(M),[])','left-msb');%Перевод битового потока в символы
        modSignal = fskmod(dataSymb,M,freqSep,samplePerSymb,Fs,'cont','gray');%fsk модулятор
        recvSignal = awgn(modSignal,EbN0(i) - 10*log10(samplePerSymb) + 10*log10(log2(M)),'measured');%Добавление шума
        recvSignal = recvSignal(samplesOffset+1:end-(samplePerSymb-samplesOffset));%Имитация временной отстройки
        demodData = fskDemod(recvSignal,M,Fs,freqSep,samplePerSymb);%демодуляция
        demodData = de2bi(demodData,'left-msb')';
        demodData = demodData(:)';
        numerr = numerr + sum(xor(demodData(1:end),data(1:end-1)));
        numbit = numbit + length(data);
    end
    ber(i) = ber(i) + numerr/numbit;
%     sprintf('ber = %d; Ebn0 = %d', ber(i), EbN0(i))
end
semilogy(EbN0,ber,'-*')
hold on
grid on

Имитацию временной отстройки моделирую следующим образом: отрезаю от начала сигнала несколько отсчетов. Таким образом я моделирую ситуацию, когда начало символа смещено на несколько отсчетов. В конце сигнала я отрезаю еще несколько отсчетов, чтобы в итоге длительность сигнала была кратна числу отсчетов на символ.
Демодулятор использую свой, код привожу ниже:

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

function [dataOut] = fskDemod(dataIn, M, Fs, freqSep, samplePerSymb)
dataOut = zeros(floor(length(dataIn)/samplePerSymb),1);

freqs = [-(M-1)/2:1:(M-1)/2]*freqSep;
mapGray = gray2bin([0:M-1],'fsk',M);
freqsGray = zeros(1,length(freqs));
for i=1:length(freqs)
    freqsGray(i) = freqs(mapGray(i)+1);
end
t = [0:1:samplePerSymb-1]/Fs;
refSignals = zeros(M,samplePerSymb);
for i=1:1:M   
    refSignals(i,:) = exp(-1i*2*pi*t*freqsGray(i));
end
scalProd = zeros(1,M);
dataIn = reshape(dataIn,samplePerSymb,[])';
for i=1:1:length(dataOut)
    for j=1:1:length(scalProd)
        scalProd(j) = dot(dataIn(i,:),refSignals(j,:));
    end
    [~, ind] = max(scalProd);
    dataOut(i) = ind-1;
end
end

График BER в ситуации, когда временная отстройка равна нулю, (то есть когда я не отрезаю ничего от начала символа) совпадает с теоретической кривой, которую я получил из среды bertool.
После чего я строю график BER для ситуации, когда имеется отстройка в один отсчет (то есть, когда я отрезаю от начала сигнала один отсчет). При 4 отсчетах на символ, это соответствует отстройке равной 0,25 от длительности символа. График BER остался таким же. Как такое может быть? Ведь теперь, в демодуляторе при расчете скалярных произведений используется три отсчета от одного символа и один от другого, и по идее BER должен стать хуже.
Также, если я увеличиваю частоту дискретизации, чтобы увеличить число отсчетов на символ, например до 8 отсчетов на символ, и тоже отрезаю от начала символа 2 отсчета, чтобы величина отстройки также равнялась 0,25 от длительности символа, то BER ухудшается. Получается, что на BER влияет количество отсчетов на символ? Но ведь такого не должно быть.
Заранее спасибо за помощь.

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Ср июн 19, 2019 6:42 pm

Настоятельно рекомендую посмотреть, что в вашем случае представляют собой те два сигнала, которые соответствуют двум возможным значениям каждого символа. Для простоты можно это сделать при 4 отсчетах на символ. Ну а потом подумайте (или экспериментально посмотрите, отключив шум), что будут представлять собой принимаемые сигналы при сдвиге на один отсчет. И не забудьте, что функция fskdemod реализует некогерентный прием.
Получается, что на BER влияет количество отсчетов на символ?

Вы в этом только что убедились.
С уважением

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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Ср июн 19, 2019 10:37 pm

sandy писал(а):Настоятельно рекомендую посмотреть, что в вашем случае представляют собой те два сигнала, которые соответствуют двум возможным значениям каждого символа. Для простоты можно это сделать при 4 отсчетах на символ. Ну а потом подумайте (или экспериментально посмотрите, отключив шум), что будут представлять собой принимаемые сигналы при сдвиге на один отсчет. И не забудьте, что функция fskdemod реализует некогерентный прием.

Я построил спектры для двух случаев: когда все 4 отсчета принадлежат одному символу, и когда из-за неправильной временной отстройки берется часть отсчетов следующего символа (я моделировал случай, когда следующий символ отличается от предыдущего). Спектры друг от друга не отличаются. Однако если отстройку выбрать на один отсчет больше (то есть когда берется два отсчета от следующего символа), получается следующая картина:
Изображение
Здездочками построен спектр символа с отстройкой.
Для большего числа отсчетов на символ ситуация аналогична: при отстройке в один отсчет спектр остается такой же. С увеличением величины отстройки спектр символа плавно "превращается" в спектр следующего за ним символа.
Получается, что для демодуляции такого сигнала допустима отстройка в один отсчет по времени?

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Чт июн 20, 2019 11:47 am

Так, я кажется начинаю вникать.
При добавлении шума с помощью awgn, необходимо использоваться значения SNR. По хелпам матлаба Eb/N0 я перевожу в SNR следующим образом:
SNR = Eb/N0 + 10log10(log2(M)) - 10log10(samplesPerSymbol);
Получается, что при одинаковых Eb/N0 и порядке модуляции M при уменьшении числа отсчетов на символ значение SNR будет ухудшаться, следовательно BER будет падать. Поэтому при относительной временной расстройке равной 0,25 символа, у модуляции с 8 отсчетами на символ BER лучше, чем у модуляции с 16 отсчетам на символ при той же временной отстройке.
Я правильно это понимаю, или есть какие-то нюансы, которые я не учел?

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Чт июн 20, 2019 10:11 pm

Получается, что при одинаковых Eb/N0 и порядке модуляции M при уменьшении числа отсчетов на символ значение SNR будет ухудшаться,

Да.
следовательно BER будет падать.

Нет!!!
Какое это вообще имеет отношение к сдвигу сигнала по времени?
С уважением



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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Пт июн 21, 2019 9:24 am

sandy писал(а):Нет!!!
Какое это вообще имеет отношение к сдвигу сигнала по времени?

Тогда я не могу понять, почему кривые BER разные для двух случаев: когда мы имеет 8 отсчетов на символ и отстройку по времени в 2 отсчета, и когда мы имеет 16 отсчетов на символ и отстройку по времени в 4 отсчета. Я предполагал, что графики BER должен быть одинаковый, ведь относительная отстройка в обоих случаях одинаковая (0,25 от длительности символа).

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Пт июн 21, 2019 10:55 am

Появился еще один вопрос, напишу его здесь, чтобы не плодить лишние темы.
На сколько я понимаю, функция fskmod реализует частотную модуляцию с непрерывной фазой. Я построил график зависимости полной фазы от времени (unwrap(angle(modSignal(1:64)))) для первых 64 отсчетов сигнала:
Изображение
Я использую 8 отсчетов на символ. В остальном скрипт такой же, что и в первом сообщении темы.
Мне не понятна следующая вещь: почему фаза начинает изменяться начиная со второго отсчета следующего символа. Во всей литературе, по которой я изучал сигналы с непрерывной фазой, изменение фазы начинается сразу после первого отсчета символа, как например здесь (картинка из книги "Цифровая связь" Прокис):
Изображение
Получается, что если я допустим использую некогерентный демодулятор (рассчитываю скалярные произведения принятых символов с опорными сигналами и выбираю наибольшее по модулю), то я могу вместо 8 отсчетов на символ брать на 1 больше, и тем самым по идее улучшив качество приема. Но ведь это невозможно, так как BER, который я получил используя 8 отсчетов на символ совпал с теоретическим, и результат лучше уже не может быть.

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Пт июн 21, 2019 3:32 pm

Тогда я не могу понять, почему кривые BER разные для двух случаев: когда мы имеет 8 отсчетов на символ и отстройку по времени в 2 отсчета, и когда мы имеет 16 отсчетов на символ и отстройку по времени в 4 отсчета.

При отсутствии сдвига по времени графики BER для 8 и 16 отсчетов на символ совпадают?
Мне не понятна следующая вещь: почему фаза начинает изменяться начиная со второго отсчета следующего символа.

Не понял. У вас ведь просто горизонтальная ось на графике с единицы начинается. Сделайте ее с нуля, и изломы графика будут в точках, кратных 8.
С уважением



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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Пт июн 21, 2019 4:39 pm

sandy писал(а):При отсутствии сдвига по времени графики BER для 8 и 16 отсчетов на символ совпадают?

Прикрепляю зависимости.
Изображение
Вроде бы совпадают.
sandy писал(а):Не понял. У вас ведь просто горизонтальная ось на графике с единицы начинается. Сделайте ее с нуля, и изломы графика будут в точках, кратных 8.

Вот, востроил:
Изображение
Но все равно получается, что "изменение" фазы начинается только на следующем после первого символа отсчета.
Я попробовал написать демодулятор, который считает скалярное произведение не по 8 отсчетов на символ, а брал еще один следующий.
То есть, делил символы на отсчеты следующим образом:
0-8 отсчеты -> 1 символ;
8-16 отсчеты -> 2 символ;
16-24 отсчеты -> 3 символ и т.д.
И при таком способе демодуляции BER оказался лучше, в отличии от случая, когда я брал ровно по 8 отсчетов на каждый символ. Отсюда у меня возникает вопрос: можно ли так делать на практике, или я просто где-то ошибся?

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Пт июн 21, 2019 6:03 pm

Отсюда у меня возникает вопрос: можно ли так делать на практике, или я просто где-то ошибся?

Таковы особенности дискретного времени - при реализации ЧМНФ оказывается, что символы как бы "цепляются" друг за друга одним отсчетом. И, действительно, в идеализированной ситуации вы можете использовать этот лишний отсчет для демодуляции. Но на практике у вас не будет ни изломов фазовой функции, ни точной привязки моментов дискретизации.
Вроде бы совпадают.

То есть разница BER начинает проявляться только при наличии временного сдвига? Тогда предположу, что это тоже из-за дискретного времени - уровень возникающей межсимвольной интерференции при столь малом числе отсчетов сдвига вполне имеет право от этого числа зависеть. Предположу, что если вы сравните ситуации со 100 и 200 отсчетами на смивол (с фиксированным сдвигом на 0.25 символа), этой разницы не будет.
С уважением



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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Пт июн 21, 2019 6:46 pm

sandy писал(а):Предположу, что если вы сравните ситуации со 100 и 200 отсчетами на смивол (с фиксированным сдвигом на 0.25 символа), этой разницы не будет.

Да, вы абсолютно правы. Разницы BER для этих двух случаев нет.
То есть получается, если я хочу оценить проигрыш, возникающий из-за временной отстройки в 0,25 символа в системе с 4мя отсчетами на символ, строить зависимости BER в матлабе не имеет смысла, т.к. время дискретно?

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Пт июн 21, 2019 8:55 pm

Образно можно сказать так - в куске сигнала длиной в 0.25 символа должно быть столько отсчетов, чтобы можно было понять, что он представляет собой именно фрагмент гармонического сигнала.
С уважением



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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Пт июн 21, 2019 10:12 pm

sandy писал(а):Образно можно сказать так - в куске сигнала длиной в 0.25 символа должно быть столько отсчетов, чтобы можно было понять, что он представляет собой именно фрагмент гармонического сигнала.

То есть, все зависит от интерполятора?

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

Re: BER FSK при неточной временной синхронизации

Сообщение sandy » Сб июн 22, 2019 12:36 pm

Не понял, какого интерполятора?
С уважением



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

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

Re: BER FSK при неточной временной синхронизации

Сообщение humbert_humbert » Сб июн 22, 2019 1:15 pm

sandy писал(а):Не понял, какого интерполятора?

Пардон, чушь написал.
Я просто не догоняю, как можно по одному отсчету понять\не понять, что он представляет из себя кусок гармонического сигнала.
В любом случае спасибо большое за помощь, вы мне очень помогли!