在上一篇文章中对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_RR≥NUMBER_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_LENGTH∗SLOTS_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=288∗TChap=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=NRANk∗TBlock_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_roundk∗TSlotk=NSlot_per_roundk∗NChap_per_Slotk∗TChap
每个测距轮的时隙数应大于或等于发起方和响应方设备之间的一次完整测距交换所需要的信息交换的数量。
注意:具体与实际执行的测距的方法有关系,在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=NRoundk∗TRoundk
- 在第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+i∗TBlockk+s∗TRoundki=0,1,2,3...s=0,1,2,...(NRoundk−1)
- 每个测距会话(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,...,Sikwith0≤Sik≤(NRoundk−1)
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概述