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

matlab例程

开发平台:

Matlab

  1. %UWB-Run from editor debug(F5)-BPSK modulation and link analysis of
  2. %UWB fifth derivative Revised 1/24/05-JC
  3. %This m file plots the time and frequency waveforms for BPSK fifth derivative 
  4. %equation of gaussian pulse used in UWB system analysis. The fifth
  5. %derivative waveform equation is obtained by use of the symbolic processor in
  6. %matlab.You would actually use the fourth derivative of the gaussian
  7. %monocycle which is t/pw*exp(-t^2/pw^2).Procedure as follows:
  8. %syms t pw 
  9. %t/pw*exp(-t^2/pw^2)enter
  10. %diff(ans,t,4)
  11. %ans=60/pw^5*t*exp(-t^2/pw^2)-80/pw^7*t^3*exp(-t^2/pw^2)+16*t^5/pw^9*exp(-t^2/pw^2)
  12. %set pw=1 to normalize and do an ezplot(ans) and you should get a plot of the fifth order
  13. %derivative which has 5 zero crossings.It is apparent from previous files that the 1st and
  14. %second derivative pulses will not meet the FCC spectral mask without
  15. %reducing the transmitter power. The fifth order derivative meets the FCC
  16. %mask without a reduction in power. It also retains a wide 3DB and 10DB bandwidth.
  17. %One may ask how to generate these pulses at the transmitter. You could
  18. %take a baseband pulse and process it thru three differential highpass circuits(CR's) and
  19. %use a TX antenna that differentiates the pulse twice for fifth order. Assume
  20. %the RX antenna does not differentiate or integrate to preserve for fifth
  21. %order template(assuming a template is required).It may be possible
  22. %(for short distances and very high bit rates),to use DSSS(for smoothing and multiple access)with
  23. %a differential PSK(DPSK) scheme(squaring circuit with delay in one leg) 
  24. %and FEC coding.This would solve a lot of design problems. 
  25. %You would only lose several DB of Eb/No(1e-3) and would not require generation of a template at 
  26. %the receiver for syncronization assuming timing jitter can be held to a minimum.There may
  27. %be other types of waveforms that will reduce the jitter and allow comparator and
  28. %clocked flip flop use instead of a high speed ADC.
  29. %Antenna and path distortion would be lessened using DPSK. The characteristics
  30. %of the fifth order waveform are as follows and which you can verify are:
  31. %pw(tail to tail)=~.5e-9
  32. %fc=~7Ghz
  33. %3DB fl to fh=~3GHz
  34. %10DB fl to fh=~6GHz
  35. %I would suggest you review other files published under UWB to get an
  36. %idea of the programs usage.
  37. %================================================
  38. clear
  39. Fs=100e9;%sample frequency
  40. Fn=Fs/2;%Nyquist frequency
  41. t=-.3e-9:1/Fs:45e-9;%time vector sampled at Fs Hertz. zoom in/out using (-1e-9:1/Fs:xxxx)
  42. %================================================ 
  43. % EQUATIONS
  44. %================================================
  45. %y=A*(t/pw).*exp(-(t/pw).^2);%1st derivative of Gaussian pulse=Gaussian monocycle
  46. %y =1*(1 - 4*pi.*((t)/pw).^2).* exp(-2*pi.*((t)/pw).^2);%2nd derivative of Gaussian
  47. %pulse=doublet(two zero crossings)
  48. pw=75e-12;%value sets pulse width of fifth derivative looking at figure 1
  49. y=((60./pw.^5).*(t-0).*exp(-(t-0).^2./pw.^2)-(80./pw.^7).*(t-0).^3.*exp(-(t-0).^2./pw.^2)+ ...
  50. (16.*(t-0).^5./pw.^9.*exp(-(t-0).^2/pw.^2)));%Fifth derivative of Gaussian pulse.(5 zero crossings)
  51. %================================================
  52. %NOISE SETUP FOR BER AND SNR
  53. %================================================
  54. noise=(1e-50)*(randn(size(t)));%(Noise-AWGN)Set to 1e-50 to disable 
  55. %================================================
  56. %BPSK OR BI-PHASE MODULATION 
  57. %================================================
  58. %The following series of equations sets the pulse recurring frequency(PRF)
  59. %at 200MHz(waveform repeats every 5e-9 sec and a
  60. %modulated bit stream(bit rate=200Mb/s)of 10101 (5 pulses,can add more)
  61. %where a {1=0 degrees(right side up) and a 1 bit} and a {-1=180
  62. %degrees(upside down) a 0 bit.}
  63.  
  64. %==================================================
  65. % FIFTH DERIVATIVE(BPSK) WITH 5 PULSES)
  66. %==================================================
  67. %BPSK modulated fifth(yp)
  68. A=.6e-45;%sets voltage level out of TX or input to mixer(.6e-45 for .3mv volt peak)
  69. yp=A*y+ ...
  70. -A*((60./pw.^5).*(t-5e-9).*exp(-(t-5e-9).^2./pw.^2)-(80./pw.^7).*(t-5e-9).^3.*exp(-(t-5e-9).^2./pw.^2)+ ...
  71. (16.*(t-5e-9).^5./pw.^9.*exp(-(t-5e-9).^2/pw.^2)))+ ...
  72. A*((60./pw.^5).*(t-10e-9).*exp(-(t-10e-9).^2./pw.^2)-(80./pw.^7).*(t-10e-9).^3.*exp(-(t-10e-9).^2./pw.^2)+ ...
  73. (16.*(t-10e-9).^5./pw.^9.*exp(-(t-10e-9).^2/pw.^2)))+ ...
  74. -A*((60./pw.^5).*(t-15e-9).*exp(-(t-15e-9).^2./pw.^2)-(80./pw.^7).*(t-15e-9).^3.*exp(-(t-15e-9).^2./pw.^2)+ ...
  75. (16.*(t-15e-9).^5./pw.^9.*exp(-(t-15e-9).^2/pw.^2)))+ ...
  76. A*((60./pw.^5).*(t-20e-9).*exp(-(t-20e-9).^2./pw.^2)-(80./pw.^7).*(t-20e-9).^3.*exp(-(t-20e-9).^2./pw.^2)+ ...
  77. (16.*(t-20e-9).^5./pw.^9.*exp(-(t-20e-9).^2/pw.^2)));
  78. %-A inverts waveform
  79. %unmodulated fifth(yum)
  80. B=.6e-45;%sets voltage level  
  81. yum=B*y+ ...
  82. B*((60./pw.^5).*(t-5e-9).*exp(-(t-5e-9).^2./pw.^2)-(80./pw.^7).*(t-5e-9).^3.*exp(-(t-5e-9).^2./pw.^2)+ ...
  83. (16.*(t-5e-9).^5./pw.^9.*exp(-(t-5e-9).^2/pw.^2)))+ ...
  84. B*((60./pw.^5).*(t-10e-9).*exp(-(t-10e-9).^2./pw.^2)-(80./pw.^7).*(t-10e-9).^3.*exp(-(t-10e-9).^2./pw.^2)+ ...
  85. (16.*(t-10e-9).^5./pw.^9.*exp(-(t-10e-9).^2/pw^2)))+ ...
  86. B*((60./pw.^5).*(t-15e-9).*exp(-(t-15e-9).^2./pw.^2)-(80./pw.^7).*(t-15e-9).^3.*exp(-(t-15e-9).^2./pw.^2)+ ...
  87. (16.*(t-15e-9).^5./pw.^9.*exp(-(t-15e-9).^2/pw.^2)))+ ...
  88. B*((60./pw.^5).*(t-20e-9).*exp(-(t-20e-9).^2./pw.^2)-(80./pw.^7).*(t-20e-9).^3.*exp(-(t-20e-9).^2./pw.^2)+ ...
  89. (16.*(t-20e-9).^5./pw.^9.*exp(-(t-20e-9).^2/pw.^2)));
  90. ym=yp+noise;%BPSK modulated fifth with noise
  91. %yum=yum+noise;%use this to put noise on unmodulated pulse train for DPSK
  92. %squaring circuit use.
  93. yc=ym.*yum;%yc(correlated output)=ym(modulated)times yum(unmodulated) fifth.
  94. %This is where the correlation occurs in the receiver and would be the
  95. %mixer in the receiver. 
  96. %==================================================
  97. % FFT
  98. %==================================================
  99. %new FFT for BPSK modulated fifth(ym)
  100. NFFYM=2.^(ceil(log(length(ym))/log(2)));
  101. FFTYM=fft(ym,NFFYM);%pad with zeros
  102. NumUniquePts=ceil((NFFYM+1)/2); 
  103. FFTYM=FFTYM(1:NumUniquePts);
  104. MYM=abs(FFTYM);
  105. MYM=MYM*2;
  106. MYM(1)=MYM(1)/2;
  107. MYM(length(MYM))=MYM(length(MYM))/2;
  108. MYM=MYM/length(ym);
  109. f=(0:NumUniquePts-1)*2*Fn/NFFYM;
  110. %new FFT for unmodulated fifth(yum)
  111. NFFYUM=2.^(ceil(log(length(yum))/log(2)));
  112. FFTYUM=fft(yum,NFFYUM);%pad with zeros
  113. NumUniquePts=ceil((NFFYUM+1)/2); 
  114. FFTYUM=FFTYUM(1:NumUniquePts);
  115. MYUM=abs(FFTYUM);
  116. MYUM=MYUM*2;
  117. MYUM(1)=MYUM(1)/2;
  118. MYUM(length(MYUM))=MYUM(length(MYUM))/2;
  119. MYUM=MYUM/length(yum);
  120. f=(0:NumUniquePts-1)*2*Fn/NFFYUM;
  121. %new FFT for correlated pulses(yc)
  122. %yc is the time domain signal output of the multiplier
  123. %(modulated times unmodulated) in the correlation receiver. Plots 
  124. %in the time domain show that a simple comparator and clocked flip flop instead of high speed A/D's 
  125. %may be used to recover the 10101 signal depending on integrator design and level of
  126. %peak voltage into mixer.
  127. NFFYC=2.^(ceil(log(length(yc))/log(2)));
  128. FFTYC=fft(yc,NFFYC);%pad with zeros
  129. NumUniquePts=ceil((NFFYC+1)/2); 
  130. FFTYC=FFTYC(1:NumUniquePts);
  131. MYC=abs(FFTYC);
  132. MYC=MYC*2;
  133. MYC(1)=MYC(1)/2;
  134. MYC(length(MYC))=MYC(length(MYC))/2;
  135. MYC=MYC/length(yc);
  136. f=(0:NumUniquePts-1)*2*Fn/NFFYC;
  137. %===================================================
  138. % PLOTS
  139. %===================================================
  140. %plots for modulated fifth(ym)
  141. figure(1)
  142. subplot(2,2,1); plot(t,ym);xlabel('TIME');ylabel('AMPLITUDE');
  143. title('Modulated pulse train');
  144. grid on;
  145. %axis([-1e-9,27e-9 -1 2])
  146. subplot(2,2,2); plot(f,MYM);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  147. %axis([0 20e9 0 .0001]);%zoom in/out
  148. grid on;
  149. subplot(2,2,3); plot(f,10*log10(abs(MYM).^2));xlabel('FREQUENCY');ylabel('PSD');%PSD shown here
  150. %axis([0 12e9 -20 5]);
  151. grid on;
  152. %plots for unmodulated fifth(yum)
  153. figure(2)
  154. subplot(2,2,1); plot(t,yum);xlabel('TIME');ylabel('AMPLITUDE');
  155. title('Unmodulated pulse train');
  156. grid on;
  157. %axis([-1e-9,27e-9 -1 1])
  158. subplot(2,2,2); plot(f,MYUM);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  159. %axis([0 10e9 0 .1]);%zoom in/out
  160. grid on;
  161. subplot(2,2,3); plot(f,20*log10(MYUM));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  162. %axis([0 20e9 -120 0]);
  163. grid on;
  164. %plots for correlated pulses(yc)
  165. figure(3)
  166. subplot(2,2,1); plot(t,yc);xlabel('TIME');ylabel('AMPLITUDE');
  167. title('Receiver correlator output-no LPF');
  168. grid on;
  169. %axis([-1e-9,27e-9 -1 1])
  170. subplot(2,2,2); plot(f,MYC);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  171. %axis([0 7e9 0 .025]);%zoom in/out
  172. grid on;
  173. subplot(2,2,3); plot(f,20*log10(MYC));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  174. %axis([0 20e9 -120 0]);
  175. grid on;
  176. %===========================================================
  177. %CORRELATION RECEIVER COMPARATOR(before lowpass filter)
  178. %===========================================================
  179. pt=.1e-8%sets level where threshhold device comparator triggers
  180. H=5;%(volts)
  181. L=0;%(volts)
  182. LEN=length(yc);
  183. for ii=1:LEN;
  184.     if yc(ii)>=pt;%correlated output(yc) going above pt threshold setting
  185.         pv(ii)=H;%pulse voltage
  186.     else;
  187.         pv(ii)=L;
  188.     end;
  189. end ;
  190. po=pv;%pulse out=pulse voltage
  191. %figure(3)
  192. subplot(2,2,4);
  193. plot(t,po);
  194. axis([-1e-9 27e-9 -1 6])
  195. title('Comparator output');
  196. xlabel('Frequency');
  197. ylabel('Voltage');
  198. grid on;
  199. %===================================================
  200. %SETUP and INFO
  201. %===================================================
  202. %Check axis settings on plots
  203. %Change t=-1e-9:1/Fs:(xxxx) to 1e-9 or proper value for viewing
  204. %Press F5 or run.
  205. %With waveform in plot 2,2,1(Figure 1), set pulse width to
  206. %.5e-9
  207. %Change t=-1e-9:1/Fs:(xxx) to something like 30e-9.Zoom out. I would
  208. %comment in all plot axis and use them for zooming in and out.
  209. %Press F5 and observe waveforms. Print or observe waveforms to compare with next set of
  210. %wave forms.
  211. %===================================================================
  212. %  CORRELATION RECEIVER LOW PASS FILTER(INTEGRATOR)
  213. %=======================================================================
  214. rc=.5e-9;%time constant
  215. ht=(1/rc).*exp(-t/rc);%impulse response
  216. ycfo=filter(yc,1,ht)/Fs;%use this instead of ycfo=conv(yc,ht)/Fs for proper dimension.
  217. %The #=1 allows this. The LPF RC time constant(integrates over this time).
  218. %Theory states that it should be set to the pulse width but should be set
  219. %to a value that gives the best error free operation at the highest noise
  220. %levels. Different filter types(butterworth,etc) may give different
  221. %results.I don't have the butter function.
  222. %The 3DB or 1/2 power bandwidth on the RC LPF is f=1/(2*pi*RC). The noise
  223. %bandwith is f=1/(4*rc).
  224. yn=filter(noise,1,ht)/Fs;%looks at filtered noise only(Figure 5)
  225. %new FFT for filtered correlated pulses(ycfo) 
  226. NFFYCFO=2.^(ceil(log(length(ycfo))/log(2)));
  227. FFTYCFO=fft(ycfo,NFFYCFO);%pad with zeros
  228. NumUniquePts=ceil((NFFYCFO+1)/2); 
  229. FFTYCFO=FFTYCFO(1:NumUniquePts);
  230. MYCFO=abs(FFTYCFO);
  231. MYCFO=MYCFO*2;
  232. MYCFO(1)=MYCFO(1)/2;
  233. MYCFO(length(MYCFO))=MYCFO(length(MYCFO))/2;
  234. MYCFO=MYCFO/length(ycfo);
  235. f=(0:NumUniquePts-1)*2*Fn/NFFYCFO;
  236. %new FFT for filtered noise(yn)
  237. NFFYN=2.^(ceil(log(length(yn))/log(2)));
  238. FFTYN=fft(yn,NFFYN);%pad with zeros
  239. NumUniquePts=ceil((NFFYN+1)/2); 
  240. FFTYN=FFTYN(1:NumUniquePts);
  241. MYN=abs(FFTYN);
  242. MYN=MYN*2;
  243. MYN(1)=MYN(1)/2;
  244. MYN(length(MYN))=MYN(length(MYN))/2;
  245. MYN=MYN/length(yn);
  246. f=(0:NumUniquePts-1)*2*Fn/NFFYN;
  247. %plots for filtered correlated pulses(ycfo)
  248. figure(4)
  249. subplot(2,2,1); plot(t,ycfo);xlabel('TIME');ylabel('AMPLITUDE');
  250. title('Receiver filtered correlator output');
  251. grid on;
  252. %axis([-1e-9,27e-9 -1 1])
  253. subplot(2,2,2); plot(f,MYCFO);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  254. %axis([0 7e9 0 .25]);%zoom in/out
  255. grid on;
  256. subplot(2,2,3); plot(f,20*log10(MYCFO));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  257. %axis([0 20e9 -120 0]);
  258. grid on;
  259. %=========================================================
  260. %  CORRELATION RECEIVER COMPARATOR(after low pass filter)
  261. %=========================================================
  262. pt1=.1e-8%sets level where threshhold device comparator triggers
  263. H=5;%(volts)
  264. L=0;%(volts)
  265. LEN=length(ycfo);
  266. for ii=1:LEN;
  267.     if ycfo(ii)>=pt1;%correlated output(ycfo) going above pt threshold setting
  268.         pv1(ii)=H;%pulse voltage
  269.     else;
  270.         pv1(ii)=L;
  271.     end;
  272. end ;
  273. po1=pv1;%pulse out=pulse voltage
  274. %figure(4)
  275. subplot(2,2,4);
  276. plot(t,po1);
  277. %axis([-1e-9 50e-9 -1 6])
  278. title('Comparator output');
  279. xlabel('Frequency');
  280. ylabel('Voltage');
  281. grid on;
  282. %plots for filtered noise(yn)
  283. figure(5)
  284. subplot(2,2,1);plot(t,yn);xlabel('TIME');ylabel('AMPLITUDE');
  285. title('Receiver filtered noise output');
  286. grid on;
  287. %axis([-1e-9,27e-9 -1 1])
  288. subplot(2,2,2); plot(f,MYN);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  289. %axis([0 7e9 0 .25]);%zoom in/out
  290. grid on;
  291. subplot(2,2,3); plot(f,20*log10(MYN));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  292. %axis([0 20e9 -120 0]);
  293. grid on;
  294. subplot(2,2,4);plot(t,ht);xlabel('TIME');ylabel('AMPLITUDE');
  295. title('impulse response(ht)');
  296. grid on;
  297. %axis([0,1e-9 0 1])
  298. %=========================================================
  299. %BER CALCULATIONS
  300. %=========================================================
  301. %I'm going to calibrate the noise generator and roughly determine the Eb/No or SNR in DB
  302. %that allows the system to operate almost error free(1e-3) in a noise environment.
  303. %This value of Eb/No is the number in DB that can be used in link
  304. %calculations. The calibration is required because in an actual TX-RX the received
  305. %voltage into the correlation receiver at the mixer will be in the low millivolt
  306. %region due to the FCC spectral mask at -41.3dBm/MHz and low transmitter power.
  307. %It will not be the 2 volt peak-peak BPSK used here and must be recalibrated if
  308. %different than 2 volt peak-peak.
  309.  
  310. %The Eb/No value in DB is calculated as follows. Doing numerous runs by hand and
  311. %observing the LPF comparator output in figure 4, determine the proper
  312. %setting of the comparator threshold setting, RC filter time constant and
  313. %level of multiplier(0.1 to 1) in AWGN noise generator that gives almost error
  314. %free operation. This will be considered Eb/No in DB.For BPSK theory this value is 7DB for BER of 1e-3. 
  315. %For a SNR of 7 DB, 20*LOG10(ratio of Vsigp-p/Vnoisep-p=7DB. 
  316. %You can do your own calibration method if you don't think
  317. %this is correct. Remember to recalibrate for new pulse widths and amplitude changes
  318. %into the mixer and pay attention to axis settings. There are a few to keep track of.
  319.  
  320. %I did some preliminary link caculations with this set up and determined that approx 0.6mv p-p
  321. %would be present on the mixer input for the following conditions.(0.3mvpeak
  322. %for 0 and 180 degrees)
  323. %========================================================
  324. %FCC spectral mask -41.3dBm/MHz+10LOG10(~4000)=~-5dBm(aver TX power Pt)
  325. %antenna gains 0DBi(50 ohms)
  326. %lna 20DB gain
  327. %NF 10 DB
  328. %distance 1 meter
  329. %(PL)path loss~45DB
  330. %200Mbit rate(Rb)
  331. %BW~318Mhz 3DB BW(LPF)(RC=.5e-9)
  332. %Pn(receiver noise level)=KTB=-114dBm+NF+10log10(Rb)=-114dBm+10DB+23DB=-81dBm
  333. %3DB to 10DB spread of pulse ~3 to 6GHz(use 4GHz)
  334. %pw=.5e-9 fifth derevative
  335. %fc=~7Ghz
  336. %Eb/No=7DB(1e-3)
  337. %power received(Pr)@ant=-5dBm-45DB(PL)=-50dBm over ~4GHz.
  338. %Link margin=Pr-Pn-Eb/No
  339. %Link margin@ 1 meter=-50dBm-(-81dBm)-(7DB)=24DB 
  340. %Emixerp-p=sqrt(1e-5mw*50)=2.23e-2mvrms*1.41=0.03mvpeak*20DB(lna)gain=0.3mvpeak or 0.6mvp-p