首页 > 其他分享 >BLE中的调制指数

BLE中的调制指数

时间:2023-10-13 16:02:13浏览次数:39  
标签:frac FSK Delta BLE 调制指数 频偏

说明

​ 在BLE的核心规范文档中,对PHY层的调制方式说明如下:

The modulation is Gaussian Frequency Shift Keying (GFSK) with a bandwidth-bit period product BT=0.5. The modulation index shall be between 0.45 and 0.55. A binary one shall be represented by a positive frequency deviation, and a binary zero shall be represented by a negative frequency deviation.

其中重点说明了

  1. BLE使用高斯频移键控方式调制(GFSK)
  2. 带宽和比特周期的乘积(bandwidth-bit period product)BT=0.5
  3. 调制指数(modulation index)应该在0.45和0.55之间

对于第一点GFSK这个网上有很多资料,这里就不多说了。而对于2、3两点,这些参数是什么,为什么要设置这个值。很多人就不太清楚了。这里分享下我研究出来的一些信息。

FSK调制特性

FSK的调制指数

​ 这里的GFSK调制指数其实和一般的AM、PM调制指数定义是有一定区别的。FSK技术通过多年的发展,衍生出了BFSK(二进制FSK)、BFSK的改进MSK(最小间隔FSK)、MSK的改进GMSK(高斯MSK)。不过不管怎么发展,源头一般都是FSK。一般而言FSK的通用公式如下:

一般而言,非角度调制定义中的调制指数的\(m_f\)定义如下

​ 通过观察我们发现FSK信号的函数形式跟传统的FM调制函数形式差别较大。这里虽然FSK没办法凑出类似FM那样的调制指数形式,但是从定义出发我们知道。所谓调制指数代表了调制的最大频偏。对于FSK,最大频偏\(\Delta f\)可以看成高频点\(f_1\)和第频点\(f_2\)的差,即

\[\Delta f=f_1-f_2 \]

这里我们做归一化处理,将最大频偏除以基带频率\(f_B\),并将其定义为调制指数\(h\),则

\[h=\frac{\Delta f }{f_B} \]

为什么要做归一化处理,不直接用最大频偏作为调制指数呢?这主要是为了下面的功率谱分析准备。

FSK信号的功率谱

如下图所示,FSK信号的功率谱如下图所示。

上图中FSK的中心频率\(f_0\)为

\[f_0=\frac{f_1+f_2}{2} \]

则\(f_1\)和\(f_2\)可以改写为

\[f_1=f_0+\frac{\Delta f}{2}=f_0+\frac{hf_B}{2} \]

\[f_2=f_0-\frac{\Delta f}{2}=f_0-\frac{hf_B}{2} \]

将上述\(f_1\)和\(f_2\)带入到功率函数\(P_{2FSK}(f)\)中,换成如下形式

