畢業(yè)設計基于matlab的QPSK系統(tǒng)仿真設計與實現_第1頁
畢業(yè)設計基于matlab的QPSK系統(tǒng)仿真設計與實現_第2頁
畢業(yè)設計基于matlab的QPSK系統(tǒng)仿真設計與實現_第3頁
畢業(yè)設計基于matlab的QPSK系統(tǒng)仿真設計與實現_第4頁
畢業(yè)設計基于matlab的QPSK系統(tǒng)仿真設計與實現_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于matlab的qpsk仿真設計與實現一.前言1.1qpsk系統(tǒng)的應用背景簡介qpsk是英文quadrature phase shift keying的縮略語簡稱,意為正交相移鍵控,是一種數字調制方式。在19世紀80年代初期,人們選用恒定包絡數字調制。這類數字調制技術的優(yōu)點是已調信號具有相對窄的功率譜和對放大設備沒有線性要求,不足之處是其頻譜利用率低于線性調制技術。19世紀80年代中期以后,四相絕對移相鍵控(qpsk)技術以其抗干擾性能強、誤碼性能好、頻譜利用率高等優(yōu)點,廣泛應用于數字微波通信系統(tǒng)、數字衛(wèi)星通信系統(tǒng)、寬帶接入、移動通信及有線電視系統(tǒng)之中。1.2 qpsk實驗仿真的意義通過完成

2、設計內容, 復習qpsk調制解調的基本原理,同時也要復習通信系統(tǒng)的主要組成部分,了解調制解調方式中最基礎的方法。了解qpsk的實現方法及數學原理。并對“通信”這個概念有個整體的理解,學習數字調制中誤碼率測試的標準及計算方法。同時還要復習隨機信號中時域用自相關函數,頻域用功率譜密度來描述平穩(wěn)隨機過程的特性等基礎知識,來理解高斯信道中噪聲的表示方法,以便在編程中使用。 理解qpsk調制解調的基本原理,并使用matlab編程實現qpsk信號在高斯信道和瑞利衰落信道下傳輸,以及該方式的誤碼率測試。復習matlab編程的基礎知識和編程的常用算法以及使用matlab仿真系統(tǒng)的注意事項,并鍛煉自己的編程能力

3、,通過編程完成qpsk調制解調系統(tǒng)的仿真,以及誤碼率測試,并得出響應波形。在完成要求任務的條件下,嘗試優(yōu)化程序。通過本次實驗,除了和隊友培養(yǎng)了默契學到了知識之外,還可以將次實驗作為一種推廣,讓更多的學生來深入一層的了解qpsk以至其他調制方式的原理和實現方法??梢苑奖銓W生進行測試和對比。足不出戶便可以做實驗。1.3 實驗平臺和實驗內容1.3.1實驗平臺本實驗是基于matlab的軟件仿真,只需pc機上安裝matlab 6.0或者以上版本即可。(本實驗附帶基于matlab simulink (模塊化)仿真,如需使用必須安裝simulink 模塊)1.3.2實驗內容1.構建一個理想信道基本qpsk仿

4、真系統(tǒng),要求仿真結果有a.基帶輸入波形及其功率譜 b.qpsk信號及其功率譜 c.qpsk信號星座圖 2.構建一個在awgn(高斯白噪聲)信道條件下的qpsk仿真系統(tǒng),要求仿真結果有a.qpsk信號及其功率譜 b.qpsk信號星座圖c.高斯白噪聲信道條件下的誤碼性能以及高斯白噪聲的理論曲線,要求所有誤碼性能曲線在同一坐標比例下繪制3驗可選做擴展內容要求:構建一個先經過rayleigh(瑞利衰落信道),再通過awgn(高斯白噪聲)信道條件下的條件下的qpsk仿真系統(tǒng),要求仿真結果有a.qpsk信號及其功率譜 b.通過瑞利衰落信道之前和之后的信號星座圖,前后進行比較c.在瑞利衰落信道和在高斯白噪聲

