基于ieee802.11a鏈路仿真專業(yè)課程設計_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  通信與信息工程學院 </p><p><b>  專業(yè)課程設計B報告</b></p><p>  專業(yè)班級: </p><p>  學生姓名: </p><p>  學號(班內序號): </p><p>  201

2、4 年 04 月 11 日</p><p>  題目:基于IEEE802.11a鏈路仿真</p><p><b>  設計目的:</b></p><p>  熟練掌握通信原理的基本知識;</p><p>  熟練運用數(shù)字信號處理課程的基本知識;</p><p>  熟練掌握無線編碼與

3、調制過程;</p><p>  了解OFDM技術原理;</p><p>  熟練運用matlab工具;</p><p><b>  設計原理:</b></p><p>  802.11a物理層標準及OFDM技術</p><p><b>  1.PPDU幀結構</b></

4、p><p>  圖1為PPDU的幀格式,包括OFDM PLCP前導碼、OFDM PLCP頭、PSDU、尾比特和填充比特。PLCP報頭包括:信號段的速率位(RATE)、長度位(LENGTH)、保留比特、奇偶檢驗比特以及服務(SERVICE)字段。從調制角度看,長度、速率、預留比特和奇偶比特(加上6個‘0’尾比特)組成了一個獨立的OFDM符號,記為信號(SIGNAL)字段,該字段以可靠的BPSK調制及1/2編碼率發(fā)送。P

5、LCP報頭的SERVICE字段與PSDU(加上6個‘0’尾比特和填充比特)一起,標記為DATA字段,以RATE字段中指示的數(shù)據(jù)速率進行發(fā)送,并且可能組成多個OFDM符號。在接收SIGNAL字段內的尾比特后可立即解碼出RATE和LENGTH字段,這兩者對于解碼出該分組中的DATA是必須的。此外,即使接收方不支持接收的分組中的數(shù)據(jù)速率,通過從分組中的DATA和LENGTH的內容中推測出分組的持續(xù)時間。</p><p>

6、;  圖1 PPDU幀結構</p><p>  2.OFDM的符號結構</p><p>  如圖所示,OFDM的前導訓練序列包括10個短訓練序列、2個長訓練序列。前導訓練序列用來做系統(tǒng)的同步、信道估計、頻偏估計、自適應控制(AGC)等。前導訓練序列后面是Signal段,再后面是Data區(qū)。</p><p>  圖2 OFDM的符號結構</p><

7、p>  其中t1-t10表示短訓練符號,T1和T2表示長訓練符號,總的訓練時間為16us。圖中的虛線表示邊界代表傅里葉逆變換的周期性引起的循環(huán)。</p><p>  3.OFDM技術簡介</p><p>  OFDM(Orthogonal Frequency Division Multiplexing,正交頻分復用)是一種特殊的多載波調制技術,它利用載波間的正交性進一步提高頻譜利用率

8、,而且可以抗窄帶干擾和抗多徑衰落。OFDM通過多個正交的子載波將串行數(shù)據(jù)并行傳輸,可以增大碼元的寬度,減少單個碼元占用的頻帶,抵抗多徑引起的頻率選擇性衰落,可以有效克服碼間串擾,降低系統(tǒng)對均衡技術的要求,非常適合移動場合中的高速傳輸。</p><p>  圖3 OFDM系統(tǒng)原理圖</p><p><b>  設計內容:</b></p><p>

9、  802.11a鏈路設計總流程:</p><p>  1、802.11a前導生成原理</p><p>  產(chǎn)生PLCP前導碼字段,本字段由10個重復的‘段訓練序列’(用于自動增益集中控制、分集選擇、定時捕獲和接收機粗略頻率捕獲)和兩個重復的‘長訓練序列’(用于信道估計和接收機精確頻率捕獲)組成,前面為保護間隔(GI)。</p><p>  OFDM短訓練序列由調制

10、過的12個子載波組成。調制因子s=sqrt(13/6)*[0,0,1+j,0,0,0,-1-j,0,0,0,i+j,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,01+j,0,0,0,1+j,0,0,0];將52個子載波中的12個子載波的能量歸一化,并進行IFFT傅里葉逆變換,最后進行0.8微秒的矩形時間加窗。OFD

