CCC联盟——UWB MAC(二)

在上一篇文章中对CCC联盟UWB MAC框架进行了介绍,在本文中,将MAC层的时间网格进行简单介绍。

2、MAC时间网格(Time Grid)

DK UWB测距协议属于一对多(One to Many, O2M)测距协议。发起者,每次发送4帧,接收N帧(响应者数量)。示例中为一个协调器,7个Responder在一个测距轮(Ranging Round)中的工作示意。
在这里插入图片描述

当前的标准中,主要支持两种类型的UWB帧:

  • 数据帧(SP0帧):数据帧由前导码(SYNC)、帧起始分隔符(SFD)、物理报头(PHR)字段和物理服务数据单元(PSDU)字段组成。此类帧,在标准中仅负责发送包含在PSDU字段中的数据,不参与飞行时间(ToF)计算。此改进主要出发点在于使用已知前导码,在时间戳的获取上,可能会受到其他干扰设备的攻击,进而导致测距的不安全,这也是在IEEE 802.15.4z协议中重点增加的部分。
  • 测距帧(SP3帧):由SYNC、SFD字段和加扰时间戳序列(STS)字段组成。这种帧仅负责通过STS字段获取时间戳,用于飞行时间的计算,不传输任何数据,在一定程度上也可以减少测距帧的长度。

流程说明
1)协调器首先通过发送Pre-Poll帧(SP0),将当前RAN中的相关信息发送,响应者收到之后,根据给定时间发送应答。即Pre-POLL帧在测距中起到同步信息、控制的作用。
2)紧接着,协调器发送POLL帧(SP3),POLL帧用于测距使用,获取时间戳信息(发送以及被接收时间戳)。
3)Responder根据协调器Pre-POLL帧信息,按照对应的时序依次发送应答帧(Response帧);
4)所有应答器回传之后,协调器依次发送FINAL帧(SP3),以及Final_Data帧(SP0),将测距中使用的时间戳信息均在Final_Data中进行传输。

SP3测距帧仅用于时间戳的测量,仅仅由前导码以及STS组成,整体耗时较短,对于控制整个测距的时隙非常方便。

2.1 关于测距块

在DK UWB测距协议中,整体时间网格按照块的方式进行组织,每个测距块周期为: T B l o c k k T_{Block}^k TBlockk
每个测距块被划分为 N R o u n d k N_{Round}^k NRoundk个测距轮(Ranging Round,简写为RR),每个测距轮时间设置需要足够长( T R o u n d k T_{Round}^k TRoundk),以保证能够完成完整的测距交换。
T R o u n d k T_{Round}^k TRoundk的长度由具体的测距会话进行指定。

每个Ranging Round时隙数需要满足:
S L O T S _ P E R _ R R ≥ N U M B E R _ O F _ A N C H O R S + 4 SLOTS\_PER\_RR \geq NUMBER\_OF\_ANCHORS + 4 SLOTS_PER_RRNUMBER_OF_ANCHORS+4

提示:4为发起者的Pre-Poll、Poll、Final以及Final-Data所需的时隙总数。对于每个时隙的长度而言,要考虑最长帧的时长。
对于数据帧而言,Final-Data较为耗时,一个Final-Data最多支持10个应答器的时间戳信息。若Anchor数超过10,则需要一个或两个额外的Final-Data帧。

一个Ranging Round的长度可以计算为:
R A N G I N G _ S L O T _ L E N G T H ∗ S L O T S _ P E R _ R R RANGING\_SLOT\_LENGTH * SLOTS\_PER\_RR RANGING_SLOT_LENGTHSLOTS_PER_RR

需要注意,对于一个最小块时间而言,应该能够分为整数个测距轮(RR),而非小数或其他,没有空闲的时隙。
在这里插入图片描述

2.2 相关时间单位

  • T C h a p T_{Chap} TChap:MAC层协议的时间单元,MAC层协议中所有的持续时间(除了TPacket_Max)均为 T C h a p T_{Chap} TChap的整数倍。

T C h a p = 1 / 3 m s = 400 R S T U T_{Chap} = 1/3 ms = 400 RSTU TChap=1/3ms=400RSTU

每个RSTU定义为:416 / 499.2MHz ≈ 833.33ns。

在CCC的MAC层规范中,所有的时间基础单元均为400 RSTU。(与FiRa标准有所差异,FiRa中为1200 RSTU,即1ms为单位)

  • T B l o c k _ M i n T_{Block\_Min} TBlock_Min,最小的测距块周期,在CCC中设置为96ms。

T B l o c k _ M i n = 288 ∗ T C h a p = 96 m s T_{Block\_Min} = 288*T_{Chap}=96\,ms TBlock_Min=288TChap=96ms

  • 一个RAN包含一个发起者和k个响应设备。
  • 每个响应设备在RAN中最多分配一个活跃的测距会话。
  • 第k个测距会话,通过唯一的 U W B _ S e s s i o n _ I D k UWB\_Session\_ID^k UWB_Session_IDk识别, 在竞争谈判阶段(negotiation phase)设置。
  • 第k个测距会话的定义为相对于指定的时间参考:$ UWB_{time0} $。参考时钟由发起者基于其时钟基准定义。此时间基准定义了一系列连续测距块的开始。
  • 第k个测距会话的每个Ranging block的长度为: T B l o c k k = N R A N k ∗ T B l o c k _ M i n T_{Block}^k = N_{RAN}^k*T_{Block\_Min} TBlockk=NRANkTBlock_Min

N R A N k N_{RAN}^k NRANk是RAN乘数,是测距会话特定参数,用于控制给定RAN中相应会话的最大测距频率。
在一个会话中是一个需要指定的参数,用于控制指定RAN的最大的测距频率。

  • 连续 N S l o t _ p e r _ R o u n d k N^k_{Slot\_per\_Round} NSlot_per_Roundk个时隙构成了一个测距轮次(Ranging Round),周期为:

T R o u n d k = N S l o t _ p e r _ r o u n d k ∗ T S l o t k = N S l o t _ p e r _ r o u n d k ∗ N C h a p _ p e r _ S l o t k ∗ T C h a p T_{Round}^k = N^k_{Slot\_per\_round}*T^k_{Slot} = N^k_{Slot\_per\_round}*N^k_{Chap\_per\_Slot}*T_{Chap} TRoundk=NSlot_per_roundkTSlotk=NSlot_per_roundkNChap_per_SlotkTChap
每个测距轮的时隙数应大于或等于发起方和响应方设备之间的一次完整测距交换所需要的信息交换的数量。
注意:具体与实际执行的测距的方法有关系,在FiRa中定义了,SS-TWR、DS-TWR,以及基于SP1的SS-TWR、DS-TWR(non-deferred mode)。不同的测距流程,所需要的时隙数会有所区别。

  • 第k个测距会话的每个block被分为 N R o u n d k N^k_{Round} NRoundk个连续的测距轮(Ranging Round, RR)

T B l o c k k = N R o u n d k ∗ T R o u n d k T_{Block}^k = N_{Round}^k * T^k_{Round} TBlockk=NRoundkTRoundk

  • 在第k个测距会话的第(i+1)测距块的第(s+1)个测距轮的开始时间为:

U W B t i m e 0 k + i ∗ T B l o c k k + s ∗ T R o u n d k i = 0 , 1 , 2 , 3... s = 0 , 1 , 2 , . . . ( N R o u n d k − 1 ) UWB^k_{time0} + i*T^k_{Block}+s*T^k_{Round} \qquad i=0,1,2,3... \qquad s=0,1,2,...(N^k_{Round}-1) UWBtime0k+iTBlockk+sTRoundki=0,1,2,3...s=0,1,2,...(NRoundk1)

  • 每个测距会话(k=1,2, …, K)被分配了一个伪随机跳频序列(hopping sequence)

H k = S 0 k , S 1 k , . . . , S i k w i t h 0 ≤ S i k ≤ ( N R o u n d k − 1 ) H^k = {S_0^k, S_1^k, ..., S_i^k} \quad with 0 \leq S_i^k \leq (N^k_{Round} -1) Hk=S0k,S1k,...,Sikwith0Sik(NRoundk1)

k表示每个测距会话的序号, S i k S_i^k Sik表示测距块i中开始的测距轮的索引。在多个会话中出现无法接受等情况时,将根据hopping序列进行跳频(通过跳到不同的测距轮,以进行规避冲突),由于跳频序列在协商阶段均获得,所以通过一定测距时间,可以保证所有的设备又都跳到正确的测距轮,进行正常的测距。
具体的跳变规则,根据连续跳变或自适应跳变,按照特定的序列进行。
跳变序列与跳变模式和跳变标志一起用于计算当前测距块中的测距循环索引。

整个MAC时间网格示意图如下所示:

在这里插入图片描述

对于每一个测距会话参数的设计考虑上,首先需要保证能够完成车辆与DK的测距。也就是能够保证Responder数量,以及车辆的数量。
另外,从图上也可以看到,当前CCC支持的一些参数的范围:

  • N C h a p _ p e r _ S l o t = 3 , 4 , 6 , 8 , 9 , 12 , 24 NChap\_per\_Slot = 3,4,6,8,9,12,24 NChap_per_Slot=3,4,6,8,9,12,24
  • N S l o t _ p e r _ R o u n d k = 6 , 8 , 9 , 12 , 16 , 18 , 24 , 32 , 36 , 48 , 72 , 96 N^k_{Slot\_per\_Round} = 6,8,9,12,16,18,24,32,36,48,72,96 NSlot_per_Roundk=6,8,9,12,16,18,24,32,36,48,72,96
  • N R o u n d _ p e r _ 96 m s k N^k_{Round\_per\_96ms} NRound_per_96msk

