📄 cp0201_transmitter_2ppm_th.m
字号:
%FUNCTION 2.6 :"cp0201_transmitter_2PPM_TH"
%
%Simulation of a UWB transmitter implementing 2PPM with TH
%Transmitted Power fixed to 'Pow'
%The signal is sampled with frequency 'fc'
%'numbits' is the number of bits generated by the source
%'Ns' pulses are generated for each bit,and those pulses are spaced in
%time by an average pulse repetition period 'Ts'
%The TH code has periodicity 'Np',and cardinality 'Nh'
%The chip time has time duration 'Tc'
%Each pulse has time duration 'Tm' and shaping factor 'tau'
%The PPM introduces a time shift of 'dPPM'
%
%The function returns:
%1) the generated stream of bits('bits');
%2) the generated TH code('THcode');
%3) the generated signal('Stx');
%4) a reference signal without data modulation('ref');
%
function [bits,THcode,Stx,ref]=cp0201_transmitter_2PPM_TH
%---------------------------------------------------------%Step Zero - Input parameters
%---------------------------------------------------------
Pow=-30;
fc=50e9;
numbits=10000;
Ts=3e-9;
Ns=3;
Tc=1e-9;
Nh=3;
Np=30000;
Tm=0.5e-9;
tau=0.25e-9;
dPPM=0.5e-9;
G=0;
%---------------------------------------------------------
%Step One - Simulating transmission chain
%---------------------------------------------------------
%binary source
bits=cp0201_bits(numbits);
%repetition coder
repbits=cp0201_repcode(bits,Ns);
%TH code
THcode=cp0201_TH(Nh,Np);
%PPM + TH
[PPMTHseq,THseq]=cp0201_2PPM_TH(repbits,fc,Tc,Ts,dPPM,THcode);
%shaping filter
power=(10^(Pow/10))/1000;
Ex=power*Ts;
w0=cp0201_waveform(fc,Tm,tau);
wtx=w0.*sqrt(Ex);
Sa=conv(PPMTHseq,wtx);
Sb=conv(THseq,wtx);
%Output generation
L=(floor(Ts*fc))*Ns*numbits;
Stx=Sa(1:L);
ref=Sb(1:L);
%----------------------------------------------------
%Step Two - Graphical output
%----------------------------------------------------
if G
F=figure(1);
set(F,'Position',[32 223 951 420]);
tmax=numbits*Ns*Ts;
time=linspace(0,tmax,length(Stx));
P=plot(time,Stx);
set(P,'LineWidth',[2]);
ylow=-1.5*abs(min(wtx));
yhigh=1.5*max(wtx);
axis([0 tmax ylow yhigh]);
AX=gca;
set(AX,'FontSize',12);
X=xlabel('Time [s]');
set(X,'FontSize',14);
Y=ylabel('Amplitude [V]');
set(Y,'FontSize',14);
for j=1:numbits
tj=(j-1)*Ns*Ts;
L1=line([tj tj],[ylow yhigh]);
set(L1,'Color',[0 0 0],'LineStyle','--','LineWidth',[2]);
for k=0:Ns-1
if k>0
tn=tj+k*Nh*Tc;
L2=line([tn tn],[ylow yhigh]);
set(L2,'Color',[0.5 0.5 0.5],'LineStyle','-.','LineWidth',[2]);
end
for q=1:Nh-1
th=tj+k*Nh*Tc+q*Tc;
L3=line([th th],[0.8*ylow 0.8*yhigh]);
set(L3,'Color',[0 0 0],'LineStyle',':','LineWidth',[1]);
end
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -