UWB_analysis.m
上传用户:asli888
上传日期:2013-05-03
资源大小:7045k
文件大小:11k
源码类别:

matlab例程

开发平台:

Matlab

  1. %UWB-Run from editor debug(F5)-PPM(pulse position modulation)and link analysis of
  2. %UWB monocycle and doublet waveforms.
  3. %This m file plots the time and frequency waveforms for PPM 1st and 2nd derivative 
  4. %equations used in UWB system analysis. Fudge factors are required to
  5. %correct for inaccuracies in the 1st and 2nd derivative equations.
  6. %Tail to tail on the time wave forms must be considered as the actual pulse width. 
  7. %7*PW1 has about 99.9% of the signal power. The frequency spreads and center 
  8. %frequencies(fc=center of the spread)are correct as you can verify(fc~1/pw1).
  9. %Change pw(fudge factor)and t for other entered(pw1) pulse widths and
  10. %zooming in on the waveforms.A basic correlation receiver is constructed
  11. %showing the demodulated output information from a comparator(10101). Perfect sync
  12. %is assumed in the correlation receiver.
  13. %See SETUP and other info at end of program.
  14. %The program is not considered to be the ultimate in UWB link analysis, but is 
  15. %configured to show basic concepts of the new technology.  
  16. %================================================
  17. pw1=.5e-9;%pulse width in nanosec,change to desired width
  18. pw=pw1/2.5;%Fudge factor for inaccurate PWs(approx. 4-5 for 1st der. and
  19. %approx. 2-3 for 2nd der.)
  20. Fs=100e9;%sample frequency
  21. Fn=Fs/2;%Nyquist frequency
  22. t=-1e-9:1/Fs:20e-9;%time vector sampled at Fs Hertz. zoom in/out using (-1e-9:1/Fs:xxxx)
  23. A=1;
  24. %================================================ 
  25. % EQUATIONS
  26. %================================================
  27. %y=A*(t/pw).*exp(-(t/pw).^2);%1st derivative of Gaussian pulse=Gaussian monocycle
  28. y =A*(1 - 4*pi.*((t)/pw).^2).* exp(-2*pi.*((t)/pw).^2);%2nd derivative of Gaussian
  29. %pulse=doublet(two zero crossings)
  30. % y=y.*sin((2*pi*t*4.5e9).^2)%spectrum notches(multipath)
  31. %================================================
  32. %This series of pulses sets the pulse recurring frequency(PRF)
  33. %at 400MHz(waveform repeats every 2.5e-9 sec)and a
  34. %modulated bit stream(info bit rate=200MHz) of 10101 (5 pulses,can add more)
  35. %using 0.2e-9 as the time delay PPM where a delay = a 0 bit and no delay = a 1 bit. 
  36. %One could expand the # of pulses and modulate for a series of
  37. %111111000000111111000000111111 which would give a lower bit rate. You could just
  38. %change the PRF also.This series of redundent pulses also improves the processing gain
  39. %of the receiver by giving more voltage out of the integrator in a correlation
  40. %receiver. For loops or some other method could be used to generate these pulses but for
  41. %myself, I would get lost. This is a brute force method and I can easily copy and paste.
  42. %I will leave that for more energetic souls. Since we basically have the transmitter
  43. %implemented it's time to move on to the correlation receiver design 
  44. %and and add interference, multipath and noise with BER capability to
  45. %see if we can demodulate and get 10101 bits out at the 200MHz information bit rate. 
  46. % (changed pattern from previous file to 10101)
  47. %==================================================
  48. % 1ST DERIVATIVE MONOCYCLE(PPM WITH 5 PULSES)
  49. %==================================================
  50. %yp=y+ ...
  51. %A*((t-2.5e-9-.2e-9)/pw).*exp(-((t-2.5e-9-.2e-9)/pw).^2)+A*((t-5e-9)/pw).*exp(-((t-5e-9)/pw).^2)+ ...
  52. %A*((t-7.5e-9-.2e-9)/pw).*exp(-((t-7.5e-9-.2e-9)/pw).^2)+A*((t-10e-9)/pw).*exp(-((t-10e-9)/pw).^2);
  53. %==================================================
  54. % 2ND DERIVATIVE DOUBLET(PPM WITH 5 PULSES)
  55. %==================================================
  56. %modulated doublet
  57. yp=y+ ...
  58. A*(1-4*pi.*((t-2.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-2.5e-9-.2e-9)/pw).^2)+ ...
  59. A*(1-4*pi.*((t-5.0e-9)/pw).^2).*exp(-2*pi.*((t-5.0e-9)/pw).^2)+ ...
  60. A*(1-4*pi.*((t-7.5e-9-.2e-9)/pw).^2).*exp(-2*pi.*((t-7.5e-9-.2e-9)/pw).^2)+ ...
  61. A*(1-4*pi.*((t-10e-9)/pw).^2).*exp(-2*pi.*((t-10e-9)/pw).^2);
  62. %unmodulated doublet
  63. B=1;%This shows how the anplitude matching of templet and modulated signal
  64. %plays an important part. Would require AGC on first LNA to hold modulated
  65. %sig constant within an expected multipath range.(B=.4 to .5 causes errors).  
  66. yum=B*y+ ...
  67. B*(1-4*pi.*((t-2.5e-9)/pw).^2).*exp(-2*pi.*((t-2.5e-9)/pw).^2)+ ...
  68. B*(1-4*pi.*((t-5.0e-9)/pw).^2).*exp(-2*pi.*((t-5.0e-9)/pw).^2)+ ...
  69. B*(1-4*pi.*((t-7.5e-9)/pw).^2).*exp(-2*pi.*((t-7.5e-9)/pw).^2)+ ...
  70. B*(1-4*pi.*((t-10e-9)/pw).^2).*exp(-2*pi.*((t-10e-9)/pw).^2);
  71. yc=yp.*yum;%yc(correlated output)=yp(modulated)times yum(unmodulated) doublet.
  72. %This is where the correlation occurs in the receiver and would be the
  73. %first mixer in the receiver. 
  74. %==================================================
  75. % FFT
  76. %==================================================
  77. %new FFT for modulated doublet
  78. y=yp;%y=modulated doublet
  79. NFFY=2.^(ceil(log(length(y))/log(2)));
  80. FFTY=fft(y,NFFY);%pad with zeros
  81. NumUniquePts=ceil((NFFY+1)/2); 
  82. FFTY=FFTY(1:NumUniquePts);
  83. MY=abs(FFTY);
  84. MY=MY*2;
  85. MY(1)=MY(1)/2;
  86. MY(length(MY))=MY(length(MY))/2;
  87. MY=MY/length(y);
  88. f=(0:NumUniquePts-1)*2*Fn/NFFY;
  89. %new fft for unmodulated doublet
  90. y1=yum;%unmodulated doublet
  91. NFFY1=2.^(ceil(log(length(y1))/log(2)));
  92. FFTY1=fft(y1,NFFY1);%pad with zeros
  93. NumUniquePts=ceil((NFFY1+1)/2); 
  94. FFTY1=FFTY1(1:NumUniquePts);
  95. MY1=abs(FFTY1);
  96. MY1=MY1*2;
  97. MY1(1)=MY1(1)/2;
  98. MY1(length(MY1))=MY1(length(MY1))/2;
  99. MY1=MY1/length(y1);
  100. f=(0:NumUniquePts-1)*2*Fn/NFFY1;
  101. %new fft for correlated yc
  102. y2=yc;%y2 is the time domain signal output of the multiplier
  103. %(modulated times unmodulated) in the correlation receiver. Plots 
  104. %in the time domain show that a simple comparator instead of high speed A/D's 
  105. %could be used to recover the 10101 signal depending on integrator design. 
  106. %I have not included an integrator in the program but it would be a properly 
  107. %constructed low pass filter in an actual receiver.
  108. NFFY2=2.^(ceil(log(length(y2))/log(2)));
  109. FFTY2=fft(y2,NFFY2);%pad with zeros
  110. NumUniquePts=ceil((NFFY2+1)/2); 
  111. FFTY2=FFTY2(1:NumUniquePts);
  112. MY2=abs(FFTY2);
  113. MY2=MY2*2;
  114. MY2(1)=MY2(1)/2;
  115. MY2(length(MY2))=MY2(length(MY2))/2;
  116. MY2=MY2/length(y2);
  117. f=(0:NumUniquePts-1)*2*Fn/NFFY2;
  118. %===================================================
  119. % PLOTS
  120. %===================================================
  121. %plots for modulated doublet
  122. figure(1)
  123. subplot(2,2,1); plot(t,y);xlabel('TIME');ylabel('AMPLITUDE');
  124. title('Modulated pulse train');
  125. grid on;
  126. axis([-1e-9,10e-9 -1 1])
  127. subplot(2,2,2); plot(f,MY);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  128. %axis([0 10e9 0 .1]);%zoom in/out
  129. grid on;
  130. subplot(2,2,3); plot(f,20*log10(MY));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  131. %axis([0 20e9 -120 0]);
  132. grid on;
  133. %plots for unmodulated doublet
  134. figure(2)
  135. subplot(2,2,1); plot(t,y1);xlabel('TIME');ylabel('AMPLITUDE');
  136. title('Unmodulated pulse train');
  137. grid on;
  138. axis([-1e-9,10e-9 -1 1])
  139. subplot(2,2,2); plot(f,MY1);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  140. %axis([0 10e9 0 .1]);%zoom in/out
  141. grid on;
  142. subplot(2,2,3); plot(f,20*log10(MY1));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  143. %axis([0 20e9 -120 0]);
  144. grid on;
  145. %plots for correlated yc
  146. figure(3)
  147. subplot(2,2,1); plot(t,y2);xlabel('TIME');ylabel('AMPLITUDE');
  148. title('Receiver correlator output');
  149. grid on;
  150. axis([-1e-9,10e-9 -1 1])
  151. subplot(2,2,2); plot(f,MY2);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  152. axis([0 7e9 0 .025]);%zoom in/out
  153. grid on;
  154. subplot(2,2,3); plot(f,20*log10(MY2));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  155. %axis([0 20e9 -120 0]);
  156. grid on;
  157. %================================================
  158. %Comparator
  159. %================================================
  160. pt=.5;%sets level where threshhold device comparator triggers
  161. H=5;%(volts)
  162. L=0;%(volts)
  163. LEN=length(y2);
  164. for ii=1:LEN;
  165.     if y2(ii)>=pt;%correlated output(y2) going above pt threshold setting
  166.         pv(ii)=H;%pulse voltage
  167.     else;
  168.         pv(ii)=L;
  169.     end;
  170. end ;
  171. po=pv;%pulse out=pulse voltage
  172. figure(4)
  173. plot(t,po);
  174. axis([-1e-9 11e-9 -1 6])
  175. title('Comparator output');
  176. xlabel('Frequency');
  177. ylabel('Voltage');
  178. grid on;
  179. %===================================================
  180. %SETUP and INFO
  181. %===================================================
  182. %Enter desired pulse width in pw1(.5e-9).
  183. %Change t=-1e-9:1/Fs:(xxxx) to 1e-9.
  184. %Press F5 or run.
  185. %With waveform in plot 2,2,1, set pulse width with fudge factor to .5e-9
  186. %using #s corresponding to chosen waveform. Set from tail to tail.
  187. %Change t=-1e-9:1/Fs:(xxx) to something like 20e-9.Zoom out. I would
  188. %comment in all plot axis and use them for zooming in and out.
  189. %Press F5 and observe waveforms. Print waveforms to compare with next set of
  190. %wave forms.
  191. %Pick another waveform by commenting out existing waveform and repeat as above.
  192. %When you compare the waveforms you will see that the second derivative
  193. %doublet has a center frequency in the spread twice that of the first
  194. %derivative monocycle.
  195. %You would expect this on a second derivative. Picking a doublet waveform
  196. %for transmission (by choice of UWB antenna design) pushes the fc center frequency 
  197. %spread out by (two) allowing relief from the difficult design of narrower pulse
  198. %generating circuits in transmitters and receivers. If you chose a monocycle, you would
  199. %need to design your pulse circuits with a much narrower(factor of two)pulse width to
  200. %meet the tough FCC spectral mask from ~3 to 10GHz at-40Dbm. I would guess a
  201. %pulse width of ~ 0.4 to 0.45 nanosec using a doublet at the proper amplitude(A) 
  202. %would meet the requirements. The antenna choice at the receiver could
  203. %integrate the doublet to a monocycle so a wave form for the modulated
  204. %monocycle is included. You woud need to construct an unmodulated version
  205. %of the monocycle. Also an unmodulated monocycle template could correlate with a
  206. %modulated doublet extracting the information but the proper sense of the
  207. %monocycle would be required along with proper information delay setup in
  208. %the equations.
  209.  
  210. %You can zoom in on the waveforms of plot 2,2,1 to see the PPM
  211. %delays generating 10101. Use axis on plot 2,,2,1 for better
  212. %zooming.Comment in the axis.
  213. %Processing gains of greater than 20DB can be achieved by selection of the
  214. %PRF and integrator using high information bit rates. This, when doing a 
  215. %link budget, should give enough link margin for multipath conditions with
  216. %a fixed transmitter power at ranges of 3 to 10 meters.
  217. %I didn't include BER checking with noise in the program because I beleive many more
  218. %pulses would be required to get the true picture.
  219. %Perfect sync is assumed in the correlation receiver. You could delay the
  220. %unmodulated doublet waveform and check the correlation properties of the 
  221. %waveforms at the receiver and observe how the S/N(or output signal since no noise has been
  222. %added to the program) degrades when not in perfect sync.
  223. %Things to add
  224. %A.more pulses
  225. %B.integrator
  226. %C.noise
  227. %D.BER