第5章 CHAPTER 5 媒体访问控制层 无线物联网使用电磁波(ElectroMagnetic,EM)频谱作为媒介来传输数据。但是,只有一个频谱,所有应用必须共享。有许多不同的应用构建在无线物联网上,不同的应用如何减少对共享介质的访问争用?考虑一个拥挤房间的问题。许多人聚集在一个房间并且所有人都开始说话,为了能够被听到,人们越来越大声以至于在喧嚣中没有人能够被听到。对于人们来说,这个问题或许可以通过指定协调员或尊重掌握话语权的人来解决。这些概念与自主无线设备中的相关概念具有相似之处,媒体访问控制层中可找到这些相似之处[1]。 第1章介绍了无线物联网底层协议栈的统一模型,如图5.1所示。本章将介绍的协议栈中的相关层由阴影和箭头表示。本书自下而上介绍协议栈。本章将介绍的协议栈层与前两章非常不同。与物理层或其子层相比,媒体访问控制层具有不同的职责。 图5.1遍历协议栈: 媒体访问控制层 无线物联网协议倾向于明确地定义媒体访问控制层。就像物理层一样,定义这些层的标准对于不熟悉的人来说可能是晦涩难懂的。明确的标准定义可以帮助无线物联网应用的开发人员理解为什么物联网协议选择特定的媒体访问控制层标准。因此,本章将重点介绍无线物联网协议媒体访问控制层所必需的理论背景,并将这些理论与实际的无线物联网示例联系起来。 媒体访问控制层负责对共享媒介的访问。媒体访问控制层提供不同节点之间的同步以允许无线传输。随着访问方法变得越来越复杂,同步也变得越来越重要。例如,对于采用扩频的系统,节点之间可能需要同步。另外,各个节点可能需要来自无线网络中的控制器的许可才能在给定的无线信道上进行数据发送。媒体访问控制层负责与访问控制节点的协商。 封装在媒体访问控制层中的特定功能因协议而异。这些功能包括但不限于多址技术、扩频同步技术和纠错技术。纠错功能可能涉及前向纠错和循环冗余校验。前向纠错有时被作为物理层的功能,本书将纠错视为媒体访问控制层的功能。 5.1频段及频谱规划 在通信系统工程师中有句老话: 任何通信系统中最昂贵的部分都是“频谱”。请考虑以下问题: 你的通信系统以什么频率在EM频谱中传输?需要什么类型的天线?信号在这些频率上传输的质量如何?最重要的是,访问这些频率需要多少成本? 只有一个EM频谱,多个服务必须共享。20世纪初,无线业务出现初期,越来越多的无线业务之间需要仲裁。在没有任何仲裁的情况下,无线业务使用频谱时存在相互冲突的风险。因此,频谱的使用在大多数国家受到监管和规划。频谱规划通过为这些业务分配位置和频率来避免多个业务之间频谱的冲突和争用。国家监管机构为使用某部分频谱的业务分配许可证。 频谱被划分为由监管机构定义的“频段”,特定运营商被该监管机构授予使用特定频段的许可证,这些许可证不是免费的。在美国,这些频段的许可访问和通过拍卖会出售。这种成本对于企业家和正在发展中的行业来说是个问题。 监管机构保留一些频段用于“未经许可”的使用,这意味着运营商可以在某些操作限制(例如功率和带宽)下无须许可即可自由访问该部分频段。运营商在这些频段内部署系统,期望能够自行处理争用问题。不同国家已经分配了不同频段的频谱用于未经许可的使用。根据国际协议,不同国家的监管机构将协作为未经许可的用户留出相同的频带。对于这样的频段,不同国家对使用该频段的规则可能略有不同,但该频段的使用通常可跨越国界。国际公认的免许可频段的一个例子是2.4 GHz ISM频段。2.4 GHz ISM频段可在大多数国家免许可使用,这意味着可以在国际市场上无差异地销售专用于2.4 GHz频段硬件的某个产品。2.4 GHz频段在国际上可免许可使用,这使得该频段成为许多无线物联网开发人员的一个有吸引力的选择,同时使得该频段非常拥挤。这种拥挤和潜在的干扰如图5.2所示。 图5.2说明了蓝牙、低功耗蓝牙、IEEE 802.15.4标准和IEEE 802.11标准的信道映射关系。IEEE 802.11标准的信道编号在图5.2中标记为“WiFi”,是最复杂的。IEEE 802.11标准规定了重叠频率的信道,图5.2通过多列说明了这一点。2.4 GHz频段中IEEE 802.11标准的信道编号为1~14,但是图5.2中没有标示出信道14。对于2.4 GHz频段,某些国家不允许使用IEEE 802.11标准的信道14。此外,IEEE 802.11标准的信道14超出了图5.2所示的其他协议的范围,并且没有说明存在干扰的可能性。在美国, 图5.22.4 GHz ISM频段信道映射 2.4 GHz ISM频段不允许使用IEEE 802.11标准的信道12和信道13。也就是说,在美国2.4 GHz频段中,IEEE 802.11标准信道1、信道6和信道11是最大的非重叠WiFi信道集。这使得IEEE 802.11标准信道1、信道6和信道11在许多网络配置中非常流行。图中这三个信道都用阴影表示,以突出它们的重要性。 图5.2中标记为“BT”的传统蓝牙信道代表蓝牙BR和EDR。传统蓝牙信道在频段内按顺序编号,每个传统蓝牙信道的带宽为1 MHz,信道编号为0~79,共有80个信道。低功耗蓝牙在图5.2中标记为“BLE”,采用略微不同的方法。每个BLE信道使用2 MHz带宽。BLE将信道37、信道38和信道39指定为广播信道。这些广播信道不按顺序地放置在信道规划中。BLE广播信道的位置规划是以特定方式完成的,以最小化和IEEE 802.11标准无线局域网的争用。其他BLE信道按顺序映射。BLE信道编号(包括未按顺序映射的信道编号)为0~39,一共有40个BLE信道。 蓝牙和低功耗蓝牙采用跳频协议,需要一系列信道进行跳频。由于此范围内存在WiFi,因此蓝牙和低功耗蓝牙将与WiFi互相干扰。即使WiFi仅使用三个流行的WiFi信道之一,也存在这种干扰的高风险。蓝牙标准增加了自适应跳频技术以降低这种干扰的可能性,并提供WiFi和蓝牙之间能够共存的一些改进措施,这一技术将在本章讨论。 IEEE 802.15.4信道按顺序映射,如图5.2所示。2.4 GHz频段中的每个IEEE 802.15.4信道使用5 MHz。2.4 GHz频段中的IEEE 802.15.4信道编号为11~26,总共16个信道。基于图5.2以及WiFi信道1、信道6和信道11通用的知识,IEEE 802.15.4信道15、信道20、信道25和信道26最容易与WiFi共存。 还有其他特定于各地区的免许可的频段。欧洲规定的SRD是一个免许可频段,覆盖800 MHz范围的带宽。美国在900 MHz范围内提供免许可的ISM频段。为了在关于频段的讨论中更加简便并保持一致性,1 GHz以下的区域免许可频段将被称为“GHz以下未授权频段”。 在发展物联网应用时,开发人员必须选择一种方法来管理频谱接入。第一项工作是应用程序工作频段的选择。工作频段的选择可能会限制物理层中的一些功能。监管机构对不同的免许可频段有不同的发射功率限制,以防止在该频段中工作需要过于广泛的区域。频段中的拥塞是一个非常重要的问题,有许多论文分析了免许可频段中不同无线网络之间的干扰[23]。例如,蓝牙和WiFi在相同的2.4 GHz ISM频段内运行,众所周知,它们会互相干扰。虽然在国际标准化的2.4 GHz频段开发产品具有很大的市场吸引力,但必须先解决该频段的拥塞问题。 不同的标准对工作频段有不同的要求或建议,这通常取决于具体应用。例如,家庭自动化可以在GHz以下 ISM频段工作,因为这些频率在室内具有更好的传输性能。ITU G.9959标准重点关注家庭自动化,因此具有GHz以下ISM频段的工作频率。ITU G.9959标准没有对工作频率提出任何具体的建议,因为GHz以下ISM频段在国际上并未标准化。ZWave联盟推荐了不同国家的特定工作频率。 IEEE 802.15.4协议在几个免许可频段中的多个信道上运行,并规定了在这些频段中运行的不同物理层。这些不同的物理层经过定制可以在相应频段中运行。 如果需要进行信道化,系统设计人员必须为信道化提供足够的带宽。如果系统设计人员知道工作频段会引起很大争议,则必须特别小心地接入,可以通过扩频或自适应系统来解决频谱的争用。 5.2无线物联网的频谱接入 “冲突”是指两个节点同时在同一信道上进行数据传输,这两个发送的信号无意中相互干扰,导致无线链路损耗,这种情况称为“冲突”。显然,需要协调发射机之间的频谱接入以避免这种冲突。无线物联网协议采用多种频谱接入方法。 信道化是缓解争用和冲突的常用手段。信道化可以采用频率信道、给定频率上的时隙或扩频等方式。 节点接入频谱时,可以基于频谱观测的结果智能地改变其传输频段,这被称为频谱感知和动态频谱接入。频谱感知是一种技术,通信系统中的节点监测频段的活动,然后动态地接入该频段。频谱感知在认知无线电技术中更为常见,文献[4]分析了此类系统在无线物联网中的角色。遗憾的是,频谱感知在计算上很复杂,并且不利于使用低成本设备。因此,采用一种更简单的称为CSMA的机制。CSMA将在5.3.4节中讨论。 对于2.4 GHz ISM频段的业务,物联网协议可以使用多种频率。在该频段中,物联网协议可以指定多个信道,并将这些信道分配给各个物联网节点集合。但是,物联网节点将在该频段遇到明显的拥塞和干扰。因此,协议通常会指定一些扩频技术。 在GHz以下未授权的频段中,竞争较少,但信道分配的空间也较小。无线物联网协议旨在充分利用这种受限制的环境。例如,IEEE 802.15.4标准在该频段中使用并行序列扩频方案。并行序列扩频技术已在第4章中讨论。并行序列扩频技术使得IEEE 802.15.4协议具有扩频技术的一些优势,同时保持相对较高的频谱效率。鉴于GHz以下频段的频率使用受到严格限制,并行序列扩频技术提供了一个很好的折中方案。 5.3多路访问技术 物联网的应用必须选择一个可以运行的频段。这个频段规定了允许使用的频率和带宽。物联网应用工作在多个并行用户共享同一频段的环境中。问题是: “多个用户如何在同一个频段同时传输数据?” 允许多个信道使用同一物理资源的过程称为多路复用。将这些有限资源动态地分配给用户称为多址接入。多址接入和多路复用之间的区别在于动态分配。 文献[1]、文献[5]和文献[6]提供了几种多址接入方案。本节将简要介绍FDMA、TDMA、双工和CSMA。 5.3.1频分多址 FDMA是一种信道化方法,其中每个用户由频率分开。FDMA信道之间需要保护带[5]。图5.3为一个FDMA系统,其中同一个频段的不同用户由频率信道分开。第3章讨论了信道的概念。在图5.3中,三个独立的信道有三个用户。保护频带是指每个用户频带之间的间隔区域,有助于防止相邻信道的干扰。通过将所需信道下变频到基带和低通滤波来接入频率信道,第3章详细讨论了下变频过程。 图5.3FDMA IEEE 802.11和IEEE 802.15.4使用FDMA进行信道化。IEEE 802.15.4使用直接序列扩频来减少冲突,但并非为了信道化。 ITU G.9959不是动态信道化的。ITU G.9959确实采用频率信道,但不能被描述为FDMA系统。 蓝牙也指定频率信道,但蓝牙描述为通过跳频扩频进行信道化更合适,如第5.4节所述。低功耗蓝牙使用跳频扩频和专用信道,低功耗蓝牙的专用信道被称为广播信道。 5.3.2时分多址 TDMA是一种信道化方法,其中每个用户在不同时间接入某个频率。允许各个用户接入的时间段称为时隙。图5.4为一个TDMA系统,其中单个频率信道被分成不同的时隙供不同用户使用。各个时隙被组合为TDMA帧。用于无线通信的TDMA帧具有保护时段,以防止由于定时不准确而导致的传输冲突。 图5.4TDMA 与FDMA系统相比,TDMA系统具有几个优点。TDMA系统可以在一个载波上传输到多个节点。发射机上只需要一个载波放大器,可以避免交调失真。在TDMA系统中分配新的时隙信道比在FDMA系统中分配新的频率信道更容易。可以在第二代移动通信(2G)协议中找到TDMA系统的示例。出于上述原因,移动通信系统开始采用TDMA技术而不是第一代移动通信系统的FDMA技术。 “多址”和“双工”之间存在差异。时分双工将在5.3.3节中讨论。蓝牙不使用TDMA,而是使用时分双工。 ITU G.9959标准仅使用CSMA。CSMA系统在5.3.4节中讨论。 IEEE 802.15.4标准包含媒体访问控制层的TDMA模式。由于IEEE 802.15.4标准的媒体访问控制在这些可选模式中具有一定的复杂性,因此IEEE 802.15.4标准多址方案将采用5.3.4节中的时隙CSMA。 5.3.3双工 如果无线系统中的节点始终是接收机或始终是发射机,则该系统称为单工[1]系统。单工系统是单向链路。单向寻呼系统是单工系统的一个例子。 同样,也有双向链路。如果系统中一次只能由一方进行传输,则该系统称为半双工[1]系统。步话机是半双工系统的一个例子。步话机通常用于一对多的通信链路中。步话机采用例如CTCSS之类的隐私代码来排除潜在接收者群体。 如果系统中的所有用户都可以随时进行传输,那么该系统称为全双工系统[1]。全双工系统的示例是电话呼叫,其中每个参与者可以随时通话,包括同时通话。同时通话可能会产生混淆,但无线系统的功能不会受此影响。 双工可以分离两个同时进行的传输。为了建立全双工系统,链路上的双方必须能够同时传输。在所有网络拓扑中,允许两个节点同时发送,并且必须具备“双工”能力以处理并发的数据流。有几种方法可以建立这种并发性。双工的方法有频分双工(Frequency Division Duplexing,FDD)和时分双工(Time Division Duplexing,TDD)。 在FDD系统中,双方在不同频率信道上同时发送数据。通信双方的收发机可在不同频率同时发射,以频率区分。FDD如图5.5所示。FDD在无线系统中很常见,但是它并未用于本书中探讨的任何无线物联网协议。 图5.5FDD 在TDD系统中,双方在同一信道上通信,但轮流使用该信道。因此,TDD系统使用半双工链路; 但是,它通过对数据的时间分配实现全双工通信。TDD如图5.6所示。即使收发机是交替使用的,通信双方也认为他们可以同时进行通信。 图5.6TDD 本书探讨的大多数无线物联网协议都不采用双工技术。蓝牙是个例外。蓝牙采用TDD。蓝牙TDD系统如图5.7所示,该图来自文献[7]。蓝牙网络是星状拓扑的一个例子。蓝牙网络由称为“主节点”的中央节点控制,订阅节点称为“从节点”。蓝牙是跳频系统,每个时隙代表一个跳频,跳频序列在节点之间共享。在图5.7中,主节点在奇数时隙上的共享跳频信道上发送数据,从节点在偶数时隙上发送数据。 图5.7蓝牙TDD[7] 5.3.4载波侦听多路访问 考虑多个节点共享频率信道并且没有机制来指定和同步时隙的情况,避免冲突的唯一方法是节点轮流访问单个共享信道。CSMA是一种多址接入机制,它解决了上述问题。在节点发送数据之前先“感知”频率争用信道。该方法能够在没有采用任何其他同步技术或没有频率使用的情况下缓解争用。单一共享媒介的问题不是无线协议所独有的。使用CSMA作为该问题的解决方案也不是无线协议所特有的。有线(非无线)标准IEEE 802.3也称为以太网标准,也使用CSMA。以太网使用CSMA是因为存在共享媒介(互连的以太网电缆)和共享的频率信道。无线协议中的CSMA确实遇到了无线传输所特有的挑战,本节将讨论这些挑战。 CSMA的基本思想如图5.8所示。网络中有三个节点: A、B和C。节点A和节点B都希望向节点C发送信息。节点B先于节点A启动该过程。节点B感知信道中的能量,感知到信道是空的时,节点B开始发送。节点A也感知信道中的能量并检测到节点B在发送数据。然后,节点A等待一段时间,并重复该过程。直到感知到通道是空的,节点A开始发送,则节点B感知到了信道中的能量并等待。 图5.8通过CSMA减少信道争用 CSMA提供了一种缓解冲突的方法,但也会造成竞争条件。如图5.9所示,如果两个节点都要发送并且每个节点都检测到该信道未被另一个节点占用,则二者都将开始发送,结果就是产生冲突。 图5.9CSMA系统中的冲突 考虑产生这种竞争条件的可能性,需要额外的冲突缓解技术。有两种常见的缓解技术: 碰撞检测(CSMA/CD)和碰撞避免(CSMA/CA)[1,8]。在冲突检测系统中,发送节点必须能够监测自己的传输,就像预期的节点能够接收。如果传输与另一个传输冲突,则接收到错误。一旦检测到这种情况,发射机等待并再次尝试。碰撞检测是以太网中使用的解决方案,在无线系统中不适用。发射机可以从所有节点接收信号,且目标无线接收机能接收该发射机的信号,这种假设是不安全的。假设发射机可以知道目标无线接收机观察到的延迟和信道响应,这也是不安全的。在无线系统中重复碰撞和重试是昂贵的,因此无线系统需要替代方案,即碰撞避免。 为进一步分析问题,请考虑图5.10所示的无线网络。在图5.10中,存在4个无线网络节点: A、B、C和D。节点A和节点B的无线覆盖范围有重叠部分,每个节点位于它们各自范围的中心。节点A可以向节点B发送和从节点B接收数据。节点B可以向节点A和节点C发送和从节点A和节点C接收数据。当节点A尝试发送到节点B时,节点C不能感知到该信号传输。因此,节点A和节点C会在CSMA系统中发生冲突。这就是“隐藏节点”问题。 图5.10中的另一个问题是“暴露节点”问题。考虑当节点B尝试发送到节点A时会发生什么。如果节点C尝试发送到节点D,则节点C将感知从节点B到节点A的传输并延迟发送,由于无线覆盖范围的限制,节点C和节点D之间的链路不会干扰节点B和节点A之间的链路。然而,因为节点C感知到节点B在发送,所以节点C延迟发送数据到节点D。这种传输延迟是不必要的,因为网络中根本不存在拥塞,这就是“暴露节点”问题。 图5.10隐藏节点和暴露节点 在无线系统中使用碰撞避免作为缓解CSMA竞争条件的手段。在IEEE 802.15.4等无线物联网标准中使用了这种碰撞避免方式。碰撞避免涉及额外的媒体访问控制层消息,包括确认(Acknowledgement,ACK)、 图5.11CSMA/CA消息 流程图 请求发送(RequestToSend,RTS)和清除发送(ClearToSend,CTS)。消息流程图如图5.11所示。发送方向接收方发送RTS消息。然后,发送方等待CTS消息。当明确可以发送时,接收方响应CTS消息,发送方发送数据并等待确认(ACK)。如果数据成功到达,接收方发送ACK消息。 这种握手过程允许发送方知道接收方的状态。握手过程还向其他节点提供信道繁忙或空闲的通知。通过这种握手过程确定信道状态的过程称为“虚拟信道感知”。 虚拟信道感知允许网络中的节点像信道感知一样操作。当一个节点向另一个节点发送CTS消息时,范围内的所有节点都接收该消息。CTS消息将以独占的方式寻址到发送RTS消息的节点。然而,CTS消息范围内的所有节点都认为该信道忙。虚拟信道感知解决了图5.10中的隐藏节点问题。当节点A需要向节点B发送时,它遵循图5.11中的协议。节点C观察正在发送的CTS消息,即使节点C超出节点A的通信范围,也会将该信道视为忙状态。此方法也解决了暴露节点的问题。对于图5.10中的暴露节点,节点B正在向节点A发送信息。节点C超出节点A的通信范围,因此不会观察到CTS消息。因为节点C没有观察到来自节点A的CTS消息,节点C正确地将信道视为空闲状态,并继续向节点D发送RTS消息。 无时隙系统与时隙系统 无时隙CSMA系统如上一节所述,无须进一步调整。 时隙CSMA系统将发送尝试限制在时隙的开始。时隙CSMA为CSMA引入了时隙的概念,没有中央协调器指示哪个发送机可以使用哪个时隙,每一次传输必须争用可用时隙。而且,退避时间需为时隙周期的整数倍,这需要与网络中的中心节点进行一些协调。 IEEE 802.15.4标准可以使用时隙和非时隙CSMA系统或者TDMA系统。IEEE 802.15.4标准媒体访问控制层具有两种模式: 启用信标和不启用信标。IEEE 802.15.4标准不启用信标的媒体访问控制是CSMA系统。IEEE 802.15.4标准启用信标的媒体访问控制可以是时隙CSMA系统或TDMA系统。启用信标的帧如图5.12所示,图5.12来自IEEE 802.15.4标准[9]。个人局域网协调器发送周期性信标。在两个信标之间存在“竞争访问周期”和“无竞争周期”。之所以被称为“竞争访问周期” 是因为网络中的节点在该时间争用访问该信道。“无竞争周期”通过为特定发射机分配特定时隙来防止争用。“无竞争周期”包含“保护时隙”,允许节点在特定的分配时隙中进行传输,如图5.4所示。分配给发射机的时隙是可变的。 图5.12启用信标的IEEE 802.15.4标准MAC[9] 5.4扩频作为多址接入 扩频技术可以提供多种接入方法。在文献[6]中,这个概念被称为“扩频多址接入”。 5.4.1跳频 跳频依赖于链路中所有节点共享的序列,该跳频序列是发射机和接收机都已知的。为了使发射机和接收机能调谐到相同的频率,跳频序列的先验知识是必要的。该跳频序列可以看作一种频率信道定义。两个FHSS系统可以在相同的跳频带宽中长时间工作是因为调制带宽不重叠。图5.13中有两个信号共享跳频带宽,两个信号通过阴影来区分,具有两个不同的跳频序列。这些序列可能共享时频对,这将导致冲突,如图5.13所示。这表明两个跳频系统也会相互干扰。 图5.13跳频多址接入 跳频覆盖很宽的带宽,因此跳频序列可能跳入由无关信号占用的频率信道。例如,蓝牙跳频序列可以使用被IEEE 802.15.4标准或WiFi占用的2.4 GHz频段中的频率。这是跳频信道的另一种干扰源。 蓝牙采用一种自适应跳频的碰撞避免方法[7]。自适应跳频被归类为“非协作共存机制”,因为它不需要与其他系统协作使用相同的频段。在自适应跳频下,蓝牙系统可以感知和报告是否可以在某些频率上接收传输。为了避免碰撞,蓝牙系统可以构建频率列表。IEEE 802.15.4和WiFi使用固定的频率信道,可以感知并将这些信道添加到频率列表中以避免碰撞。 5.4.2码分多址 直接序列扩频已在第4章中作为减轻信道干扰的手段进行了介绍。直接序列扩频使用相同的技术作为多址访问方案,被称为码分多址(Code Division Multiple Access,CDMA)。CDMA在第三代(3G)移动通信系统中很常见。CDMA是用户共享频率和时间的信道化方法,但是通过扩展码来区分。 IEEE 802.15.4标准和WiFi使用直接序列扩频。然而,本书中探讨的无线物联网协议没有使用CDMA。IEEE 802.15.4标准或WiFi中采用的直接序列扩频技术的目的是减轻信号干扰和衰落。这些系统采用的直接序列扩频技术没有信道化能力。 5.5错误检测和校正 当从接收信号(非发送信号)进行符号解调时会出现符号错误,接收机检测这些符号错误的能力称为“错误检测”。这些错误可能有各种各样的来源,可能是某种形式的干扰、衰落或噪声。 纠错是校正检测到的错误的能力。用于错误检测和校正的技术对错误的数量和类型有限制,可以先进行错误检测然后进行校正。 所有无线物联网协议中都会有某种形式的错误检测和校正。错误检测和校正是一个复杂的问题,有专门讨论该问题的论文,例如文献[10]。详细阐述这一广泛主题的所有理论和多样性超出了本书的范围。然而,它是所有无线系统的重要概念,因此必须针对无线物联网进行分析。本节将讨论该主题并深入研究无线物联网协议标准中具体的错误检测和校正的概念。 5.5.1冗余 错误检测和校正的目标是通过冗余降低符号错误的概率。冗余即重复信息。 在无线系统中重复发送信息将降低频谱效率。频谱效率以每秒每赫兹的比特数来度量。频谱效率是数据速率除以信号的带宽的值。冗余意味着传送信息需要更多比特,所以降低了频谱效率。频谱效率(bps/Hz)降低意味着带宽(Hz)增加或传输量(bps)减少。 5.5.2物联网中的错误检测和校正 无线物联网协议的标准采用不同形式的错误检测和校正。阅读这些标准时要记住的第一件事是,标准的制定者期望开发人员能够满足该标准。阅读标准可能是件令人生畏的事。如果针对一个具体应用去考虑该标准,将有助于揭开标准的神秘面纱。在无线物联网中考虑错误校正和检测时,需要考虑成本、功耗和延迟。 许多物联网设备都是低成本设备,这些设备无法承受很高的复杂性。因此,多数标准从节约成本的角度出发避免采用更复杂的错误检测和校正方案。 许多物联网应用程序无法承受复杂的迭代纠错方案所带来的延迟。因此,更简单的低延迟方案是优选的。 鉴于节约能耗是物联网的主要关注点,协议旨在充分利用传输功率。因此,协议被设计为最大化传输效率,使得功率不会浪费在不必要的冗余传输上。 5.5.3错误校正的两种基本类型 有两种基本类型的错误校正方法: 后向纠错(Backward Error Correction,BEC)和前向纠错。前向纠错可以在接收机处校正错误,而后向纠错依赖于发射机的重传来校正错误。前向纠错和后向纠错不一定是互斥的,可以在同一无线系统中使用。 后向纠错和前向纠错系统都依赖于无线系统在传输的信息中加入的冗余信息来校正误码。 5.5.4后向纠错 在后向纠错中,由于无法在接收方校正错误,接收方必须在检测出错误时请求发送方重新发送信息。在接收包中检测到错误时,接收方发送自动重传请求。目前有很多自动重传请求协议。 为了使接收方检测到比特错误,发送方必须对正在传输的数据比特附加一些简短的摘要。该摘要称为错误检测代码。但是,发送方不会嵌入错误校正的方法。该摘要携带通过某种算法从数据比特生成的冗余信息。收到消息后,接收方对数据比特运行相同的算法,并将结果与接收到的摘要进行比较。如果两个摘要不匹配,即发生了误码。由于后向纠错系统中的接收方无法校正错误,因此计算摘要比特的算法专注于研究最大化可检测到的错误数量。 5.5.5将数字数据表示为多项式 考虑多项式F(x),如式(5.1)所示。F(x)为N-1次函数。系数α1可以取值0或1。 F(x)=∑N-1n=0αnxn(5.1) 式(5.1)可用于构造N-1次多项式,以表示长度为N的二进制字符串。例如,值为10010011的8位二进制字符串可以表示为F(x)=x7+x4+x1+1。 将数字数据表示为多项式涉及“伽罗瓦域”的概念,也称为“有限域”。具体而言,在有限域错误码的研究中主要关注的是二元有限域,简称为GF(2)。GF(2)上的多项式可以进行二进制字符串的运算。将二进制字符串视为多项式,可以将多项式的加法、减法、乘法和除法应用于二进制字符串。 和与差必须是模1运算。因此,加法和减法遵循异或(XOR)运算的规则,如式(5.2)所示。 1+1=0 1+0=1 0+1=1 0+0=0(5.2) 乘积遵循逻辑与(AND)运算的规则,如式(5.3)所示。 1*1=1 1*0=0 0*1=0 0*0=0(5.3) 多项式的乘法遵循多项式的标准规则,如式(5.4)所示,只要满足式(5.2)和式(5.3)即可。在式(5.4)中,多项式H(x)是多项式F(x)和G(x)的乘积。系数α和β的乘积遵循式(5.3)。由多项式xn+m之和产生的重复项由式(5.2)得出。 F(x)=∑N-1n=0αnxn G(x)=∑M-1m=0βmxm H(x)=G(x)F(x)=∑M-1m=0∑N-1n=0αnβmxm+n(5.4) 例如,多项式F(x)=x7+x4+x1+1乘以多项式G(x)=x1+1得到乘积为H(x)=x8+x5+x2+x1+x7+x4+x1+1。可将H(x)简化为H(x)=x8+x7+x5+x4+x2+1,因为两个x1抵消了。 F(x)乘以xM表示将F(x)逻辑左移M位,得到的乘积多项式是N+M-1阶。级联可以通过左移一个多项式,并将左移后的多项式与要追加的多项式相加得到。 例如,值为10010011的8位二进制字符串可以表示为F(x)=x7+x4+x1+1。值为101的3位二进制字符串可以表示为G(x)=x2+1。如果后一个3位二进制字符串要附加到前一个8位二进制字符串的末尾形成10010011101,则8位二进制字符串必须左移3位以形成10010011000。将二进制字符串向左逻辑移位3位可以表示为F(x)*x3=x10+x7+x4+x3。在F(x)移位之后,可以将移位的多项式与G(x)相加以形成F(x)*x3+G(x)=x10+x7+x4+x3+x2+1。 5.5.6将比特错误表示为多项式 考虑无线系统中的比特错误,基于上述示例,通过无线系统发送二进制字符串。二进制字符串可以表示为多项式F(x),其中F(x)=x7+x4+x1+1。接收机解调无线信号,但是由于噪声会产生误码。接收机得到多项式R(x),它与预期的多项式F(x)略有不同。 解调期间的错误产生误差多项式E(x)。如果没有错误,则E(x)为零。将E(x)加到F(x)上形成接收到的多项式S(x),如式(5.5)所示。E(x)的阶数等于或小于F(x)的阶数。 S(x)=F(x)+E(x)(5.5) 建立这个多项式后,可以开发代码来帮助发现多项式E(x)是否在传输F(x)时产生了误差。 5.5.7循环冗余校验 循环冗余校验码是基于二进制字符串和除法的错误检测代码[11]。 多项式除法是将一个多项式除以另一个多项式,就像整数除法一样,运算将产生商和余数。 除法运算将产生商,其余部分将被忽略。模数运算可用于定义余数。要传输的二进制数据表示为多项式F(x),F(x)为N-1次。将用于获取循环冗余校验值的“生成多项式”表示为多项式G(x)。 使用多项式除法可以定义商Q(x),如式(5.6)所示。F(x)为N-1次,G(x)为M-1次。F(x)逻辑左移K位,移位产生的乘积除以G(x)。此除法没有分数结果。 Q(x)=F(x)xMG(x)(5.6) 式(5.6)中的除法定义了商,但也需要定义余数。余数R(x)可以使用模运算定义,如式(5.7)中所示,余数多项式为M-1次。 R(x)=F(x)xMmod G(x)(5.7) 商和余数与逻辑左移位乘积有关,如式(5.8)所示。商和生成多项式的乘积与余数多项式相加,以产生原始的逻辑左移位乘积。 F(x)xM=Q(x)G(x)+R(x)(5.8) 将R(x)加到逻辑左移位乘积中可以抵消余数,可以用式(5.9)表示。得到的和可以完全被生成多项式G(x)整除。式(5.9)中的和是将被发送到接收机的消息。 F(x)xM+R(x)=Q(x)G(x)(5.9) 解调之后,接收机处的多项式为S(x),是F(x)进行逻辑左移后与余数R(x)和误差多项式E(x)之和。总和如式(5.10)所示,E(x)的阶数等于或小于逻辑左移后F(x)的阶数。 S(x)=F(x)xM+R(x)+E(x)(5.10) 为了检查比特错误,接收机求得解调器输出S(x)与生成多项式G(x)相除后的余数。该操作产生比特错误检测D(x),如式(5.11)所示。如果S(x)完全可被G(x)整除,则不会检测到错误。否则,如果结果D(x)不为零,则检测到比特错误。 D(x)=S(x)mod G(x)(5.11) D(x)和E(x)可能不相同。生成多项式检测比特错误的能力取决于该生成多项式的根,根多项式可由文献[11]获得。 5.5.8校验和 “校验和”类似于循环冗余校验码,是附加到要发送的数据的错误检测码。与循环冗余校验相比,校验和计算复杂度较低。但是,校验和在错误检测的能力方面没有那么好。 目前,有各种各样的校验和算法,与无线物联网标准最相关的是 “垂直奇数校验和”。 将要传输的二进制数据表示为多项式F(x),F(x)为N-1次。F(x)被重构为一组M比特的值,长度是整数L,N可被M整除,使得N/M = L。然后,将F(x)表示为较小字的移位求和,如式(5.12)所示。 F(x)=∑M-1m=0Fm(x)xM(5.12) 重组F(x)的过程可视为将F(x)重组为二进制值矩阵。例如,32比特值将重组为4个8位字,如图5.14所示。值0x62ECA57E(十六进制)由4个字节(8位字)组成。然后,可以将该4字节值重新组织成二进制值的8×4矩阵。 图5.14二进制8位字矩阵 然后,根据式(5.2),将所有Fn(x)项相加计算校验和值,如式(5.15)所示。多项式C0(x)或者全是1,即x7+x6+x5+x4+x3+x2+x1+1,或者全是零。偏移多项式C0(x)确定校验和是偶数还是奇数。 C(x)=C0(x)+∑N-1n=0Fn(x)(5.13) 计算校验和的过程如图5.15和图5.16所示。图5.15中显示了垂直偶数校验和。对矩阵的每列进行计数。如果列中存在偶数个1,则将校验和的该位设置为零; 如果列中有奇数个1,则将校验和的该位设置为1。校验和C(x)成为矩阵的第5行,加入第5行后,每列中1的个数是偶数,这与将公式(5.15)中的C0(x)设置为全零相同。 图5.15垂直偶数校验和 图5.16显示了此过程的“奇数”版本。和之前一样,对矩阵的列进行计数,但是需要奇数个1。如果列中1的个数为偶数,则将校验和的该位设置为1; 如果列中1的个数为奇数,则将校验和的该位设置为零。校验和C(x)成为矩阵的第5行,加入第5行后每列1的个数都是奇数。这与将公式(5.15)中的C0(x)设置为全1相同,即x7+x6+x5+x4+x3+x2+x1+1,该算法称为垂直奇数校验和。 图5.16垂直奇数校验和 比特错误的位置对于校验和是否可以检测它们非常重要。这个问题如图5.17所示。在图5.17中,相同的数据在左边的矩阵和右边的矩阵中传输。这两种情况下都加入了两比特错误。对于左侧的情况,两个比特错误发生在同一列中,导致得到预期的奇偶校验位,这无法检测到错误。对于右侧的情况,两个比特错误发生在两个不同的列中,导致两个不正确的奇偶校验位,并且检测到两个错误。垂直校验和无论是奇数还是偶数,只能检测每列中的一个错误。如果同一列中出现偶数个比特错误,则会抵消对校验和的影响。因此,不能说校验和可以检测多少比特错误,因为检测这些错误的能力取决于错误发生的位置。 图5.17垂直奇数校验和的误码检测 5.5.9前向纠错 在前向纠错中,发射机嵌入发送信号中用于检测和校正错误的方法称为纠错码。该过程将数据比特序列转换为更大的编码比特序列进行传输。明确地定义术语“编码比特”很重要。编码比特直接从原始数据比特生成,编码比特串将比原始数据比特串长。如果原始数据比特串包含在未被修改的编码比特输出串中,则该类型的前向纠错码被称为系统码。这一定义可形成多种前向纠错方法。 最简单的方法是将原始数据比特重复奇数次。该方法将未修改的数据比特直接合并到一个较长的字符串中,该字符串即编码比特。一些前向纠错方法通过将较小的导出比特序列附加到数据比特的末尾,从一串数据比特中创建一串编码比特。结果得到一个包含未修改的原始比特的字符串编码比特,并且比原始数据串长。除了可以纠正检测到的某些错误,此方法类似于循环冗余校验。一些前向纠错方法通过采用卷积技术导出一串编码比特,由这种过程产生的编码串将比原始数据串长,可能包含或不包含未修改的原始数据比特。 较大的编码序列是从数据比特中导出的,编码比特本身不包含新信息。这种将数据比特转换为较长的编码序列的过程会对发送的信息增加冗余。接收机对编码序列进行解码,并使用该编码检测并纠正已发生的任何比特错误。必须设计前向纠错编码,以便能够检测和纠正错误。检测和纠正比特错误的能力取决于添加的冗余量以及如何添加冗余。 1. 前向纠错的冗余 前向纠错码中的冗余量用编码率r来衡量。r的定义如式(5.14)所示。 r=NK(5.14) 其中,r是编码率,N是数据比特的数量,K是编码比特的总数。编码比特的数量总是大于数据比特数量。因此,编码率r始终小于1。 编码过程就是将数据比特F(x)变换为编码比特C(x)的过程。F(x)为N-1次,C(x)为K-1次。K大于L,表示存在冗余。发送方将编码比特发送给接收方。某些类型的前向纠错将长度为M的摘要添加到长度为L的数据比特串中,其中K=L+M。这种类型的前向纠错码称为分组码,因为它编码的是一个数据分组。将此摘要附加到数据比特串的末尾与用于循环冗余校验的过程类似。循环冗余校验码和分组码之间的区别,从功能上讲,分组码中的冗余被设计用于识别和定位编码比特中的错误。 系统的频谱效率(bps/Hz)由发送数据的比特数决定,而不是由发送的编码比特数决定。因此,较低的编码率意味着较低的频谱效率。 例如,系统使用1/2的编码率,并在2 MHz带宽上传输1 Mb/s的编码数据。因为系统使用的前向纠错编码率为1/2,则实际数据速率为0.5 Mb/s。因此,计算频谱效率为0.25 b/s/Hz,系统的数据速率为0.5 Mb/s。如果系统发送未编码的数据,那么数据速率将是1 Mb/s并且频谱效率为0.5 b/s/Hz。1/2的前向纠错编码将频谱效率降低一半。 目标是尽可能使编码率接近于1,同时最大限度地提高检测和校正错误的能力。 2. 汉明距离 接收机接收到的信号为S(x),是发送信号C(x)加上误差多项式E(x)的结果。当接收机反向进行编码过程时,可能能够检测并校正传输信号中的错误。为此,引入“汉明距离”的概念。汉明距离是两个二进制字符串比特位之间差异的度量。 检测和校正错误的能力与所使用的字符串之间的距离有关。纠错码可以检测并校正若干比特错误,由最小汉明距离确定。最小汉明距离是发射机发送的所有二进制字符串之间的最小汉明距离。 纠错码D可以检测出的比特错误的数量由式(5.15)给出,是最小汉明距离d的函数。 D=d-1(5.15) 式(5.16)给出了纠错码能够纠正的比特错误数量。C是可以纠正的比特错误的数量,该值将浮动到最接近的整数。 C=d-12(5.16) 3. (3,1)重复码 冗余的简单示例是将信息重复发送三次,接收机估计符号值三次,并且估值次数多的符号获胜。这称为(3,1)重复码。此名称使用格式(n,k),其中n是总比特数,k是原始信息比特。由此产生的冗余为接收机提供了三次符号决策的机会。 冗余是以降低数据吞吐量为代价的。在(3,1)重复码的例子中,吞吐量减少为1/3,但在嘈杂的环境中成功接收的可能性更大。 图5.18(3,1)重复码距离 最小汉明距离如图5.18所示。图中仅显示了两个数码比特状态: 111和000,只有这两个状态被传输。 (3,1)重复码的最小汉明距离为3,因此该码可以检测最多两个比特错误并纠正最多一个比特错误。汉明距离为3的代价是数据吞吐量显著降低为未编码时能够传输的速率的1/3。因此,与其他前向纠错编码方案相比,(3,1)重复码效率非常低,其他前向纠错编码方案可以在相同汉明距离下实现更高的频谱效率。(3,1)重复码的主要优点是简单。 在前向纠错系统中,接收机将尝试检测并校正错误。接收机将接收到原始编码信息C(x)和错误向量E(x)的和。例如上述(3,1)重复码,接收机将接收到可以在三维空间中绘制的比特,如图5.19所示。每个比特都表示为一个维度。逻辑低0与逻辑高相反。该空间中只有两个有效位置,即(1,1,1)和(0,0,0),因为这是唯一可以传输的两个字符串。所有其他位置是误差向量E(x)与编码信息C(x)相加的结果。接收机选择与接收到的状态具有最短汉明距离的有效状态。 图5.19接收编码比特的状态 (3,1)重复码的顺序实现是每个比特在一行中重复三次,如图5.20所示。重复的比特被顺序放置,每个比特在下一个比特开始之前重复三次。 当顺序排列时,这些比特不能看作一串编码,而是以低数据速率发送的原始数据比特。顺序(3,1)重复码如图5.20所示,可以用于降低数据速率。这将在解调时提高每个比特的能量。 图5.20(3,1)重复码的顺序实现 如果信道不存在小尺度衰落,则可以采用这种顺序实现来增强数据分组的重要部分,例如报头。然而,这种顺序实现方法在更复杂的信道中可能存在问题,关于这部分的讨论超出了本书的范围,建议读者阅读文献[5]。 5.5.10前向纠错和后向纠错的比较 所有无线物联网协议都使用后向纠错,但很少使用前向纠错。为什么呢? 和前向纠错相比,后向纠错可以用更少的冗余来检测更多的错误。后向纠错比前向纠错具有更强的错误检测能力。当后向纠错方法检测到错误时,消息将被重复发送。因此,后向纠错方法具有优势,可以在无线系统中更好地保证传送无错误的有效载荷。 前向纠错允许信号在不需要重传的情况下存在错误的可能性。从表面上看,这似乎更好。问题在于前向纠错在频谱效率方面比后向纠错有更高的前期成本。与后向纠错系统相比,不管以何种频率出现错误,前向纠错所需的冗余将降低吞吐量。对于期望有低错误率的无线系统,后向纠错方法是最佳的。 随着错误概率的增加,采用前向纠错的系统比仅使用后向纠错的系统表现更好。即使采用恒定冗余的前向纠错,具有高误码概率的系统实际上也可以实现更高的吞吐量。考虑随着比特错误的概率增加,仅使用后向纠错的系统中的重传次数将增加,意味着吞吐量将降低。前向纠错系统可以纠正比特错误,从而减少重传次数。 蓝牙和前向纠错 蓝牙使用(3,1)重复码作为蓝牙报头的前向纠错码。(3,1)重复码是通过顺序传输的比特来实现的,每个报头比特连续重复三次。蓝牙报头中使用的顺序(3,1)重复码如图5.20所示,可以降低数据速率并在解调时提高每比特的能量。 蓝牙BR和EDR同时使用后向纠错和前向纠错。蓝牙报头使用(3,1)重复码,蓝牙报文使用(15,10)汉明码编码,这是编码率为2/3的前向纠错码。汉明码是分组码,如本章所述。与(3,1)重复码相比,(15,10)汉明码难以说明和可视化。有关汉明码的更多信息可以参考文献[10]。 低功耗蓝牙作为无线物联网对蓝牙标准的补充,并未强制要求使用前向纠错。低功耗蓝牙提供各种编码率,高达1/8。低功耗蓝牙与许多其他无线物联网协议非常相似,它依赖于错误检测而不是纠错。前向纠错在后来的低功耗蓝牙版本中是可选的,目的是以数据速率为代价来扩大覆盖范围。 5.6能源效率 电池可以在电池供电的无线收发机中使用多长时间?这是一个必须要回答的问题。决定问题答案的是无线系统的功耗和能效。功耗是一段时间内消耗的焦耳数,能效是每比特吞吐量消耗的焦耳数。 第4章讨论了不同调制方案的能效。FSK允许使用非线性放大器,因此使发送链更高效。然而,无线系统消耗多少能量并不局限于发射机,开启接收机也会消耗能量。决定无线系统的功耗和能效的不是物理层而是媒体访问控制层。 5.5.10节比较了前向纠错和后向纠错在传输时间和重传方面的成本。所有传输时间都需要能量。每一个冗余比特都会耗费能量。尽管误比特率很高时,冗余可以减少重传来节省能量,但是冗余终究会消耗额外的能量。作为冗余成本核算的一个例子,蓝牙核心规范版本5.0包含低功耗蓝牙可选择的前向纠错 [12],但是该规范提醒用户应仔细考虑编码对功耗的影响。考虑可选的前向纠错编码率可高达r=1/8,也就是说每个数据比特被编码为8个比特,传输有效载荷编码比特所需的时间是传输数据比特所需时间的8倍,发射机和接收机将至少消耗8倍的能量。这一事实表明,冗余会耗费能源。重传也消耗能源,每次必须重传时,能源成本至少会翻倍。在循环冗余校验没有失败的情况下,尝试多次发送未编码的数据,会极大地降低能量效率。因此,低功耗蓝牙的前向纠错编码对长距离是有效的,但是对于短距离,在能量和电池寿命方面效率很低。 媒体访问控制层负责将网络中的空闲节点置于休眠状态,以节省电池寿命并减少不必要的功耗。因此,无线物联网的媒体访问控制层不需要连续监测电池供电的节点的传输状态。ITU G.9959标准明确规定节点可以在大部分时间处于休眠模式[13]。休眠模式既不接收数据也不发送数据。IEEE 802.15.4标准和低功耗蓝牙的蓝牙核心规范也包含节省功率的部分。关于功耗的常见解决方案是利用占空比,图5.21说明了这个概念。一段时间用于数据发送(Tx),一段时间用于数据接收(Rx),并且尽可能多的时间处于空闲状态。这个过程是周期性的。数据发送消耗的功率最大,数据接收消耗次之。随时间消耗的功率就是在该项任务上消耗的能量。 图5.21通用收发机休眠模式占空比 该占空比必须跨不同节点进行定时,不同节点可能不使用同一时间参考,这意味着同步状态将随着时间的推移而改变。如图5.22所示,节点1和节点2的时钟略有不同。由于这种轻微的变化,占空比滑动,二者不再对齐。 图5.22通用收发器占空比,节点不同步 对于占空比的同步问题有几种解决方案。5.3.4节讨论了IEEE 802.15.4标准启用信标的帧。这些帧可以选择在“非活跃”时段关闭更多的功耗敏感节点,如图5.23所示[9]。数据在活跃时段内传输,然后所有启用信标帧的节点变为空闲,直到有下一个信标。节点独立运行,但可以通过信标保持同步。 图5.23启用信标的IEEE 802.15.4帧中的非活跃期[9] ITU G.9959标准采用不同的方法。ITU G.9959标准中的节点要么“总是在监听”,要么“经常监听”(Frequently Listening,FL)。FL节点有一个“唤醒间隔”。FL节点使用唤醒间隔作为计时器来确定何时退出休眠模式并监听活动[13]。这些占空比在每个节点中独立运行。尝试联系休眠节点的节点将发送一组称为“波束帧”的特殊帧,其持续时间长于休眠周期。延长发送周期有两个目的,它为等待发送的数据保留传输信道,并确保休眠的接收者会接收到该波束帧,在波束帧结束后将开始发送消息。如图5.24所示,发送节点和接收节点大部分时间都处于休眠模式。发送节点有一些要发送到接收节点的数据,因此发送节点开始发送波束帧。在波束帧发送完成之前,发送节点不会返回休眠状态。接收节点的唤醒间隔期满,接收节点接收波束帧。接收节点不会返回休眠模式,因为存在待处理的消息。发送节点在波束帧的末尾发送消息。然后,接收节点和发送节点都返回休眠模式。 图5.24ITU G.9959波束和唤醒间隔 低功耗蓝牙还可降低功耗。在最初的蓝牙规范中,微微网中的从节点需要在所有接收周期内监听主节点,以查看是否有任何待处理的数据[12],如5.3.3节中的图5.7所示。低功耗蓝牙改变了这种结构,主节点收听广播信道,从节点大部分时间都处于休眠状态。当需要连接时,从节点在广播信道上呼叫主节点以请求连接。然后,主节点与从节点协调连接。一旦建立了连接就发送数据,然后从节点返回休眠模式。 参考文献