IEEE 802.15.4 CSMA-CA算法翻译(IEEE 802.15.4-2006 7.5.1.4 CSMA-CA algorithm)

来源:互联网 发布:nba2konline张伯伦数据 编辑:程序博客网 时间:2024/06/10 04:10
在CAP内,传输数据或MAC命令帧之前,应使用CSMA-CA算法。除非可以在确认数据请求命令后快速发送帧。

CSMA-CA算法不用来传输信标网络中的信标帧、确认帧、以及在CFP中的数据帧。

在信标网络中,MAC层在超帧结构中的CAP期间内,将使用基于时隙的CSMA-CA算法传输。相反的,如果在非周期性的
信标传输中,将使用非时槽的CSMA-CA算法。在这两种情况中,该算法是通过使用被称为退避周期的时间单位来实现的。
这里退避周期等于aUnitBackoffPeriod个符号。
在时隙CSMA-CA中,PAN中每个设备的退避周期边界应与PAN协调器的超帧时隙边界对齐。也就是,每个设备
的第一个退避周期的开始和信标传输的开始对齐。在时槽的CSMA-CA中,MAC层必须确保PHY在退避周期的边
界上开始所有传输。在非时槽的CSMA-CA中,一个设备的退避周期与PAN中任何其他设备的退避周期不相关。
在时隙CSMA-CA中,有两点要求:
1.设备的第一个退避周期的开始和信标传输的开始对齐。
2.设备的帧传输开始于退避周期的边界上。
每个设备应为每个传输尝试保留三个变量:NB,CW和NB。
  • NB是本次传输时,CSMA-CA算法所需的退避周期的次数。该值在每一次新的传输尝试前初始化为0.
  • CW是竞争窗口长度。在传输开始之前需要清除通道活动(即通道空闲)的退避周期数。它在每次传输尝试前
        被初始化为2,每次通道被评估为忙时,重置为2次。CW仅仅使用在时槽CSMA-CA中。
  • BE为退避指数,在评估信道之前,设备应等待的退避周期数。在非时槽的系统中,以及接收的BLE域为0的
    时槽系统中,此值应被初始化为macMinBE。而在接收的BLE域为1的时槽系统中,此值应被初始化为
    2和macMinBE两者之间的最小者,即min(2, macMinBE)。
    注意如果macMinBE设置为0,在这个算法的第一次迭代期间,冲突避免将会被禁用。
尽管接受器在CCA分析的部分算法内被使能,设备或许会丢弃在此期间内接收的任何帧。 

图表69为CSMA-CA算法步骤。当使用时槽CSMA-CA时,MAC子层会先初始化NB,CW,BE,定位在下一个退避
周期的边界。在非时槽CSMA-CA中,MAC子层会初始化NB和BE,然后直接处理第2步。
MAC子层会进行0 - 2BE - 1范围内的规避周期数延时,然后请求PHY执行CCA(步骤3)。在时槽CSMA-CA系统中,CCA
会开始于退避周期的边界。在非时槽CSMA-CA系统中,CCA会立即开始。
在BLE子字段设置为零的时隙CSMA-CA系统中,MAC子层应当确保在随机退避之后,
可以进行剩余的CSMA-CA操作,并且在CAP结束之前,整个事务被传输。注意,在支持位填充PHY中,必须考虑这个测定。
如果退避周期数大于CAP中剩余的退避周期数,MAC子层在CAP结束时会暂停退避周期倒计时,并在下一个超帧CAP开始
时进行恢复。
如果退避周期数(NB)小于或等于CAP中剩余的退避周期数,MAC子层将应用其退避延迟,然后评估是否可以继续。
如果剩余的CSMA-CA算法步骤---帧传输和任何确认帧能在CAP结束之前完成,MAC子层可以继续进行。
如果MAC子层能继续进行,它会请求PHY在当前的超帧中执行CCA。如果MAC子层不能继续进行,它会等待,
直到下一个超帧中的CAP开始时,并在再一次评估它是否能继续进行之前[step (2)],使用进一步的随机退避延时。
在BLE子字段设置为零的时隙CSMA-CA系统中,MAC子层应当确保在随机退避之后,
可以进行剩余的CSMA-CA操作,并且在CAP结束之前,整个事务被传输。
退避倒计时只能发生在紧接信标帧的IFS结束后的第一次macBattLifeExtPeriods完整退避周期内。
如果剩余的CSMA-CA算法步骤(即,2个CCA分析)---帧传输和任何确认帧能在CAP结束之前完成,
帧传输将开始于紧接信标帧的IFS之后,MAC子层可以继续进行。
在信标紧接着的IFS时段之后的第一个macBattLifeExtPeriod完全退避周期中的一个周期内,帧传输将开始进行。
(帧传输将开始其中之一的第一次macBattLifeExtPeriods完整退避周期内)
one of the first macBattLifeExtPeriods full backoff periods after the IFS period following the beacon
如果MAC子层能继续进行,它会请求PHY在当前的超帧中执行CCA。如果MAC子层不能继续进行,它会等待,
直到下一个超帧中的CAP开始时,并在再一次评估它是否能继续进行之前[step (2)],使用进一步的随机退避延时。
如果信道评估为忙,MAC子层将NB和BE的值各加1,确保BE的值不大于macMaxBE。此时,使用时槽CSMA-CA的MAC子层
将复位CW为2。如果NB的值小于或等于macMaxCSMABackoffs,CSMA-CA算法会返回到第2步。如果
NB的值大于macMaxCSMABackoffs,CSMA-CA算法会以信道访问失败而终止。 
如果信道评估为空闲,使用时槽CSMA-CA的MAC子层应确保CW在开始传输之前期满。为此,MAC子层应首先
将CW递减1,然后确定它是否等于零。如果它不等于0,将返回到步骤3。如果它等于0,MAC子层将在下一个
退避周期的边界进行帧传输。在非时槽CSMA-CA系统中,MAC子层会立即开始帧传输(无需等待到下一个
退避周期的边界)。





原创粉丝点击