11、M長訓練序列由調制過的53個子載波組成。調制因子L=[1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1];同樣進行IFFT傅里葉逆變換,最后進行0.8微秒、幅度為1的矩形時間加窗。</p><p><b>

12、  2、擾碼及解擾碼</b></p><p>  幀同步加擾器使用以下的生成多項式:S(X)=X7+X4+1。為了進行正確有效的解擾,加擾發(fā)送數(shù)據(jù)和解擾接收數(shù)據(jù)使用同一個擾碼器。發(fā)送時,加擾器初始狀態(tài)設置為偽隨機非0態(tài)。在加擾前,SERVI CE字段的7個低有效比特置0,這樣在接收端解擾時就可以以7個0被擾后的結果作為收端擾碼器的初始狀態(tài),從而進行有效正確的解擾。 </p><p

13、>  將移位寄存器4和7中的數(shù)據(jù)進行異或,再進行左移數(shù)據(jù)后送給移位寄存器,一般我們默認產(chǎn)生的比特序列大于127,所以對大于127的比特序列和127進行取整且循環(huán)取整的次數(shù),這時得到比特序列再和輸入的序列進行異或。</p><p><b>  卷積編碼和解卷積</b></p><p>  卷積編碼器使用工業(yè)標準的生成多項式,g0=133(8),g1=171(8),

14、R=1/2,即都用8進制表示。標記為“A”的比特在從編碼器輸出時位于比特“B”之前。</p><p>  隨機產(chǎn)生一組1行n列的二進制數(shù),利用卷積編碼器進行卷積編碼。</p><p><b>  交織及解交織</b></p><p>  交織器中進行兩次置換:第一次置換將相鄰的編碼比特映射到不相鄰的子載波上,第二次置換確保相鄰編碼比特被交替映射

15、到星座的高有效位和低有效位比特,因而避免了可靠性比特的長期存在。 實現(xiàn)逆過程的交織器也由兩步置換完成。當交織的程度越深,突發(fā)性錯誤越強,信道譯碼器的性能將由此得到提升。</p><p>  5、星座映射及逆映射</p><p>  BPSK利用數(shù)字信號來控制載波的相位,具有較好的抗噪性能和較高的頻譜利用率。BPSK解調時,必須有與此同頻同相的同步載波。</p><p&g

16、t;<b>  設計流程:</b></p><p><b>  前導生成流程</b></p><p><b>  擾碼生成流程</b></p><p><b>  卷積編碼生成流程</b></p><p>  N

17、 N</p><p>  Y Y</p><p><b>  交織生成流程</b></p><p><b>  星座映射生成流程</b></p><p><b>  設計總結:</b></

18、p><p>  Matlab學習心得:首先是對matlab有了一個全新的認識,其次是對matlab的更多操作和命令的使用有了更高的掌握。徹底掌握了相關的命令操作和處理方法以及命令窗口和.m文件的不同效果的運用。對同一模塊的相關功能和技術指標分析和性能分析非常重要,真正的分析和了解原理是非常重要的。Matlab真的是個非常強大和有用的工具,真正把它學懂學透的話還是需要下非常大的功夫和努力的。</p>&l

19、t;p>  前導設計心得:前導碼的設計都具有低峰值到平均功率比,這樣就能最小化剪輯信號或信號分辨率的問題。在程序設計的時候,對長短序列的加窗理解的不夠到位,使得實驗一開始就落下了進度。</p><p>  擾碼:其實擾碼的作用主要就是對隨機產(chǎn)生的錯誤進行糾正,剛開始編寫程序的時候我們考慮了小于127的比特序列,其實在實際中我們用到的都是大于127的比特序列。</p><p>  卷積

20、碼:卷積碼的糾錯能力隨著N的增大而增大,在編碼器復雜程度相同的情況下卷積碼的性能優(yōu)于分組碼,卷積編碼當前的輸出不僅與當前的輸入有關,而且與它之前的(V-1)個輸入有關。在程序的設計過程中,我較好的利用了matlab中的卷積函數(shù),算是在幾個程序設計中效率較高。</p><p>  交織:交織是對突發(fā)性的錯誤進行糾正,交織的程序重點就是對兩次比特位位置的置換的正確理解和應用。</p><p>

