cp0402_transmitter_2PAM_TH.m
资源名称:CP0402.zip [点击查看]
上传用户:yuandalvye
上传日期:2013-07-19
资源大小:3k
文件大小:4k
源码类别:
屏幕保护
开发平台:
Matlab
- %
- % 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