Материал: OPISIS_LAB6

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

непрерывного временного канала с дискретным временем, эквивалентным h k , и

дискретным временным нулевым форсирующим эквалайзером w k , разнесенным по символам. Цель состоит в том, чтобы разработать эквалайзер с нулевым форсированием длины N, который мог бы компенсировать эффекты искажения,

вносимые каналом длины L.

В качестве примера для моделирования предполагается, что частота дискретизации всей системы равна Fs 100 Гц с 5 отсчетами на символnSamp 5 , а также предполагается модель канала со следующей общей импульсной характеристикой канала при скорости передачи в бодах.

h(t)

 

1

 

(8.26)

 

 

 

 

t

2

 

 

1

 

 

 

 

 

 

T

 

 

 

 

sym

 

Программа 8.1: Модель канала

%System parameters

nSamp=5; %Number of samples per symbol determines baud rate Tsym Fs=100; %Sampling Frequency of the system

Ts=1/Fs; %Sampling time Tsym=nSamp*Ts; %symbol time period

%Define transfer function of the channel

k=6; %define limits for computing channel response

N0 = 0.001; %Standard deviation of AWGN channel noise

t = -k*Tsym:Ts:k*Tsym; %time base defined till +/-kTsym

h_t = 1./(1+(t/Tsym).^2);%channel model, replace with your own model h_t = h_t + N0*randn(1,length(h_t));%add Noise to the channel response h_k = h_t(1:nSamp:end);%downsampling to represent symbol rate sampler t_inst=t(1:nSamp:end); %symbol sampling instants

Затем постройте импульсную характеристику канала для вышеупомянутой модели, получившийся график показан на Рисунке 8.5.

Программа 8.2: Построение импульсной характеристики канала

figure; plot(t,h_t); hold on; %channel response at all sampling instants stem(t_inst,h_k,'r'); %channel response at symbol sampling instants legend('continuous-time model','discrete-time model');

title('Channel impulse response'); xlabel('Time (s)');ylabel('Amplitude');

Рисунок 8.5 − Импульсная характеристика канала

Поскольку характеристика канала, изображенная на рисунке 8.5, имеет длину L = 13, желателен принудительный фильтр с нулевым принуждением с длиной N L . Давайте зафиксируем длину фильтра с принуждением к нулю равной N = 14. Конструкция эквалайзера с принуждением к нулю соответствует уравнению 8.18, а задержка эквалайзера определяет положение одиночной «1» в

матрице k0 , которая представляет дельта-функцию Дирака.

Учитывая импульсную характеристику канала и желаемую длину эквалайзера, следующая функция проектирует эквалайзер с нулевым форсированием, используя уравнения 8.18, 8.20 и 8.21.

Программа 8.3: zf_equalizer.m: Функция для разработки эквалайзера ZF и

выравнивания сигнала

function [w,err,optDelay]=zf_equalizer(h,N,delay)

%Delay optimized zero forcing equalizer.

%[w,err,optDelay]=zf_equalizer(h,N,delay) designs a ZERO FORCING equalizer

%w for given channel impulse response h, the desired length of the equalizer

%N and equalizer delay (delay). Also returns the equalizer error (err),the

%best optimal delay (optDelay) that could work best for the designed equalizer

%[w,err,optDelay]=zf_equalizer(h,N) designs a DELAY OPTIMIZED ZERO FORCING

%equalizer w for given channel impulse response h, the desired length of the

%equalizer N. Also returns equalizer error(err),the best optimal delay(optDelay)

h=h(:); %Channel matrix to solve simultaneous equations L=length(h); %length of CIR

H=convMatrix(h,N); %(L+N-1)xN matrix - see Chapter 1 %section title - Methods to compute convolution %compute optimum delay based on MSE