21、  BPSK調制:通過本次練習,我進一步了解了BPSK調制的過程,理解了無碼間串擾的意義。是把模擬信號轉換成數(shù)據(jù)值的方法之一,表現(xiàn)信息鍵控相移方式的一種。</p><p>  我坦誠的說自己掌握的還是十分有限,但是老師給我們講解的相關原理方法是十分有效果的,對自己以后的要求需要更高,現(xiàn)在真正掌握的知識皮毛,想取得更大的成績就得不斷地去努力學習。</p><p><b>  參考文

22、獻:</b></p><p><b>  附件:(主要程序)</b></p><p><b>  總程序</b></p><p>  function [signal,data,code,data_in]=communication()</p><p><b>  %SIGNA

23、L序列</b></p><p>  signal=randint(1,24,2),%隨機產(chǎn)生24個二進制數(shù)</p><p>  code=convolutional(signal);%卷積編碼</p><p>  RE=interweave(code);%交織</p><p>  mod_out=BPSK_t(RE);%BPSK調

24、制</p><p>  mod_ofdm_syms = Add_Pilot(mod_out);%插入導頻</p><p>  time_syms= IFFT64(mod_ofdm_syms);%傅里葉變換</p><p>  time_signal = Add_CP(time_syms); %增加CP</p><p><b>  %

25、DATA序列</b></p><p>  data=randint(1,24,2),</p><p>  data_out=scramble(data);%加擾</p><p>  data_out=data_out*1;</p><p>  code=convolutional(data_out);</p><

26、;p>  RE=interweave(code);</p><p>  mod_out=BPSK_t(RE);</p><p>  mod_ofdm_syms = Add_Pilot(mod_out);</p><p>  time_syms= IFFT64(mod_ofdm_syms);</p><p>  time_data = A

27、dd_CP(time_syms); </p><p>  preamble=qd();%生成前導</p><p>  ppdu=[preamble time_signal time_data];%PPDU幀</p><p>  [freq_tr_syms, freq_data_syms, freq_pilot_syms] = FFT64(ppdu); e=freq_

28、data_syms;</p><p>  signal=e(1:48);</p><p>  data=e(49:96);</p><p><b>  %SIGNAL</b></p><p>  mod_in=BPSK_jt(signal);</p><p>  record_in=deinter

29、leaver(mod_in);</p><p>  code=deconvolution(record_in),</p><p><b>  %DATA</b></p><p>  mod_in=BPSK_jt(data);%BPSK解調</p><p>  record_in=deinterleaver(mod_in)

30、;%解交織</p><p>  code=deconvolution(record_in);%解卷積</p><p>  data_in=descramble(code),%解擾</p><p><b>  前導</b></p><p>  function preamble=qd()</p><p&

31、gt;  b=[1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1];</p><p>  s=sqrt(13/6)*[0,0,1+j,0,0,0,-1-j,0,0,0,i+j,0,0,0,-1-j,0,0,0,-1-

32、j,0,0,0,1+j,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,01+j,0,0,0,1+j,0,0,0];</p><p>  time_syms=IFFT64(s);</p><p><b>  g=1;</b></p><p>  for w=1:16</p>

33、<p>  x(g)=time_syms(w);</p><p><b>  g=g+1;</b></p><p><b>  end</b></p><p>  short=[x,x,x,x,x,x,x,x,x,x];</p><p>  %short(1)=short(1)*0.5;&

34、lt;/p><p>  short(160)=short(160)*0.5;</p><p>  time_syms=IFFT64(b);</p><p><b>  g=1;</b></p><p>  for w=33:64</p><p>  y(g)=time_syms(w);</p&g

35、t;<p><b>  g=g+1;</b></p><p><b>  end</b></p><p>  long=[y,time_syms,time_syms];</p><p>  %long(1)=long(1)*0.5;</p><p>  long(160)=long(1

36、60)*0.5;</p><p>  %short(160)=short(160)+long(1);</p><p>  %long(1)=[];</p><p>  preamble=[short,long];</p><p><b>  擾碼</b></p><p>  function da

37、ta_out=scramble(data_in)</p><p>  D_init=[1,1,1,1,1,1,1];</p><p>  for k=1:127</p><p>  EX=xor(D_init(4),D_init(7));</p><p>  D_init=circshift(D_init,[1,1]);</p>

