612010年第07期,第43卷通信技术Vol.43,No.07,2010总第223期CommunicationsTechnologyNo.223,TotallyQPSK数字解调与FPGA的实现朱玉颖,杨小华,姚远程(西南科技大学信息工程学院,四川绵阳621010)【摘要】软件无线电接收机,要求解调模式灵活可变,需设计一个基本的IQ正交解调模型,通过参数设置来改变解调模式。介绍一种四相相移键控(QPSK)的数字解调方案,以现场可编程门阵列(FPGA)来实现NCO、DDS、数字相乘、FIR滤波等关键算法。通过原理设计、Simulink系统仿真、VerilogHDL语言编程和FPGA实现,完成了QPSK数字解调器的电路设计,通过仿真并下载试验,得到了良好的解调质量。【关键词】QPSK解调;FPGA;FIR滤波【中图分类号】TP393【文献标识码】A【文章编号】1002-0802(2010)07-0061-03QPSKDigitalDemodulationandFPGAImplementationZHUYu-ying,YANGXiao-hua,YAOYuan-cheng(InformationEngineeringInstitute,SouthwestUniversityofScienceandTechnology,Mianyang,Sichuan,621010,China)【Abstract】Software-radioreceiver,requiresaflexibleandvariabledemodulationmode,thusitisnecessarytodesignabasicmodelofIQquadraturedemodulation,andbyparameterssetting,tochangethedemodulationmode.ThepaperdescribesaoverallschemeofQPSKdigitalcoherentdemodulation,includingthekeyalgorithmforachievingNCO,DDS,digitalmultiplicationandfilteringbyFPGA.Inthispaper,QPSKdemodulatordesigniscompletedbyusingprincipledesign,Simulinksimulation,VerilogHDLlanguageprogrammingandFPGA.Thedownloadingexperimentsindicatethatthissystempossessesagoodqualityofdemodulation.【Keywords】QPSKdemodulation;FPGA;FIRfiltering0引言QPSK调制信号[1]是抑制载波的信号,无法用常规的锁相环或窄带滤波器直接提取参考载波,但它又不同于一些连续相位调制信号,其载波相位变化只能取有限的几个离散值,这就隐含了参考载波的相位信息。所以,可以通过非线性处理,消除信号中的调制信息,产生与原载波相位有一定关系的分量,然后再提纯该信号,恢复已被抑制的载波信号,进而完成信号的相干解调[2]。QPSK调制由于具有较好的频带利用率[3],在现代卫星通信系统中得到了广泛应用。1NCO和FIR滤波器的设计数控振荡器一般由相位寄存器、相位累加器和正弦波查找表等部分组成。正弦波样本可以用实时计算的方法产生,但这只适用于信号采样频率很低的情况。在软件无线电超高速信号采样频率的情况下,NCO[4]实时计算的方法比较困难。此时,用NCO产生正弦波样本最有效、最简便的方法就是查找表法。其工作原理是,通过相位累加器产生的地址信息,输出与当前时刻的相位值所对应的正弦值。此时NCO输出的正弦波的频率为word·2clknffφ⎛⎞=⎜⎟⎝⎠。通过设定NCO的wordϕ的大小,来产生希望的频率的正弦波;反之,wordϕ的大小是根据已知正弦波的频率计算得到的。例如,如果NCO的相位累加器的时钟频率为100MHz,相位累加器的位数为16位,wordϕ为8000H,则NCO输出的正弦波频率为168000H·2f⎛⎞=⎜⎟⎝⎠100MHz50MHz=。借助MATLAB[5]生成ROM中定点正、余弦波形数值,形成文件并加载到ROM中。利用MATLAB计算出正、余弦波形的浮点值[5],并量化为16比特的定点数值。FIR[6]滤波器的设计采用窗函数设计方法,这种方法也称傅立叶级数法,一般是先给出所要求的理想滤波器频率响应j(e)wdH,要求设计一个FIR滤波器频率响应()()()dhnwnhn=来逼近j(e)wdH。但是设计是在时域进行收稿日期:2010-01-11。基金项目:国家自然科学基金资助项目——基于软件无线电的中频数字化接收机技术研究(批准号:10876035)。作者简介:朱玉颖(1977-),女,讲师,主要研究方向为通信与信号处理;杨小华(1985-),女,硕士研究生,主要研究方向为信号分析与处理;姚远程(1962-),男,教授,主要研究方向为卫星通信及软件无线电技术。62的,因而先由j(e)wdH的傅立叶反变换导出)(nHd:πjjπ1()(e)ed2πddhnHωωω−=∫。(1)在MATLAB中提供了相应的函数如fir1(N,Wn,‘窗函数代号’)和fir2(N,F,M,‘窗函数代号’)来产生各种基于窗函数的FIR滤波器。现根据设计的实际需求,采用窗函数设计方法设计30阶低通滤波器。然后通过Matlab仿真得到系数,再采用Xilinx公司提供的IP核进行实现。fbe=[00.250.451];damps=[1100];h=fir2(30,fbe,damps);freqz(h)。2QPSK解调算法的仿真与实现QPSK调制解调[7]原理的Simulink[8]仿真模型如图1所示。OUT1OUT1LN1OUT2LN1OUT1LN1OUT1++BUTTERBUTTER2·sin(4pi·u+pi/2)TIME2·cos(4pi·u+pi/2)TIMELN1OUT1LN1OUT1LN1OUT2LN2图1QPSK调制解调的Simulink仿真在图1中,左侧为调制器部分,包括QPSK码元产生模块(QPSKSource)、串并转换模块(ser2par)、调制器模块(modulator)和加法器。右侧为解调器部分,包含本地载波(LocalCarrier)、乘法器(Product)、低通滤波器(LowpassFilter),抽样判决器,并串变换模块。示波器模块(Scope)用于观察各路波形。图1中的QPSK、串并转换模块和并串转换模块为组合后的子系统,如图2和图3所示。图2串并转换模块图3并串转换模块原始码元由“贝努利二进制随机数发生器”(BernoulliBinaryGenerator)产生,对它的输出作简单调整可得到-1或1的伪随机码输出,即是QPSK调制的信号源。而两路输入由正弦波模块(SineWave)的输出经分路器(Demux)产生,设置a路调制器中的正弦波模块属性中的相位(Phase)为[0,π],可得到初相位分别为0和π的正弦向量波形,设置b路调制器中的正弦波模块属性中的相位(Phase)为[3π2,π2],可得到初相位分别为3π2和π2的正弦向量波形。仿真中,QPSK的调制采用调相法[9]。即将QPSK的双比特码元(a,b)转换为I、Q两路码元,对其分别作BPSK调制,再将两路调制波形相加得到QPSK信号,其相位编码逻辑关系如表1所示。表1QPSK信号码元与相位逻辑关系abI路调制输出/(o)Q路调制输出/(o)合成相位/(o)1102703150118027022500180901351009045QPSK信号的调制器仿真波形如图4所示。从上至下,依次为:①输入信号码元;②经串并转换后的a路信号码元;③经串并转换后的b路信号码元;④I路调制波形;⑤Q路调制波形;⑥合成后的QPSK信号。观察信号2和信号3可知输入信号经串并转换后,有一个周期的延迟,且信号周期变为两倍。信号4和信号5中均包含两种相位的调制波形,合成后的信号6包含了四种相位,与表1中的关系相符。图4QPSK调制的仿真波形QPSK信号的解调器仿真波形如图5所示。从上至下,依次为:①QPSK调制信号;②I路载波;③Q路载波;④I路乘法器输出;⑤Q路乘法器输出;⑥I路通过低通滤波后的波形;⑦Q路经过低通滤波后的波形。输出判决模块的主要作用是根据滤波后的数据,依据算法的判决规则,得出基带的数据码流。判决规则是,如果滤波后的数据为正数,则基带数据判决为0,如果滤波后的数据为负数,则基带数据判决为1,如果滤波后的数据为零,则判决成与前一个判决值相反的数据,即前一个为0,则为1,前一个为1,则为0,这样为了保证基带码流中不会出现长的连0或者长的连1。用Verilog语言编写代码实现该部分,代码的实现方法是:当进入一个有符号的数据,由于有符号数的最高位是符号位,因此判断最高位的值,当为“1”时,则输出“0”;当为“0”时,则输出“1”。63图5QPSK解调的仿真波形并串变换模块采用多路器电路原理,由时钟来控制输入的两路信号的输出情况。本文当时钟为高电平时,输出第一路为低电平时,输出第二路。因此,总的输出信号的频率是输入信号频率的2倍。用Verilog语言编写代码,通过输入两组数据“11011000111”和“010011000111”进行测试,理论输出应为“101100101101……”。测试结果如图6所示。图6并串变换波形输出结果示意3结语文章介绍了基于软件无线电的全数字QPSK解调方案,通过下载试验,得到了具有良好实时性和可靠性的解调模块。设计思路及实现流程,也可以应用于包括MSK、QAM等常用的解调器。参考文献[1]LINNY.ASelf-normalizingSymbolSynchronizationLockDetectorforQPSKandBPSK[J].IEEETrans-actionsonWirelessCommunications,2006,5(02):347-353.[2]苏伟.基于软件无线电的BPSK/QPSK解调器的研究[D].北京:北京化工大学,2008.[3]VIJAYKG,YIHCW.ModulationandDemodulationTechnologies[J].TheElectricalEngineeringHandbook,2005(03):971-981.[4]安效君,王力男.NCO的数字化实现及应用[J].无线电通信技术,2004,30(02):51-52.[5]候周国,钱盛友.基于Matlab编程的QPSK的仿真[J].广西师范大学学报:自然科学版,2005(03):21-24.[6]叶仁泽.基于MATLAB的FIR数字滤波器的设计[J].科技资讯,2008(29):34-36.[7]韩露,徐钊,陈婕,等.一种过零脉宽检测QPSK全数字解调器及其FPGA的实现[J].通信技术,2008,41(08):4-6.[8]李媛媛,徐岩,王靖岳.对MATLAB实现数字信号的QPSK的频谱分析[J].通信技术,2008,41(01):41-42.[9]LIMD.AModifiedGardnerDetectorforSymbolTimingRecoveryofM-PSKSingals[J].IEEETransacti-ononCommunications52,2004(10):1643-1647.(上接第60页)同,对吞吐量有影响的是12C,而12C在有协作时的较没有协作时的小。图4比较了有协作和无协作下,系统最优感知时间和最大吞吐量的折衷。在感知时间为大约3ms的时候系统达到最大吞吐量。虽然1u的感知时间较未协作时有少量增加,但大大缩短了2u用户的感知时间,整个认知系统的最大吞吐量也有所增大。0246810126.577.588.599.51010.5u1+u2()吞吐量无中继u