QPSK调制解调器的C++仿真实现与应用

2017-01-11 01:59
山西电子技术 2016年6期
关键词:调制解调器码元卫星通信

秦 伟

(山西省新闻出版广电局无线管理中心228台,山西 太原 030001)

QPSK调制解调器的C++仿真实现与应用

秦 伟

(山西省新闻出版广电局无线管理中心228台,山西 太原 030001)

以实际工程应用为出发点,根据QPSK调制解调原理,用C++在vc6.0的编译环境下,仿真实现了数字微波与卫星通信系统中使用的QPSK调制解调器,最终的仿真结果较好地符合了理论要求。

数字微波与卫星通信;QPSK;仿真;调制解调器

当下,随着数字技术的迅猛发展,数字器件的速度、频率及存储容量等物理特性都大幅提高,数字信号处理在通信系统中的地位变得越来越重要。四相相移键控(QPSK)调制技术因其兼顾有效性和可靠性,广泛地应用于数字微波通信、数字卫星通信、宽带接入、移动通信和有线电视传输中。

尤其在数字微波与卫星通信系统中,由于通信信道的非线性和AM/PM效应,要求调制后的波形尽量具有等幅包络的结构特点;并且选择尽可能少的占用射频带宽,而又能高效利用有限频带资源且抗衰落和抗干扰性能强的调制技术;还要使调制信号的旁瓣尽可能的小,以减少相邻通道之间的干扰。因此,在中容量数字微波和卫星通信系统中大多采用QPSK的调制方式[1]。

本文以实际应用为出发点,根据QPSK调制解调原理,用C++在VC6.0的编译环境下,仿真实现了数字微波与卫星通信系统中使用的QPSK调制解调器,最终的仿真结果较好地符合了理论要求。

1 QPSK调制解调原理

在现代数字微波和卫星通信中,为了提高信息的传输速率,往往利用载波的一种相位去携带一组二进制信息码。相位键控(PSK)调制是一种角度调制,通过保持载波的幅度不变,改变载波的相位来实现,除了要求输入的信号是数字信号且输出的相位受到限制以外,与传统的相位调制一样。

四相调制既可以表示为QPSK,也可以表示为4PSK,它是用载波的四种不同相位与两位二进制信息码的组合(00,01,11,10)对应来表征传送的数据信息。在QPSK调制中,首先对输入的二进制数据按两位数字编成一组,构成双比特码元。其组合共有22种,所以可用M=22不同相位或相位差来表示。产生QPSK信号的电路很多,常见的有正交调制法和相位选择法,其中正交调制法应用的最为普遍[2]。正交调制法产生QPSK信号的原理图如图1(a)所示。

解调是调制的逆过程,解调过程取决于所采用的调制方式。但是对于一种给定类型的已调信号,解调方法并不是唯一的。几乎所有的解调器都可以分成两类,相干解调和非相干解调。相干解调是利用本地的载波信号进行解调,而非相干解调则不需要本地载波信号。在数字通信中,解调和检测经常可以互用,其中解调侧重于波形的恢复,检测侧重于码元的判决。在本文中QPSK信号可用两路相干解调器分别进行解调,如图1(b)所示,上、下两个支路分别是2PSK信号解调器,用来检测双比特码元中的A和B码元,然后通过并/串变换电路还原为串行数据信息。

图1 QPSK信号的产生与解调原理图

2 仿真实现

2.1 QPSK调制解调器仿真模型

在本文C++仿真实现的是在不同信噪比情况下,QPSK调制解调的性能,具体参数设置如表1所示。QPSK调制解调器的仿真模型如图2所示,首先使用一个产生范围在(0,1)的均匀随机数的随机数发生器,产生一个等概率出现的四进制符号序列(信息比特对):00,01,11,10。再将该序列映射到对应的信号向量,映射关系如表2所示。本次仿真采用B方式映射。

图2 QPSK调制解调器仿真模型

数字码元11100001相位θmAππ/20-π/2Bπ/4-π/4-3π/43π/4

表2 QPSK信号相位编码逻辑关系表

利用高斯随机数发生器产生均值都为0,方差都是σ2的加性噪声分量nc和ns。检测器将观测到随机向量r=si+n,同时计算r在四种可能信号{sm}上的投影。判决结果就是对应于最大投影的信号向量。将判决结果与发送信号向量进行比较,最后用差错计数器对检测器产生的符号差错进行计数[3]。

2.2 均匀随机数发生器和高斯随机数发生器的C++程序实现

仿真时,关键是要产生随机变量r,即随机数。它是信号相关器的输出采样信号和检测器的输入信号。

用C++程序实现均匀随机数发生器时,首先利用乘同余算法及Schrage算法得到随机数r,且r~U[0,1],这样产生了满足要求的均匀随机数发生器[4]。需要注意的是rand()产生的随机数序列都是一样的,为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来产生种子,如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。例如,srand((unsigned)time(NULL)*10)。

另外,关于time_t time(0):time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。

高斯随机数发生器的C++程序实现。因为均匀随机数发生器已经生成了均值为0,方差为1的随机数,所以只需将均匀随机数发生器生成的序列乘以白噪声的方差即得高斯白噪声。

2.3 QPSK调制器的C++程序实现

