在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子层会立即开始帧传输(无需等待到下一个
退避周期的边界)。

IEEE 802.15.4 CSMA-CA算法翻译(IEEE 802.15.4-2006 7.5.1.4 CSMA-CA algorithm)相关推荐

  1. 《Real-Time Rendering 4th Edition》全文翻译 - 第15章 非真实感渲染(下)15.3 ~ 15.5

    连更两篇,冲鸭! 业余翻译,若有不周到之处,还请多多指教! 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第15章 非真实感渲染  Chapter 15  ...

  2. Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例

    ML岗位面试:11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知.计算机视觉算法的理解.目标检测相关项目案例 Interview:算法岗位面试-11.15下午上海某航天***公司(国企 ...

  3. Interview:算法岗位面试—10.15上午—上海某公司算法岗位(偏图像算法,制造行业)技术面试考点之AI算法与实际场景结合产生商业价值的头脑风暴

    Interview:算法岗位面试-10.15上午-上海某公司算法岗位(偏图像算法,制造行业)技术面试考点之AI算法与实际场景结合产生商业价值的头脑风暴 导读:一心想去互联网,未必能够发挥自己最大价值, ...

  4. Interview:算法岗位面试—10.15下午—上海某公司算法岗位(偏机器学习,合资制造行业)技术面试考点之电话面试—研究项目的技术考察

    Interview:算法岗位面试-10.15下午-上海某公司算法岗位(偏机器学习,合资制造行业)技术面Interview:算法岗位面试-10.15下午-上海某公司算法岗位(偏机器学习,合资制造行业)技 ...

  5. 一个Delphi写的DES算法, 翻译成C#

    其实.NET Framework已经提供实现DES算法的类: System.Security.Cryptography.DESCryptoServiceProvider.之所以要把一个Delphi写的 ...

  6. 以太网CSMA/CD算法交换机自学习/转发简述

    一.以太网CSMA/CD算法 NIC从网络层接收数据报,创建数据帧. 监听信道(1-坚持):如果NIC监听到信道空闲,则开始发送帧:如果NIC监听到信道忙,则一直等待到信道空闲,然后发送帧. NIC发 ...

  7. 已知总线长度为1km,信号在总线上的传播速度为2×10^8m/s,数据传输速率为10Mbit/s。请问CSMA/CD算法成立的最短帧长度是多少?写出计算过程。

    已知总线长度为1km,信号在总线上的传播速度为2×10^8m/s,数据传输速率为10Mbit/s.请问CSMA/CD算法成立的最短帧长度是多少?写出计算过程. 最小帧长度=数据传输率 W*往返传输延时 ...

  8. 视觉机器学习20讲-MATLAB源码示例(15)-BP学习算法

    视觉机器学习20讲-MATLAB源码示例(15)-BP学习算法 1. BP学习算法 2. Matlab仿真 3. 仿真结果 4. 小结 1. BP学习算法 BP算法就是目前使用较为广泛的一种参数学习算 ...

  9. 前端“Wed, 22 Sep 2021 15:48:33 GMT“时间转换成“2021-09-22 15:48:33

    前端时间转换问题 "Wed, 22 Sep 2021 15:48:33 GMT"时间转换成"2021-09-22 15:48:33 var d = new Date(va ...

最新文章

  1. nanopore测序技术专题(六):测序错误率太高无法使用?
  2. Nagios 监控 ESXi
  3. Unity 4.x 2D游戏开发基础教程
  4. boost::process::posix相关的测试程序
  5. 使用yum查看安装了哪些软件包、某软件包是否已经安装
  6. [科普]MinGW vs MinGW-W64及其它
  7. 【webservice】Java JAX-WS和JAX-RS webservice
  8. 全国计算机一级计算机基础及WPS考试题型,计算机一级考试科目有哪些?Wps和ms考试的题目一样吗?...
  9. leetcode 712. Minimum ASCII Delete Sum for Two Strings | 712. 两个字符串的最小ASCII删除和(暴力递归->傻缓存->DP)
  10. 偶然的一次渗透从弱口令->docker逃逸
  11. java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...
  12. opencv图像处理时使用stringstream批量读取图片,处理后并保存
  13. java实现输出下一秒_编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一...
  14. java 设计模式学习笔记十三 observer设计者模式
  15. 下载Android源码详细过程记录
  16. 学习2 游戏交互界面设计(贪食豆)
  17. oracle怎么看alter日志,Oracle 11g 日志alter文件位置
  18. 国科大学习资料--人工智能原理与算法-第十三次作业解析(学长整理)
  19. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第13波-一键生成带图片自由报表...
  20. 微信公众号-上传永久素材-中文文件名乱码 问题记录

热门文章

  1. 2021年湖南卫生副高考试成绩查询,2021年湖南卫生资格成绩查询时间及查分入口【6月4日起】...
  2. 【机器学习】这份分类决策树算法介绍请收好!
  3. 2020-09-27程序设计基础知识
  4. 五一出游,“我”的隐私被扒干净了
  5. 国产FlexRay系列产品即将上市,值得期待!
  6. 大学生考系统集成项目管理工程师有什么用?
  7. 会话(gorilla/sessions)
  8. 朴素贝叶斯算法(python 实现)
  9. python爬虫——正则获取手机号
  10. HTML界的“苏炳添”——详解Canvas优越性能和实际应用