38、<p>  D_init(1)=EX;</p><p>  data(k)=EX;</p><p><b>  end</b></p><p>  len=length(data_in);</p><p>  n=mod(len,127);</p><p><b>  if

39、n==0</b></p><p>  data=repmat(data,1,floor(len/127));</p><p>  data_out=xor(data_in,data);</p><p><b>  else</b></p><p><b>  for m=1:n</b>&

40、lt;/p><p>  d(m)=data(m);</p><p><b>  end</b></p><p>  data=repmat(data,1,floor(len/127));</p><p>  r=[data,d];</p><p>  data_out=xor(data_in,r);&

41、lt;/p><p><b>  end</b></p><p><b>  解擾</b></p><p>  function data_in=descramble(data_out)</p><p>  D_init=[1,1,1,1,1,1,1];</p><p>  for

42、 k=1:127</p><p>  EX=xor(D_init(4),D_init(7));</p><p>  D_init=circshift(D_init,[1,1]);</p><p>  D_init(1)=EX;</p><p>  data(k)=EX;</p><p><b>  end&l

43、t;/b></p><p>  len=length(data_out);</p><p>  n=mod(len,127);</p><p><b>  if n==0</b></p><p>  data=repmat(data,1,floor(len/127));</p><p>  

44、data_in=xor(data_out,data);</p><p><b>  else</b></p><p><b>  for m=1:n</b></p><p>  d(m)=data(m);</p><p><b>  end</b></p><

45、;p>  data=repmat(data,1,floor(len/127));</p><p>  r=[data,d];</p><p>  data_in=xor(data_out,r);</p><p><b>  end</b></p><p><b>  卷積</b></p&

46、gt;<p>  function code=convolutional(msg)</p><p>  t=poly2trellis(7,[133 171]); %定義trellis(產(chǎn)生碼字的卷積編碼器)</p><p>  code = convenc(msg,t); %卷積編碼</p><p><b>  解卷積</b>&l

47、t;/p><p>  function msg=deconvolution(code)</p><p>  t=poly2trellis(7,[133 171]); %定義trellis(產(chǎn)生碼字的卷積編碼器)</p><p>  msg = vitdec(code,t,1,'trunc','hard');</p><

48、p><b>  交織</b></p><p>  function RE=interweave(record_in)</p><p>  NB=1;NC=48;s=max(NB/2,1);</p><p>  for k=0:NC-1</p><p>  zz(k+1)=(NC/16)*mod(k,16)+floo

49、r(k/16);</p><p>  T_zz(k+1)=s*floor(zz(k+1)/s)+mod(zz(k+1)+NC-floor(16*zz(k+1)/NC),s);</p><p><b>  end</b></p><p>  for n=1:48</p><p>  RE(T_zz(n)+1)=record

50、_in(n);</p><p><b>  End</b></p><p><b>  解交織</b></p><p>  function record_in=deinterleaver(RE)</p><p>  NB=1;NC=48;s=max(NB/2,1);</p><

51、p>  for k=0:NC-1</p><p>  zz(k+1)=s*floor(k/s)+mod(k+floor(16*k/NC),s);</p><p>  t_zz(k+1)=16*zz(k+1)-(NC-1)*floor(16*zz(k+1)/NC);</p><p><b>  end</b></p><

52、p>  for n=1:48</p><p>  record_in(t_zz(n)+1)=RE(n);</p><p><b>  end</b></p><p><b>  BPSK調制</b></p><p>  function mod_out=BPSK_t(mod_in)</p

53、><p>  for i=1:length(mod_in)</p><p>  if mod_in(i)==0</p><p>  mod_out(i)=-1;</p><p><b>  else</b></p><p>  mod_out(i)=1;</p><p><

54、;b>  end</b></p><p><b>  end</b></p><p><b>  BPSK解調</b></p><p>  function mod_in=BPSK_jt(mod_out)</p><p>  for i=1:length(mod_out)</

55、p><p>  if mod_out(i)<0</p><p>  mod_in(i)=0;</p><p><b>  else</b></p><p>  mod_in(i)=1;</p><p><b>  end</b></p><p>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論