百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

带频偏校准的GMSK解调器设计与实现

moboyou 2025-05-13 22:12 28 浏览

郑婧怡1,高绍全1,姜汉钧1,张 春1,王志华1,2,贾 雯2

(1.清华大学微电子所,北京100084;2.深圳清华大学研究院,广东 深圳518055)

摘 要:提出了一种在零中频低功耗蓝牙接收机中使用的GMSK解调器。GMSK是一种恒包络调制方式,针对其解调最重要的判决依据是相位变化,而接收机的本振频率与发射机的载波频率误差会对相位产生干扰。因此提出了一种频偏校准算法来解决频偏对解调性能的影响。该算法由改进的一比特差分解调与CORDIC(COordinate Rotation Digital Computer)算法结合实现,与传统的频偏校准算法相比复杂度大大降低。在150 kHz以内的频偏条件下,要达到10-3误码率要求,需要的信噪比与无频偏时相比差距在1 dB以内。该解调器通过Verilog实现,并用FPGA进行验证。

中图分类号:TN4

文献标识码:A

DOI:10.16157/j.issn.0258-7998.2016.06.028

中文引用格式:郑婧怡,高绍全,姜汉钧,等. 带频偏校准的GMSK解调器设计与实现[J].电子技术应用,2016,42(6):101-104.

英文引用格式:Zheng Jingyi,Gao Shaoquan,Jiang Hanjun,et al. A GMSK demodulator with frequency offset estimation and calibration[J].Application of Electronic Technique,2016,42(6):101-104.

0 引言

在通信系统中,接收机下变频时本振的不稳定性以及传输时的多普勒效应往往会给接收机系统引入频偏误差。这个频偏误差随时间累积,会对解调性能产生严重的影响。

传统的解决方式是通过PLL来完成载波同步,从根本上消除频偏的存在,但是这种方式复杂度极高,不便于实现。现在大多数方法是从接收到的信号中估计频偏信息,并进行校准。这种估计频偏的算法分为基于数据辅助(data-aided)和非数据辅助(non-data-aided)两大类。

非数据辅助算法不依赖于提前知道接收到的数据信息[1-3],但具有估算精度较低的缺点。与非数据辅助算法相比,基于数据辅助的频偏估计算法在估算精度、范围以及复杂度方面都有更好的性能[4-6]

图1是低功耗蓝牙BLE(Bluetooth low energy)协议定义的包格式。其中前导码为8 bit,接入地址(Access Address)为32 bit,在解调时这40 bit的内容都是已知的。因此,这里提出了一种基于数据辅助的频偏估计和补偿算法。该算法结构简单且精度高,解决了现有频偏校准算法中复杂度高、系统延迟大以及存在残余频偏等缺点。

本文提出了一种应用在零中频低功耗蓝牙接收机中的GMSK解调器的结构,重点研究了频偏校准算法。

1 频偏校准算法

众所周知,相干解调的性能优于非相干解调,但是复杂度较高,在面积和功耗方面的代价较大。由于BLE协议的首要目标是低功耗,因此这里选择了非相干解调的方式。考虑到GMSK是一种恒包络调制方式,GMSK解调器可以通过差分解调来实现。

考虑到频偏和相偏的影响,GMSK基带信号可以由式(1)表示:

该式与相邻码元的相位差成正比,因为GMSK的相位路径在每个码元区间内是单调上升或者单调下降的,因此通过判断OBsin的正负就可以得到解调结果。可以看到,在差分运算的过程中,相偏被消除,但是频偏的影响依然存在,并且会对判决结果产生影响。

为了进行频偏估计,对传统的一比特差分运算进行改进,增加一条余弦支路:

式(6)在坐标系中,代表了角度为ΔωT的一条直线,为了从中提取出ΔωT的值,使用了CORDIC算法。CORDIC是一种逐次迭代算法,它通过多次角度旋转和象限判定使这条线逼近x轴,记录下旋转轨迹即可计算出原始角度[7]

