www.gusucode.com > UWB_matlab源码程序 > CP0402/cp0402_transmitter_2PAM_TH.m
% % FUNCTION 4.2 : "cp0402_transmitter_2PAM_TH" % % Simulation of a UWB transmitter implementing PAM with TH % % Transmitted power is fixed at '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 these pulses % are spaced in time by an average pulse repetition period % 'Ts' % The TH code has periodicity 'Np' and cardinality 'Nh' % Each pulse has time duration 'Tm' and shaping factor % 'tau' % % 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') % % Programmed by Guerino Giancola % function [bits,THcode,Stx,ref]=cp0402_transmitter_2PAM_TH % ---------------------------- % Step Zero - Input parameters % ---------------------------- Pow = -30; % average transmitted power (dBm) fc = 50e9; % sampling frequency numbits = 5; % number of bits generated by the source Ts = 10e-9; % frame time, i.e. average pulse repetition % period [s] Ns = 5; % number of pulses per bit Tc = 1e-9; % chip time [s] Nh = 10; % cardinality of the TH code Np = 5; % period of the TH code Tm = 0.5e-9; % pulse duration [s] tau = 0.25e-9; % shaping factor for the pulse [s] G = 1; % G=0 -> no graphical output % G=1 -> graphical output % ---------------------------------------- % 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); % PAM + TH [PAMTHseq,THseq] = cp0402_2PAM_TH(repbits,fc,Tc,Ts,THcode); % shaping filter power = (10^(Pow/10))/1000; % average transmitted % power (watts) Ex = power * Ts; % energy per pulse w0 = cp0201_waveform(fc,Tm,tau); % energy normalized pulse % waveform wtx = w0 .* sqrt(Ex); % pulse waveform Sa = conv(PAMTHseq,wtx); % output of the filter % (with modulation) Sb = conv(THseq,wtx); % output of the filter % (without modulation) % 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*max(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 % end of graphical output