蓝牙基带解调(GFSK:Gauss frequency Shift Keying )
蓝牙基带解调(GFSK:Gauss frequency Shift Keying )
- 前言
- FSK非相干最佳接收机(匹配滤波器解调)
- 相位差分解调
- 判决反馈均衡(DFE)
- 总结
前言
对于GFSK的解调,传统的FSK的非相干最佳接收机同样适用,只是要注意GFSK的两个调制频率是
f=±hRb/2f=\pm hR_b/2f=±hRb/2
其中RbR_bRb是符号速率。但是这种解调算法在正交FSK调制中很好用,因为两个频点信号相关性为0,也就是在各自的频点相关取模要不为1,要不为0。对于GFSK信号而言,两个频点具有一定的相关性,所以采用这种解调算法性能并不太好,但也可以达到蓝牙解调的门限要求。这种解调算法对于频偏具有很强的鲁棒性,可以对抗很大的频偏。
蓝牙基带GFSK调制最常用的解调算法是相位差分解调,就是调制时相位积分的逆过程,这里介绍的主要就是相位差分解调以及差分解调的优化解调方案判决反馈均衡(DFE)。GFSK调制可以参考GFSK调制程序.
FSK非相干最佳接收机(匹配滤波器解调)
FSK非相干最佳接收机的原理就与通信原理的书里一样,详细的推导可以参考老樊的《通信原理》。这里假设频点f2f_2f2表示发射符号“1”的单频信号频率,f1f_1f1表示发射符号“0”的单频信号频率。
那么解调框图和算法可以表示为:
Sn=sign(∣∫0Ty(t)e−j2πf2t∣2−∣∫0Ty(t)e−j2πf1t∣2)S_n = sign\left( \left|\int_0^Ty(t)e^{-j2\pi f_2t}\right|^2 - \left|\int_0^Ty(t)e^{-j2\pi f_1t}\right|^2\right) Sn=sign⎝⎛∣∣∣∣∣∫0Ty(t)e−j2πf2t∣∣∣∣∣2−∣∣∣∣∣∫0Ty(t)e−j2πf1t∣∣∣∣∣2⎠⎞
相位差分解调
对于最简单的相位差分解调算法,也是复杂度极低的解调算法,在蓝牙IC设计中很常用。原理就是取接收基带信号的相位,然后前后做差分,最后根据最佳采样直接判决。相位提取一般采用Cordic算法算出,也易于硬件实现,后面会更新Cordic算法原理和仿真。
相位提取和差分代码如下,没有加噪声以及通过低通滤波器,一般基带信号会经过一个低通滤波器,机有减小干扰和噪声的目的。
RX_phase = phase(TX_GFSK(1:end));
RX_phase_angle = angle(TX_GFSK(1:end));
RX_psd = diff(RX_phase_angle);
PSD_Rx = Oversign(RX_psd,pi);
%%Overflow function
function OS_output = Oversign(input,thre)Overflow_sign = find(abs(input) > thre);OS_output = input;for index = 1:length(Overflow_sign)if (input(Overflow_sign(index)) > 0)OS_output(Overflow_sign(index)) = input(Overflow_sign(index)) - 2*thre;elseOS_output(Overflow_sign(index)) = input(Overflow_sign(index)) + 2*thre; endend
end
这里也可以采用phase()函数,用了phase()函数,就不需要Overflow的函数了。因为采用angle函数,所以相位的范围是(±π\pm\pi±π)。超过范围会翻转,差分后的值会超过±π\pm\pi±π的表示范围。
然后就直接是采样判决了:
PSD_samp = PSD_Rx(6:TX.Oversample:end);
bits_rec = ceil((sign(PSD_samp)+1)/2);
判决反馈均衡(DFE)
判决反馈均衡算法是在相位差分解调的基础上的一个改进,本质是剔除因为GFSK调制时人为加入的一个符号间干扰(ISI)。调制时因为高斯滤波器横跨3个符号,所以对于当前符号,前后一个都对当前符号有干扰,DFE的思路就是通过前馈减小后一个符号的干扰,通过反馈剔除上一个符号的干扰。
调制时是通过FIR滤波器的思路,卷积了信号:
可以看到蓝色线就是高斯滤波器,红点就是上采样后的符号,经过卷积滤波就得到了相位积分前的相位,也是接收端相位差分后的样子,也可以看出最佳采样应该是什么样子。
既然是通过前馈和反馈两个滤波器,那滤波器的系数怎么确定呢,可以通过归一化的高斯滤波器的系数可以知道。因为高斯滤波器横跨三个符号,也就是36个点,最佳采样是间隔12,当前符号的最佳采样点是高斯滤波器的峰值,也就是归一化后的1,所以前后间隔12个点就是前馈和反馈的系数,也就是0.0315。
ff_coef = [-0.035,1,0.0315];fb_coef = [0.0315];ff_out = conv(ff_coef,PSD_samp);ff_len = length(ff_out);for index = 1:ff_lenif index >1fb_out = ff_out(index) - fb_coef*DFE_sybs(index)';elsefb_out = ff_out(index);endif ~sign(fb_out)DFE_sybs(index+1) = 1;elseDFE_sybs(index+1) = sign(fb_out);end end
DFE_bits = ceil((DFE_sybs + 1)/2);
总结
蓝牙GFSK的调制解调还有很多方法:如非相干维特比解调,基于劳伦特分解的系列算法等,但是上面介绍的两种是最常见的算法。现在国内几家做蓝牙IC公司(炬芯、恒玄,杰理、中科蓝汛、物奇科技)的性能门限都能达到-94dB,最厉害的就是物奇科技达到了-98dB。
蓝牙基带解调(GFSK:Gauss frequency Shift Keying )相关推荐
- 蓝牙基带调制(GFSK)
蓝牙基带调制(GFSK:Gauss frequency Shift Keying ) 前言 一.高斯滤波器 二.高斯滤波 三.相位积分 四.TX设置和信号波形 总结 前言 蓝牙发展到现在已经是5.2版 ...
- [转]蓝牙基带数据传输机理分析
蓝牙(Bluetooth)是一种新型.开放.低成本.短距离的无线连接接技术,可取代短距离的电缆,实现话音和数据的无线传输.这种有效.廉价的无线连 接技术可以方便地将计算机及外设.移动电话.掌上电脑.信 ...
- BlueTooth: 蓝牙基带数据传输机理分析
蓝牙基带数据传输机理分析 蓝牙(Bluetooth)是一种新型.开放.低成本.短距离的无线连接接技术,可取代短距离的电缆,实现话音和数据的无线传输.这种有效.廉价的无线连 接技术可以方便地将计算机及外 ...
- 蓝牙基带数据传输机理分析
蓝牙基带数据传输机理分析 ZDNet 网络频道频道 更新时间: 2008-01-05 作者: 来源: cww 本文关键词:蓝牙 无线网络 蓝牙(Bluetooth)是一种新型.开放.低成本.短距离的无 ...
- 蓝牙基带协议(baseband specification)
一.蓝牙基带协议(baseband specification)概述 1.组网方式 微微网(piconet) 点对点,点对多.一个主设备连接255个从设备,最多7个从设备处于active状态. 散射网 ...
- 蓝牙基带分配编号(设备/服务类型)详解
基带分配编号 为基带分配的编号标识了查询访问代码和设备/服务类别(CoD)字段. 通用和特定于设备的查询访问代码(DIAC) 该查询访问码(IAC)是寻找过滤的第一级 的蓝牙® 设备和服务.定义多 ...
- BlueTooth: 蓝牙基带
基带 基带就是蓝牙的物理层,它负责管理物理信道和链路中除了错误纠正.数据处理.调频选择和蓝牙安全之外的所有业务.基带在蓝牙协议栈中位于蓝牙无线电之上,基本上起链路控制和链路管理的作用,比如承载链路连接 ...
- 转载_BlueTooth: 蓝牙基带
基带 基带就是蓝牙的物理层,它负责管理物理信道和链路中除了错误纠正.数据处理.调频选择和蓝牙安全之外的所有业务.基带在蓝牙协议栈中位于蓝牙无线电之上,基本上起链路控制和链路管理的作用,比如承载链路连接 ...
- 蓝牙基带 比特流处理
7 比特流处理 蓝牙设备可使用下面段落定义的比特流处理机制. 在净荷从空中接口被发送之前,在发送器内会完成许多位操作以增强可靠性和安全性.一个HEC被加入到包头部,头部位以一个白化字扰码,且应用FEC ...
最新文章
- 栈和队列存储结构总结
- SAPMM模块配置目录
- webpack文件配置
- 出租WiFi到底靠不靠谱?
- 08-mysql-条件查询-常见函数与小结
- overridePendingTransition介绍
- 软件测试--面试时如何回答接口测试怎么进行
- js设计模式——8.中介者模式
- 自动化测试神器 之 python unittest 断言
- 人脸识别 java_利用Java调用OpenCV进行人脸识别
- 如何用excel制作xy曲线图_如何用excel制作表格?
- ospfdr选举规则_DR/BDR详细选举过程
- 我的世界:命名牌暗藏众多彩蛋,老玩家:原来还能这样玩啊!
- 服务器修复划痕,【DIY】自己动手修复屏幕划痕及建议
- 让单个单元格显示两个数据
- Mac之时间机器的使用
- linux中license路径,Elasticsearch安装过程中的license问题解决办法
- gettime 函数 java,Java ZipEntry getTime()用法及代码示例
- Linux Ubuntu下安装Fortran90编译器
- unity www下载