持续更新,系列教程,收藏关注吧!

1、CCC联盟——UWB PHY
2、CCC联盟(一)——UWB MAC概述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Pandas 二(Pandas缺失值处理、数据离散化、合并、交叉表与透视表、分组与聚合)

文章目录 六、高级处理-缺失值处理6.1 检查是否有缺失值6.2 缺失值处理6.3 不是缺失值NaN,有默认标记的 七、高级处理-数据离散化7.1 什么是数据的离散化7.2 为什么要离散化7.3 如何实现数据的离散化 八、高级处理-合并8.1 pc.concat实现合并,按方向进行…

Linux:Ubuntu虚拟机安装详解:VMware下的逐步指南

目录 1. centOS系统 2. ubuntu系统 1. 下载Ubuntu映像 step1 step2 step3 2. 新建虚拟机 step1 step2 Step3 step4 step5 step6 内存 内核 映像 显示 网络 3. 网络配置 NAT模式 本机IP获取 ​编辑 bridge模式 4. 开启虚拟机 5. 虚拟机常用配置 语言 …

为什么,word文件在只读模式下,仍然能编辑?

Word文档设置了只读模式,是可以编辑的,但是当我们进行保存的时候就会发现,word提示需要重命名并选择新路径才能够保存。 这种操作,即使可以编辑文字,但是原文件是不会受到影响的,编辑之后的word文件会保存到…

Redis Stream消息队列

什么是Stream? Stream 实际上是一个具有消息发布/订阅功能的组件,也就常说的消息队列。其实这种类似于 broker/consumer(生产者/消费者)的数据结构很常见,比如 RabbitMQ 消息中间件、Celery 消息中间件,以及 Kafka 分布式消息系统等&#x…

openEuler20.03学习01-创建虚拟机

赶个时髦,开始学习openEuler 20.03 (LTS-SP3) 操作系统iso下载地址:https://repo.openeuler.openatom.cn/openEuler-20.03-LTS-SP3/ISO/x86_64/openEuler-20.03-LTS-SP3-x86_64-dvd.iso 公司有现成的vmware环境,创建虚拟机i测试&#xff0c…

qgis添加arcgis的mapserver

左侧浏览器-ArcGIS地图服务器-右键-新建连接 Folder: / 展开-双击图层即可

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示(三)

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示(三) 不使用base64编码方式传递 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filter…

leetcode中“辅助栈”类题目和“单调栈”类题目的异同

1 总结 1 栈中元素的特性 2 单调栈存在一次性连续删除多个栈顶的情况&#xff0c;但是普通的栈&#xff0c;一次只pop掉一个栈顶元素 2 LC1209. 删除字符串中的所有相邻重复项 II - 普通辅助栈 class Solution {public String removeDuplicates(String s, int k) {int ns.l…

mysql忘记密码,然后重置

数据库版本8.0.26 只针对以下情况 mysql忘记了密码&#xff0c;但是你navicat之前连接上了 解决方法&#xff1a; 第一步&#xff0c;选中mysql这个数据库&#xff0c;点击新建查询 第二步&#xff1a;重置密码 alter user rootlocalhost IDENTIFIED BY 你的密码; 然后就可…

随机生成字母

目录 css代码 html代码 js代码 css代码 .box {width: 400px;height: 400px;background-color: #797979;margin: 100px auto;padding-top: 100px;}.text{width: 200px;height: 50px;outline: none;border: 5px solid #545454;background-color: #797979;border-radius: 10px;f…

5G NSA注册解析及图标显示方案

5G NSA注册解析及图标显示方案 1. NSA注册流程解析1.1 NSA注册流程1.2 NAS消息信元变化1.3 UE能力信元变化1.3.1 第一次UE能力查询1.3.2 后续UE能力查询1.3.3 UE能力过滤器解析 1.4 UE测量配置1.5 SCG添加消息解析1.6 SCG添加成功1.7 Split Bearer承载的建立1.8 NR协议查询索引…

python动态规划求解最长回文子串

回文是什么&#xff0c;回文是正着读和反着读都是一样的字符叫着回文。  如 ‘aba’&#xff0c;‘aa’&#xff0c;‘b’&#xff0c;这些都是回文 class Solution:def longestPalindrome(self,s: str) -> str:n len(s)dp [[False] * n for _ in range(n)]ans "…