FiRa标准——MAC

FiRa MAC层相关定义,整体基于IEEE 802.15.4z协议标准框架,在此基础之上增加了测距应用的调度等考虑。

1.基于块的测距模式

对于基于块的测距模式而言,首先要理解其划分:每个会话中的测距分为了多个块,在每个块内有分为若干测距轮(Ranging Round),而每个测距轮内又拆分为更小的测距时隙单元。正常情况下,测距过程将在每个块的固定测距轮之内完成。

基于测距块的模式下,连续测距轮之间的平均时间是固定的。控制器应在第一个测距块(Block索引为0)的第一个测距轮(Round索引为0)中启动测距会话。

为了应对复杂环境中的冲突等考虑,FiRa规范在此基础之上,增加了跳频的设计,以便能够在运行过程中动态避开冲突。

这一机制的实现,如要通过引入Round Hopping,设计了相关的Hopping序列规则,这样在测距中的多方都能够形成先验知识,能够实现有效的同步。

1.1 Round Hopping

轮次跳转是FiRa设备调到不同的测距轮,以便在下一个测距块中成功执行测距的一个特性。FiRa设备在下一个测距块中要使用的RR有Hoppoing序列决定。

1.2 Hopping序列

S(BlockIndex, SessionID, N_{Round}) = \\[6pt] ((AES(BlockIndex, SessionID) \& 0xFFFF) *N_{Round}) >> 16S(BlockIndex,SessionID,NRound)=((AES(BlockIndex,SessionID)&0xFFFF)∗NRound)>>16

N_{Round}NRound代表一个测距块中的Ranging Round的数量。

FiRa中,Hopping序列基于AES针对BlockIndex、会话ID进行处理获得。AES功能应使用AES-128的ECB模式。BlockIndex、SessionID都用零填充到左边以达到AES块大小的要求,分别用于明文和密钥。

AES之后的值与0xFFFF,然后乘以N_{Round}。

跳变序列确定RR的Round Index,当跳变模式启用时需要使用Round Index。

区块索引0(即测距会话中的第一个测距区块)无论是否使能Round Hopping都始终为0。也就意味着,BlockIndex之前可能不会开始跳变?

示例

BlockIndex为1(即当前测距会话的第二个测距块),SessionID为0x10203,每个测距块内有4个RR,在AES处理时都需要在左侧补充0:

BlockIndex : 0x0000_0000_0000_0000_0000_0000_0000_0001

SessionID : 0x0000_0000_0000_0000_0000_0000_0001_0203

通过AES函数处理之后,得到:0x3170_1ba5_ee72_4e1b_5fbf_d519_1c3d_77de,

与0xFFFF执行与操作后仅为:0x77de, 乘以RR数量4,得到:0x0001_df78,

右移16bit之后,得到S的值为0x1。


1.3 Block Striding

另外,还引入了块跨步功能,该功能可用于跳过测距块。当不需要频繁测距时,测距设备可以通过跳过测距块来降低功耗。

步幅长度指示在下一次测距之前将跳过多少测距块。如果步幅长度为N,当前的BlockIndex为M,则下一个测距块索引为:M+N+1。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容