⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qam256_simu.txt

📁 本文件内包含了QPSKandQAM256的系统仿真
💻 TXT
📖 第 1 页 / 共 2 页
字号:
%*************************************************%      256 QAM EQUALIZER TESTING FILE             *%************************************************* %						 *%      	DATE:   5/28/98; 			 *%       AUTHOR: QIN ZHANG 	 		 *%         					 *	 %	FILE NAME: EQUA_256.M  (12-BIT 256 QAM)	 *%	C:QAM\SIMULATION                         *  %  transmitter alpha=.12 receiver alpha=.12  *%************************************************* %%	Two Channel Third Order Simulation;%path(path,'c:\matlab\mat_apl');   %path(path,'c:\matlab\mg');  %path(path,'c:\matlab\data');  clear;fs =5e6*4; %5.304e6*4;   			 %42.884296e6/2;		  % 20.227640MHz sampling frequency;f_symbol=fs/4;				  % 10.113820MSPStaps_t=5*2*2*2*2*2;		% 160-tap filter;alpha_t=0.1865;			%alpha_t=0.1865	% Transmiter SRRC filter alpha;taps_r=taps_t; 			% receiver filter taps;alpha_r=alpha_t;			% ideal: 0.1865	% receiver fitler alpha;n_filter=taps_t*2-1; 	% raised cosine filter taps;n_bit_rc =16;				% raised cosine filter coefficient bit;n=1024*4*2;					% random data size;n_demo_filter=6;			% demodulation low pass filter taps;f_cutoff_demo=5e6;		% demodulation low pass cutoff frequency;n_bit_da=16;				% D/A converter resolution;n_bit_sin=16;				% Sine and Cosine Coefficient;ph_error=0;             % carrier phase error;ny_full=1;					% full nyquist filter; 0 partialny_n=10;           		% partial nyquist filter, 8 taps on left and right from center tap;%*****************************************************************%    1)  Generate Square Root Raised Cosine Filter Coefficients  *%*****************************************************************t=1:taps_t;t=(t-floor(taps_t/2)-1+1e-10)/fs;hrc_t=(sin(pi*t*f_symbol*(1-alpha_t)) + 4*alpha_t*t*f_symbol.*...       cos(pi*t*f_symbol*(1+alpha_t))    )./...       ( pi*t*f_symbol.*(1-(4*alpha_t*t*f_symbol).^2));%hrc_t=hrc_t.*blackman(taps_t)';hrc_t=hrc_t.*kaiser(taps_t,6)';plot(t, hrc_t);grid;title('hrc_t impulse response');pause;hrc_r=hrc_t;hrc_t=hrc_t/sum(hrc_t);hrc_r=hrc_r/sum(hrc_r);maxmin=max(abs(hrc_t));module=1/(2^(n_bit_rc-1)-1)*maxmin; 	% define LSB;hrc_t_i=round(hrc_t/module);% transform the fitler to polyphase;hrc_t_4=reshape(hrc_t,4,taps_t/4);hrc_t_4(3,:)=-hrc_t_4(3,:);hrc_t_4(4,:)=-hrc_t_4(4,:);%****************************************%      3) Get the random data		*	%****************************************total_fft=20;for fft_loop=1:total_fft;   for rand_data_set=1:2rand('state', sum(100*clock));[idat,qdat] = Pn_iq4(n,1);	% -7.5 to 7.5;%idat=ones(size(idat));%qdat=idat;		plot(idat(1:20),'*');	grid;	title('I Data');%pause;		iq_data=idat+qdat*1i;	plot(iq_data(100:900),'*');	grid;	title('I/Q Data Constellation');	axis([-4 4 -4 4]*2);	pause	% create a test impulse	%idat=zeros(size(idat));	%idat(200)=8;	%qdat(203)=-8;	%idat(199)=-8;%*************************************************%        4) Base Band Filtering & modulation     *%*************************************************%grp_delay=taps_t/2;offset=801+800;		nnnn=1024*4;	data_fft=10*log10(abs(fftshift(fft(kaiser(1024*4,11.)'.*...       (idat(offset:offset+1024*4-1)+qdat(offset:offset+1024*4-... 	1))))));%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%	idat(offset:offset+nnnn-1)))));	data_fft=data_fft-max(data_fft);	ff=-nnnn/2:nnnn/2-1;	ff=ff/nnnn*2*fs/2;       plot(ff,data_fft,'b');	title(' I/Q Data Spectrum Before Filtering ');	axis([0, 1e7 -85 0]);	grid;	xlabel('FREQUENCY (HZ)');	ylabel('MAGNITUDE (dB) ');pause;%	print fig2 -dmeta;%%    polyphase filtering with Post Filtering Carrier Recombination;%if_data1=4*filter(hrc_t_4(1,:),1,idat+0.5)-4*sum(hrc_t_4(1,:))*.5;if_data2=4*filter(hrc_t_4(2,:),1,qdat+0.5)-4*sum(hrc_t_4(2,:))*.5;if_data3=4*filter(hrc_t_4(3,:),1,idat+0.5)-4*sum(hrc_t_4(3,:))*.5;if_data4=4*filter(hrc_t_4(4,:),1,qdat+0.5)-4*sum(hrc_t_4(4,:))*.5;if_data=[if_data1; if_data2; if_data3; if_data4];rf_data=reshape(if_data,1,n*4);offset=200;		 	% filter warm up time;%	 plot spectrum;	nnnn= 1024*8;	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...				 rf_data(offset:offset+nnnn-1)))));	data_fft=data_fft-max(data_fft);	ff=-nnnn/2:nnnn/2-1;	ff=ff/nnnn*2*fs/2;  plot(ff,data_fft);   title(' I/Q Data Spectrum After Filtering ');	axis([0, 1e7 -100 0]);	grid;	xlabel('FREQUENCY (HZ)');	ylabel('MAGNITUDE (dB) ');	pause;%	print fig3 -dmeta;%       axis([3e6 3.5e6 -90 0]);%	%%pause;%************************************************%	Interpolation				fs=40	MHz				*%************************************************rf_data0=zeros(size(rf_data));rf_data_8=[rf_data; rf_data0];rf_data_8=reshape(rf_data_8,1,n*4*2);fs_8=fs*2;n_filter=160;f=[ 0 .41   .56             1];m=[1   1   10^(-6) 10^(-8) ];b=fir2(n_filter, f, m);%[H,F] = FREQZ(b,1, 1024,fs_8);%plot(F, 20*log10(abs(H)));%grid;%pauserf_data_8=filter(b,1,rf_data_8);%	 plot spectrum;%	nnnn= 1024*8;%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%				 rf_data_8(offset:offset+nnnn-1)))));%  data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_8/2;%	plot(ff,data_fft);%	title(' I/Q Data Spectrum After Interplation x2');%	axis([0 max(ff) -100 0]);%	grid;%	xlabel('FREQUENCY (HZ)');%	ylabel('MAGNITUDE (dB) ');%	pause;%************************************************%	Interpolation	fs=80 MHz							*%************************************************rf_data0=zeros(size(rf_data_8));rf_data_16=[rf_data_8; rf_data0];rf_data_16=reshape(rf_data_16,1,n*4*2*2);fs_16=fs*2*2;n_filter=100;f=[ 0 .22   .77             1];m=[1   1   10^(-10) 10^(-10) ];b=fir2(n_filter, f, m);%[H,F] = FREQZ(b,1, 1024,fs_16);%plot(F, 20*log10(abs(H)));%grid;%pauserf_data_16=filter(b,1,rf_data_16);%	 plot spectrum;%	nnnn= 1024*8;%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%				 rf_data_16(offset:offset+nnnn-1)))));%   data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_16/2;%   plot(ff,data_fft);%   title(' I/Q Data Spectrum After Interplation X4');%	axis([0 max(ff) -100 0]);%	grid;%	xlabel('FREQUENCY (HZ)');%	ylabel('MAGNITUDE (dB) '); %  pause;%************************************************%	Interpolation	fs=160 MHz							*%************************************************rf_data0=zeros(size(rf_data_16));rf_data_32=[rf_data_16; rf_data0];rf_data_32=reshape(rf_data_32,1,n*4*2*2*2);fs_32=fs*2*2*2;n_filter=60;f=[ 0 .11   .77             1];m=[1   1   10^(-10) 10^(-10) ];b=fir2(n_filter, f, m);%[H,F] = FREQZ(b,1, 1024,fs_32);%plot(F, 20*log10(abs(H)));%grid;%pauserf_data_32=filter(b,1,rf_data_32);%	 plot spectrum;%	nnnn= 1024*8;%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%				 rf_data_32(offset:offset+nnnn-1)))));%	data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_32/2;%	plot(ff,data_fft);%	title(' I/Q Data Spectrum After Interplation X8');%	axis([0 max(ff) -100 0]);%	grid;%	xlabel('FREQUENCY (HZ)');%	ylabel('MAGNITUDE (dB) ');%	pause;   if rand_data_set == 1   %************************************************%	UP converting to 17.25MHz							*%************************************************      t=[0:n*32-1]/fs_32;c_cos=cos(2*pi*(27.25-5-.2)*1e6*t); 	% carrier sine;rf_data1=rf_data_32.*c_cos;	% up convertingn_filter=351;f=[ 0 2/8   2.2/8     3/8  1];m=[1   1   10^(-10) 10^(-10) .001 ];b=fir2(n_filter, f, m);%[H,F] = FREQZ(b,1, 1024,fs_32);%plot(F, 20*log10(abs(H)));%grid;%pauserf_data1=filter(b,1,rf_data1);%	 plot spectrum;%	nnnn= 1024*8;%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%				 rf_data1(offset:offset+nnnn-1)))));%   data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_32/2;%   plot(ff,data_fft);%   title(' RF Data Spectrum After Up Converting');%	axis([0 max(ff) -100 0]);%	grid;%	xlabel('FREQUENCY (HZ)');%	ylabel('MAGNITUDE (dB) ');%  pause;   else   %************************************************%	UP converting to 20.25MHz							*%************************************************      t=[0:n*32-1]/fs_32;c_cos=cos(2*pi*(27.25-5+5)*1e6*t); 	% carrier sine;rf_data2=rf_data_32.*c_cos;	% up convertingn_filter=350;f=[ 0 2.5/8   2.7/8             1];m=[1   1   10^(-10) 10^(-10) ];b=fir2(n_filter, f, m);%[H,F] = FREQZ(b,1, 1024,fs_32);%plot(F, 20*log10(abs(H)));%grid;%pauserf_data2=filter(b,1,rf_data2);%	 plot spectrum;%	nnnn= 1024*8;%	data_fft=20*log10(abs(fftshift(fft(kaiser(nnnn,11.)'.*...%				 rf_data2(offset:offset+nnnn-1)))));%   data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_32/2;%   plot(ff,data_fft);%   title(' RF Data2 Spectrum After Up Converting');%	axis([0 max(ff) -100 0]);%	grid;%	xlabel('FREQUENCY (HZ)');%	ylabel('MAGNITUDE (dB) ');%	pause;endend % of rand_data_setrf_two_channel(fft_loop,:)=(rf_data1+rf_data2);%rf_two_channel=rf_data2;%	 plot spectrum;	nnnn= 1024*2*2*2*2;%	data_fft(fft_loop,:)=abs(fftshift(fft(kaiser(nnnn,11.)'.*...%      rf_two_channel(fft_loop, offset:offset+nnnn-1))));end % end of fft_loop;%temp=data_fft(1,:);%for i=2:fft_loop%   temp=temp+data_fft(i,:);%end%temp=temp/fft_loop;%   data_fft_db=20*log10(temp);%   data_fft=data_fft-max(data_fft);%	ff=-nnnn/2:nnnn/2-1;%	ff=ff/nnnn*2*fs_32/2;%   plot(ff/1e6,data_fft_db);%   title(' Two-Channel 256QAM RF  Spectrum');%	axis([0 max(ff)/1e6/2 -40 50]);%	grid;%	xlabel('FREQUENCY (MHZ)');%   ylabel('AMPLITUDE (dB) ');   %print fig_two_tone_QAM -dmeta;%   pause;   amp=2;   for fft_loop=1:total_fft   ctb(fft_loop,:)=0.01*((amp*rf_two_channel(fft_loop,:)).^3)+amp*rf_two_channel(fft_loop,:);      data_fft(fft_loop,:)=abs(fftshift(fft(kaiser(nnnn,11.)'.*...      ctb(fft_loop, offset:offset+nnnn-1))));end % end of fft_loop;temp=data_fft(1,:);for i=2:total_fft   temp=temp+data_fft(i,:);endtemp=temp/total_fft;   data_fft_db=20*log10(temp);   ff=-nnnn/2:nnnn/2-1;	ff=ff/nnnn*2*fs_32/2;   plot(ff/1e6,data_fft_db, 'r');   title(' Third Order Distortion');	axis([0 max(ff)/1e6/2 -30 50]);	grid;	xlabel('FREQUENCY (MHZ)');	ylabel('MAGNITUDE (dB) ');   pause;      %print fig_3rd_QAM_2 -dmeta;%************************************************%	Add Channel Noise			*%************************************************%************************************************% Define Channel Model				*%************************************************ch_delay=6-1;  	% 6= channel length *4 from the center tapchannel=[ -0.0 0. 0. 0. -0. 0. 0. 0. -0.0002*8*1.1 0. 0. 0. -0.0 0. 0. 0. ...  % pre echo,tap index: [19  18  17  16]          0.0 0. 0. 0. -0.0 0. -0.0 0. ...					% tap index: [15 14] 	1 ...							% center tap	     [13]	  0.0 0.  0.0 -0.1 0. 0. 0. -0.0 0.0 0. 0. -0. 0. 0. 0. -0. ... %   index: [12 11 10  9]           0. 0. 0.  -0.0 0. 0. 0. -0. 0.0 0. 0. -0. 0. 0. 0. -0. ...   % tap index: [8  7  6  5]           0. 0. 0.  -0.+i*.0005120 0. 0. 0. -0. 0.0 0. 0. -0. 0. 0. 0. -0. ...   % tap index: [4  3  2  1] 	  0. 0. 0.0  -0.0 0. 0. 0. -0. 0.0 0. 0. -0. 0. 0. 0. -0. ];training=0;	% if training=1 use training.converge_i=0;test_tap1=13-4;       %  start tap index of the equalizer.  The index is defined in the above  table [1 to 19 ]test_tap2=13+4;	   %  end   tap index of the equalizer.i_module=100;end_iie=1024*4.5;	% end of iie;mu=.0015*5/2; %1/2^6;	%0.03n_test=12; 	% Feed Backward taps;rf_data=filter(channel,1,rf_data);%****************************************%		Set the SNR  		*%****************************************n_s=.2*2*1.2*(rand(size(rf_data))-.5); %*************************************************%        5)  Demodulation                        *%*************************************************t=[0:n*4-1]/fs;c_sin=sin(2*pi*fs*(1+.0e-3/5)/4*t+0/180*pi); 	% carrier sine;c_cos=cos(2*pi*fs*(1+.0e-3/5)/4*t+0/180*pi); 	% carrier cosine;rf_i_d=rf_data.*c_cos;	% down convertingrf_q_d=rf_data.*c_sin;	% down convertingnoise_i=n_s.*c_cos;	% down convertingnoise_q=n_s.*c_sin;	% down converting%	% plot spectrum;%	data_fft=20*log10(abs(fftshift(fft(kaiser(1024,11.)'.*...%		 rf_i_d(offset:offset+1024-1)))));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -