打印

基于DSP的OQPSK调制器设计与实现

[复制链接]
1323|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
biechedan|  楼主 | 2014-4-30 00:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 O 引言

  OQPSK调制技术是继OPSK之后发展起来的一种恒包络数字调制技术,由于具有较高的频带利用率和在频带受限的系统中抗干扰性能强,被广泛地应用于移动通信和卫星通信领域。传统的OQPSK调制器都是由硬件电路来完成,存在电路复杂、体积大和功耗高等缺点。随着高速DSP处理器的应用,本文提出了一种基于DSP处理器的数字OQPSK调制器实现方案,让OQPSK调制器的大部分功能由DSP处理器执行相应的算法实现,此方案省去了大量的硬件电路,具有体积小、功耗低、稳定可靠等优点。

  1 OQPSK调制原理简介

  QPSK调制由于同相支路I和正交支路Q的两个比特ab可能同时发生变化,因而存在180°的相位突变,这在频带受限的系统中会引起信号包络的很大起伏,造成邻道干扰。OQPSK调制对此作了改进,它将Q支路的符号在时间上错开Tb,这样上下两个支路的相邻码元不可能同时变化,使得相邻码元相位差最大缩小至90°,从而减小了信号包络的起伏。OQPSK调制的原理如图1所示。


  设输入的数据为{Uk},则OQPSK已调波可以表示成:


  式中g(t)为基带脉冲波形,为消除码间串扰且误码率最小,g(t)的波形应要求是平方根升余弦函数。为了简单起见,本文中设g(t)为矩形脉冲波形。

相关帖子

沙发
biechedan|  楼主 | 2014-4-30 00:20 | 只看该作者

 2 OQPSK调制器的硬件选择


  OQPSK调制器的硬件开发平台采用的是合众达的SEED-DEC5416嵌入式DSP开发板,其系统结构原理如图2所示。处理器是16bit定点DSP芯片TMS320VC5416,OQPSK信号的16位各样点数据送往转换精度只有14位的D/A转换控制器TLC32044,该控制器只对16位中的高14位数据进行D/A转换,转换后的波形送示波器显示。



使用特权

评论回复
板凳
biechedan|  楼主 | 2014-4-30 00:20 | 只看该作者
 3 OQPSK调制的软件设计

  主程序中首先对TLC32044芯片初始化(过程请查阅相应的PDF资料),然后调用执行OQPSK调制子程序。下面介绍本文设计的在DSP处理器上实现OQPSK调制的方法。

  3.1 基于DSP的OQPSK调制算法

  设信息流为…bkakbk-1ak-1,并假定已经保存在DSP的数据存储空间中(实际应用中可以使用单片机通过HPI接口向DSP写入要发送的信息流),其中bkakbk-1ak-1可以看成是一个字(16位)的最低4位。将输入的信息流串并转换成双比特码元,可以对信息码字每次右移动2位实现。Q支路延迟和I支路的对应关系可以采用测试ak、bk-1和bk这三位码元来完成,若测试位为O,则对正弦或余弦值取负以完成单/双极性变换的功能。因此,可以画出基于DSP的OQPSK调制算法流程,如图3所示。图3中已经假设I支路一个码元包含2个周期的余弦波,一个周期的余弦波采样32个点,变量Count用于控制信息流的长度,OQPSK_Buf缓冲区用于保存调制完成的采样点数据。


使用特权

评论回复
地板
biechedan|  楼主 | 2014-4-30 00:20 | 只看该作者
 3.2 正弦和余弦数据的获取

  上述算法中需要正弦或余弦各点的采样值,幅度为1的正弦各点采样值大多都是小数,而16位定点DSP芯片的操作数是整数,为此要设定小数点在16位二进制数中的位置,考虑到调制后波形的最大值是,因此对正弦或余弦的数值采用Q14表示法才能满足调制后数据的范围。显然,在汇编程序中按“.word x”形式直接输入正弦和余弦的各点采样值(Q14)比较繁琐,可以用下面的一段C语言程序生成正弦采样点数据文件(程序中已将正弦载波的频率归一化),然后在TC2.0软件的当前路径下将生成的包含文件sindata.inc移动到由软件cos2.O建立的工程文件夹内,用汇编伪指令.include将该文件包含进来即可省去繁琐的数据输入。用类似的程序也可生成需要的余弦数据文件。

  3 OQPSK调制的软件设计

  主程序中首先对TLC32044芯片初始化(过程请查阅相应的PDF资料),然后调用执行OQPSK调制子程序。下面介绍本文设计的在DSP处理器上实现OQPSK调制的方法。

  3.1 基于DSP的OQPSK调制算法

  设信息流为…bkakbk-1ak-1,并假定已经保存在DSP的数据存储空间中(实际应用中可以使用单片机通过HPI接口向DSP写入要发送的信息流),其中bkakbk-1ak-1可以看成是一个字(16位)的最低4位。将输入的信息流串并转换成双比特码元,可以对信息码字每次右移动2位实现。Q支路延迟和I支路的对应关系可以采用测试ak、bk-1和bk这三位码元来完成,若测试位为O,则对正弦或余弦值取负以完成单/双极性变换的功能。因此,可以画出基于DSP的OQPSK调制算法流程,如图3所示。图3中已经假设I支路一个码元包含2个周期的余弦波,一个周期的余弦波采样32个点,变量Count用于控制信息流的长度,OQPSK_Buf缓冲区用于保存调制完成的采样点数据。

使用特权

评论回复
5
biechedan|  楼主 | 2014-4-30 00:21 | 只看该作者

3.2 正弦和余弦数据的获取


  上述算法中需要正弦或余弦各点的采样值,幅度为1的正弦各点采样值大多都是小数,而16位定点DSP芯片的操作数是整数,为此要设定小数点在16位二进制数中的位置,考虑到调制后波形的最大值是,因此对正弦或余弦的数值采用Q14表示法才能满足调制后数据的范围。显然,在汇编程序中按“.word x”形式直接输入正弦和余弦的各点采样值(Q14)比较繁琐,可以用下面的一段C语言程序生成正弦采样点数据文件(程序中已将正弦载波的频率归一化),然后在TC2.0软件的当前路径下将生成的包含文件sindata.inc移动到由软件cos2.O建立的工程文件夹内,用汇编伪指令.include将该文件包含进来即可省去繁琐的数据输入。用类似的程序也可生成需要的余弦数据文件。



使用特权

评论回复
6
biechedan|  楼主 | 2014-4-30 00:21 | 只看该作者

 4 实验结果


  首先,在软件开发环境ccs2.0(c5000)下进行OQPSK调制波形的仿真验证。将汇编语言源程序和命令连接文件一起编译、链接并装载运行,接着执行菜单命令View|Graph|Time Frenquency,打开Graph Property Dialog对话框,在该对话框中输入标题名“OQPSK调制信号波形”、变量0QPSK_Buf的起始地址0x0124(命令连接文件中将.bss段定位到DARAM的org=0060h上),并选择数据的长度为512、数据类型为16-bit signed integer及Qvalue的值为14,然后点击该ok按钮即可将OQPSK_Buf缓冲区的已调信号的采样值生成已调信号波形,如图4所示。为了验证OQPSK调制算法及产生的波形的正确性,图5又给出了相同的16位的数据流,在matlab环境下仿真出的OQPSK已调信号波形。两图的波形完全一致,且波形的最大幅度都为。



使用特权

评论回复
7
biechedan|  楼主 | 2014-4-30 00:21 | 只看该作者
 其次,在SEED-DEC5416硬件平台上对输出的调制波形进行验证。在附录中源程序的开始部分增加对TLC32044芯片初始化代码,然后再改用一个死循环重复将OQPSK_Buf缓冲区保存的已调信号数值依次送往该芯片,在示波器上就可观察到与图4近似完全相同的调制波形。另外,调制速率的大小可以通过从OQPSK_Buf缓冲区取数送D/A转换器后执行一段延时程序来控制。

  5 结束语

  本文在DSP处理器上设计实现的数字OQPSK调制器,省去了传统调制器的大量的硬件电路,具有功耗低、抗干扰能力强和软件可升级等优点。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

294

主题

7962

帖子

12

粉丝