当前位置: 首页 > news >正文

Bluetooth Channel Sounding中关于CS Step及Phase Based Ranging相应Mode介绍

目录

BLE CS中Step定义

BLE CS中交互的数据包/波形格式

BLE CS中Step的不同Mode

BLE CS中Step的执行过程

Mode0介绍

Mode0 步骤的作用

Mode0步骤的执行过程

Mode0步骤的执行时间

Mode0步骤的时间精度要求

Mode2介绍

Mode2步骤的作用和执行过程

 Mode2步骤的执行时间


BLE CS中Step定义

        BLE CS中的Step定义为BLE CS双方(initiator和reflector)一次双向交互的过程。多个相关的BLE CS Steps组成了BLE CS中的Subevent。

        在BLE CS中的Step中,主要根据应用层选择的CS方法(PBR: phase based ranging 或/和 RTT: round-trip time),在BLE CS双方设备间完成射频信号的交互。

BLE CS中交互的数据包/波形格式

        BLE CS中交互的数据包格式是CS过程独有的,与BLE其他过程,如广播、连接态等模式下的数据包格式都不同。

        BLE CS过程中交互的数据包波形,从命名上有两种,分别是:CS_SYNC和CS Tone。在不同的CS Mode中,使用两种数据包的不同组合。CS_SYNC数据包主要是用于RTT交互使用,具有指定的格式,具体可以参考:Vol 6, Part H 2 PACKET FORMATS FOR CHANNEL SOUNDIN,如下图所示:

        CS Tone波形,严格意义上来说是没有包格式说法的,因为本质上该段波形,是对芯片载波的一种ASK调制,也就是在发送阶段,直接发送的是芯片的载波正弦信号。在BLE CS的PBR功能下,大部分的Step双方只交互CS Tone波形,已完成跳频测相并计算距离。

BLE CS中Step的不同Mode

        Bluetooth规范中,定义了CS过程中可以使用的4中模式(Mode),分别是Mode0~Mode3,分别作用为:

  1. Mode0:为RTT或者PBR,测量CS双方的频偏情况;
  2. Mode1:测量CS双方的RTT
  3. Mode2:测量CS双方由于距离导致的跳频相位变换情况,也就是这个模式才是基于相位的高精度测距模式;
  4. Mode3:同时测量RTT和跳频相位情况。

        BLE CS Step过程中,CS双方通过空口进行通信的数据包格式由Vol 6, Part H 2 PACKET FORMATS FOR CHANNEL SOUNDING中定义。根据当前Step中收发的Mode不同,主要是CS_SYNC和Tone两种包的组合形式。

BLE CS中Step的执行过程

        在每个CS的Subevent中,CS的每个Step时间宽度可能由于模式不同而不同,另外不同模式情况下,每个Subevent中包含的CS Step数量也不一定相同。因此,我们没有在常规的LL_CS_IND数据包中,看到关于BLE CS Step的Length、Interval等参数。这些参数在CS Step层面,大部分是由BLE控制器自动根据规范完成双方的约束。详细的Subevent和Step中关于Mode的时序,参考Vol 6, Part H 4.4 Channel Sounding subevent and mode sequencing。

        Bluetooth中规范:在一个CS Subevent设定的T_SUBEVENT_LEN内,如果一个CS Step执行完毕后,剩余的时间超过需要执行的Step时间长度,那么LL层可以再安排一个Step,否则的话这个Subevent内的后续时间将保持空闲。下图展示了一个BLE Subevent内插入最多Step数量的情况。

BLE CS 子事件最大CS Step占用宽度

        每个Subevent中最少step由N_MIN_STEPS_PER_SUBEVENT表示,规范中该值为2。而每个Subevent中最多step由N_MAX_STEPS_PER_SUBEVENT表示,规范中该值为160。而单个PROCEDURE中,不管有多少个Subevent,最大的Steps数量由N_STEPS_MAX表示,该参数规范中设定为256。

        而BLE CS Step的分隔的确定方式,如下图所示。Bluetooth中规范了两个BLE CS Step直接使用物理层的频率跳频进行分割。

BLE CS Step间隔确定方法:由跳频时间固定分割

        规范中留个跳频的时间定义为T_FCS,BLE硬件在这段时间内需要完成跳频、设置并稳定输出信号功率、必要的校准等动作。规范中定义了多个T_FCS值可以选择,最小值为15us,最大为150us。需要注意的是,规范中仅150us是需要所有BLE设备都强制支持的,其他都是可选支持,因此该值取决于芯片设计公司。

        在一个BLE CS Procedure中T_FCS需要保持一致。另外,在T_FCS和具体的CS Step内,reflector RF端口处的信号功率要至少相差40dB以上。

        由于BLE的CS本质上是提供了RTT和PBR两种测距过程。由于RTT的精度较差,此处仅关系PBR相关的Mode。

Mode0介绍

Mode0 步骤的作用

        支持BLE CS的设备,必须要支持此模式,主要用于测量获得BLE CS双方的存在频率偏差。具体来说,是BLS CS中的initiator设备用此模式获得reflector设备与自身的频率偏差。获得该频率偏差后,initiator通过LE CS Subevent Result event中的Step_Data-Measured_Freq_Offset上报至Host,以便用于后续测距算法时的误差补偿。

Mode0步骤的执行过程

        具体此模式下,收发双方在CS Step中的详细操作如下图所示。

        首先是Initiator设备发送CS_SYNC_0_I数据包,该数据包中仅包含CS_SYNC部分,且此部分的CS_SYNC不带可选的sounding或者random sequence部分。在确定的延时之后(T_RD+T_IP1),reflector设备发送一个CS_SYNC+CS Tone数据包。Initiator设备收到reflector发送的CS_SYNC,在固定的时间窗口通过测量CS Tone,获得reflector与自身的载波偏差。

        在规范中,Initiator设备测量的载波偏差称为Fractional Frequency Offset(FFO)。该FFO的测量,与当前采样的CS Tone信号以及reflector设备提供的Mode-0 FAE表格有关,具体可以参考:Vol 6, Part A 3.5.1 Fractional frequency offset,而关于Initiator和reflector的本地FAE误差校准,可以参考Vol 6, Part A 6.3 Frequency actuation error correction。

Mode0步骤的执行时间

        一次Mode0双方设备的交互时间,可以通过以下方式测算。首先,Initiator发送CS_SYNC数据包。此时CS_SYNC数据包占用的时间T_SY,对于1Mpbs码率PHY,传输bit数量为8+32+4=44,对应需要44us;对于2Mbps码率PHY,传输bit数量为16+32+4=48,对应需要24us。

        Initiator发送完CS_SYNC后,定义了一个5us的T_RD时间。此时间主要用于Initiator关闭RF发射机,使得空口无射频能量。规范要求CS_SYNC发送阶段和T_RD后的射频功率要至少相差40dB以上。

        接下来是Initiator发送完至reflector发送前之间的空闲时间T_IP1。这段时间一般可以用于硬件的校准,或者reflector准备RF输出。规范中T_IP1也是多种值可配置。但强制要求芯片支持的仅有145us,也就是说规范中强制要求支持的T_IP1+T_RD=150us。

        T_IP1空闲时间后,reflector发送CS_SYNC_0_R数据包,该数据包是CS_SYNC后外加一个CS Tone,如下图所示,具体参考:Vol 6, Part H,2.6 Channel Sounding extended packet formats。

        其中CS_SYNC占用时间与Initiator发送的一致,取决于PHY码率的设置;CS_SYNC和CS Tone之间的Guard时间T_GD固定为10us;用于Initiator频率测量的CS Tone时间T_FM在Mode0中固定为80us。同样reflector发送完CS_SYNC_0_R数据包后,仍然预留了5us的T_RD时间。

        需要注意的是,在BLE CS中规范了收发的Anchor Point和Offset后,在固定的CS Step中如果reflector没有收到Initiator发送的CS_SYNC数据包,那么reflector仍然需要在固定的时间上发送CS_SYNC_0_R数据包,尽管此时reflector没有收到,或者收到Initiator发送的CS_SYNC数据包有较多的误比特。

        最终,我们可以计算Mode0 CS中一个Step所占用的时间为:

2*T_SY+2*TRD+TGD+TFM+TIP1

T_SY为44us或者24us,TRD固定为5us,TGD固定为10us,TFM 固定为80us,TIP1可以配置。因此Mode0步骤的执行时间最长是TIP1为强制要求的145us,此时总的Mode0执行时间约为:289us或者269us。当芯片能够支持的TIP1达到最小的10us时,总的Mode0执行时间约为:154us或者134us。

Mode0步骤的时间精度要求

        如果定义为Initiator设备在第m个step上Mode0数据包的发出时间。对应第一个Step,根据定义我们可以设定。而整个Step执行时间分为Step时间和跳频时间T_FCS,如果PHY确定的情况下,整个Step执行时间是固定的。例如当T_FCS也满足强制执行时间150us时,整个Step执行的预测时间应该为:

该时间为439us或者419us,本质上是在Mode0步骤执行时间上增加了150us的时间。

        BLE规范中要求第m个数据包Initiator的实际发出时间与预测时间,在所有的Mode0 的M个Steps上要误差要小于0.25us,即:

Mode2介绍

Mode2步骤的作用和执行过程

        Mode2步骤主要是实现BLE CS中PBR测距功能。

        Mode2的执行过程也相对较为简单,如下图所示。先由initiator设备在规定的时间节点发送一个CS Tone,然后等规定的时间间隔后,reflector在相同的频点发送一个CS Tone。可以发现,在Mode2的执行过程中,initiator和reflector设备间是没有带调制的信息传递的。

 Mode2步骤的执行时间

由上图可知,initiator设备在发送CS Tone时,所需要花费的时间为:

其中:

        是开关切换时间,如果单天线执行BLE CS,那就是不需要开关切换,此时可以设置为0;但如果用到多天线进行BLE CS,那么的时间取决于RF Switch的切换时间,规范中可以选择的分别为1,2,4和10us,如下图所示。

        是相位测量时间。规范中运行的相位测量时间分别为10us,20us和40us,其中40us是需要强制支持的时间,而前面两个是可选支持的时间。

         是路径支持个数。这个参数是由于支持BLE CS的规范,是允许外置多天线进行不同路径的CS过程。这也是前面预留进行开关切换选择传输天线的时间。目前规范中最多支持的路径由4个,由Antenna Configuration Index进行唯一选择,如下图所示。

        为了确保BLE CS中Mode2的安全攻击等级,Mode2的每个路径传输中,都插入了一个CS Tone 扩展槽位(Extension Slot),其中占用的时间与当前时间一致,也就等效又额外增加了一个路径的传输使时间。关于Extension Slot介绍Vol 6, Part H 4.4.1 Tone extension slots,可以参考。因此,最终initiator发送CS Tone过程,需要占用的时间为:。此时reflector在对应的时间,分别接收来自不同天线路径的initiator载波信号。

        Initiator发送完所有的CS Tone后,预留了固定5us的T_RD时间来关闭Initiator的发射机。接下来,是一个收发机角色切换时间T_IP2,即initiator由发射切换到接收,而reflector由接收切换到发射。T_IP2和T_IP1一样,规范中也是有10us开始至145us有多参数可以选择,其中145us是规范中需要所有蓝牙设备必须支持的间隔,其他都是可选支持。在规范中T_IP1和T_IP2是两个独立的参数,是可以配置成不一样的数值的。

         T_IP2延时时间后,那么由reflector在相同的信道上发送CS Tone,其中发送时间和initiator一致,也需要考虑天线路径个数和插入的extension slot,因此占用的时间也同样为:

        最终,同样预留了5us的T_RD时间,来让reflector关闭发射机,并结束当前Mode2过程。

        下面举例说明多天线路径是的Mode2过程。如果配置是选择的ACI=2,那么此时总共存在3条设备A到设备B的路径,此时,分别对应三天线的A设备和一天线的B设备,此时对应的传输路径如下图所示。

        此时Mode2的执行过程如下图所示。首先是initiator依次通过开关切换,依次在三个天线上实现了CS Tone的发送。最终预留了一个extension slot,此时天线尽管不需要切换,但是切换时间仍然需要预留。然后由CS DRBG模块决定当前slot是否要发送CS Tone。接下来就是T_RD+ T_IP2的等待时间。然后就是reflector依次向各个initiator的天线发送CS Tone,直至当前Mode结束。

        最终,根据规范,Mode2执行过程需要的总时间为:

当BLE CS双方只有一条天线路径,即时。此时,而选择强制支持的40us,T_IP2选择强制支持的145us,那么Mode2执行一次的时间为:315us。

        另外,我们可以计算理想情况下,initiator天线发射端从开始CS Tone发射,到reflector天线端开始CS Tone发射的时间间隔应该为:

用于计算Mode2双方应该经过的理想延时,此参数将在频率误差校准中使用,具体参考:Vol 6, Part A  6.3 Frequency actuation error correction。

相关文章:

Bluetooth Channel Sounding中关于CS Step及Phase Based Ranging相应Mode介绍

目录 BLE CS中Step定义 BLE CS中交互的数据包/波形格式 BLE CS中Step的不同Mode BLE CS中Step的执行过程 Mode0介绍 Mode0 步骤的作用 Mode0步骤的执行过程 Mode0步骤的执行时间 Mode0步骤的时间精度要求 Mode2介绍 Mode2步骤的作用和执行过程 Mode2步骤的执行时间 B…...

简易STL实现 | Queue 的实现

封装: std::queue 在底层容器的基础上 提供了封装。默认情况下,std::queue 使用 std::deque 作为其底层容器,但也可以配置为使用 std::list 或 其他符合要求的容器 时间复杂度: 入队和出队操作 通常是 常数时间复杂度&#xff08…...

【hot100-java】LRU 缓存

