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

matlab例程

开发平台:

Matlab

  1. %UWB-Run from editor debug(F5)-BPSK modulation and link analysis of
  2. %UWB monocycle and doublet waveforms.Revised 1/2/05-JC
  3. %This m file plots the time and frequency waveforms for BPSK 1st and 2nd derivative 
  4. %equations used in UWB system analysis. Adjustment factors are required to
  5. %correct for inaccuracies in the 1st and 2nd derivative equations.
  6. %Tail to tail on the time wave forms should 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(adjustment factor)and t for other entered(pw1) pulse widths and
  10. %zooming in on the waveforms.A basic correlation receiver is constructed
  11. %with an integrator(low pass filter-uses impulse response)showing the demodulated output 
  12. %information from a comparator(10101). Perfect sync is assumed in the correlation receiver.
  13. %Noise is added with a variance of 1 and a mean of 0.
  14. %See SETUP and other info at end of program.
  15. %The program is not considered to be the ultimate in UWB analysis, but is 
  16. %configured to show basic concepts of the new technology. I would suggest that
  17. %you review the previous files I published in the Mathworks file exchange concerning
  18. %UWB to enhance your understanding of this technology. PPM(pulse position
  19. %modulation) was analyzed in earlier files. PPM is an orthogonal waveform 
  20. %and not as efficient as BPSK which is an antipodal waveform with helpful
  21. %properties in UWB usage. My assumption in this analysis is that the transmitting antenna
  22. %produces a 2nd derivative doublet and that the receiving antenna passes
  23. %the doublet thru to the mixer without integrating or differentating the signal, leaving
  24. %a doublet. I believe the doublet also has helpful properties in UWB
  25. %systems. I have included a reference at the end which is a must read.
  26. %================================================
  27. pw1=.2e-9;%pulse width in nanosec,change to desired width
  28. pw=pw1/1.24;%Adjustment factor for inaccurate PWs(approx. 3-5 for 1st der. and
  29. %approx. 1-3 for 2nd der.)
  30. Fs=100e9;%sample frequency
  31. Fn=Fs/2;%Nyquist frequency
  32. t=-1e-9:1/Fs:30e-9;%time vector sampled at Fs Hertz. zoom in/out using (-1e-9:1/Fs:xxxx)
  33. %================================================ 
  34. % EQUATIONS
  35. %================================================
  36. %y=A*(t/pw).*exp(-(t/pw).^2);%1st derivative of Gaussian pulse=Gaussian monocycle
  37. y =1*(1 - 4*pi.*((t)/pw).^2).* exp(-2*pi.*((t)/pw).^2);%2nd derivative of Gaussian
  38. %pulse=doublet(two zero crossings)
  39. %================================================
  40. %NOISE SETUP FOR BER AND SNR
  41. %================================================
  42. noise=(1e-50)*(randn(size(t)));%Noise-AWGN(0.2 gives approx Eb/No=Es/No=SNR= 7DB)
  43. %for 2 volt peak to peak BPSK signal.Set to 1e-50 to disable 
  44. %================================================
  45. %BPSK OR BI-PHASE MODULATION 
  46. %================================================
  47. %The following series of equations sets the pulse recurring frequency(PRF)
  48. %at 156MHz(waveform repeats every 6.41e-9 sec and a
  49. %modulated bit stream(bit rate=156Mb/s)of 10101 (5 pulses,can add more)
  50. %where a {1=0 degrees(right side up) and a 1 bit} and a {-1=180
  51. %degrees(upside down) a 0 bit.}
  52. %One could expand the # of pulses and modulate for a series of
  53. %111111000000111111000000111111 which would give a lower bit rate. You could just
  54. %change the PRF also.This series of redundent pulses also improves the processing gain
  55. %of the receiver(under certain conditions)by giving more voltage out of the integrator
  56. %in a correlation receiver. The appropriate sequence when using BPSK can also produce 
  57. %nulls in the spectrum which would be useful for interference rejection or to keep
  58. %the UWB spectrum from interfering with other communication systems.
  59. %For loops or some other method could be used to generate these pulses but for
  60. %myself, I would get lost. This is a brute force method and I can easily copy and paste.
  61. %I will leave other methods for more energetic souls. Since we have the transmitter
  62. %implemented it's time to move on to the correlation receiver design and 
  63. %see if we can demodulate and get 10101 bits out at the 156Mb/s bit rate. 
  64. %==================================================
  65. % 1ST DERIVATIVE MONOCYCLE(PPM WITH 5 PULSES)
  66. %==================================================
  67. %yp=y+ ...
  68. %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)+ ...
  69. %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);
  70. %==================================================
  71. % 2ND DERIVATIVE DOUBLET(BPSK) WITH 5 PULSES)
  72. %==================================================
  73. %BPSK modulated doublet(yp)
  74. yp=1*y+ ...
  75. -1*(1-4*pi.*((t-6.41e-9)/pw).^2).*exp(-2*pi.*((t-6.41e-9)/pw).^2)+ ...
  76. 1*(1-4*pi.*((t-12.82e-9)/pw).^2).*exp(-2*pi.*((t-12.82e-9)/pw).^2)+ ...
  77. -1*(1-4*pi.*((t-19.23e-9)/pw).^2).*exp(-2*pi.*((t-19.23e-9)/pw).^2)+ ...
  78. 1*(1-4*pi.*((t-25.64e-9)/pw).^2).*exp(-2*pi.*((t-25.64e-9)/pw).^2);
  79. %unmodulated doublet(yum)
  80. B=1;  
  81. yum=B*y+ ...
  82. B*(1-4*pi.*((t-6.41e-9)/pw).^2).*exp(-2*pi.*((t-6.41e-9)/pw).^2)+ ...
  83. B*(1-4*pi.*((t-12.82e-9)/pw).^2).*exp(-2*pi.*((t-12.82e-9)/pw).^2)+ ...
  84. B*(1-4*pi.*((t-19.23e-9)/pw).^2).*exp(-2*pi.*((t-19.23e-9)/pw).^2)+ ...
  85. B*(1-4*pi.*((t-25.64e-9)/pw).^2).*exp(-2*pi.*((t-25.64e-9)/pw).^2);
  86. ym=yp+noise;%BPSK modulated doublet with noise
  87. yc=ym.*yum;%yc(correlated output)=ym(modulated)times yum(unmodulated) doublet.
  88. %This is where the correlation occurs in the receiver and would be the
  89. %mixer in the receiver. 
  90. %==================================================
  91. % FFT
  92. %==================================================
  93. %new FFT for BPSK modulated doublet(ym)
  94. NFFYM=2.^(ceil(log(length(ym))/log(2)));
  95. FFTYM=fft(ym,NFFYM);%pad with zeros
  96. NumUniquePts=ceil((NFFYM+1)/2); 
  97. FFTYM=FFTYM(1:NumUniquePts);
  98. MYM=abs(FFTYM);
  99. MYM=MYM*2;
  100. MYM(1)=MYM(1)/2;
  101. MYM(length(MYM))=MYM(length(MYM))/2;
  102. MYM=MYM/length(ym);
  103. f=(0:NumUniquePts-1)*2*Fn/NFFYM;
  104. %new FFT for unmodulated doublet(yum)
  105. NFFYUM=2.^(ceil(log(length(yum))/log(2)));
  106. FFTYUM=fft(yum,NFFYUM);%pad with zeros
  107. NumUniquePts=ceil((NFFYUM+1)/2); 
  108. FFTYUM=FFTYUM(1:NumUniquePts);
  109. MYUM=abs(FFTYUM);
  110. MYUM=MYUM*2;
  111. MYUM(1)=MYUM(1)/2;
  112. MYUM(length(MYUM))=MYUM(length(MYUM))/2;
  113. MYUM=MYUM/length(yum);
  114. f=(0:NumUniquePts-1)*2*Fn/NFFYUM;
  115. %new FFT for correlated pulses(yc)
  116. %yc is the time domain signal output of the multiplier
  117. %(modulated times unmodulated) in the correlation receiver. Plots 
  118. %in the time domain show that a simple comparator instead of high speed A/D's 
  119. %may be used to recover the 10101 signal depending on integrator design and level of
  120. %peak voltage into mixer.
  121. NFFYC=2.^(ceil(log(length(yc))/log(2)));
  122. FFTYC=fft(yc,NFFYC);%pad with zeros
  123. NumUniquePts=ceil((NFFYC+1)/2); 
  124. FFTYC=FFTYC(1:NumUniquePts);
  125. MYC=abs(FFTYC);
  126. MYC=MYC*2;
  127. MYC(1)=MYC(1)/2;
  128. MYC(length(MYC))=MYC(length(MYC))/2;
  129. MYC=MYC/length(yc);
  130. f=(0:NumUniquePts-1)*2*Fn/NFFYC;
  131. %===================================================
  132. % PLOTS
  133. %===================================================
  134. %plots for modulated doublet(ym)
  135. figure(1)
  136. subplot(2,2,1); plot(t,ym);xlabel('TIME');ylabel('AMPLITUDE');
  137. title('Modulated pulse train');
  138. grid on;
  139. %axis([-1e-9,27e-9 -1 2])
  140. subplot(2,2,2); plot(f,MYM);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  141. %axis([0 10e9 0 .1]);%zoom in/out
  142. grid on;
  143. subplot(2,2,3); plot(f,20*log10(MYM));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  144. %axis([0 20e9 -120 0]);
  145. grid on;
  146. %plots for unmodulated doublet(yum)
  147. figure(2)
  148. subplot(2,2,1); plot(t,yum);xlabel('TIME');ylabel('AMPLITUDE');
  149. title('Unmodulated pulse train');
  150. grid on;
  151. axis([-1e-9,27e-9 -1 1])
  152. subplot(2,2,2); plot(f,MYUM);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  153. axis([0 10e9 0 .1]);%zoom in/out
  154. grid on;
  155. subplot(2,2,3); plot(f,20*log10(MYUM));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  156. %axis([0 20e9 -120 0]);
  157. grid on;
  158. %plots for correlated pulses(yc)
  159. figure(3)
  160. subplot(2,2,1); plot(t,yc);xlabel('TIME');ylabel('AMPLITUDE');
  161. title('Receiver correlator output-no LPF');
  162. grid on;
  163. %axis([-1e-9,27e-9 -1 1])
  164. subplot(2,2,2); plot(f,MYC);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  165. %axis([0 7e9 0 .025]);%zoom in/out
  166. grid on;
  167. subplot(2,2,3); plot(f,20*log10(MYC));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  168. %axis([0 20e9 -120 0]);
  169. grid on;
  170. %===========================================================
  171. %CORRELATION RECEIVER COMPARATOR(before lowpass filter)
  172. %===========================================================
  173. pt=.5%sets level where threshhold device comparator triggers
  174. H=5;%(volts)
  175. L=0;%(volts)
  176. LEN=length(yc);
  177. for ii=1:LEN;
  178.     if yc(ii)>=pt;%correlated output(y2) going above pt threshold setting
  179.         pv(ii)=H;%pulse voltage
  180.     else;
  181.         pv(ii)=L;
  182.     end;
  183. end ;
  184. po=pv;%pulse out=pulse voltage
  185. subplot(2,2,4);
  186. plot(t,po);
  187. axis([-1e-9 27e-9 -1 6])
  188. title('Comparator output');
  189. xlabel('Frequency');
  190. ylabel('Voltage');
  191. grid on;
  192. %===================================================
  193. %SETUP and INFO
  194. %===================================================
  195. %Check axis settings on plots
  196. %Enter desired pulse width in pw1(.5e-9)or(.2e-9).
  197. %Change t=-1e-9:1/Fs:(xxxx) to 1e-9 or proper value for viewing
  198. %Press F5 or run.
  199. %With waveform in plot 2,2,1(Figure 1), set pulse width with adjustment factor to
  200. %.2e-9 using adjustment #s corresponding to chosen waveform. Set from tail to tail.
  201. %Change t=-1e-9:1/Fs:(xxx) to something like 30e-9.Zoom out. I would
  202. %comment in all plot axis and use them for zooming in and out.
  203. %Press F5 and observe waveforms. Print or observe waveforms to compare with next set of
  204. %wave forms.
  205. %When you compare the waveforms you will see that the second derivative
  206. %doublet has a center frequency in the spread twice that of the first
  207. %derivative monocycle.
  208. %You would expect this on a second derivative. Picking a doublet waveform
  209. %for transmission (by choice of UWB antenna design) pushes the fc center frequency 
  210. %spread out by (two) allowing relief from the difficult design of narrower pulse
  211. %generating circuits in transmitters and receivers. If you chose a monocycle, you would
  212. %need to design your pulse circuits with a much narrower(factor of two)pulse width to
  213. %meet the tough FCC spectral mask from ~3 to 10GHz at-41.3Dbm/1MHz. The antenna choice at
  214. %the receiver could integrate the doublet to a monocycle so a waveform for the modulated
  215. %monocycle is included. You would need to construct a modulated and unmodulated version
  216. %of the monocycle.
  217.  
  218. %Processing gains of greater than 20DB can be achieved by selection of the
  219. %PRF and integrator using high information bit rates. This, when doing a 
  220. %link budget, should give enough link margin for multipath conditions with
  221. %a fixed transmitter power at ranges of 1 to 10 meters.A link budget will
  222. %be shown to see if this is true.
  223. %I didn't include BER checking with noise in the program because I beleive many more
  224. %pulses would be required to get more accurate results. I have included a rough
  225. %estimate of Eb/No in DB.
  226. %Perfect sync is assumed in the correlation receiver. You could delay the
  227. %unmodulated doublet waveform and check the correlation properties of the 
  228. %waveforms at the receiver and observe how the signal and BER degrades when not in 
  229. %perfect sync.
  230. %Things to add
  231. %A.more pulses
  232. %B.integrator(completed)
  233. %C.noise(completed)
  234. %D.BER calculations-rough estimate(completed)
  235. %E.Link budget calculations(preliminary)
  236. %=======================================================================
  237. %  CORRELATION RECEIVER LOW PASS FILTER(INTEGRATOR)
  238. %=======================================================================
  239. rc=.2e-9;%time constant
  240. ht=(1/rc).*exp(-t/rc);%impulse response
  241. ht=.2e-9*ht;%I'm not sure about this.Reduces integrated output voltage greatly.
  242. ycfo=filter(yc,1,ht)/Fs;%use this instead of ycfo=conv(yc,ht)/Fs for proper dimension.
  243. %The #=1 allows this. The LPF RC time constant(integrates over this time).
  244. %Theory states that it should be set to the pulse width but should be set
  245. %to a value that gives the best error free operation at the highest noise
  246. %levels. Different filter types(butterworth,etc) may give different
  247. %results.I don't have the butter function.
  248. %The 3DB or 1/2 power bandwidth on the RC LPF is f=1/(2*pi*RC). The noise
  249. %bandwith is f=1/(4*rc).
  250. yn=filter(noise,1,ht)/Fs;%looks at filtered noise only(Figure 5)
  251. %new FFT for filtered correlated pulses(ycfo) 
  252. NFFYCFO=2.^(ceil(log(length(ycfo))/log(2)));
  253. FFTYCFO=fft(ycfo,NFFYCFO);%pad with zeros
  254. NumUniquePts=ceil((NFFYCFO+1)/2); 
  255. FFTYCFO=FFTYCFO(1:NumUniquePts);
  256. MYCFO=abs(FFTYCFO);
  257. MYCFO=MYCFO*2;
  258. MYCFO(1)=MYCFO(1)/2;
  259. MYCFO(length(MYCFO))=MYCFO(length(MYCFO))/2;
  260. MYCFO=MYCFO/length(ycfo);
  261. f=(0:NumUniquePts-1)*2*Fn/NFFYCFO;
  262. %new FFT for filtered noise(yn)
  263. NFFYN=2.^(ceil(log(length(yn))/log(2)));
  264. FFTYN=fft(yn,NFFYN);%pad with zeros
  265. NumUniquePts=ceil((NFFYN+1)/2); 
  266. FFTYN=FFTYN(1:NumUniquePts);
  267. MYN=abs(FFTYN);
  268. MYN=MYN*2;
  269. MYN(1)=MYN(1)/2;
  270. MYN(length(MYN))=MYN(length(MYN))/2;
  271. MYN=MYN/length(yn);
  272. f=(0:NumUniquePts-1)*2*Fn/NFFYN;
  273. %plots for filtered correlated pulses(ycfo)
  274. figure(4)
  275. subplot(2,2,1); plot(t,ycfo);xlabel('TIME');ylabel('AMPLITUDE');
  276. title('Receiver filtered correlator output');
  277. grid on;
  278. %axis([-1e-9,27e-9 -1 1])
  279. subplot(2,2,2); plot(f,MYCFO);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  280. %axis([0 7e9 0 .25]);%zoom in/out
  281. grid on;
  282. subplot(2,2,3); plot(f,20*log10(MYCFO));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  283. %axis([0 20e9 -120 0]);
  284. grid on;
  285. %=========================================================
  286. %  CORRELATION RECEIVER COMPARATOR(after low pass filter)
  287. %=========================================================
  288. pt1=.1e-8%sets level where threshhold device comparator triggers
  289. H=5;%(volts)
  290. L=0;%(volts)
  291. LEN=length(ycfo);
  292. for ii=1:LEN;
  293.     if ycfo(ii)>=pt1;%correlated output(ycfo) going above pt threshold setting
  294.         pv1(ii)=H;%pulse voltage
  295.     else;
  296.         pv1(ii)=L;
  297.     end;
  298. end ;
  299. po1=pv1;%pulse out=pulse voltage
  300. subplot(2,2,4);
  301. plot(t,po1);
  302. axis([-1e-9 27e-9 -1 6])
  303. title('Comparator output');
  304. xlabel('Frequency');
  305. ylabel('Voltage');
  306. grid on;
  307. %plots for filtered noise(yn)
  308. figure(5)
  309. subplot(2,2,1);plot(t,yn);xlabel('TIME');ylabel('AMPLITUDE');
  310. title('Receiver filtered noise output');
  311. grid on;
  312. %axis([-1e-9,27e-9 -1 1])
  313. subplot(2,2,2); plot(f,MYN);xlabel('FREQUENCY');ylabel('AMPLITUDE');
  314. %axis([0 7e9 0 .25]);%zoom in/out
  315. grid on;
  316. subplot(2,2,3); plot(f,20*log10(MYN));xlabel('FREQUENCY');ylabel('20LOG10=DB');
  317. %axis([0 20e9 -120 0]);
  318. grid on;
  319. subplot(2,2,4);plot(t,ht);xlabel('TIME');ylabel('AMPLITUDE');
  320. title('impulse response(ht)');
  321. grid on;
  322. axis([0,1e-9 0 1])
  323. %=========================================================
  324. %BER CALCULATIONS
  325. %=========================================================
  326. %I'm going to calibrate the noise generator and roughly determine the Eb/No or SNR in DB
  327. %that allows the system to operate almost error free(1e-3) in a noise environment.
  328. %This value of Eb/No is the number in DB that can be used in link
  329. %calculations. The calibration is required because in an actual TX-RX the received
  330. %voltage into the correlation receiver at the mixer will be in the low millivolt
  331. %region due to the FCC spectral mask at -41.3dBm/MHz and low transmitter power.
  332. %It will not be the 2 volt peak-peak BPSK used here and must be recalibrated if
  333. %different than 2 volt peak-peak.
  334.  
  335. %The Eb/No value in DB is calculated as follows. Doing numerous runs by hand and
  336. %observing the LPF comparator output in figure 4, determine the proper
  337. %setting of the comparator threshold setting, RC filter time constant and
  338. %level of multiplier(0.1 to 1) in AWGN noise generator that gives almost error
  339. %free operation. This will be considered Eb/No in DB.For BPSK theory this value is 7DB for BER of 1e-3. 
  340. %For a SNR of 7 DB, 20*LOG10(ratio of Vsig/Vnoise=1/.446)=7DB. 
  341. %You can do your own calibration method if you don't think
  342. %this is correct. Remember to recalibrate for new pulse widths and amplitude changes
  343. %into the mixer and pay attention to axis settings. There are a few to keep track of.
  344. %Comment
  345. %The one area I am wondering about is the noise removal after the mixer and
  346. %before the LPF. The correlation(multication) removes some noise and then the LPF
  347. %removes more noise as seen from the plots. Would a Xcorr give different results? 
  348. %I did some preliminary link caculations with this set up and determined that approx 0.6mv p-p
  349. %would be present on the mixer input for the following conditions.(0.3mvpeak
  350. %for 0 and 180 degrees)
  351. %========================================================
  352. %FCC spectral mask -41.3dBm/MHz+10LOG10(4000)=~-5dBm
  353. %antenna gains 0DB(50 ohms)
  354. %lna 20DB gain
  355. %NF 10 DB
  356. %distance 1 meter
  357. %path loss~45DB
  358. %156Mbit rate
  359. %BW~800Mhz 3DB BW(LPF)(RC=.2e-9)
  360. %N(receiver noise level)=KTB=-114dBm+NF=-104dBm
  361. %3DB spread of pulse ~4GHz
  362. %pw=.2e-9
  363. %fc=~5Ghz
  364. %C(carrierless carrier)/N=Eb/No*10LOG10(bit rate/BW)=7DB-2.74DB=4.26DB
  365. %C=(C/N)+N=4.26DB-104DB=~-100dBm
  366. %power received @ant=-5dBm-45DB(PL)=-50dBm over 4GHz.This value may be
  367. %-41.3dBm/MHz-45DB=-86.3dBm which would give a much lower p-p voltage into
  368. %mixer. Seems like this would be very low.
  369. %link margin=-41.3dBm-45DB+100dBm=13.7DB.
  370. %Emixerp-p=sqrt(1e-5*50)=2.23e-2mvrms*1.41=0.03mvpeak*20DB(lna)gain=0.3mvpeak or 0.6mvp-p
  371. %Reference-Why Such Uproar Over Ultrawideband,John McCorkle
  372. %URL:http:/www.commsdesign.com/showArticle.jhtml?articleID=16504218