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