5、條件下的誤碼性能曲線,并和二.2.c中所要求的誤碼性能曲線在同一坐標比例下繪制二、系統(tǒng)實現框圖和分析2.1、qpsk調制部分,原理框圖如圖1所示1(t)qpsk信號s(t)二進制數據序列極性nrz電平編碼器分離器 2(t) 圖1原理分析:基本原理及系統(tǒng)結構 qpsk與二進制psk一樣,傳輸信號包含的信息都存在于相位中。的別的載波相位取四個等間隔值之一,如/4, 3/4,5/4,和7/4。相應的,可將發(fā)射信號定義為 0ttsi(t) 0。, 其他其中,i1,2,2,4;e為發(fā)射信號的每個符號的能量,t為符號持續(xù)時間,載波頻率f等于nc/t,nc為固定整數。每一個可能的相位值對應于一個特定的二位組

6、。例如,可用前述的一組相位值來表示格雷碼的一組二位組:10,00,01,11。下面介紹qpsk信號的產生和檢測。如果a為典型的qpsk發(fā)射機框圖。輸入的二進制數據序列首先被不歸零(nrz)電平編碼轉換器轉換為極性形式,即負號1和0分別用和表示。接著,該二進制波形被分接器分成兩個分別由輸入序列的奇數位偶數位組成的彼此獨立的二進制波形,這兩個二進制波形分別用a1(t),和a2(t)表示。容易注意到,在任何一信號時間間隔內a1(t),和a2(t)的幅度恰好分別等于si1和 si2,即由發(fā)送的二位組決定。這兩個二進制波形a1(t),和a2(t)被用來調制一對正交載波或者說正交基本函數:1(t),2(t

7、)。這樣就得到一對二進制psk信號。1(t)和2(t)的正交性使這兩個信號可以被獨立地檢測。最后,將這兩個二進制psk信號相加,從而得期望的qpsk。2.2、qpsk解調部分,原理框圖如圖2所示: 1(t) 同相信道 門限0發(fā)送二進制序列的估計判決門限低通filrer判決門限復接器接收信 號x(t)低通filrer 2(t) 正交信道 門限0 圖2原理分析: qpsk接收機由一對共輸入地相關器組成。這兩個相關器分別提供本地產生地相干參考信號1(t)和2(t)。相關器接收信號x(t),相關器輸出地x1和x2被用來與門限值0進行比較。如果x10,則判決同相信道地輸出為符號1;如果x10.5; %

8、調用一個隨機函數(0 or 1),輸出到一個1*100的矩陣datanrz=data.*2-1; % 變成極性碼data1=zeros(1,nb/delta_t); % 創(chuàng)建一個1*nb/delta_t的零矩陣for q=1:nb data1(q-1)/delta_t+1:q/delta_t)=datanrz(q); % 將極性碼變成對應的波形信號end % 將基帶信號變換成對應波形信號data0=zeros(1,nb/delta_t); % 創(chuàng)建一個1*nb/delta_t的零矩陣for q=1:nb data0(q-1)/delta_t+1:q/delta_t)=data(q); % 將極

