一、引言 數(shù)字調(diào)制就是把數(shù)字基帶信號的頻譜搬移到高頻處,形成適合在信道中傳輸?shù)膸ㄐ盘枴;镜臄?shù)字調(diào)制方式有振幅鍵控(ASK)、頻移鍵控(FSK)、絕對相移鍵控(PSK)、相對(差分)相移鍵控(DPSK)。在接收端可以采用想干解調(diào)或非相干解調(diào)還原數(shù)字基帶信號。 數(shù)字信號的傳輸方式分為基帶傳輸和帶通傳輸。然而,實際中的大多數(shù)信道(如)無線信道具有豐富的低頻分量。為了使數(shù)字信號在帶通信道中傳輸,必須用數(shù)字基帶信號對載波進行調(diào)制,以使信號與信道的特性相匹配。 通信系統(tǒng)的抗噪聲性能是指系統(tǒng)克服加性噪聲影響的能力。在數(shù)字通信系統(tǒng)中,信道噪聲有可能使傳輸碼元產(chǎn)生錯誤,錯誤程度通常用誤碼率來衡量。因此,與分析數(shù)字基帶系統(tǒng)的抗噪聲性能一樣,分析數(shù)字調(diào)制系統(tǒng)的抗噪聲性能,也就是求系統(tǒng)在信道噪聲干擾下的總誤碼率。 誤碼率(BER:bit error ratio)是衡量數(shù)據(jù)在規(guī)定時間內(nèi)數(shù)據(jù)傳輸精確性的指標。誤碼率是指錯誤接收的碼元數(shù)在傳輸總碼元數(shù)中所占的比例,更確切地說,誤碼率是碼元在傳輸系統(tǒng)中被傳錯的概率,即誤碼率=錯誤碼元數(shù)/傳輸總碼元數(shù)。如果有誤碼就有誤碼率。誤碼的產(chǎn)生是由于在信號傳輸中,衰變改變了信號的電壓,致使信號在傳輸中遭到破壞,產(chǎn)生誤碼。噪音、交流電或閃電造成的脈沖、傳輸設備故障及其他因素都會導致誤碼(比如傳送的信號是1,而接收到的是0;反之亦然)。誤碼率是最常用的數(shù)據(jù)通信傳輸質(zhì)量指標。它表示數(shù)字系統(tǒng)傳輸質(zhì)量的式是“在多少位數(shù)據(jù)中出現(xiàn)一位差錯”。 誤信率,又稱誤比特率,是指錯誤接收的比特數(shù)在傳輸總比特數(shù)中所占的比例,即誤比特率=錯誤比特數(shù)/傳輸總比特數(shù)。 在數(shù)字通信系統(tǒng)中,可靠性用誤碼率和誤比特率表示。 數(shù)字調(diào)制用“星座圖”來描述,星座圖中定義了一種調(diào)制技術的兩個基本參數(shù):(1)信號分布;(2)與調(diào)制數(shù)字比特之間的映射關系。星座圖中規(guī)定了星座點與傳輸比特間的對應關系,這種關系稱為“映射”,一種調(diào)制技術的特性可由信號分布和映射完全定義,即可由星座圖來完全定義。 二、QPSK系統(tǒng)的原理 四相相移調(diào)制是利用載波的四種不同相位差來表征輸入的數(shù)字信息,是四進制移相鍵控。QPSK是在M=4時的調(diào)相技術,它規(guī)定了四種載波相位,分別為45°,135°,225°,275°,調(diào)制器輸入的數(shù)據(jù)是二進制數(shù)字序列,為了能和四進制的載波相位配合起來,則需要把二進制數(shù)據(jù)變換為四進制數(shù)據(jù),這就是說需要把二進制數(shù)字序列中每兩個比特分成一組,共有四種組合,即00,01,10,11,其中每一組稱為雙比特碼元。每一個雙比特碼元是由兩位二進制信息比特組成,它們分別代表四進制四個符號中的一個符號。QPSK中每次調(diào)制可傳輸2個信息比特,這些信息比特是通過載波的四種相位來傳遞的。解調(diào)器根據(jù)星座圖及接收到的載波信號的相位來判斷發(fā)送端發(fā)送的信息比特。 在QPSK體制中,由其矢量圖(圖1)可以看出,錯誤判決是由于信號矢量的相位因噪聲而發(fā)生偏離造成的。例如,設發(fā)送矢量的相位為45°,它代表基帶信號碼元“11”,若因噪聲的影響使接收矢量的相位變成135°,則將錯判為“01”。當不同發(fā)送矢量以等概率出現(xiàn)時,合理的判決門限應該設定在和相鄰矢量等距離的位置。在圖中對于矢量“11”來說,判決門限應該設在0°和90°。當發(fā)送“11”時,接收信號矢量的相位若超出這一范圍(圖中陰影區(qū)),則將發(fā)生錯判。
![]()
![]() 圖4是B點信號的星座圖映射,00、01、10、11組合分別映射成-1-j,-1+j,1-j,1+j。 圖5是C點信號的星座圖映射,它是加入噪聲后的映射結(jié)果,由圖中可以看出加入噪聲后大致以-1-j,-1+j,1-j,1+j為中心形成了近似圓的圖像,少部分點偏離比較嚴重,產(chǎn)生了誤差。 由圖6,可見QPSK仿真誤碼率曲線和理論誤碼率曲線重合在一起,QPSK仿真誤比特率曲線和理論誤比特率曲線也重合在一起,誤碼率約是誤比特率的兩倍,說明實驗方法是正確可行的。 三、結(jié)論 本次實驗研究了數(shù)字調(diào)制方式QPSK,對其誤碼率進行了考察。通過理論誤碼率和仿真誤碼的比較,了解了誤碼率的性能。本次實驗還通過運用星座圖來對實驗結(jié)果進行仿真。本次實驗得出結(jié)論如下:誤碼率是誤比特率的兩倍。
附錄: 1、 心得體會:本次實驗我收獲很多,學會了應用MATLAB來處理問題,加深了對通信原理中部分公式和概念的理解。實驗過程中也遇到了不少問題,在星座圖映射上,一開始將00,01,10,11看成一個整體,這樣對整體編程存在很大困難,因此后來嘗試將其分開看,并成功映射;在計算噪聲的過程中,由于通信原理的知識未能牢固掌握,在分析和計算的過程中花了很多時間;實驗過程中,學會了使用find函數(shù)來代替for循環(huán)的功能,從而使程序運行更加快,大大加快了實驗的進度。通過本次MATLAB的實踐,應該加強MATLAB在各個學科的應用,學會用MATLAB來處理實際問題。 2、 程序: Eb = Energy-per-bit Es = Energy-per-symbol = nEb with n bits per symbol Tb = Bit duration , Rb = Bit Rate, the bit transmission time Tb = 1/Rb Ts = Symbol duration N0 / 2 = Noise power spectral density (W/Hz) Pb = Probability of bit-error Ps = Probability of symbol-error Eb/N0 = The energy per bit to noise power spectral density ratio。It is a normalized signal-to-noise ratio (SNR) measure, also known as the "SNR per bit".
SYMERR Compute number of symbol errors and symbol error rate.[NUMBER,RATIO] = SYMERR(X,Y) compares the elements in the two matrices X and Y. The number of the differences is output in NUMBER. The ratio of NUMBER to the number of elements is output in RATIO. close all clear all SNR_DB=[0:1:12]; %Signal-to-noise ratio gradually improve sum=1000000; data= randsrc(sum,2,[0 1]); %generate a 1000000*2 random matrix, using [0 1] [a1,b1]=find(data(:,1)==0&data(:,2)==0); %returns the row and column indices of the evaluated expression which are TRUE. message(a1)=-1-j; % map [ 0 0] to 225° [a2,b2]=find(data(:,1)==0&data(:,2)==1); message(a2)=-1+j; % map [ 0 1] to 135° [a3,b3]=find(data(:,1)==1&data(:,2)==0); message(a3)=1-j; % map [ 1 0] to 275° [a4,b4]=find(data(:,1)==1&data(:,2)==1); message(a4)=1+j;% map [ 0 0] to 45° scatterplot(message) title('B點信號的星座圖') A=1; Tb=1; Eb=A*A*Tb; P_signal=Eb/Tb; NO=Eb./(10.^(SNR_DB/10)); %SNR_DB=10.*log10(Eb./NO) P_noise=NO; %noise power 單邊功率譜密度(N0)主要用在復數(shù)信號中,雙邊功率譜密度(N0/2)主要用在實信號中。 sigma=sqrt(P_noise); for Eb_NO_id=1:length(sigma) noise1=sigma(Eb_NO_id)*randn(1,sum); noise2=sigma(Eb_NO_id)*randn(1,sum); receive=message+noise1+noise2*j; %previously unconsidered: how to add gaussian noise to the original signal resum=0; total=0; m1=find(angle(receive)<=pi/2&angle(receive)>0); %demodulate the [ 1 1] pattern remessage(1,m1)=1+j; redata(m1,1)=1; redata(m1,2)=1; m2= find( angle(receive)>pi/2&angle(receive)<=pi); %demodulate the [ 0 1] pattern remessage(1,m2)=-1+j; redata(m2,1)=0; redata(m2,2)=1; m3=find( angle(receive)>-pi&angle(receive)<=-pi/2); %demodulate the [ 0 0] pattern remessage(1,m3)=-1-j; redata(m3,1)=0; redata(m3,2)=0; m4=find( angle(receive)>-pi/2&angle(receive)<=0); %demodulate the [ 1 0] pattern remessage(1,m4)=1-j; redata(m4,1)=1; redata(m4,2)=0; [resum,ratio1]=symerr(data,redata); % 'symerr' Compute number of symbol errors and symbol error rate pbit(Eb_NO_id)=resum/(sum*2); %1000000 symbols -->2000000 bits QPSK: 2bits per symbol [total,ratio2]=symerr(message,remessage); %Compute number of symbol errors and symbol error rate pe(Eb_NO_id)=total/sum; % Calculated according to the definition end scatterplot(receive) title('C點信號的星座圖') Pe=1-(1-1/2*erfc(sqrt(10.^(SNR_DB/10)/2))).^2; Pbit=1/2*erfc(sqrt(10.^(SNR_DB/10)/2)); figure(3) semilogy(SNR_DB,pe,':s',SNR_DB,Pe,'-*',SNR_DB,pbit,'-o',SNR_DB,Pbit,':+') legend('QPSK仿真誤碼率','QPSK理論誤碼率','QPSK仿真誤比特率','QPSK理論誤比特率',1) xlabel('信噪比/dB') ylabel('概率P') grid on |
|