\[P_{2FSK}(f)=\frac{1}{4}[P_{s1}(f-(f_0+\frac{hf_B}{2})+P_{s1}(f+(f_0+\frac{hf_B}{2})]+\frac{1}{4}[P_{s2}(f-(f_0-\frac{hf_B}{2})+P_{s2}(f+(f_0-\frac{hf_B}{2})] \]

通过上图可以很好的看到,通过对调制指数进行归一化处理,当

\[f=f_0\pm k*fb,k为任意常数 \]

带入前面的\(P_{2FSK}(f)\)时,观察功率谱图可以得到,当\(f_b\)不变时,不同的调制指数影响着功率谱的形状。调制指数越大,高频点和低频点的功率波峰分的越开,3dB带宽越宽;调制指数越小,功率越集中,带宽越小;

\(h\)不变的话,\(f_b\)也会影响功率谱带宽,但不会影响形状,只是把图形进行左右伸缩。

MSK

那多大的调制指数合适呢,这里涉及一个信号正交的问题。我们知道正交的信号处理起来是非常方便的。


上述中\(T_B\)为基带的比特周期,即

\[T_B=\frac{1}{f_b} \]

上面图中的\(f_1-f_0\)即上一节讲的最大频偏\(\Delta f\),那么上述结论可以改为。

非相干检波接收,要求

\[f_1-f_0=\frac{m}{T_b} \]

\[\Delta f=m * f_b \]

\[h=\frac{\Delta f}{f_b}=m \]

同样,对于相干接收,要求

\[h=\frac{\Delta f}{f_b}=\frac{n}{2} \]

上述中\(m,n\)为正整数。则可以看到,对于非相干检波接收,最小调制指数为1。对于相干接收,最小调制指数为0.5。这样的信号我们就称为最小间隔FSK,也叫MSK。

高斯滤波器

​ 前面讨论的MSK具有包络恒定,带外功率谱密度下降快的有点。为了使信号的功率谱密度进一步集中和减小对相邻信道的干扰。可以在MSK调制前将矩形信号脉冲先通过一个高斯型的滤波器。

如下图所示,高斯滤波器的带宽\(B\)做归一化处理,一般以其和基带频率做归一化,称为带宽-比特周期乘积,即

\[BT_b=\frac{B}{f_b} \]

\(BT\)值的大小决定了高斯滤波器的带宽,一般BT值越小,能量越集中,但是码间串扰也会越严重。

小结

​ 看到这里其实也应该对BLE规范中的调制指数和BT值规定也应该大致明白是什么东西了。对于BLE,调制指数规定了最大频偏、功率谱特性。BT值指示了GFSK用的高斯滤波器的带宽。可以说,这两个参数很好的将BLE所使用的GFSK信号的调制特征给表现了出来。

BQB测试

​ 在BLE中的BQB,对于BLE的调制特性测试做了规定。在BLE中主要测试两个参数,\(\Delta f_1 和 \Delta f_2\)。这两个所谓的\(\Delta f\)参数,本质是表征了前面讲的调制指数\(h\)。

在前面的内容我们提到,所谓调制指数本质就是最大频偏。

\(\Delta f_1\)

​ 对于每个00001111bin序列中的第二、第三、第六和第七位,中心频率的偏移量的绝对值被记录为\(\Delta f_{1max}\)。\(\Delta f_{1max}\)定义为每个单独位的平均偏差。计算包中所有\(\Delta f_{1}\)最大频率的平均频率值计算并记录为\(\Delta f_{1avg}\)。简单来讲,即上图中红圈框住的长方形的长。

​ 很明显,\(\Delta f1\)和调制指数的关系为

\[h=\frac{\Delta f}{f_b}=\frac{2\Delta f_1}{f_b} \]

BLE规定\(h=[0.45,0.55]\),则当BLE在1Mbps速率情况下

\[f_b=R_b=1Mhz \]

\[h=[0.45,0.55]=\frac{2\Delta f_1}{f_b} \]

\[\Delta f1=[225,275]kHz \]

\(\Delta f_2\)

​ \(\Delta f_2\)和\(\Delta f_1\)类似,不过测试的码元类型变成了01010101。BQB规定每个单独的位至少要被过采样32次。中心频率的偏移量的绝对值被记录为\(\Delta f_{2max}\)。\(\Delta f_{2max}\)定义为每个单独位的平均偏差。计算包中所有\(\Delta f_{2}\)最大频率的平均频率值计算并记录为\(\Delta f_{2avg}\)。

​ BLE规定,在10个LE测试数据包上记录的所有∆f2最大频率值中,至少有99.9%大于185 kHz。也就是

\[\frac{\Delta f_2}{\Delta f_1}\geq 0.8 \]

为了保证样本文档,应该保证多次采样,并且99%的采样结果都满足上面的要求。

小结

​ 对于\(\Delta f_1和\Delta f_2\),本质上表征了最好情况和最恶劣情况下的最大频偏。对于11110000这种序列,明显的可以看到高低频频点稳定,这时候的最大频偏应该是最好进行采样判断的;而对于10101010,则是最恶劣的情况,高低频点以最高频率进行切换,高低频点稳定时间短,导致采样难度上升。这里BLE的规定本质就是最差的频偏不能小于最好的频偏的80%。

标签:frac,FSK,Delta,BLE,调制指数,频偏
From: https://www.cnblogs.com/simpleGao/p/17762360.html

相关文章

  • lower_case_table_names=1 mysql启动失败问题
    1先停掉mysql数据库2删除mysql数据,在初始话时,数据所在的位置3修改/etc/my.cnf配置,添加lower_case_table_names=14重新初始化./mysqld--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data--initialize-insecure--lower-case-table-names=1;注意初始化......
  • el-table表格行状态进度条
    一、场景引入项目某些表格,需要展示每条数据不同进度状态,使用进度条来展示二、解决方案利用定时器+el-progress组件,列表数据需要返回数据总时间,计算得出进度代码如下:getTableData(){let_that=this;if(this.showLoading){th......
  • BLE_HID类设备连接上主机后发数据返回错误码解决方法
    继上文HID设备的使用,BLE_HID例程增加报表描述符使用我们在BLE_HID类蓝牙设备应用中调用HidDev_Report函数发送数据,如果出现了返回以下错误码时,应该是HID数据通道未能完全成功打开,我们可以在代码中添加处理以手动辅助开启,#definebleInvalidTaskIDINVALID_TASK......
  • BLE_HID例程增加报表描述符使用
    我们一般hid类设备都是键鼠设备居多,在此还是以CH582的Hid_keyboard程序为例,修改其中的hidkeyboardservice.c文件,增加了:16bit全键盘、多媒体键(如音量+,音量-,静音等)、系统控制键(电脑休眠、电脑关机),由于蓝牙在部分电脑中休眠期间蓝牙驱动是关闭的,因此无法通过蓝牙唤醒电脑,鼠标数......
  • [iOS开发教程-1]Hello UITableView!
    http://www.iphonedevcentral.com/hello-uitableview/ HelloUITableView!Ok,let’sstartwithsomethingreallysimple.We’llbecreatinganapptokeeptrackofyourDVDlibrary. Theappwillhaveatableview,adetailviewandsomebasicnavigationalcompo......
  • 一行代码解决a-table当中rowKey报错的问题
    问题描述:在a-table中如果不绑定rowKey则会在控制台报错 解决办法:如果列表中没有返回唯一值,则可以这么写:rowKey='record=>record.id'或者:rowKey="(record,index)=>{returnindex}"> ......
  • element-ui 解决 table 里包含表单验证
    实际项目中的场景,需要在table里做表单的验证,如图效果: 其实问题关键就在于如何给el-form-item动态绑定prop      :prop="'tableData.'+scope.$index+'.字段名'"   ......
  • 虚拟器启动 SMBus Host controller not enabled
    虚拟器启动提示:SMBusHostcontrollernotenabled虚拟机启动老提示这个,正常进入不影响使用:SMBusHostcontrollernotenabled查一下这个模块看看lsmod|greppiix4禁用这个模块sudovim/etc/modprobe.d/blacklist.conf编辑这个文件,最后一行加:blacklisti2c_piix......
  • centos 用docker 安装ansible UI管理工具awx
     环境说明:centos7.9ansible2.9.27dockerversion  24.0.6pythonversion3.6.8awxversion 11.2.0 AWX简介AWX提供了一个基于web的用户界面、RESTAPI和构建在Ansible之上的任务引擎。图形化的AWX能够更方便的编排和部署AnsiblePlaybook,并提供集中的日志记......
  • vue cli2 3 4使用lib-flexible px2rem完美解决移动端适配问题
    安装lib-flexible$npminstalllib-flexible--savelib-fiexble,lib-flexible会自动在html的head中添加一个metaname="viewport"的标签,同时会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size。假如设计稿的宽度是750px,此时1rem应该等于75px。......