CORDIC算法每次旋转的角度是一系列特殊的值,符合式(7)的关系。

如图2所示,在坐标系中,顺时针旋转一个角度αi,可以表示为:

联立式(7)、式(8),整理后可得到:

这样,CORDIC算法把实现起来困难的角度旋转变成了简单的坐标加减运算,大大降低了硬件实现的复杂度。

频偏校准的结构图如图3所示。这里选择了9级CORDIC迭代,频偏估计和频偏补偿通过2个CORDIC分别实现。第一个CORDIC用来进行频偏估计,记录下频偏角旋转的路径,第二个CORDIC通过对OBcos+i·OBsin进行相同方向的旋转完成频偏补偿。

2 GMSK解调器

图4是GMSK解调器的整体结构图。其中改进的一比特差分解调和频偏校准算法在第1节中已经详细描述,下面主要介绍其他模块的功能和实现方法。

2.1 参考电平计算

本文设计的GMSK解调器应用在零中频接收机系统中,零中频接收机引入的直流失调会严重影响到解调器性能。参考电平的计算就是为了消除直流失调的影响。这里使用2 048个采样点的均值作为直流失调的估算值。

2.2 匹配滤波器

在GMSK调制时,经过了一个高斯成型滤波器,目的是减小发射信号的带宽,但同时在时域上引入了交叠,产生了码间串扰。匹配滤波的作用就是减小码间串扰对解调的影响,这里选择的匹配滤波器是与成型滤波器相对应的一个高斯滤波器。

2.3 幅度归一化

中频ADC的输出幅度受到信号强度的干扰,会在一定的范围内变化,而信号幅度的变化会影响到同步相关运算的结果。为了使同步的相关阈值更好选取,提高同步的概率,需要对接收到的信号幅度进行归一化。

传统的归一化方式需要存储大量的数据,且具有很大的延迟,利用GMSK信号I/Q两路的相关特性,提出了一种新的归一化方式,如式(11)所示:

这种归一化方式对I/Q支路的相位信息没有改变,不会影响解调的结果。除法和开方通过查找表实现,运算可以在一个时钟周期内完成,优化了延迟。

2.4 定时和同步

ADC的采样频率是8 MHz,BLE规定的码元速率是1 Mb/s,因此对应每个码元有8个采样点。定时就是为了从中找到最佳的采样点进行降采样。

GMSK信号的相位路径在一个码元周期中是单调上升或者单调下降的,因此根据式(2),一比特差分运算的正弦支路OBsin在一个码元周期内也是单调变化的。因此可以找到一个采样点,使得在一段长度内累积OBsin的绝对值之和达到最大值,此时OBsin离判决门限最远,减少了误判的概率,即把该点作为最佳采样点[8]

同步的目的是在接收到的序列中找到包头的位置,这里通过滑动相关来实现。首先把接收到的40 bit数据与图1中的前导码以及接入地址做相关运算,如果相关结果小于阈值,则数据向后滑动一个码元,重复相关运算,直到相关结果超过阈值实现数据的同步。

2.5 判决和解调

考虑到GMSK的码间串扰特性,采用了判决反馈算法来完成解调[9]

正如在第2小节讨论的,第n位的相邻码元相位差会受到第n+1位和第n-1位的影响。因为解调是顺序进行的,在解调x[n]时,x[n-1]是已知的,因此可以根据x[n-1]的值对x[n]的判决条件进行修正,进而减小码间串扰的影响。

3 仿真结果及讨论

根据BLE协议的规定,在一个数据包内,频偏最大不超过±150 kHz。针对各种不同的频偏情况,本文仿真了GMSK解调器的误码率曲线。这里使用的GMSK信号BT参数为0.5,每一个数据包长度为376 bit,每个点的误码率通过3 000包数据仿真得到,且假设信号在加性高斯白噪声信道传输。

