?? ofdm_64qam_kihee.m
字號:
% 64QAM/OFDM system
% The number of subcarrier is 8
clear all
% THe IFFT input SubCarrier is 8+Zero(0) = 8
% USEFUL DATA : 51.840Mbps(STM-0)
% CODING : 26/27
% Coded data : (51.840*27/26) 53.83385Mbps
% 64QAM mapping Data : (53.83385/6) = 8.972308Msps
% subcarrier spacing is (8.972308/8) = 1.1215385MHz
% OFDM signal BW (=Subcarr_spacing * 8), (=8.972308MHz) 3dB point
% OFDM signal 99% PWR BW : 9.5330772MHz((=Subcarr_spacing * 17/16)
% Nyquist frequency is 2*8.972308 >= 17.944616MHz
% Hence the sampling interval (ts) = 1/(17.944616MHz) = 55.727. . . ns
%%%%%%%%%% Initialization %%%%%%%%%%%%%%%%%%%%%
% Number=100;
Number = input('input the number of ofdm signal data : ');
Num_car = input('input the number of ofdm subcarrier : ');
% Num_car = 32;
Zero_Num = 0;
SubCarrier = Num_car + Zero_Num;
d_rate = 51.84*10^6; % required information bit rate
c_rate = 26/27; % code rate
coded_rate = d_rate/c_rate; % coded symbol rate
SymbolRate = coded_rate/(log2(64)); % 64QAM symbol rate %%犬牢秦 焊辨 繳杭 飯撈飄綽 函煉規僥俊 蝶扼 促福促.%%
SubCarrierSpacing = SymbolRate/Num_car; % subcarrier spacing
OF_Carrierdur = 1/SubCarrierSpacing;
OF_Symdur = OF_Carrierdur*SubCarrier;
iff_N = Num_car;%32; % This must be carefully selected to prevent spectral aliasing
ts = 1/(OF_Carrierdur);
fs = 1/ts; % this must be larger than the OFDM BW*2
df = 2*10^3; % required frequency resolution
delta=0.1; % equalizer step size
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bPath_Num = 2; %input ('Enter is Path of Number(1~2): ');
%64 QAM Generator
QAM_Data = QAM_Generator(Num_car*Number);
disp('End of QAM_Generator');
%IFFT
IFFTData= Radix2IFFT(QAM_Data,SubCarrier);
%Plot_frequence(IFFTData);%2 graph
disp('End of Radix2IFFT');
%Insert Zero
for st=1:SubCarrier*Number,
IFFTDataWithZero(st*2-1)=IFFTData(st);
IFFTDataWithZero(st*2)=0;
end;
%Filter
for loop=0:31,
alpha=input ('Enter is fading Depth (0~1) : '); %0.9;
FadingDelay=16*10^-9;
SampleDelay=input ('Enter is SampleDelay : ');
SampleDelay=10^-9*SampleDelay;
delay=SampleDelay;
FilteredData=Dig_Filter(IFFTDataWithZero,delay);
delay=FadingDelay+SampleDelay;
DelayedData=DelayFilter(IFFTDataWithZero,delay);
disp('End of Dig_Filter');
delay=FadingDelay+SampleDelay;
MultiPathData=FilteredData-alpha*DelayedData;
%Spectrum Display
%Spec_Display(FilteredData);
%Spec_Display(DelayedData);
Spec_Display(MultiPathData); %%% 犬牢竅扁 %%%
for j=0:Number-1,
OFDM_Dat= IFFTData(SubCarrier*j+1:SubCarrier*(j+1));
pt(SubCarrier*j+1:SubCarrier*(j+1))=fft(OFDM_Dat);
end;
%Constel(QAM_Data,SubCarrier);
for j=0:Number-1,
for k=0:SubCarrier-1,
SamplingPoint=j*SubCarrier+k;
pop(k+1)=FilteredData(16+SamplingPoint*2);
end;
FFTData(j*SubCarrier+1:(j+1)*SubCarrier)=fft(pop);
% Equalizer Part
d=1;
mapping=[ 7*d + i*7*d;
-7*d + i*7*d;
7*d - i*7*d;
-7*d - i*7*d];
for sub=1:SubCarrier,
if j==0,
estimated_c(sub)=1;
end
%k=sub;
y_k=FFTData(j*SubCarrier+sub);
z_k(sub)=estimated_c(sub)*y_k; % equalizer out put
for b=1:4,
metrics(sub,b)=(real(z_k(sub))-real(mapping(b,1)) ).^2 + (imag(z_k(sub))-imag(mapping(b,1))).^2;
end;
% khryu=[];
[min_metrics decs]=min(metrics(sub,:));
khryu=mapping(decs);
e_k(sub)=khryu-z_k(sub);
estimated_c(sub)=estimated_c(sub)+delta*e_k(sub)*conj(y_k); % coefficients update
mse(sub)=e_k(sub)^2;
end
kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
%lms=[lms mse(dis)];
end;
% Constel(kh_k,SubCarrier);
for j=0:Number-1,
for k=0:SubCarrier-1,
SamplingPoint=j*SubCarrier+k;
pop(k+1)=MultiPathData(16+SamplingPoint*2);
end;
FFTData(j*SubCarrier+1:(j+1)*SubCarrier)=fft(pop);
% Equalizer Part
d=1;
mapping=[ 7*d + i*7*d;
-7*d + i*7*d;
7*d - i*7*d;
-7*d - i*7*d];
for sub=1:SubCarrier,
if j==0,
estimated_c(sub)=1;
end
%k=sub;
y_k=FFTData(j*SubCarrier+sub);
z_k(sub)=estimated_c(sub)*y_k; % equalizer out put
for b=1:4,
metrics(sub,b)=(real(z_k(sub))-real(mapping(b,1)) ).^2 + (imag(z_k(sub))-imag(mapping(b,1))).^2;
end;
% khryu=[];
[min_metrics decs]=min(metrics(sub,:));
khryu=mapping(decs);
e_k(sub)=khryu-z_k(sub);
estimated_c(sub)=estimated_c(sub)+delta*e_k(sub)*conj(y_k); % coefficients update
mse(sub)=e_k(sub)^2;
end
kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
%lms=[lms mse(dis)];
end;
% Constel(FFTData,SubCarrier); % original constellation
Constel(kh_k,SubCarrier); % equalized signal constellation
pause;
for j=0:Number-1,
for sub=1:SubCarrier,
%k=sub;
y_k=FFTData(j*SubCarrier+sub);
z_k(sub)=estimated_c(sub)*y_k; % equalizer out put
end
kh_k(j*SubCarrier+1:(j+1)*SubCarrier)=z_k;
end;
% Constel(FFTData,SubCarrier); % original constellation
Constel(kh_k,SubCarrier); % equalized signal constellation
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -