1、BPSKQPSK调制与解调DSP实现数字调制解调的DSP实现BPSK、QPSK调制解调仿真1系统的工作原理1.1 BPSK调制解调原理在PSK调制时,载波的相位随调制信号状态不同而改变。如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,此时它们就处于“同相”状态;如果一个达到正最大值时,另一个达到负最大值,则称为“反相”。一般把信号振荡一次(一周)作为360度。如果一个波比另一个波相差半个周期,我们说两个波的相位差180度,也就是反相。当传输数字信号时,“1”码控制发0度相位,“0”码控制发180度相位。载波相位只有0和两种取值,分别对应于调制信号
2、的“0”和“1”。传“1“信号时,发起始相位为的载波;当传“0”信号时,发起始相位为0的载波。由“0”和“1”表示的二进制调制信号通过电平转换后,变成由“1”和“1”表示的双极性NRZ(不归零)信号,然后与载波相乘,即可形成2PSK信号。用开关电路去选择相位相差的同频载波(如图1-1)产生。图11BPSK解调必须采用相干接收法(如图1-2)。图121.2 QPSK调制解调原理正交相移键控(Quadrature Phase Shift Keyin,QPSK)是一种数字调制方式。它分为绝对相移和相对相移两种。由于绝对相移方式存在相位模糊问题,所以在实际中主要采用相对移相方式DQPSK。目前已经广泛
3、应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。在四相绝对相移键控是利用载波的四种不同相位来表征数字信息的。由于每一种载波相位代表两个比特信息,故每个四进制码元又被称为双比特码元。双比特码元中的两个信息比特通常是按格雷码(即反射码)排列的。图1-3(a)表示A方式时QPSK信号的矢量图,图(b)表示B方式时QPSK信号的矢量图。图13QPSK信号的矢量图QPSK信号常用的产生方法有三种:正交调制法、相位选择法及脉冲插入法。1)正交调制法发送端采用正交调制法的方框图如图1-4所示,图14QPSK调制系统方框图(正交法)2)相位选择法图15相位选择法的方框图3)脉冲插入法图16插入脉冲
4、法产生QPSK信号原理方框图QPSK信号的相干解调图17QPSK信号的相干解调方框图QPSK同2PSK一样,在接收机解调时,由于相干载波相位的不确定性,使得解调后的输出信号不确定。为了克服这种缺点,在实际通信中通常采用QDPSK系统。2BPSK和QPSK的数学模型2.1 BPSK信号模型BPSK信号的数学表达式为: 其中 若在某一码元持续时间T内观察是,式(1.1)可以简写为: BPSK信号也相当于用矩形双极性不归零基带信号与载波信号相乘,故也可表示成: 2.2 QPSK信号模型BPSK信号的数学表达式为: 式中 常见的有两种形式(见下表):双比特码元载波相位ABAB0005/410/27/4
5、11/4013/23/43仿真结果1、BPSK仿真结果:BPSK调制解调过程星座图2、QPSK仿真结果BPSK调制过程4仿真代码BPSK代码:1.main.cextern void qpsk(); void filter(float *b,float *a,float *s,int N_b,int N_s);#include C54MATH.HDATA x256;DATA y256; /正弦信号DATA Pulse256; /被调信号DATA PskSignal256; /BPSK调制信号DATA PskSignal01256; /BPSK调制信号DATA RecMeg256;DATA Rec
6、Sig256;#define N 256void main() int i,j; for(i=0;iN;i+)/产生一个500Hz的正弦信号作为调制信号 xi=i*0x1000; sine( x, y, N ); for(i=0;iN;i+)/产生一个被调信号(用-1,1分别表示被调信号的两种状态) j=i/32; switch (j%2) case 0: Pulsei=-1; break;case 1: Pulsei=1; break; /调用汇编函数bpsk bpsk(); for(i=0;i0) RecMegi=1; else if(PskSignal01i INT_PM_DRAM PA
7、GE 0 .cinit : INT_PM_DRAM PAGE 0 .switch : INT_PM_DRAM PAGE 0 .data : INT_DM_1 PAGE 1 .stack : INT_DM_1 PAGE 1 .bss : INT_DM_1 PAGE 1 .sysmem : INT_DM_1 PAGE 1 .const : INT_DM_1 PAGE 1 .dout : INT_DM_1 PAGE 1 QPSK代码:1.main.cextern void qpsk(); #include C54MATH.HDATA x256;DATA y256; /正弦信号DATA Pulse25
8、6; /被调信号DATA PskSignal256; /QPSK调制信号DATA PskSignal01256;DATA RecMeg256;DATA RecSig256;#define N 256void main() int i,j; for(i=0;iN;i+) xi=i*0x1000; sine( x, y, N );/产生一个被调信号(用-3,-1,1,3分别表示被调信号的四种状态) for(i=0;iN;i+) j=i/32; switch (j%4) case 0: Pulsei=-3; break; case 1: Pulsei=-1; break; case 2: Pulsei=1; break; case 3: Pulsei=3; break; /调用汇编函数qpsk qpsk(); for(i=0;i INT_PM_DRAM PAGE 0 .cinit : INT_PM_DRAM PAGE 0 .switch : INT_PM_DRAM PAGE 0 .data : INT_DM_1 PAGE 1 .stack : INT_DM_1 PAGE 1 .bss : INT_DM_1 PAGE 1 .sysmem : INT_DM_1 PAGE 1 .const : INT_DM_1 PAGE 1 .dout : INT_DM_1 PAGE 1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1