cp0402_transmitter_2PAM_TH.m
上传用户:yuandalvye
上传日期:2013-07-19
资源大小:3k
文件大小:4k
源码类别:

屏幕保护

开发平台:

Matlab

  1. %
  2. % FUNCTION 4.2 : "cp0402_transmitter_2PAM_TH"
  3. %
  4. % Simulation of a UWB transmitter implementing PAM with TH
  5. %
  6. % Transmitted power is fixed at 'Pow'
  7. % The signal is sampled with frequency 'fc'
  8. % 'numbits' is the number of bits generated by the source
  9. % 'Ns' pulses are generated for each bit, and these pulses
  10. % are spaced in time by an average pulse repetition period
  11. % 'Ts'
  12. % The TH code has periodicity 'Np' and cardinality 'Nh'
  13. % Each pulse has time duration 'Tm' and shaping factor
  14. % 'tau'
  15. %
  16. % The function returns:
  17. % 1) the generated stream of bits ('bits')
  18. % 2) the generated TH code ('THcode')
  19. % 3) the generated signal ('Stx')
  20. % 4) a reference signal without data modulation ('ref')
  21. %
  22. % Programmed by Guerino Giancola
  23. %
  24. function [bits,THcode,Stx,ref]=cp0402_transmitter_2PAM_TH
  25. % ----------------------------
  26. % Step Zero - Input parameters
  27. % ----------------------------
  28. Pow = -30;      % average transmitted power (dBm)
  29. fc = 50e9;      % sampling frequency
  30. numbits = 5;    % number of bits generated by the source
  31. Ts = 10e-9;     % frame time, i.e. average pulse repetition
  32.                 % period [s]
  33. Ns = 5;         % number of pulses per bit
  34. Tc = 1e-9;      % chip time [s]
  35. Nh = 10;        % cardinality of the TH code
  36. Np = 5;         % period of the TH code
  37. Tm = 0.5e-9;    % pulse duration [s]
  38. tau = 0.25e-9;  % shaping factor for the pulse [s]   
  39. G = 1;
  40. % G=0 -> no graphical output
  41. % G=1 -> graphical output
  42. % ----------------------------------------
  43. % Step One - Simulating transmission chain
  44. % ----------------------------------------
  45. % binary source
  46. bits = cp0201_bits(numbits);
  47. % repetition coder
  48. repbits = cp0201_repcode(bits,Ns);
  49. % TH code
  50. [THcode]=cp0201_TH(Nh,Np);
  51. % PAM + TH
  52. [PAMTHseq,THseq] = cp0402_2PAM_TH(repbits,fc,Tc,Ts,THcode);
  53. % shaping filter
  54. power = (10^(Pow/10))/1000;      % average transmitted
  55.                                  % power (watts)
  56. Ex = power * Ts;                 % energy per pulse
  57. w0 = cp0201_waveform(fc,Tm,tau); % energy normalized pulse
  58.                                  % waveform
  59. wtx = w0 .* sqrt(Ex);            % pulse waveform
  60. Sa = conv(PAMTHseq,wtx);         % output of the filter
  61.                                  % (with modulation)
  62. Sb = conv(THseq,wtx);            % output of the filter
  63.                                  % (without modulation)
  64. % Output generation
  65. L = (floor(Ts*fc))*Ns*numbits;
  66. Stx = Sa(1:L);
  67. ref = Sb(1:L);
  68. % ---------------------------
  69. % Step Two - Graphical output
  70. % ---------------------------
  71. if G
  72.     
  73. F = figure(1);
  74. set(F,'Position',[32 223 951 420]);
  75. tmax = numbits*Ns*Ts;
  76. time = linspace(0,tmax,length(Stx));
  77. P = plot(time,Stx);
  78. set(P,'LineWidth',[2]);
  79. ylow=-1.5*max(wtx);
  80. yhigh=1.5*max(wtx);axis([0 tmax ylow yhigh]);
  81. AX=gca;
  82. set(AX,'FontSize',12);
  83. X=xlabel('Time [s]');
  84. set(X,'FontSize',14);
  85. Y=ylabel('Amplitude [V]');
  86. set(Y,'FontSize',14);
  87. for j = 1 : numbits
  88.     tj = (j-1)*Ns*Ts;
  89.     L1=line([tj tj],[ylow yhigh]);
  90.     set(L1,'Color',[0 0 0],'LineStyle','--',...
  91.        'LineWidth', [2]);
  92.     for k = 0 : Ns-1
  93.         if k > 0
  94.             tn = tj + k*Nh*Tc;
  95.             L2=line([tn tn],[ylow yhigh]);
  96.             set(L2,'Color',[0.5 0.5 0.5],...
  97.                'LineStyle','-.', 'LineWidth', [2]);
  98.         end
  99.         for q = 1 : Nh-1
  100.             th = tj + k*Nh*Tc + q*Tc;
  101.             L3=line([th th],[0.8*ylow 0.8*yhigh]);
  102.             set(L3,'Color',[0 0 0], 'LineStyle',...
  103.                ':', 'LineWidth', [1]);
  104.         end
  105.     end
  106. end
  107. end % end of graphical output