Hp = inv(H'*H)*H'; %Moore-Penrose Pseudo inverse [~,optDelay] = max(diag(H*Hp)); optDelay=optDelay-1;%since Matlab index starts from 1 k0=optDelay;

if nargin==3,

if delay >=(L+N-1), error('Too large delay'); end k0=delay;

end d=zeros(N+L-1,1);

d(k0+1)=1; %optimized position of equalizer delay w=Hp*d;%Least Squares solution

err=1-H(k0+1,:)*w; %equalizer error (MSE)-reference [5] MSE=(1-d'*H*Hp*d);%MSE and err are equivalent

end

Давайте спроектируем эквалайзер с нулевым форсированием с N = 14

ответвлениями для данной характеристики канала на рисунке 8.5 и задержкой эквалайзера k0 , установленной на 11. Разработанный эквалайзер испытывается путем отправки импульсной характеристики канала в качестве входа, r[k] h[k].

Предполагается, что эквалайзер полностью его компенсирует, как показано на рисунке 8.6. Общий отклик системы вычисляется как свертка импульсной характеристики канала и отклика эквалайзера с нулевым принуждением.

Программа 8.4: Разработка и испытание эквалайзера обнуления

%Equalizer Design Parameters

N = 14; %Desired number of taps for equalizer filter delay = 11;

%design zero-forcing equalizer for given channel and get tap weights

%and filter the input through the equalizer find equalizer co-effs for given CIR

[w,error,k0]=zf_equalizer(h_k,N,delay); %[w,error,k0]=zf_equalizer(h,N,); %Try this delay optimized equalizer r_k=h_k; %Test the equalizer with the sampled channel response as input d_k=conv(w,r_k); %filter input through the eq

1h_sys=conv(w,h_k); %overall effect of channel and equalizer

disp(['ZF Equalizer Design: N=', num2str(N), ...' Delay=',num2str(delay), ' Error=', num2str(error)]);

disp('ZF equalizer weights:'); disp(w);

Вычислите и постройте частотную характеристику канала, эквалайзера и всей системы. Результирующий график, представленный на рисунке 8.6,

показывает, как эквалайзер с нулевым принуждением скомпенсировал отклик канала, инвертируя его.

Программа 8.5: Частотные характеристики канального эквалайзера и системы в целом

[H_F,Omega_1]=freqz(h_k); %frequency response of channel [W,Omega_2]=freqz(w); %frequency response of equalizer [H_sys,Omega_3]=freqz(h_sys); %frequency response of overall system figure;

plot(Omega_1/pi,20*log(abs(H_F)/max(abs(H_F))),'g'); hold on; plot(Omega_2/pi,20*log(abs(W)/max(abs(W))),'r'); plot(Omega_3/pi,20*log(abs(H_sys)/max(abs(H_sys))),'k'); legend('channel','ZF equalizer','overall system'); title('Frequency response');ylabel('Magnitude(dB)'); xlabel('Normalized frequency(x \pi rad/sample)');

Рисунок 8.6 − Эквалайзер с нулевым форсированием компенсирует отклик канала

Отклик фильтра во временной области показан на рисунке 8.7. График показывает, что эквалайзер идеально скомпенсировал вход, когда r[k] h[k].

Программа 8.6: Разработка и испытание эквалайзера обнуления

figure; %Plot equalizer input and output subplot(2,1,1); stem(0:1:length(r_k)-1,r_k);

title('Equalizer input'); xlabel('Samples'); ylabel('Amplitude'); subplot(2,1,2); stem(0:1:length(d_k)-1,d_k);

title(['Equalizer output- N=', num2str(N), ...' Delay=',num2str(delay), ' Error=', num2str(error)]);

xlabel('Samples'); ylabel('Amplitude');

Расчетная расчетная ошибка нулевого принуждения зависит от задержки эквалайзера. Для эквалайзера с 14 отводами и задержкой 11 ошибка

MSE 7,04 10 4 для бесшумного входа. С другой стороны, ошибка = 0,9985 для задержки = 1. Таким образом, задержка эквалайзера играет жизненно важную роль в конструкции эквалайзера с нулевым форсированием. Знание задержки, вносимой эквалайзером, очень важно для определения положения первого действительного отсчета на выходе эквалайзера (см. Разделы 8.6 и 8.7). Полный код моделирования,

который включает в себя все вышеупомянутые фрагменты кода, приводится ниже.

Программа 8.7: zf_equalizer_test.m: Моделирование эквалайзера с принудительной установкой нуля

clearvars; clc; %System parameters

nSamp=5; %Number of samples per symbol determines baud rate Tsym Fs=100; %Sampling Frequency of the system

Ts=1/Fs; %Sampling time Tsym=nSamp*Ts; %symbol time period

%Define transfer function of the channel

k=6; %define limits for computing channel response

N0 = 0.001; %Standard deviation of AWGN channel noise

t = -k*Tsym:Ts:k*Tsym; %time base defined till +/-kTsym

h_t = 1./(1+(t/Tsym).?2);%channel model, replace with your own model h_t = h_t + N0*randn(1,length(h_t));%add Noise to the channel response h_k = h_t(1:nSamp:end);%downsampling to represent symbol rate sampler t_inst=t(1:nSamp:end); %symbol sampling instants

figure; plot(t,h_t); hold on; %channel response at all sampling instants stem(t_inst,h_k,'r'); %channel response at symbol sampling instants legend('continuous-time model','discrete-time model');

title('Channel impulse response'); xlabel('Time (s)');ylabel('Amplitude'); %Equalizer Design Parameters

N = 14; %Desired number of taps for equalizer filter delay = 11;

%design zero-forcing equalizer for given channel and get tap weights

%and filter the input through the equalizer find equalizer co-effs for given CIR

Источник: https://studfile.net/preview/16500185/