图5是有无频偏校准情况下对比的误码率曲线图。其中三角标记的为理想没有频偏情况下的误码率曲线,圆形标记的为50 kHz频偏且没有做频偏校准情况下的误码率曲线,而方形标记的为50 kHz频偏且做了频偏校准情况下的误码率曲线。可以看出频偏校准对解调器的性能有很大的影响,在10-2误码率条件下,解调器性能改善了约6 dB。

图6是在0 kHz、50 kHz、100 kHz以及150 kHz频偏条件下的误码率曲线。

其中圆形标记的为理想没有频偏情况下的误码率曲线,要达到BLE协议规定的10-3误码率要求,需要12.8 dB的SNR,优于传统的差分解调需要的15 dB信噪比的性能。

方形、三角和米字标记的分别是50 kHz、100 kHz以及150 kHz频偏下的误码率曲线。可以看出,频偏在50 kHz以内时,误码率曲线与理想情况几乎重合。在最大150 kHz频偏条件下,要达到10-3误码率,需要13.7 dB的SNR,与理想情况相比,解调器性能下降在1 dB以内。

该算法同样适用于负频偏的情况,其性能与正频偏时完全相同。

4 结论

本文设计了一款应用在零中频低功耗蓝牙接收机中的GMSK解调器。重点介绍了一种新的频偏校准的算法,通过把改进的一比特差分解调和CORDIC算法结合,可以有效地处理150 kHz以内的频偏干扰;通过CORDIC旋转和对差分运算模块复用降低了硬件开销。设计由Verilog语言实现,并通过FPGA验证,结果表明该解调器误码率性能优良,硬件复杂度低,适合应用于低功耗蓝牙通信系统中。

参考文献

[1] Yao Yingwei,GIANNAKIS G B.Blind carrier frequency offset estimation for OFDMA-based wireless networks[C].IEEE Military Communications 2004:1233-1239.

[2] Zhang Xiupei,RYU H G,JO B G,et al.Analyses and suppression method of frequency offset and timing offseet in FH-OFDM system[C].First International Conference on Advances in Satellite and Space Communications.Colmar,France,2009:123-127.

[3] RAMLALL R.Non-data-aided joint estimation of time and frequency offset in OFDM systems using channel order based regression[C].IEEE Military Communications Conference.San Diego,USA,2013:73-77.

[4] LIN J N,CHEN H Y,WEI T C,et al.Symbol and carrier frequency offset synchronization for IEEE802.16e[C].IEEE International Symposium on Circuit and Systems.Seattle,USA,2008:3082-3085.

[5] FUSCO T,PETRELLA A,TANDA M.Data-aided symbol timing and CFO synchronization for filter bank multicarrier systems[J].IEEE Transactions on Wireless Communications,2009,8(5):2705-2715.

[6] Liu Jingxian,Hao Jinxing,Wang Jintao.A low complexity frequency offset estimation for dual PN TDS-OFDM[C].IEEE International Symposium on Broadband Multimedia Systems and Broadcasting.Ghent,Belgium,2015:1-4.

[7] 杨宏,李国辉,刘立新.基于FPGA的CORDIC算法的实现[J].西安邮电学院学报,2008,13(1):75-77.

[8] 赖文强,赵建业.一种面向DSP实现的GMSK位同步算法[J].无线电工程,2004,3(2):12-14,61.

[9] YONGACOGLU A,MAKRAKIS D,KAMILO F.Differential detection of GMSK using decision feedback[J].IEEE Transactions on Communications,1988,36(6):641-649.

相关推荐

比尔·盖茨回忆录——《源代码》读后感

这本书和我之前看的有关比尔·盖茨的传记明显不同。之前看的有关比尔·盖茨的传记,感觉把很多有关他的特立独行渲染的似乎真命天子一般,好像他干什么都是与众不同,也很少关注他少年时期的朋友交往,内心情感,似乎...

微信2022跨年之夜红包封面推出:哔哩哔哩、五月天

IT之家12月31日消息,今晚是跨年之夜,微信官方在2022新年送你一款特殊纪念的封面,又一岁荣枯,跨年之夜红包封面陪你过。01哔哩哔哩12月31日晚上11:00开始,打开微信...

