李运洲 ,韦春玲 ,何宪文
基于DSP的QPSK信号解调
李运洲1,韦春玲2,何宪文3
(1. 海军92665部队, 湖南常德 415300;2. 黄冈师范学院, 湖北黄冈 438000;3. 海军工程大学, 武汉 430033)
本文介绍了QPSK信号产生和解调的相关原理。利用数字信号处理芯片运算速度快、可编程性能好、抗干扰能力强,能适合于实现复杂的算法的特点,结合CCS开发平台,完成了以汇编语言为基础的QPSK信号解调的DSP仿真。通过对比Matlab仿真和DSP仿真结果,验证设计的解调过程各项性能指标均达到设计的要求。
DSP QPSK Matlab 仿真
0 引言
QPSK调制技术作为现代数字调制技术的一种,有抗干扰性能强、误码性能好、频谱利用率高等优点,同时,由于QPSK是一种恒包络调制,其信号的平均功率是恒定的,使得信号不受幅度衰减的影响,幅度上的失真不会使QPSK产生误码。鉴于以上优点,QPSK被广泛应用于数字通信、数字视频广播、卫星数据传输、移动通信以及军事通信等领域。
近年来,数字信号处理(DSP)技术的发展十分迅速,许多从前必须使用硬件电路实现的信号处理过程,现在已经逐渐由软件实现的DSP算法所取代,而且功能更强大,性能更可靠,接口更通用,互连更灵活。DSP技术已经渗透到数字通信领域的各个环节,如编码译码、数字滤波、调制解调、时钟同步、载波同步等。事实表明,DSP技术在通信和计算机应用领域起着越来越重要的作用。可见如果将两者相结合,利用DSP强大的数字信号处理功能可以更高效地实现QPSK的调制解调。
1原理及方案设计
QPSK调制技术是使用4种不同相位差的载波来表征输入的数字信息。每一次调制能够传输2个信息比特,信息就是通过载波的4种相位来传递的。
QPSK信号产生流程见图1。
由于产生的QPSK信号是射频信号,因此需要对信号进行下变频,然后再对信号进行解调。
根据奈奎斯特定理,设无符号间干扰的码元波形的条件是:设接收滤波器对输入脉冲的响应的频谱为(),符号速率为1/,那么()以1/为间隔进行频谱搬移后,得到的新的频谱的幅度应该是一条等幅直线。根据这一条准则,我们可以设计()为升余弦。为了进行匹配滤波接收,将()开方,得到根升余弦滤波器,分别放在发送端和接收端。这样,从接收端匹配滤波器输出的信号恰好就是升余弦信号。
为了得到根升余弦信号,我们可以让一个冲击经过根升余弦滤波器,滤波器的输出就是所要得到的信号。而在数字滤波器中,可以将一连串的数字信号看成是多个冲击的叠加。所以我们在设计时,可以让信号直接通过根升余弦滤波器,得到波形成形之后的信号。需要考虑的问题是采样频率,符号速率,载波频率,成形后波形带宽(即基带信号的带宽)之间的关系,以及对原信号的插值倍数。下面描述上述参数之间的关系以及对原信号插值倍数的计算。
射频频率和符号速率是给出的。我们要确定的就是采样频率。设射频频率为s,采样频率为,符号速率为1/,成形后波形的带宽为。那么,根据奈奎斯特采样定律,采样频率只需要是+的2倍就可以了。也就是说,平均每个载波周期内采(2+2*/)个点,一般来说,远小于,所以理论上平均每个周期采2个点。在实际的应用中,要想把信号提取出来,如果采样率只是最高频率的两倍,那样就需要理想的滤波器,而理想滤波器在实际中是不能实现的,所以需要提高采样率。此外,为了使得经过模数转换之后的输出信号有较理想的波形,取采样频率为的10倍。那么每个载波周期有十个采样点。因为符号速率为1/,所以一个符号对应的载波周期的个数为*,所以每一个符号对应的点数是**10。所以插值的倍数就是**10。
2 QPSK信号Matlab仿真及DSP实现
为了验证DSP实现的正确性,我们在DSP实现之前用Matlab对QPSK信号进行仿真,得到正确的仿真结果用于与DSP实现的结果进行对比。
对接收信号进行下变频,得到I/Q两路信号,如图4所示。
为了减小工程实现的难度,在DSP实现中我们使用Matlab软件产生QPSK信号。DSP的具体实现是通过开发软件CCS完成的。DSP实现步骤如下:
1)用matlab生成接收信号,存入fir_signal.inc文件中。过程如下,在matlab中找到接收信号变量,将其内容复制到文本文档,然后用Mat2ASM软件将每个数据前加一个逗号,并且将数据转化成一列的形式,复制该列数据到ccs新建的文件,然后查找逗号并替换成“ .word ”的形式,最后保存成inc文件即可。在主程序中用“.copy”将文件包含进去即可。同理将载波信号分别存入carry_wave_i.inc 和carry_wave_q.inc两个文件中。
2)接收信号经过下变频,得到I,Q两路信号。分别给这两路信号分配一个存储空间,OUTPUT_INPUT_I和 OUTPUT_INPUT_Q。将经过下变频得到的结果存入这两个空间之中。
下变频的代码如下:
STM #INPUT,AR2 STM #CARRY_WAVE_I,AR3
STM #OUTPUT_INPUT_I,AR4
STM #RE_NUM-1,BRC RPTB LOOP0-1
MPY *AR2+,*AR3+,A
STH A,*AR4+
LOOP0:
STM #INPUT,AR2
STM #CARRY_WAVE_Q,AR3 STM #OUTPUT_INPUT_Q,AR4
STM #RE_NUM-1,BRC
RPTB LOOP1-1
MPY *AR2+,*AR3+,A
STH A,*AR4+
LOOP1:
“LOOP0”执行的是I路,“LOOP1”执行的是Q路。
3)下变频完成之后,进行根升余弦滤波。滤波的思路是先将I路完全处理完,并将结果存入OUTPUT_I 中,然后再对Q路进行处理,并将结果存入OUTPUT_Q中。参照课本上的滤波的代码,其滤波的实际代码如下(此处只写出了I路的滤波代码,Q路的代码与此相似):
STM #COFFBUF,AR5
RPT #N-1
MVPD #COFF_FIR,*AR5+
STM #1,AR0
STM #DATABUF,AR4
RPTZ A,#N-1
STL A,*AR4+
STM #(DATABUF+N-1),AR4
STM #COFFBUF,AR5
FIR_TASK_I:
STM #OUTPUT_INPUT_I,AR6
STM #OUTPUT_I,AR7
STM #KS-1,BRC
RPTBD LOOP2-1
STM #N,BK
LD *AR6+,A
FIR_FILTER_I:
STL A,*AR4+%
RPTZ A,N-1
MAC *AR4+0%,*AR5+0%,A
STH A,*AR7+
4)滤波完成之后再进行采样判决。通过ccs上的图形可以直接找到信号的最值点,然后将他们记录下来,找出最佳的采样点,直接将其输出,结果存入SAMPLE_OUT_I和SAMPLE_OUT_Q中。代码如下(仅I路信号的采样代码):
STM #32H,AR0
STM #OUTPUT_I,AR1
ADDM #100,AR1
STM #SAMPLE_OUT_I,AR2
STM #4,BRC
RPTB LOOP4-1
LD *AR1+0,A
STL A,*AR2+
LOOP4:
5)采样点的数据得到之后,根据两路的采样结果,整合判决得到原始的发送信号将最终的结果存入JUDGE_OUT中。
经过上述处理流程,QPSK信号解调DSP实现完成。
完成下变频后的两路信号如下图所示:
下变频信号经过根深余弦滤波之后的信号:
最终的判决结果如下:
通过比较Matlab仿真得到的结果与DSP实现得到的结果,可以看出本文设计的QPSK信号的DSP实现方法是正确的,能够顺利完成QPSK信号的解调。
3 总结
DSP芯片为实现各类信号的高速实时处理提供了充足的硬件资源,同时TI公司的CCS开发平台提供了灵活高效的开发环境,因此,我们可以通过上述方法轻松实现QPSK信号的解调。
[1] 戴明桢,周建红.TMS320C54x DSP结构、原理及应用(第2版)[M].北京航空航天大学出版社,2007.
[2] 冯桂,林其伟,陈东华.信息论与编码技术[M].清华大学出版社,2007.
[3] 王金龙.无线通信系统的DSP实现[M].人民邮电出版社,2002.
Simulation of Hamming Coding Based on DSP
Li Yunzhou1, Wei Chunling2, He Xianwen3
(1. Army Unit 91388, Changde 415300, Hunan, China; 2. Huanggang Normal University,Huanggang 438000, Hubei, China;3. Naval University of Engineering, Wuhan 430033,China)
TN914
A
1003-4862(2016)05-0059-04
2016-03-15
李运洲(1982-),男,工程师。研究方向:有线光纤通信。