通信原理之调制解调(2)--QPSK

QPSK的基本原理
     四相相移键控信号简称“QPSK”。它分为绝对相移和相对相移两种。由于绝对相移方式存在相位模糊问题,所以在实际中主要采用相对移相方式QDPSK。它具有一系列独特的优点,目前已经广泛应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。
  QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在数字信号的调制方式中QPSK四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。其星座图如下所示(采用格雷码编码)。



QPSK数字解调
      QPSK数字解调包括:模数转换、抽取或插值、匹配滤波、时钟和载波恢复等。在实际的调谐解调电路中,采用的是非相干载波解调,本振信号与发 射端的载波信号存在频率偏差和相位抖动,因而解调出来的模拟I、Q基带信号是带有载波误差的信号。这样的模拟基带信号即使采用定时准确的时钟进行取样判 决,得到的数字信号也不是原来发射端的调制信号,误差的积累将导致抽样判决后的误码率增大,因此数字QPSK解调电路要对载波误差进行补偿,减少非相干载 波解调带来的影响。此外,ADC的取样时钟也不是从信号中提取的,当取样时钟与输入的数据不同步时,取样将不在最佳取样时刻进行所得到的取样值的统计信噪 比就不是最高,误码率就高,因此,在电路中还需要恢复出一个与输入符号率同步的时钟,来校正固定取样带来的样点误差,并且准确的位定时信息可为数字解调后 的信道纠错解码提供正确的时钟。校正办法是由定时恢复和载波恢复模块通过某种算法产生定时和载波误差,插值或抽取器在定时和载波误差信号的控制下,对 A/D转换后的取样值进行抽取或插值滤波,得到信号在最佳取样点的值,不同芯片采用的算法不尽相同,例如可以采用据辅助法(DA)载波相位和定时相位联合 估计的最大似然算法。

特性分析
      四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相 位,分别为45°,135°,225°,275°,调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进 制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由 两位二进制信息比特组成,它们分别代表四进制四个符号中的一个符号。QPSK中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。 解调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。
  数字调制用“星座图”来描述,星座图中定义了一种调制技术的两个基本 参数:(1)信号分布;(2)与调制数字比特之间的映射关系。星座图中规定了星座点与传输比特间的对应关系,这种关系称为“映射”,一种调制技术的特性可 由信号分布和映射完全定义,即可由星座图来完全定义。
  首先将输入的串行二进制信息序列经串-并变换,变成m=log2M个并行数据流,每一路 的数据率是R/m,R是串行输入码的数据率。I/Q信号发生器将每一个m比特的字节转换成一对(pn,qn)数字,分成两路速率减半的序列,电平发生器分 别产生双极性二电平信号I(t)和Q(t),然后对coswct和sinwct进行调制,相加后即得到QPSK信号。
  QPSK是一种频谱利用 率高、抗干扰性强的数调制方式, 它被广泛应用于各种通信系统中. 适合卫星广播。例如,数字卫星电视DVB2S 标准中,信道噪声门限低至4. 5 dB,传输码率达到45M bös,采用QPSK 调制方式,同时保证了信号传输的效率和误码性能。

QPSK的MATLAB程序

(1) QPSK调制

function ModSig = QpskMod(SrcBit,PhaseOffset)
    SrcBitLen = length(SrcBit);
    if(mod(SrcBitLen,2) ~= 0)
        error('The Bit length must be the 2N!');
    end
    Symbole = reshape(SrcBit,2,SrcBitLen/2);
    ScatterPoint = exp(1i*(2*pi*(0:3)/4 + PhaseOffset));
    ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];
    SymboleValue = Symbole(1,:)*2 + Symbole(2,:);
    ModSig = ScatterPointGray(SymboleValue+1);
end


(2) QPSK解调

function DemodSig = QpskDemod(ModSig,PhaseOffset)
    ScatterPoint = exp(1i*(2*pi*(0:3)/4 + PhaseOffset));
%     ScatterPointGray = [ScatterPoint(1),ScatterPoint(2),ScatterPoint(4),ScatterPoint(3)];
    ModSigDistance = zeros(4,length(ModSig));
    for k = 1:4
        ModSigDistance(k,:) = abs(ModSig - ScatterPoint(k));
    end
    [~, MinIdx]= min(ModSigDistance);
    DemodSig = zeros(1,2*length(ModSig));
    for k = 1 : length(ModSig)
        switch MinIdx(k)
            case 1
                DemodSig(2*k-1:2*k) = [0 0];
            case 2
                DemodSig(2*k-1:2*k) = [0 1];
            case 3
                DemodSig(2*k-1:2*k) = [1 1];
            case 4
                DemodSig(2*k-1:2*k) = [1 0];
        end
    end
end


QPSK波形

待续。。。

QPSK的Simulink系统仿真

待续。。。

QPSK误码率曲线

待续。。。


posted @ 2011-05-01 21:00  淡水咸鱼  阅读(11416)  评论(9编辑  收藏  举报