本文介绍: 介绍了CCC数字车钥匙规范中关于UWB MAC层规范的时间网格同步方法及Hopping功能

本文继续上一篇UWB MAC时间网格继续介绍UWB MAC中关于时间同步相关内容。

3、MAC时间网格同步

  每个测距会话定义都基于相对的指定时钟参考

U

W

B

t

i

m

e

0

k

UWB^k_{time0}

UWBtime0k,相对于发起者的内部时钟定义
时钟参考

U

W

B

t

i

m

e

0

k

UWB^k_{time0}

UWBtime0k为第k个测距会话建立MAC层时间网格。

  假设在发起者和响应者之间没有非常严格的时钟级同步,则应在每个应答器(响应设备)建立MAC层时钟网格,基于相对合理的精度范围。这允许每个responder(响应设备上)确定何时期望从发起者接收Pre-Poll消息,何时需要发送其应答消息给发起者,以及何时期望从发起者接收Final以及Final_Data消息。

每个Responder的大致MAC层时间网格的建立按照如下操作:

  • 在每个测距会话的协商阶段,发起者需要发送

    U

    W

    B

    t

    i

    m

    e

    0

    k

    UWB^k_{time0}

    UWBtime0k到需要连接到第k次测距会话响应设备

  • 每个响应者通过以下方法估计发起者的MAC层时间网格:
    • 响应者使用专用的out-of-band(OOB,带外数据)时钟同步(例如通过BLE控制信道)。通过使用OOB时钟同步方法,发起者告知响应设备何时测距会话开始,估计协调器的参考MAC时钟网格

      U

      W

      B

      t

      i

      m

      e

      0

      _

      R

      e

      s

      p

      o

      n

      d

      e

      r

      #

      l

      k

      UWB^k_{time0_Responder#l}

      UWBtime0_Responder#lk。对于第(l+1)个Responder的参考时钟,时刻到达后,响应者打开UWB接收机,开始搜寻、等待第一帧UWB包。

    • 接收到UWB包之后 ,响应者进一步使用从发起者收到的UWB包持续改善,更加精细化估计MAC时间网格,假设在其专用时隙(dedicated slot)开始之前,每个传入的数据包不是由发起方启动的。
    • 飞行时间的计算应不受MAC时间网格的影响。(时间戳信息从UWB来获得,不影响飞行时间计算。从接收到发送,再到收到Final帧,通过来回测量时间戳信息可以一定程度上消除UWB时钟偏差带来的影响)

  在测距会话建立以及同步的过程中,协调器告知所有应答者设备,会话将要开启的时刻,即从多久之后整个测距会话正式启动,协调器将开始发送第一个UWB包。

  MAC层时间网络,以发起者为参考,同步也以发起者为基准。其他Responder的数据包,不用于同步。此外,对于车辆等应用而言,也无需接收其他Responder的数据。

  对于第k个测距会话,近似MAC网格和时间参考的建立,在第l个responder被标记为,与发起者的时钟参考的关系为:

U

W

B

t

i

m

e

0

_

R

e

s

p

o

n

d

e

r

#

l

k

=

U

W

B

t

i

m

e

0

k

+

ϵ

(

k

,

l

)

UWB^k_{time0_Responder#l} = UWB^k_{time0} + epsilon(k,l)

UWBtime0_Responder#lk=UWBtime0k+ϵ(k,l)

其中,误差依赖于采用接收的UWB数据包

ϵ

(

k

,

l

)

=

ϵ

U

W

B

(

k

,

l

)

epsilon(k,l)=epsilon_{UWB}(k,l)

ϵ(k,l)=ϵUWB(k,l)还是OOB时钟同步协议(

ϵ

(

k

,

l

)

=

ϵ

O

O

B

(

k

,

l

)

epsilon(k,l)=epsilon_{OOB}(k,l)

ϵ(k,l)=ϵOOB(k,l)),用于估计近似MAC层时间网格。此误差的特征以及最小化误差超过了CCC规范的范围,所以并没有在其规范中进行详细的描述,需要在实现时去考虑。

在底层块时间同步处理流程参考示意如下图:

对于Responder设备,会基于预估的同步时钟,提前开启接收机,等待第一帧信号(Pre-Poll信号),进而完成这一轮的测距操作。

4/多跳标记与轮次索引

  对于给定RAN的第k个测距会话中的发起者将默认地在第一测距块(Ranging Block 0)的第一个测距轮(Ranging Round 0)中启动UWB测距流程。这假设响应方设备已经通过OOB方法实现了块同步,如果没有,则永久地监听Pre-Poll消息帧。
  在发起者端,假设没有资源冲突发生,将根据在测距会话设置中的hopping模式,来确定下一个测距块(i+1)的

H

o

p

_

F

l

a

g

k

(

i

+

1

)

Hop_Flag^k(i+1)

Hop_Flagk(i+1)

R

o

u

n

d

_

I

d

x

k

(

i

+

1

)

Round_Idx^k(i+1)

Round_Idxk(i+1)

R

o

u

n

d

_

I

d

x

k

(

i

+

1

)

=

R

o

u

n

d

_

I

d

x

k

(

i

)

=

0

Round_Idx^k(i+1)=Round_Idx^k(i)=0

Round_Idxk(i+1)=Round_Idxk(i)=0

H

o

p

_

F

l

a

g

k

(

i

+

1

)

Hop_Flag^k(i+1)

Hop_Flagk(i+1)设置为0。在这种情况下,

H

o

p

_

F

l

a

g

k

(

i

+

1

)

Hop_Flag^k(i+1)

Hop_Flagk(i+1)与接收机无关,应该被忽略。相应的,即使在测距工作过程中,由于冲突、干扰等原因导致无法正常进行测距,那也没有办法避免。

  • 若多跳模式设置为“continuous hopping”,发起者将使用第

    S

    i

    +

    1

    k

    S^k_{i+1}

    Si+1k测距轮(Ranging Round),

    R

    o

    u

    n

    d

    _

    I

    d

    x

    k

    (

    i

    +

    1

    )

    =

    S

    k

    (

    i

    +

    1

    )

    Round_Idx^k(i+1)=S^k(i+1)

    Round_Idxk(i+1)=Sk(i+1)

此时Hop_Flag设置为1,同样,

H

o

p

_

F

l

a

g

k

(

i

+

1

)

Hop_Flag^k(i+1)

Hop_Flagk(i+1)与接收机无关,需要被忽略。(为固定值)

  • 若多跳模式设置为“adaptive hopping”,那么在发起者,针对下一个测距块(i+1)的

    H

    o

    p

    _

    F

    l

    a

    g

    k

    (

    i

    +

    1

    )

    Hop_Flag^k(i+1)

    Hop_Flagk(i+1)

    R

    o

    u

    n

    d

    _

    I

    d

    x

    k

    (

    i

    +

    1

    )

    Round_Idx^k(i+1)

    Round_Idxk(i+1)按照以下方式计算:

    • 若发起者决定round是干净,即没有冲突的且当前的测距轮次测距成功,发起者应停留在当前的测距轮,同时设置

      H

      o

      p

      _

      F

      l

      a

      g

      k

      (

      i

      +

      1

      )

      =

      0

      Hop_Flag^k(i+1)=0

      Hop_Flagk(i+1)=0

      R

      o

      u

      n

      d

      _

      I

      d

      x

      k

      (

      i

      +

      1

      )

      =

      R

      o

      u

      n

      d

      _

      I

      d

      x

      k

      (

      i

      )

      Round_Idx^k(i+1)=Round_Idx^k(i)

      Round_Idxk(i+1)=Round_Idxk(i)。即,暂时不再往hopping的下一个序列去跳。

    • 若发起者发现在当前的round有干扰,或测距不成功,发起者就应该跳到下一个不同的round(已知的Hopping序列,在发起者和接收者两端一致)。

H

o

p

_

F

l

a

g

k

(

i

+

1

)

=

1

Hop_Flag^k(i+1)=1

Hop_Flagk(i+1)=1

R

o

u

n

d

_

I

d

x

k

(

i

+

1

)

=

S

k

(

i

+

1

)

Round_Idx^k(i+1)=S^k(i+1)

Round_Idxk(i+1)=Sk(i+1)

此时,发起者需要发送下一次测距块的

H

o

p

_

F

l

a

g

k

(

i

+

1

)

Hop_Flag^k(i+1)

Hop_Flagk(i+1)

R

o

u

n

d

_

I

d

x

k

(

i

+

1

)

Round_Idx^k(i+1)

Round_Idxk(i+1)到响应者设备。该数据作为包含在当前测距序列最后的Final_Data的数据包内。
在响应者设备,针对随后的测距轮次的多跳标记与轮次号,需要按照如下伪代码进行设置

if Final_Data packet is received
{
    Hop_Flag_k(i+1) = Final_Data.Hop_Flag
    if(Hop_Flag_k(i+1)=0)
    {
        set Round_Idx_k(i+1) = Round_Idx_k(i)
    }
    elseif (Hop_Flag_k(i+1)=1)
    {
        set Round_Idx_k(i+1) = S_k(i+1)
    }
}
else
{
    set Round_Idx_k(i+1) = S_k(i+1)
}

处理思路解析
1、没有收到Final_Data,假设测距是失败的,需要跳到Hopping序列的下一个测距轮。
2、收到Final_Data,按照数据段的Hop_Flag信息判断是否Hopping,若要Hopping,则跳到对应的测距轮次的索引,否则在下一个测距块中保持当前的测距轮索引

注意:发起者基于干扰等级数据包的冲突概率来决定是否触发多跳(即Hop_Flag =1)。决策的数据可以通过当前的数据交换,或一系列从应答设备接收到的应答帧来获取(历史数据)。在发起者端,触发多跳的具体标准超出了本规范的范围,有设备供应商来自行决定实现机制。但是,对于所有标准而言都需要满足的是,若没有接收到任何的相应,设备就应该触发多跳。


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

1、CCC联盟——UWB PHY
2、CCC联盟(一)——UWB MAC概述
3、CCC联盟数字车钥匙(二)——UWB MAC时间网格

原文地址:https://blog.csdn.net/luo58614013/article/details/134637160

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_1361.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注