9、性碼變成對應的波形信號end % 發(fā)射的信號data2=abs(fft(data1);% 串并轉換,將奇偶位數據分開idata=datanrz(1:ml:(nb-1); % 將奇偶位分開,因此間隔m1為2 qdata=datanrz(2:ml:nb);% qpsk信號的調制ich=zeros(1,nb/delta_t/2); % 創(chuàng)建一個1*nb/delta_t/2的零矩陣,以便后面存放奇偶位數據for i=1:nb/2 ich(i-1)/delta_t+1:i/delta_t)=idata(i);endfor ii=1:n/2 a(ii)=sqrt(2/t)*cos(2*pi*fc*t(ii

10、); endidata1=ich.*a; % 奇數位數據與余弦函數相乘,得到一路的調制信號qch=zeros(1,nb/2/delta_t);for j1=1:nb/2 qch(j1-1)/delta_t+1:j1/delta_t)=qdata(j1);endfor jj=1:n/2 b(jj)=sqrt(2/t)*sin(2*pi*fc*t(jj);endqdata1=qch.*b; % 偶數位數據與余弦函數相乘,得到另一路的調制信號s=idata1+qdata1; % 將奇偶位數據合并,s即為qpsk調制信號ss=abs(fft(s); % 快速傅里葉變換得到頻譜% 瑞利衰落信道和高斯信道

11、% 瑞利衰落信道ray_ich=raylrnd(0.8,1,nb/2/delta_t);ray_qch=raylrnd(0.8,1,nb/2/delta_t);ray_idata=idata1.*ray_ich;ray_qdata=qdata1.*ray_qch;ray_s=ray_idata+ray_qdata;% 高斯信道 s1=awgn(s,snr); % 通過高斯信道之后的信號s11=abs(fft(s1); % 快速傅里葉變換得到頻譜 s111=s1-s; % 高斯噪聲曲線%awgn_s=awgn(ray_s,snr); % 通過高斯信道再通過瑞利衰落信道% qpsk 解調部分% 解

12、調部分(高斯信道)idata2=s1.*a; % 這里面其實隱藏了一個串并轉換的過程qdata2=s1.*b; % 對應的信號與正余弦信號相乘idata3=zeros(1,nb/2); % 建立1*nb數組,以存放解調之后的信號qdata3=zeros(1,nb/2);% 抽樣判決的過程,與0作比較,data=0,則置1,否則置0for n=1:nb/2% a1(n)=sum(idata2(n-1)/delta_t+1:n/delta_t); if sum(idata2(n-1)/delta_t+1:n/delta_t)=0 idata3(n)=1; else idata3(n)=0; end

13、% a2(n)=sum(qdata2(n-1)/delta_t+1:n/delta_t); if sum(qdata2(n-1)/delta_t+1:n/delta_t)=0 qdata3(n)=1; else qdata3(n)=0; endend % 為了顯示星座圖,將信號進行處理idata4=zeros(1,nb/2);qdata4=zeros(1,nb/2);for n=1:nb/2 awgn_ichsum(n)=sum(idata2(n-1)/delta_t+1:n/delta_t)*delta_t; if awgn_ichsum(n)=0 idata4(n)=1; else ida

14、ta4(n)=0; end awgn_qchsum(n)=sum(qdata2(n-1)/delta_t+1:n/delta_t)*delta_t; if awgn_qchsum(n)=0 qdata4(n)=1; else qdata4(n)=0; endend% 將判決之后的數據存放進數組demodata=zeros(1,nb);demodata(1:ml:(nb-1)=idata3; % 存放奇數位demodata(2:ml:nb)=qdata3; % 存放偶數位%為了顯示,將它變成波形信號(即傳輸一個1代表單位寬度的高電平)demodata1=zeros(1,nb/delta_t);

15、% 創(chuàng)建一個1*nb/delta_t的零矩陣for q=1:nb demodata1(q-1)/delta_t+1:q/delta_t)=demodata(q); % 將極性碼變成對應的波形信號end % 累計誤碼數% abs(demodata-data)求接收端和發(fā)射端% 數據差的絕對值,累計之后就是誤碼個數awgn_num_ber=sum(abs(demodata-data) % 解調部分(瑞利+高斯)ray_idata2=ray_s.*a; % 這里面其實隱藏了一個串并轉換的過程ray_qdata2=ray_s.*b; % 對應的信號與正余弦信號相乘% ray_idata3=zeros(

16、1,nb/2); % 建立1*nb數組,以存放解調之后的信號% ray_qdata3=zeros(1,nb/2);% 抽樣判決的過程,與0作比較,data=0,則置1,否則置0% for n=1:nb/2% if ray_sum(ray_idata2(n-1)/delta_t+1:n/delta_t)=0% ray_idata3(n)=1;% else ray_idata3(n)=0; % end% if ray_sum(ray_qdata2(n-1)/delta_t+1:n/delta_t)=0% ray_qdata3(n)=1;% else ray_qdata3(n)=0;% end% e

17、nd % 為了顯示星座圖,將信號進行處理ray_idata4=zeros(1,nb/2);ray_qdata4=zeros(1,nb/2);for n=1:nb/2 ray_ichsum(n)=sum(idata2(n-1)/delta_t+1:n/delta_t)*delta_t; if ray_ichsum(n)=0 ray_idata4(n)=1; else ray_idata4(n)=0; end ray_qchsum(n)=sum(qdata2(n-1)/delta_t+1:n/delta_t)*delta_t; if ray_qchsum(n)=0 ray_qdata4(n)=1;

18、 else ray_qdata4(n)=0; endend % 將判決之后的數據存放進數組ray_demodata=zeros(1,nb);ray_demodata(1:ml:(nb-1)=ray_idata4; % 存放奇數位ray_demodata(2:ml:nb)=ray_qdata4; % 存放偶數位%為了顯示,將它變成波形信號(即傳輸一個1代表單位寬度的高電平)ray_demodata1=zeros(1,nb/delta_t); % 創(chuàng)建一個1*nb/delta_t的零矩陣for q=1:nb ray_demodata1(q-1)/delta_t+1:q/delta_t)=ray_d

19、emodata(q); % 將極性碼變成對應的波形信號end % 累計誤碼數% abs(demodata-data)求接收端和發(fā)射端% 數據差的絕對值,累計之后就是誤碼個數ray_num_ber=sum(abs(ray_demodata-data) % % 誤碼率計算% 調用了cm_sm32();和cm_sm33()函數%聲明: 函數聲明在另外倆個m文件中%作用: cm_sm32()用于瑞利信道誤碼率的計算% cm_sm33()用于高斯信道誤碼率的計算% ecoh on/off 作用在于決定是否顯示指令內容%snrindb1=0:1:6;snrindb2=0:0.1:6;% 瑞利衰落信道 fo

20、r i=1:length(snrindb1), pb,ps=cm_sm32(snrindb1(i); % 比特誤碼率 smld_bit_ray_err_prb(i)=pb; smld_symbol_ray_err_prb(i)=ps; disp(ps,pb); echo off; end;% 高斯信道 echo on;for i=1:length(snrindb1), pb1,ps1=cm_sm33(snrindb1(i); smld_bit_awgn_err_prb(i)=pb1; smld_symbol_awgn_err_prb(i)=ps1; disp(ps1,pb1); echo of

21、f;end;% 理論曲線echo on;for i=1:length(snrindb2), snr=exp(snrindb2(i)*log(10)/10); % 信噪比 theo_err_awgn_prb(i)=0.5*erfc(sqrt(snr); % 高斯噪聲理論誤碼率 theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/snr); % 瑞利衰落信道理論誤碼率 echo off;end;%h = spectrum.welch; % 類似于c語言的宏定義,方便以下的調用 % 輸出顯示部分% 第一部分(理想)figure(1)subplot(3,2,1);plot(da

22、ta0),title(基帶信號);axis(0 20000 -2 2);subplot(3,2,2);psd(h,data1,fs,fs),title(基帶信號功率譜密度);subplot(3,2,3);plot(s),title(調制信號);axis(0 500 -3 3);subplot(3,2,4);psd(h,s,fs,fs),title(調制信號功率譜密度);subplot(3,2,5);plot(demodata1),title(解調輸出);axis(0 20000 -2 2);subplot(3,2,6);psd(h,demodata1,fs,fs),title(解調輸出功率譜密

23、度);% 通過高斯信道figure(2)subplot(2,2,1);plot(s1),title(調制信號(awgn);axis(0 500 -5 5);subplot(2,2,2);psd(h,s1,fs,fs),title(調制信號功率譜密度(awgn);subplot(2,2,3);plot(s111),title(高斯噪聲曲線);axis(0 2000 -5 5);subplot(2,2,4);for i=1:nb/2plot(idata(i),qdata(i),r+),title(qpsk信號星座圖(awgn));hold on;axis(-2 2 -2 2);plot(awgn_

24、ichsum(i),awgn_qchsum(i),*);hold on;legend(理論值(發(fā)射端),實際值(接收端));end%通過高斯信道再通過瑞利衰落信道 figure(3) subplot(2,2,1)plot(ray_s),title(調制信號(ray+awgn);axis(0 500 -5 5);subplot(2,2,2);psd(h,ray_s,fs,fs),title(調制信號功率譜密度(ray);subplot(2,2,3);for i=1:nb/2plot(idata(i),qdata(i),r+),title(qpsk信號星座圖(awgn+ray));hold on;

25、axis(-2 2 -2 2);plot(ray_ichsum(i),ray_qchsum(i),*);hold on;legend(理論值(發(fā)射端),實際值(接收端));end subplot(2,2,4) semilogy(snrindb2,theo_err_awgn_prb,r),title(誤碼率曲線);hold on; semilogy(snrindb1,smld_bit_awgn_err_prb,r*);hold on; semilogy(snrindb2,theo_err_ray_prb);hold on; semilogy(snrindb1,smld_bit_ray_err_p

26、rb,*); xlabel(eb/no);ylabel(ber); legend(理論awgn,仿真awgn,理論rayleigh,仿真rayleigh);%文件2function pb,ps=cm_sm32(snr_in_db)% pb,ps=cm_sm32(snr_in_db)% cm_sm3 finds the probability of bit error and symbol error for % the given value of snr_in_db, signal to noise ratio in db.n=100;e=1; % energy per symbolnumo

27、fsymbolerror=0;numofbiterror=0;counter=0;snr=10(snr_in_db/10); % signal to noise ratiosgma=sqrt(e/snr)/2; % noise variances00=1 0; s01=0 1; s11=-1 0; s10=0 -1; % signal mapping% generation of the data sourcewhile(numofbiterror100)for i=1:n, temp=rand; % a uniform random variable between 0 and 1 if (

28、temp0.25), % with probability 1/4, source output is 00 dsource1(i)=0; dsource2(i)=0; elseif (temp0.5), % with probability 1/4, source output is 01 dsource1(i)=0; dsource2(i)=1; elseif (temp0.75), % with probability 1/4, source output is 10 dsource1(i)=1; dsource2(i)=0; else % with probability 1/4, s

29、ource output is 11 dsource1(i)=1; dsource2(i)=1; end;end;% detection and the probability of error calculationfor i=1:n, ray=raylrnd(0.8); n=sgma*randn(1,2); % 2 normal distributed r.v with 0, variance sgma if (dsource1(i)=0) & (dsource2(i)=0), r=ray*s00+n; elseif (dsource1(i)=0) & (dsource2(i)=1), r

30、=ray*s01+n; elseif (dsource1(i)=1) & (dsource2(i)=0), r=s10*ray+n; else r=s11*ray+n; end; % the correlation metrics are computed below c00=dot(r,s00); c01=dot(r,s01); c10=dot(r,s10); c11=dot(r,s11); % the decision on the ith symbol is made next c_max=max(c00,c01,c10,c11); if (c00=c_max), decis1=0; d

31、ecis2=0; elseif (c01=c_max), decis1=0; decis2=1; elseif (c10=c_max), decis1=1; decis2=0; else decis1=1; decis2=1; end; % increment the error counter, if the decision is not correct symbolerror=0; if (decis1=dsource1(i), numofbiterror=numofbiterror+1; symbolerror=1; end; if (decis2=dsource2(i), numof

32、biterror=numofbiterror+1; symbolerror=1; end; if (symbolerror=1), numofsymbolerror=numofsymbolerror+1; end; endcounter=counter+1;endps=numofsymbolerror/(n*counter); % since there are totally n symbolspb=numofbiterror/(2*n*counter); % since 2n bits are transmitted %文件3function pb1,ps1=cm_sm32(snr_in_

33、db)% pb,ps=cm_sm32(snr_in_db)% cm_sm3 finds the probability of bit error and symbol error for % the given value of snr_in_db, signal to noise ratio in db.n=100;e=1; % energy per symbolsnr=10(snr_in_db/10); % signal to noise ratiosgma=sqrt(e/snr)/2; % noise variances00=1 0; s01=0 1; s11=-1 0; s10=0 -

34、1; % signal mapping% generation of the data sourcenumofsymbolerror=0;numofbiterror=0;counter=0;while(numofbiterror100)for i=1:n, temp=rand; % a uniform random variable between 0 and 1 if (temp0.25), % with probability 1/4, source output is 00 dsource1(i)=0; dsource2(i)=0; elseif (temp0.5), % with probability 1/4, source output is 01 dsource1(i)=0; dsource2(i)=1; elseif (temp0.75), % with probability 1/4, source output is 10 dsource1(i)=1; dsource2(i)=0; else % with probability 1/4, source output is 11 dsource1(i)=1; ds

溫馨提示

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

評論

0/150

提交評論