只需要四步,就能完成PHP搭建(php搭建教程)

搭建php的方法主要分为独立安装和集成安装两种,独立安装需要分别下载apache,mysql和php,而集成只需要下载一个软件安装包,比较简单,很适合新手。集成安装包有WampServer、appse...

转发五个群就能看完整视频?中招了吗

五一亲友聚会,除了久违的见面外个,各种八卦也在亲友间传递,比如“转发五个群就能看完整视频”这个梗,硬是听得小狮子一愣一愣的,于是乎,还真花时间了解了一下……转发五个群就能看完整视频这其实并不是什么新鲜...

PHP 7.0.2正式版发布:WordPress速度提升3倍!

提到PHP,肯定会有人说这是世界上最好的编程语言。单说流行程度,目前全球超过81.7%的服务器后端都采用了PHP语言,它驱动着全球超过2亿多个网站。上月初PHP7正式版发布,迎来自2004年以来最大的...

微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法

这段时间一直比较忙,一忙起来真感觉自己就只是一台挣钱的机器了(说的好像能挣到多少钱似的,呵呵);这会儿难得有点儿空闲时间,想把前段时间开发微信公众号支付遇到问题及解决方法跟大家分享下,这些“暗坑”能不...

php 发送微信订阅消息(php微信推送通知)

<?phpnamespaceapp\api\service;useapp\api\exception\ApiException;useapp\api\traits\Singlet...

微信支付-JSAPI模式开发(微信支付开发教程)

之前写了两篇文章都不是关于技术类的,这个号主要还是以分享技术为主,第三篇必须得上技术类的文章,不然会对不起大家的,所以就有了今天的文章。现在微信支付开发很火,也不是特别难,网上也很多别人整理的教程,也...

php实现三方支付的方法有哪些?(php实现三方支付的方法有哪些呢)

支付模块是各个公司中公司和用户之间的交易桥梁,构建一套易用,安全,便捷的支付环境是每个公司的首要任务。在上一家公司我负责搭建该功能模块,在此对在做支付模块需要准备的资料、遇到的问题和以后规划的设想在这...

如何用php实现个人网站支付(如何用php实现个人网站支付密码)

支付的必要性现如今电商行业的发展,大部分的网站都需要支付功能,比如商城。公众号,小程序等,但是大部分都需要企业的资质才可以申请。对于很多个人创业者或者开发者来说就不太方便,因为没有相应的公司资质。所以...

微信支付配置参数:支付授权目录、回调支付URL

一、开通微信支付的首要条件是:认证服务号或政府媒体类认证订阅号(一般认证订阅号无法申请微信支付)二、微信支付分为老版支付和新版支付,除了较早期申请的用户为老版支付,现均为新版微信支付。三、公众平台微信...

PHP实现微信支付及退款流程实例(php对接微信支付教程)

微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可。本篇文章后端使用的是php,侧重于整个支付的流程和一些细节方面的东西。所以使用其他后端...

PHP开发APP端微信支付(php实现微信支付功能)

微信支付很简单,你可以参考微信支付开发文档,一定要仔细阅读开发文档,可以让你少踩点坑;准备工作完成后就是配置参数,调用统一下单接口,支付后异步回调三步。微信开发文档:pay.weixin.qq.com...

Python入门小游戏之坦克大战,不懂编程都能做出来,附所有源码

谁说不懂python就不能用python开发小游戏?这份教程手把手教你用python开发坦克大战小游戏,不懂编程也能学会,只要照着教程做,不仅能做出这个小游戏,还能掌握很多python的基础知识哦。下...

程序员python入门课,30分钟学会,30行代码写爬虫项目

现在很多人学习编程,最开始就是选择的python,因为python现在比较火,薪资水平在程序员领域也是比较高的,入门快,今天就给大家分享一个用python写的小爬虫项目,只需要30行代码,认真学习,...