链表篇 灵神题解 class LRUCache {private static class Node{int key,value;Node prev,next;Node (int k,int v){keyk;valuev;}}private final int capacity;//哨兵节点private final Node dummynew Node(0,0);private final Map<Integer,Node> keyToNode new HashMap&l…...

Centos7安装ZLMediaKit

一 获取代码 git clone https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init git submodule update --init 命令用于初始化和更新 Git 仓库中的子模块&#xff08;submodules&#xff09;。这个命令在 Git 仓库中包含对其他 Git 仓库作为依赖时…...

面试问我LLM中的RAG,咱就是说秒过!!!

前言 本篇文章涉及了 RAG 流程中的数据拆分、向量化、查询重写、查询路由等等&#xff0c;在做 RAG 的小伙伴一定知道这些技巧的重要性。推荐仔细阅读&#xff0c;建议收藏&#xff0c;多读几遍&#xff0c;好好实践。 本文是对检索增强生成&#xff08;Retrieval Augmented …...

python程序操作pdf

python代码进行多个图片合并为pdf&#xff1a; #python代码进行多个图片合并为pdf&#xff1a; from PIL import Image from fpdf import FPDF import osdef images_to_pdf(image_paths, output_pdf, quality85):"""将多个图片合并为一个PDF文件&#xff0c;并…...

【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。

【Python报错】ImportError: DLL load failed while importing _network: 找不到指定的模块。 问题描述报错原因解决方案参考 问题描述 此段Python代码&#xff08;在Conda环境下运行&#xff09;昨天还能运行&#xff0c;但在我手痒更新conda&#xff08;我有罪&#xff09;之…...

外包干了5天,技术明显退步

我是一名本科生&#xff0c;自2019年起&#xff0c;我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定&#xff0c;但日复一日的重复性工作让我逐渐陷入了舒适区&#xff0c;失去了前进的动力。两年的时光匆匆流逝&#xff0c;我却在原地踏步&#xff0c;技术没有丝毫…...

正则表达式 | Python、Julia 和 Shell 语法详解

正则表达式在网页爬虫、脚本编写等众多任务中都有重要的应用。为了系统梳理其语法&#xff0c;以及 Python、Julia 和 Shell 中与正则表达式相关的工具&#xff0c;本篇将进行详细介绍。 相关学习资源&#xff1a;编程胶囊。 基础语法 通用语法 在大多数支持正则表达式的语…...

JavaScript全面指南(一)

​ &#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南(一) 1、介绍一下JS的内置类型有哪些&#xff1f; 基本数据类型…...

docker-compose与docker

“docker-compose” 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个名为 docker-compose.yml 的配置文件来描述应用程序的服务、网络和卷&#xff0c;然后通过简单的命令就可以管理整个应用。 以下是一些常用的 docker-compose 命令及其用法&#xff1a; 启动…...

DDPM浅析

在机器学习和人工智能领域&#xff0c;生成模型一直是一个备受关注的研究方向。近年来&#xff0c;一种新型的生成模型——扩散概率模型&#xff08;Diffusion Probabilistic Models&#xff0c;简称DDPM&#xff09;引起了广泛的关注。本文将探讨DDPM的原理、优势以及应用。 …...

力扣刷题-算法基础

hello各位小伙伴们,为了进行算法的学习,小编特意新开一个专题来讲解一些算法题 1.移除元素. - 力扣(LeetCode) 本题大概意思是给定一个数组和一个数val删除与val相同的元素,不要改变剩余元素的顺序,最后返回剩余元素的个数。 我们在这里使用双指针,这里的双指针并不是…...

理解 Python 中的 Hooks 和装饰器

Python 中的 hooks 和装饰器&#xff0c;虽然它们看起来都有些魔法加成&#xff0c;但实际上各有妙用。下面看看他们到底是做什么的吧。 什么是 Hooks&#xff1f; Hooks 是指在某些操作或事件发生时&#xff0c;可以将自定义的代码插入和执行的一种机制。它们常用于扩展和修…...

Android 原生程序使用gdb, addr2line, readelf调试

Platform: RK3368 OS: Android 6.0 Kernel: 3.10.0 文章目录 一 gdb1. 原生程序添加调试符号2. 主机上adb push 编译好的原生程序到设备3. 设备上使用gdbserver运行原生程序4. 主机上设置adb端口转发5. 主机上运行gdb调试 二 addr2line三 readelf 一 gdb GDB&#xff08;GNU…...

PHP 函数 func_num_args() 的作用

func_num_args() 是 PHP 中的一个内置函数&#xff0c;用于获取传递给当前用户定义函数的参数个数。这个函数特别有用于处理可变数量的参数&#xff08;也称为可变参数列表&#xff09;。 语法 int func_num_args ( void ) 返回值 func_num_args() 返回一个整数&#xff0c…...

深入解析单片机原理及其物联网应用:附C#示例代码

深入解析单片机原理及其物联网应用&#xff1a;附C#示例代码 随着物联网技术的快速发展&#xff0c;单片机作为嵌入式系统的核心&#xff0c;已经广泛应用于各类智能设备中。本文将从单片机的原理出发&#xff0c;结合C#编程的物联网示例&#xff0c;带你深入了解如何利用单片…...

HTTP 和 WebSocket

目录 HTTP是什么HTTP局限性&#xff08;HTTP1.1&#xff09;请求和响应HTTP的主要特点&#xff1a;HTTP版本&#xff1a; HTTP与TCP关系数据封装传输过程1. **协议层次模型**&#xff1a;2. **封装过程**&#xff1a;1. **应用层&#xff08;HTTP&#xff09;**&#xff1a;2. …...

科技云报到:大模型时代下,向量数据库的野望

科技云报到原创。 自ChatGPT爆火&#xff0c;国内头部平台型公司一拥而上&#xff0c;先后发布AGI或垂类LLM&#xff0c;但鲜有大模型基础设施在数据层面的进化&#xff0c;比如向量数据库。 在此之前&#xff0c;向量数据库经历了几年的沉寂期&#xff0c;现在似乎终于乘着Ch…...

贪吃蛇游戏(代码篇)

我们并不是为了满足别人的期待而活着。 前言 这是我自己做的第五个小项目---贪吃蛇游戏&#xff08;代码篇&#xff09;。后期我会继续制作其他小项目并开源至博客上。 上一小项目是贪吃蛇游戏&#xff08;必备知识篇&#xff09;&#xff0c;没看过的同学可以去看看&#xf…...

数控走心机系统可以定制吗

当然&#xff0c;走心机系统是可以定制的。随着数控技术的不断发展&#xff0c;走心机的数控系统越来越灵活&#xff0c;可以根据用户的具体需求进行定制和优化。下面&#xff0c;我将从几个方面来详细解答这个问题&#xff1a; ‌一、系统定制的必要性‌ ‌1. 满足不同加工需求…...

PHP实现OID(Object identifier)的编码和解码

转载于&#xff1a;https://bkssl.com/document/php_oid_encode_decode.html <?phpclass ASN1ObjectIdentifier {/*** OID字符串编码为二进制数据* param string $oid 字符串形式的OID* return string*/public static function encode($oid){$parts explode(., $oid);$pa…...

架构设计笔记-12-信息系统架构设计理论与实践

目录 知识要点 案例分析 1.Java企业级应用系统 2.c/s架构&#xff0c;b/s架构 知识要点 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义了一类架构所共有的特征&#xff0c;主要包括架构定义、架构词汇表和架构约束。 数据挖掘是从数据库的大…...

【Power Compiler手册】15.多角多模式设计中的功耗优化

多角多模式设计中的功耗优化 可以使用多个运行条件和多种模式进行综合的设计被称为多角多模式设计。Design Compiler Graphical工具扩展了拓扑技术,以分析和优化这些设计。 有关多角多模式技术支持的综合工具的更多信息,请参见以下主题: • 优化多角多模式设计 • 报告命…...

关于HalconDeeplearn中的语义分割的实现

1.读取数据和数据集 read_dl_model (C:/Users/user/Desktop/大蒜测试/包裹/model_训练-240926-191345_opt.hdl, DLModelHandle) read_dict(C:/Users/user/Desktop/大蒜测试/包裹/model_训练-240926-162708_opt_dl_preprocess_params.hdict,[], [], DLDataset) 2.读取识别图片 I…...

【STL】AVLTree模拟实现

AVLTree模拟实现 1 前言2 AVL树的插入2.1 平衡因子不继续向上更新的情况2.2 平衡因子变为2或者-2&#xff0c;发生旋转2.2.1 左单旋2.2.2 右单旋2.2.3 左右双旋2.2.4 右左双旋 3 代码 1 前言 二叉搜索树的不足&#xff1a;如果出现极端情况&#xff0c;效率会变得很低。 AVL&am…...

无极低码课程【tomcat部署windows环境厂家乱码处理】

windows 下tomcat安装 下载地址一:https://tomcat.apache.org/download-90.cgi 下载地址二:https://archive.apache.org/dist/tomcat/ 解压tomcat,进入bin目录运行startup.bat...

注册安全分析报告:惠农网

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)

0x01 漏洞概述 Qualitor 8.24及之前版本存在任意文件上传漏洞,未经身份验证远程攻击者可利用该漏洞代码执行,写入WebShell,进一步控制服务器权限。 0x02 复现环境 FOFA:app="Qualitor-Web" 0x03 漏洞复现 PoC POST /html/ad/adfilestorage/request/checkAcess…...

PHP-FPM和FastCGI

文章目录 前言一. FastCGI1.定义2.工作方式3.协议4.架构5.工作原理&#xff08;请求生命周期&#xff09; 二. PHP-FPM1.定义&#xff1a;2.特性3.进程管理模式4.工作流程 三.关系与应用四.配置示例五.性能优化六.配置选项七.常见问题及解决方案 前言 PHP-FPM 是基于 FastCGI …...