根据正交调制法原理,在C++程序中,首先对均匀随机数发生器产生的(0,1)内的二进制比特流进行判断,如果产生的随机数在(0,0.5)内,则为0,否则就是1。再由相邻的两个二进制比特流组成一组双比特码元,然后根据表2所示的映射关系,将其对应成载波相位。C++实现程序如下:

void QPSK(plural *output,int *input) //用复数的实虚部分别表示正交的两路输入输出

{ //信号

int state[2][2]={0,3,

1,2,}; //表示四种映射状态

int stateNum; //表示第几个映射

int Info_even[halflength],Info_odd[halflength]; //分别表示序列的奇数和偶数个元素

double sysmbol[4][2]={

//表示四种不同码元对应的相位

1/sqrt(2) ,1/sqrt(2),

-1/sqrt(2) ,1/sqrt(2),

-1/sqrt(2),-1/sqrt(2),

1/sqrt(2),-1/sqrt(2) };

for(int i=0;i

{ //实现QPSK调制

Info_even[i]=input[2*i];

Info_odd[i]=input[2*i+1];

stateNum=state[Info_even[i]][Info_odd[i]];

output[i].R=sysmbol[stateNum][0];

output[i].I=sysmbol[stateNum][1];

}

}

2.4 QPSK解调器的C++程序实现

解调完成的功能其实是检测和判决。检测器将接收到的信号向量投射到四个可能传输的信号向量上,并判决。若对应于最大投影的向量就是传输的QPSK信号向量,C++实现程序如下:

void demudulation(int *output,plural *input)

{

for(int i=0;i

{

if(input[i].R>0)

output[2*i]=0;

else

output[2*i]=1;

}

for(int j=0;j

{

if(input[j].I>0)

output[2*j+1]=0;

else

output[2*j+1]=1;

}

}

2.5 差错计数器的C++程序实现

将解调后的信号与发送的QPSK信号进行比较,统计差错个数并计算误码率和误符号率。C++实现程序如下:

int BitError_Statistics(int *estimate,int *original)

{

int bNum=0;

for(int i=0;i

{

if(estimate[i]!=original[i])

bNum++;

}

return bNum;

}

int SymbolError_Statistic(int *estimate,int *original)

{

int sNum=0;

for(int j=0;j

{

if((estimate[2*j]!=original[2*j])||(estimate[2*j+1]!=original[2*j+1]))

sNum++;

}

return sNum;

}

2.6 仿真结果

运行程序,将不同信噪比情况下计算出的误码率和误符号率输出,如图3所示。可以看出,随着信噪比的增大,误码率和误符号率有了明显的下降,这与通信系统理论是相符的。

图3 不同信噪比情况下的误码率和误符号率

3 结束语

本文根据QPSK调制解调原理,在C++的运行环境中很好地仿真实现了QPSK调制解调器在数字微波与卫星通信系统中的应用,最终的效果较好地符合了理论要求。通过仿真,可以更好地了解QPSK调制解调器的原理,并为在实际工程中硬件的研制提供了一定的参考作用。

[1] 王立娜,王斌.卫星通信系统[M].第2版.北京:国防工业出版社,2014.

[2] 姚军,李白萍.数字微波与卫星通信[M].北京:北京邮电大学出版社,2011.

[3] 季飞,傅娟.通信系统建模与仿真[M].北京:电子工业出版社,2007.

[4] 秦伟,周锟.RLS算法C++仿真实现及其应用[J].山西电子技术,2015(2):68-69.

Simulation Implementation and Application of C++ for a Modulator-Demodulator of QPSK

Qin Wei

(228Station,ShanxiAdministrationCenterofRadioandTV,ShanxiAdministrationofPress,Publication,Radio,FilmandTelevision,TaiyuanShanxi030001,China)

At present, with the rapid development of digital technology, the physical properties in digital machines such as speed, frequency, and storage capacity are largely increased; the position of digital signal processing is becoming more and more important in the communication system. Because of its validity and reliability, Quaternary Phase Shift Keying (QPSK) modulation technique is widely used in digital microwave communication, satellite communication, broadband access, mobile communication and cable television transmission, especially in the digital microwave and satellite communication system. In vc6.0 compiler environment, taking the actual engineering application as a starting point and according to the theory of QPSK, the simulation in this paper realized digital microwave and satellite communication system used in QPSK technology, finally the simulation results better meet the requirements of the theory.

digital microwave and satellite communication system; QPSK; simulation; modulator-demodulator

2016-11-01

秦 伟(1980- ),男,山西隰县人,工程师,研究生在读,主要从事调频电视发射,微波传输。

1674- 4578(2016)06- 0042- 03

TN915.05;TP311.52

A

猜你喜欢
调制解调器码元卫星通信
卫星通信、导航、遥感在自然灾害防治中的融合应用
LFM-BPSK复合调制参数快速估计及码元恢复
卫星通信专家的选择
基于极大似然准则的短猝发信号盲解调
航空器的顺风耳——机载卫星通信
基于FPGA的IRIG-B码解码器设计
卫星通信及其应用
安森美半导体推出用于工业通信的高集成度、低能耗HART CMOS调制解调器IC
基于Haar小波变换的码元速率估计
Atmel采用科胜讯的软调制解调器