OPISIS_LAB6
.pdfчувствителен к временным колебаниям в приемнике. Эти проблемы можно решить,
если сделать полосу перехода в частотной области менее резкой.
Формирование сигналов типа « приподнятый косинус»
Как упоминалось ранее, недостатки сигнала sinc можно устранить, сделав полосу перехода в частотной области менее резкой. Сигнал типа « приподнятый косинус» имеет регулируемый параметр спада переходной полосы α, с помощью которого можно управлять скоростью затухания переходной полосы. Функция формирования RC-импульсов выражается в частотной области как
Tsym ,
T P( f ) sym
2
0,
|
Fsym |
f |
Fsym |
|
|||||
|
2 |
|
2 |
|
|
||||
|
|
|
|
|
|
|
|||
|
Tsym |
|
|
|
|
||||
|
|
|
|||||||
1 |
cos |
|
|
|
f |
|
|
||
|
|||||||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
Tsym
,
f1
2Tsym
1 |
|
|
1 |
|
|||
|
|
f |
|
(10) |
|||
|
|
||||||
2Tsym |
|
|
|
2Tsym |
|
||
|
|
|
f1
2Tsym
Соответственно, во временной области импульсная характеристика
определяется выражением
p(t) |
sin( t / Tsym ) cos( t / Tsym ) |
where 0 |
1 |
(11) |
|||||
|
|
|
|
|
|
||||
t / T |
1 (2 t / T |
|
)2 |
||||||
|
|
|
|
|
|||||
|
sym |
|
|
sym |
|
|
|
|
|
Простое вычисление уравнения |
11 |
дает сингулярности |
(неопределенные |
точки) в точках p (t = 0) и p (t = ± Tsym ). Значение приподнятого косинусного
2
импульса в этих сингулярностях можно получить, применив правило Л’Опиталя, и
значения равны
p t 0 1
|
Tsym |
|
|
|
|
|
|
p t |
|
|
|
|
sin |
|
|
|
|
|
|||||
|
2 |
|
2 |
|
2 |
(12)
(13)
Следующие коды Matlab генерируют импульс с приподнятым косинусом для заданной длительности символа Tsym 1 с и строят представление во временной области и частотную характеристику (показано на рисунке 7.6). Импульс RC
спадает со скоростью 1/ t 3 при t , что является значительным улучшением по сравнению со скоростью затухания синусоидального импульса, равной 1/ t .
Он удовлетворяет критерию Найквиста для нулевого ISI - импульс достигает нулевых переходов в желаемые моменты выборки. Регулируя α, спад полосы перехода в частотной области может быть постепенным.
Программа 5: raiseCosineFunction.m: функция для генерации импульса с приподнятым косинусом
function [p,t,filtDelay]=raisedCosineFunction(alpha,L,Nsym) %Function for generating raised-cosine (RC) pulse
%alpha - roll-off factor,L - oversampling factor,
%Nsym - filter span in symbols
%Returns the output pulse p(t) that spans the discrete-time base %-Nsym:1/L:Nsym.Also returns the filter delay when the function %is viewed as an FIR filter
Tsym=1; t=-(Nsym/2):1/L:(Nsym/2);%unit symbol duration time-base A = sin(pi*t/Tsym)./(pi*t/Tsym); B=cos(pi*alpha*t/Tsym);
p = A.*B./(1-(2*alpha*t/Tsym).^2);
p(ceil(length(p)/2))=1;%p(0)=1 & p(0) occurs exactly at the center temp=(alpha/2)*sin(pi/(2*alpha)); %p(t=+-1/(2a))=(a/2)sin(pi/(2a)) p(t==Tsym/(2*alpha))=temp; p(t==-Tsym/(2*alpha))=temp;
%FIR filter delay = (N-1)/2, N=length of the filter filtDelay = (length(p)-1)/2; %FIR filter delay
end
Программа 6: test_RCPulse.m: косинусоидальные импульсы и их проявление
в частотной области
Tsym=1; %Symbol duration in seconds
L=10; % oversampling rate, each symbol contains L samples Nsym = 80; %filter span in symbol durations
alphas=[0 0.3 0.5 1];%RC roll-off factors - valid range 0 to 1 Fs=L/Tsym;%sampling frequency
lineColors=['b','r','g','k','c']; i=1;legendString=cell(1,4); for alpha=alphas %loop for various alpha values [rcPulse,t]=raisedCosineFunction(alpha,L,Nsym); %RC Pulse
subplot(1,2,1); t=Tsym*t; %translate time base for given duration plot(t,rcPulse,lineColors(i));hold on; %plot time domain view
[vals,f]=freqDomainView(rcPulse,Fs,'double');%See Chapter 1 subplot(1,2,2); plot(f,abs(vals)/abs(vals(length(vals)/2+1)),lineColors(i));
hold on;legendString{i}=strcat('\alpha =',num2str(alpha) );i=i+1; end
subplot(1,2,1);title('Raised Cosine pulse'); legend(legendString);
subplot(1,2,2);title('Frequency response');legend(legendString);
Рисунок 7.6 – Косинусоидальный импульс и его спектр
Формирование импульса квадратного корня с приподнятым косинусом
В передатчике обычно используется фильтр-формирователь импульса с приподнятым косинусом. Пусть Xrc ( f ) будет частотной характеристикой фильтра с приподнятым косинусом. Предположим, что амплитудная характеристика канала
плоская, т.е. Hc f 1, |
а шум канала белый. Тогда комбинированный отклик |
|
фильтра передачи P f |
и фильтра приемника G f |
в частотной области задается |
как |
|
|
|
Xrc ( f ) P f G f |
(14) |
Если фильтр приема совпадает с фильтром передачи, мы имеем
Xrc ( f ) P f G f |
|
P f |
|
2 |
(15) |
|
|
Таким образом, передающий и приемный фильтры принимают вид
P f G f Xrc ( f ) e |
j 2 fT0 |
(16) |
|
где G f P f , где T0 - номинальная задержка, необходимая для обеспечения
практической реализуемости фильтров. Во временной области согласованный фильтр в приемнике является зеркальной копией импульсной характеристики фильтра формирования импульса передачи и задерживается на некоторое время T0.
Таким образом, задача фильтрации с помощью приподнятого косинуса поровну разделяется между фильтрами передачи и приема. Это приводит к использованию фильтров квадратного корня с приподнятым косинусом (SRRC) в передатчике и приемнике, эквивалентная импульсная характеристика которых описывается следующим образом.
p(t) 1
Tsym
|
t 1 |
|
|
|
4 t |
|
|
t 1 |
|
|
|||
sin |
|
|
cos |
|
|
||||||||
|
|
|
|
|
|
|
|||||||
|
Tsym |
|
|
|
Tsym |
|
|
|
Tsym |
|
|
||
|
|
|
|
|
|
|
|
(17) |
|||||
|
|
t |
|
|
|
4 t 2 |
|
|
|||||
|
|
|
|
|
|
||||||||
|
|
|
|
1 |
|
|
|
|
|
|
|||
|
T |
|
|
|
|
|
|||||||
|
|
|
|
T |
|
|
|
|
|
||||
|
|
sym |
|
|
|
|
sym |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Коэффициент сглаживания для SRRC обозначается как β, чтобы отличать его от коэффициента RC-фильтра. Простое вычисление уравнения 17 дает
T
сингулярности (неопределенные точки) в точках p (t = 0) и p p(t 4sym ) . Величину
приподнятого косинусоидального импульса в этих сингулярностях можно получить, применив правило Л’Остипиталя, и эти значения равны
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|||
|
|
|
p(t 0) |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
(18) |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
Tsym |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Tsym |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|||||
p(t |
|
) |
|
|
|
1 |
|
|
sin |
|
|
|
1 |
|
|
cos |
|
|
(19) |
|||||||
4 |
|
|
|
|
|
|
|
|||||||||||||||||||
|
2T |
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
4 |
|
||||||||||
|
|
|
|
sym |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Далее приводится функция для генерации формы импульса SRRC. За ним следует тестовый код, который строит комбинированный импульсный отклик
комбинации фильтров SRRC передачи и приема, а также строит представление в частотной области одиночного импульса SRRC, как показано на рисунке 7.
Комбинированный импульсный отклик имеет значение, поскольку мы можем определить, что комбинированный отклик достигает нуля в моменты выборки символов. Это указывает на то, что работа по отмене ISI разделена между фильтрами передатчика и приемника. Обратите внимание, что комбинированная импульсная характеристика двух фильтров SRRC такая же, как импульсная характеристика RC-фильтра.
Программа 7: srrcFunction.m: функция для генерации квадратного корня импульса с приподнятым косинусом
function [p,t,filtDelay]=srrcFunction(beta,L,Nsym)
%Function for generating square-root raised-cosine (SRRC) pulse
%beta - roll-off factor of SRRC pulse,
%L - oversampling factor (number of samples per symbol)
%Nsym - filter span in symbol durations
%Returns the output pulse p(t) that spans the discrete-time base %-Nsym:1/L:Nsym. Also returns the filter delay when the function %is viewed as an FIR filter
Tsym=1; t=-(Nsym/2):1/L:(Nsym/2);%unit symbol duration time-base
num = sin(pi*t*(1-beta)/Tsym)+...
((4*beta*t/Tsym).*cos(pi*t*(1+beta)/Tsym)); den = pi*t.*(1-(4*beta*t/Tsym).^2)/Tsym;
p = 1/sqrt(Tsym)*num./den; %srrc pulse definition
%handle catch corner cases (singularities) p(ceil(length(p)/2))=1/sqrt(Tsym)*((1-beta)+4*beta/pi); temp=(beta/sqrt(2*Tsym))*( (1+2/pi)*sin(pi/(4*beta)) ...
19 + (1-2/pi)*cos(pi/(4*beta))); p(t==Tsym/(4*beta))=temp; p(t==-Tsym/(4*beta))=temp; %FIR filter delay = (N-1)/2, N=length of the filter filtDelay = (length(p)-1)/2; %FIR filter delay
end
Программа 8: test_SRRCPulse.m: Характеристики импульса с квадратным
корнем из приподнятого косинуса
Tsym=1; %Symbol duration in seconds
L=10; % oversampling rate, each symbol contains L samples Nsym = 80; %filter span in symbol durations
betas=[0 0.22 0.5 1];%root raised-cosine roll-off factors Fs=L/Tsym;%sampling frequency lineColors=['b','r','g','k','c']; i=1;legendString=cell(1,4); for beta=betas %loop for various alpha values
[srrcPulseAtTx,t]=srrcFunction(beta,L,Nsym); %SRRC Filter at Tx srrcPulseAtRx = srrcPulseAtTx;%Using the same filter at Rx
%Combined response matters as it hits 0 at desired sampling instants combinedResponse = conv(srrcPulseAtTx,srrcPulseAtRx,'same');
subplot(1,2,1); t=Tsym*t; %translate time base & normalize reponse
plot(t,combinedResponse/max(combinedResponse),lineColors(i)); hold on;
%See Chapter 1 for the function 'freqDomainView' [vals,F]=freqDomainView(srrcPulseAtTx,Fs,'double'); subplot(1,2,2); plot(F,abs(vals)/abs(vals(length(vals)/2+1)),lineColors(i)); hold on;legendString{i}=strcat('\beta =',num2str(beta) );i=i+1; end
subplot(1,2,1);
title('Combined response of SRRC filters'); legend(legendString); subplot(1,2,2);
title('Frequency response (at Tx/Rx only)');legend(legendString);
Рисунок 7 – Комбинированный отклик двух фильтров SRRC и представление
одного импульса SRRC в частотной области
Программа 9: plotEyeDiagram.m: функция для построения глазковой диаграммы
function [eyeVals]=plotEyeDiagram(x,L,nSamples,offset,nTraces)
%Function |
to plot |
eye diagram |
|
|
%x - input |
vector |
representing the signal |
|
|
%L - oversampling |
factor (for |
calculating |
x-axis in plot) |
|
%nSamples |
- number of samples |
per trace - |
preferably set to integral |
|
% multiple |
of oversampling factor L(number of bits per symbol) |
|||
%offset - |
initial |
offset in the data from |
where to begin plotting |
|
%nTraces - |
number |
of traces to plot |
|
%If the signal processing toolbox is not available, put M=1 % and convert the line that says y=interp(x,M) to y=x
M=4; %oversampling factor for eyediagram - for smoother plot tnSamp = (nSamples*M*nTraces);%total number of samples y=interp(x,M);%interpolate the signal with the oversampling factor
eyeVals=reshape(y(M*offset+1:(M*offset+tnSamp)),nSamples*M,nTraces); t=( 0 : 1 : M*(nSamples)-1)/(M*L);
plot(t,eyeVals);
title('Eye Plot');xlabel('t/T_{sym}');ylabel('Amplitude');
end
Реализация системы согласованных фильтров с фильтрацией SRRC
Базовая система амплитудно-импульсной модуляции (PAM) расширена на рисунке 8 за счет добавления повышающего дискретизатора L , функции формирования импульса p n на передатчике и согласованного фильтра g n ,
комбинация нижнего пробоотборника L на приемнике
В этой модели случайный поток исходных битов сначала сегментируется на символы шириной k бит, которые могут принимать любое значение из набора m 1,2, ..., M . Код моделирования напрямую начинается с генерации случайного набора символов, который передается в модуль отображения модуляции.
Модулятор MPAM отображает k-битовые информационные символы на один из
M 2k различных уровней сигнализации. Символ модуляции MPAM показан на рисунке 7.9.
Рисунок 8 –Реализация системы модуляции PAM с формированием импульсов и согласованной фильтрацией
Программа 10: Модуляция MPAM
N = 10^5; %Number of symbols to transmit MOD_TYPE = 'PAM'; %modulation type
M = 4; %modulation level for the chosen modulation MOD_TYPE
d = ceil(M.*rand(1,N)); %random numbers from 1 to M for input to PAM u = modulate(MOD_TYPE,M,d);%MPAM modulation
figure; stem(real(u)); %plot modulated symbols
Рисунок 9 – Модулированные символы MPAM
Каждый модулированный символ MPAM должен существовать в течение некоторого времени, называемого временем символа, обозначенного как Tsym.
Каждый модулированный символ будет проходить через фильтр p(n)
формирования импульсов с дискретным временем, импульсная характеристика которого равна отсчетам с интервалом T , где T обозначает период дискретизации.
Для этого входящие символы из модуля отображения модуляции необходимо преобразовать в последовательность дискретных временных импульсов путем повышения их дискретизации с коэффициентом L (согласно уравнению 7.7).
Устройство повышения дискретизации вставляет L-1 нулей между каждым модулированным символом. На практике L выбирается как целое число, кратное 4.
Выходной сигнал повышающего / передискретизированного сигнала показан на рисунке 10.
Программа 11: Повышение частоты дискретизации
L=4; %Oversampling factor (L samples per symbol period) v=[u;zeros(L-1,length(u))];%insert L-1 zero between each symbols %Convert to a single stream
v=v(:).';%now the output is at sampling rate stem(real(v)); title('Oversampled symbols v(n)');
Чтобы заполнить правильные значения вместо вставленных нулей,
интерполяция выполняется фильтром формирования импульса путем свертки выходного сигнала повышающего дискретизатора и функции формирования импульса. Функция формирования импульсов должна удовлетворять критерию Найквиста для нулевого ISI, в противном случае эффект наложения спектров нанесет серьезный ущерб. Если амплитудный отклик канала плоский и если шум белый, то амплитудный отклик функции формирования импульса можно разделить поровну между передатчиком и приемником. Для этого моделирования желаемая форма импульса Найквиста представляет собой форму импульса с приподнятым косинусом, а задача фильтрации с приподнятым косинусом поровну разделена между фильтрами передачи и приема. Это приводит к использованию фильтров квадратного корня с приподнятым косинусом (SRRC) в передатчике и приемнике.
Это система согласованных фильтров, в которой фильтр приема согласован с фильтром формирования импульса передачи.
Согласованная система фильтрации — это теоретическая основа, а не конкретный тип фильтра. Он предлагает улучшенное шумоподавление за счет улучшения отношения сигнал / шум на выходе приемного фильтра. Реализация начинается с разработки фильтра SRRC с коэффициентом спада β = 0,3. На длину фильтра SRRC влияет параметр Nsym - диапазон длины фильтра в единицах символов и коэффициент передискретизации L.
Фильтры не производят мгновенный вывод, и им требуется время для вывода. То есть выход фильтра сдвинут во времени относительно входа. Для симметричных КИХ-фильтров длиной Lfir задержка фильтра равна Lfir / 2 . Помимо
возврата функции импульса SRRC, функция проектирования фильтра, возвращает задержку фильтра. Задержки фильтра полезны при определении соответствующих
экземпляров выборки в приемнике. Модулированные символы в передатчике проходят через разработанный фильтр, и его отклик показан на рисунке 10.
Программа 12: Формирование импульсов SRRC
%----Pulse shaping-----
beta = 0.3;% roll-off factor for Tx SRRC filter Nsym=8;%SRRC filter span in symbol durations
L=4; %Oversampling factor (L samples per symbol period) [p,t,filtDelay] = srrcFunction(beta,L,Nsym);%design filter s=conv(v,p,'full');%Convolve modulated syms with p[n] filter figure; plot(real(s),'r'); title('Pulse shaped symbols s(n)');
Выборки сигнала в форме импульса отправляются через канал AWGN, где переданные выборки добавляются с выборками шума, которые генерируются в соответствии с требуемым Eb / N0 (см. Модель шума AWGN, приведенную в разделе 6.1.2). Принятый сигнал, искаженный шумом AWGN, показан на рисунке
7.11.
Рисунок 10 – Модулированные символы с повышенной дискретизацией на 4 (слева) и выход фильтра формирования импульсов SRRC (справа)
Программа 13: Добавление шума AWGN для заданного значения SNR
EbN0dB = 10; %EbN0 in dB for AWGN channel
snr = 10*log10(log2(M))+EbN0dB; %Converting given Eb/N0 dB to SNR %log2(M) gives the number of bits in each modulated symbol
r = add_awgn_noise(s,snr,L); %AWGN , add noise for given SNR, r=s+w %L is the oversampling factor used in simulation
figure; plot(real(r),'r');title('Received signal r(n)');