第3章 LoRa扩频技术 第3章 LoRa扩频技术 LoRa调制属于扩频调制,它将低数据速率比特流编码调制到相对较宽的调制带宽上。调制宽度与实际数据速率之间没有直接关系,在不改变频谱形状的情况下,数据速率可以在很宽的范围内改变。不同于传统的直接扩频调制(使用BPSK或QAM调制作为基本调制),LoRa调制逻辑上是恒定包络,所以可以令放大器工作在饱和状态(高效率状态),使放大器的工作效率最高,而不像其他非恒包络调制,放大器要工作在线性区域。对比传统电子设备使用中频信号与锁相环混频后的高频信号接入功率放大器的架构,LoRa的硬件结构简单很多。 本章介绍LoRa扩频调制理论和LoRa的调制参数,LoRa信号从数据流变为LoRa扩频信号,再从射频信号通过解调变为需要数据的全过程。本章还介绍LoRa计算工具以及在应用中如何计算LoRa的关键参数。最后的小节是LoRa发射数据的一个编码过程实例,对LoRa调制有兴趣的读者不要错过。 3.1LoRa调制解调原理 LoRa的优势是由自身的调制解调特性决定的,其难点和专利所在为接收机的解调过程,再准确一点说,LoRa的数字解调算法是最核心的部分。2.2节介绍了多种扩频方法,但并非使用了扩频技术其灵敏度就会大幅增加,也不是处理增益越高的系统灵敏度越高,而是与系统的调制解调机制相关。这也是LoRa调制技术区别于其他扩频技术的优势体现。 视频讲解 3.1.1LoRa调制理论 在研究LoRa调制理论前需要对一些基础参数的概念进行解释: SF: 扩频因子,对码片数量取对数后的数字; CR: 编码速率,有效编码率为4/(4+CR); BW: 调制带宽,当前LoRa物理层支持的带宽范围为7.8~500kHz; NF: 无线电噪声系数(单位: dB)。 1. LoRa调制链路 图31中的LoRa调制链路由五部分组成,分别是纠错编码机、交织器、扩频序列产生器、笛卡儿极坐标转换器、Deltasigma调制器。 图31LoRa调制框图 1) 纠错编码机 如图31所示,当一组数据[用户的有效载荷(Payload)]被推入数据包接口(Packet Interface)时,调制过程开始。调制器通过纠错编码机将前向纠错编码(Forward Error Correction,FEC)添加到这些字节中。 这些有效载荷数据每一字节首先分成半字节(4位一组)。然后,根据编码速率配置,在1~4冗余纠错位之间选择并追加到每个半字节。调制器编码速率通过CR寄存器进行设置,表31为前向纠错编码配置表。 表31前向纠错编码配置表 编码率循环编码的CR (有用位数/总位数)开销率 14/51.25 24/61.5 34/71.75 44/82 2) 交织器 通过纠错编码后,产生的(4+CR)比特段,随后被存储到交织器的存储阵列中。交织器(Interleaver)有(4+CR)列和SF行。一旦交织器满了,它的内容将编码到码元上。每个码元都带有SF位。因此,交织器内有(4+CR)×SF比特,独立于扩频因子SF被编码到4+CR码元上。 这里举一个例子帮助读者理解交织器。假设此时CR=1,SF=7,其交织器为7行、5列。需要传输的数据流为: 00000001001000110100010101100111。先将这些比特流分为4b一组(b1/b2/b3/b4): 0000; 0001; 0010; 0011; 0100; 0101; 0110; 0111; 对上述数据增加1b校验位(b1/b2/b3/b4/C)后为: 00000; 00011; 00101; 00110; 01001; 01010; 01100; 01111; 再将上述数字填入交织器的存储列阵中。表32所示为交织器存储列阵数据模拟表,表中共有7行、5列,可以放置35b的数据。 表32交织器存储列阵数据模拟表 (4+CR)×SF Symbol 1Symbol 2Symbol 3Symbol 4Symbol 5 1234CR 1XXXXX 2XXXXX 3XXXXX 4XXXXX 5XXXXX 6XXXXX 7XXXXX 交织器存储列阵中的数据放置是通过一定的映射关系实现的。如图32所示,为数据与码元的交织映射关系示意图,可以看到35位的数据按照一定的映射关系被塞入5个码元中。 图32交织映射示意图 当35b数据进入交织器的存储列阵后,交织器存储满了,下一组数据(b1/b2/b3/b4/C)需要填入下一个交织器中。 3) 扩频序列产生器 每个码元都由2SF个码片组成。码片速率chiprate等于调制带宽BW。因此,码元(symbol)的持续时间为 Tsymb=2SFBW (31) 则无限长有效载荷(Payload)的有效数据速率 DR=4SF·BW(4+CR)2SF(32) 每个包前面都有一个前导码。前导码的目的是向无线链路另一端的接收器提供具有特性的可检测序列,以确定频率和定时同步。 前导码由一系列未经调制的码元组成,其后是特定结束标记。前导码结束标记是一种不会在正常载荷数据扩频调制中出现的特殊标记(特殊标记为下降频率码元)。前导码结束标记的长度为4.25个码元。初始未调制码元序列必须至少有6个码元,但可以任意延长而不影响其性能。 因此,前导码长度为(N+4.25)个Tsymb(码元周期时长),其中N是未调制码元的数目,最小前导码长度为10.25Tsymb。 4) 坐标转换、Deltasigma调制输出 图31所示扩频序列发生器(Spreading Sequence Generator)的输出是一个具有恒定包络的复杂采样流。利用笛卡儿极坐标变换器提取这些复频率的相位信息。相位分量被区分,从而产生瞬时频率调制,该瞬时频率调制被送到Deltasigma调制器。 调制器的数字输出驱动锁相环的反馈分频器。LoRa调制器相干调制无线电载波的相位,而不是幅度。最后连接功率放大器和天线将LoRa信号发送出去。 由此产生的无线电调制频谱看起来非常像平顶OFDM频谱。图33显示125kHz调制带宽的无线电发射频谱,该LoRa信号在邻道的抑制为-33.9dB,隔道的抑制为-49.3dB。 图33LoRa 125kHz调制带宽信号 2. LoRa解调链路 图34中的LoRa解调链路由多部分组成,分别是前向数字抽取滤波器、中频混频器、信道滤波器、软解映射器、解交织器、纠错解码器、扩频序列产生器。 图34LoRa解调链路框图 经过下变频的LoRa射频信号,再经过I/Q采样后进入解调路径。解调路径与传统的解调电路一样从数字抽取滤波器开始,将来自ADC的高采样率流转换为高精度、低速率的样本流。中频混频器通过将样本流乘以复指数信号来执行复频率转换。这样做的目的是使系统能够利用可编程的低中频频率,避免出现通用无线电接收机中的直流偏置问题。 信道滤波器是64抽头的FIR滤波器,负责消除多余的带外信号。在频率偏移为±BW时,滤波器衰减大于70dB。 信道滤波器的输出与发射机中使用的扩频序列做复共轭卷积。软解映射器解调的数据被推入解交织器,其顺序与发送器在编码期间读取的顺序完全相同。 一旦解交织器内数据填满,纠错解码器将对其进行处理。所使用的分组错误码是一种广义的软汉明码。 纠错解码器完成数据纠错后,将所有数据重新拼接发向数据包接口。 LoRa解调链路中使用了软解码器配合FEC编码特点可以实现很好的纠错能力,解调中的数据处理采用与原有扩频序列复共轭卷积的方式,从而实现滤除非相干的干扰信号。 3. LoRa 信噪比Eb/N0分析 表33给出了实现不同LoRa扩频因子解调所需的带内信号与干扰和噪声比(Signal to Noise+Interferer Ratio,SNIR),测试条件为编码率4/5,包长度32B,误包率10%。 表33LoRa扩频信号与干扰和噪声比关系表 SF2SF码片数量SNIR/dBSF2SF码片数量SNIR/dB 532-49512-14.0 664-6.5101024-16.5 7128-9.0112048-19.0 8256-11.5124096-21.5 通过表33可以导出不同扩频因子在固定误包率下的Eb/N0(每比特信噪比)。根据2.2.3小节中香农定理公式变形,用频带换取信噪比,将扩频和冗余因素去除,只考虑1b信号强度与噪声的关系。在不考虑纠错校验位时,对于给定的SF,相应的Eb/N0为 EbN0=SNIR-10lgSF2SF(33) 上述计算中只是对LoRa调制特性进行分析,未对纠错码的编码增益进行计算。在一定的信噪比下,合理的纠错码能够有效地减小系统误码率。 【例31】计算误包率10%,SF=12时的极限1b信噪比Eb/N0。 解: 查表33,SF=12时SNIR=-21.5dB,将SF=12,SNIR=-21.5代入式(33),得 EbN0=-21.5dB-10lg12212=3.8dB 表34给出了LoRa调制中不同扩频因子在几种误比特率下的极限Eb/N0,该数据源于笔者的实际测试。实际场景中常使用误比特率为10-4时所对应的Eb/N0。 表34几种误比特率下的不同扩频因子的极限Eb/N0 SF (Eb/N0)/dB 误比特率=10-3误比特率=10-4误比特率=10-5 122.83.64.5 112.93.84.7 103.14.04.9 93.44.25.2 83.74.55.5 74.04.85.9 64.35.46.4 54.96.06.9 如表34所示,在相同的Eb/N0条件下,采用更高的扩频因子可以获得更好的误码率表现。当采用前向纠错编码后,表34中所需的极限Eb/N0可以再降低(编码增益可以降低系统误码率)。 细心的读者可能注意到表33中,每当扩频因子加1,所需的LoRa调制SNIR只提高了2.5dB,而不是通常预期的3.0dB。这是因为当从SF切换到SF+1时,有效数据率不是减半而是乘以SF+12SF。因此,相邻两个扩频因子的灵敏度差为 sensiSF+1=sensiSF+10lgSF+12SF(34) 通常,当从SF7到SF8时,根据式(34),我们期望最佳扩频系统将其灵敏度提高为 sensiSF7~sensiSF8=-10lg7+12×7=2.4dB 这个结果确实也是实际测量值。 4. LoRa的接收灵敏度 1) 白噪声下的LoRa灵敏度 根据表33,如果知道LoRa接收机的噪声系数(NF),可以很容易地预测LoRa系统的灵敏度。 无线电噪声系数(通常以分贝表示)对应于无线电接收器在不可避免的热噪声之上所加的噪声量。理想的射频噪声系数为0dB。在50Ω的负载下,热噪声密度为-174dBm/Hz。因此等效无线电噪声为-174dBm/Hz+NF。 在这种情况下,对于给定的SF,LoRa接收器的灵敏度为 sensiSF=-174+NF+10lgBW+SNIRSF(35) 例如,优化后的LoRa网关接收机的噪声系数为2dB。对于125kHz的调制带宽,使用SF=12,代入式(35)后的灵敏度为 sensi12=-174+2+10lg125000-21.5=-142.5 这确实是在SF=12下测得的灵敏度! 图35为SX1302网关工作在474.8MHz,载荷=32B情况下的灵敏度曲线。可以看出1%误包率比10%误包率要求严格,其灵敏度约相差1.5dB。不同的SF曲线之间灵敏度相差约2.5dB。 图35SX1302网关在不同误包率下的灵敏度 上述测试中如果采用更大载荷进行测试,如选择载荷=64B,则所有灵敏度都会略微变差。实际应用中选择1%的误包率或10%的误包率下的灵敏度作为系统的灵敏度。因为LoRa数据调制的特色,无法孤立地看误码率或误比特率,因此使用误包率的概念。 在实际应用中,像SX1272这样的低功耗终端芯片,外部匹配滤波电路和内部解调电路会引入4~7dB的系统噪声。 我们已知LoRa的调制方式已经接近物理极限,如果想要进一步提升LoRa的性能,只能在降低接收信道的噪声系数上下功夫了。 【例32】FSK系统与LoRa系统灵敏度对比。若两个系统工作在同样的传输速率下,其灵敏度差别为多少?LoRa的前向纠错为4/5。假设FSK系统与LoRa系统前端噪声系数相同,都为7dB。灵敏的定义为1%误包率环境中的灵敏度,假设LoRa与FSK包长度一样。 解: 假定LoRa工作在SF7,BW=125kHz,表35中LoRa终端节点在1%误包率(包长度32B)下的SNR极限为-7.5dB。 DRLoRa=4SF×BW(4+CR)2SF=4×7×125kHz5×27=5.47kb/s LoRa工作在SF=7,BW=125kHz时1%误包率情况下的LoRa解调器的SNR=-7.5dB。 sensiLoRa=-174+7+10lg125000-7.5=-123.5 FSK的误包率需要转换为误码率,假设FSK数据包内含有n=32B×8=256b。 根据比特误码率和包误码率公式 Pb=1-(1-Pe)n(36) 式中,Pb为误包率; Pe为比特误码率,n为每包长度中的比特个数。 可得 Pe=1-n1-Pb=1-2561-0.01=3.9×10-5 代入2.1.4小节FSK相干及解调误码率公式计算,得到3.9×10-5误码率时的信噪比要求约为12dB,则SNIRFSK=12dB。要达到相同的有效数据率,带有冗余(帧头、校验等)的FSK通信速率约为6.5kb/s,此时检测带宽约为通信速率的1.5倍。 sensiFSK=-174+7+10lg(6500×1.5)+12=-115.1 从上述比较可得 sensiFSK-sensiLoRa=-115.1-(-123.5)=8.4 在同样数据速率下LoRa比FSK灵敏度好8.4dB。 【例33】已知NBIoT上行信道15kHz,采用重传的方式,重传次数N的最大值为128,此时对应基站的极限SNIR为-11.8dB,基站的噪声系数NF=3,求NBIoT基站的灵敏度以及每比特数据的信噪比Eb/N0极限。 解: 根据式(35),NBIoT灵敏度为 sensiNB_min=-174+NF+10lgBW+SNIRNB =-174+3+10lg15000-11.8=-141dBm 根据式(33)可得1b数据的信噪比Eb/N0极限为 EbN0NB=SNIRNB-10lg1N=-11.8-10lg1128=9.3dB 分析: 从Eb/N0极限对比可知LoRa调制(例31中的LoRa在SF=12时,Eb/N0极限为3.8dB)比NBIoT好 5.5dB(9.3dB-3.8dB)左右。从终端设备分析,在不考虑NBIoT与LoRa工作频率不同的前提下,NBIoT设备需要发射LoRa设备的约3倍(5.5dB)功率才能实现同样的工作距离。实际上也是如此,NBIoT设备输出功率为23dBm,LoRa设备输出功率为17dBm,两者相差5dB左右。 2) 干扰噪声下的LoRa灵敏度 上述讨论的灵敏度均为只考虑白噪声而没有外界干扰的情况。当附近存在一定强度噪声时,LoRa接收机可以解调的最小信号强度与接收的信噪比相关。根据LoRa信号SNIR的表格所示,如果此时接收机附近的带内噪声强度为PN(PN>sensiLoRa+ SNIR),则此时的接收机可以解调的最小信号为 Pmin=PN+SNIR(37) 式中不同扩频因子对应的SNIR不同。 当PN<sensiLoRa-SNIR时,接收机可以解调的最小信号为Pmin=sensiLoRa。 因此LoRa接收机会输出两个接收参数,分别是信号强度(RSSI)和信噪比(SNR)来说明接收信号的质量情况。RSSI说明接收到信号的强度,而SNR说明信号的质量。LoRa接收机可以解调的最小信号强度是由RSSI和SNR中相对较差的一个决定的。 【例34】一个LoRa系统接收机附近有-100dBm的带内噪声干扰,计算此时接收机可解调的最小信号强度是多少。 解: 由于LoRa信号在SF=12时有最好的抗噪特性,查表35得到SF=12时的SNIR为-20dB,已知此时接收机的灵敏度为-142.5dBm。 那么系统总噪声要求最大不能超过-142.5-(-20)=-122.5dBm。 而此时的带内噪声由两部分组成,分别是干扰噪声和热噪声。PN=Pi+Pn,其中Pi=-100dBm,Pn=-174+10lg125000=-123dBm,PiPn。 PN=Pi+Pn=10lg10-10010+10-12310=-99.98dBm 由于PN>-122.5dBm,则系统可解调的最小信号Pmin为 Pmin=PN+SNIR=-99.98-20=-119.98dBm 本例题中,干扰噪声比热噪声大得多,可以近似认为PN=Pi; 当干扰噪声与热噪声相当时,必须通过PN=Pi+Pn计算。 视频讲解 3.1.2LoRa调制解调器模块详解 1. 调制参数 对于一个给定的应用,在LoRa调制方式下,可以通过给出的4个参数对其性能进行优化,以便在链路预算,抗干扰性能,频谱占用和传输速率之间做出平衡。这4个参数为调制带宽(BW)、扩频因子(SF)、编码率(CR)和低速率优化(LDRO)。 1) 扩频因子 LoRa扩频调制是通过把有效载荷信息中每比特数据用多位码片信息表示来实现的。由于不同的扩频因子之间两两正交,所以在一组收发链路中,扩频因子必须提前预知。除此之外,还要注意在接收机输入端所需的信噪比(SNR)。表35为1%误包率下,LoRa终端节点芯片解调所需的最小信噪比。 表35SX1262扩频因子范围及SNR 扩频因子(SF)56 7 8 9 10 11 12 2SF(码片/码元)3264128256512102420484096 典型的LoRa解调器的SNR/dB-2.5-5-7.5-10-12.5-15-17.5-20 在LoRa接收机中,由于能够接收负信噪比的信号,因此增加了接收机灵敏度,链路预算以及覆盖距离。较高的扩频因子提供更好的接收机灵敏度,但是以更长的空中传输时间为代价。 2) 带宽 增加信号带宽可以提高有效载荷的传输速率,但是在减小发射时间的同时也带来了接收机灵敏度的下降。 如图36所示,在LoRa模式下,带宽(BW) 可以用软件设置,位于中心频率(fRF)附近。 图36LoRa 信号带宽 很多国家对占用带宽都有限制。LoRa调制带宽指的是双边带带宽。如表36所示,LoRa可选的带宽范围非常广,共有10种不同的带宽可选。 表36LoRa模式下的信号带宽设置 信号带宽0 1 2 3 4 5 6 7 8 9 BW/kHz7.8110.4215.63 20.83 31.25 41.67 62.5 125 250 500 对于小于或等于250kHz的带宽(BW),接收机需要做二次变频。第一次变频为高频变到低中频,第二次变频为中低频变到基带频率,以便基带用作解调。当使用500kHz带宽时,在RF链路内一次性直接变频至零中频(zeroIF)。 3) 前向纠错编码率 为了进一步提高链路的鲁棒性,LoRa调制解调器采用循环误差编码来执行前向误差检测和校正。 前向纠错(FEC)对于提高存在干扰的链路的可靠性特别有效。因此,可以改变编码速率和抗干扰的鲁棒性来应对不同的信道条件。在发射机端选择的编码速率通过包头(当存在时)传递给接收机。 更高的编码率提供了更好的抗扰性,但需要更长的传输时间。如表31所示为前向纠错编码率表。在正常情况下,4/5的因子提供了最佳的折中; 在强干扰的情况下,可以使用更高的编码率。错误校正码不需要被接收器预先知道,因为它被编码在包头部分。 4) 低数据率优化 对于低的数据率(通常是高的扩频因子或低的带宽)和一个需要在空中持续传输几秒的有效载荷,此时可以打开低速率优化(LDRO)。这样每个码元对应的比特数减少为SF=2(详见3.1.2小节的LoRa空中时间),以便接收机更好地追踪LoRa信号。根据有效载荷大小,当LoRa的码元时间等于或大于16.38ms时推荐使用低数据率优化功能。 在LoRa调制模式下应该使包传输时间内的频率漂移降至最小并且低于Freq_drift_max。 Freq_drift_max=BW3×2SF(38) 在低速模式下LowDataRateOptimize 配置为 0x01,则可以使包传输时间内的频率漂移的要求放松至16×Freq_drift_max。 Freq_drift_max=BW3×2SF16(39) 5) LoRa发射的参数关系 根据所知的关键参数,LoRa码元率被定义为 Rs=BW2SF(310) 式中,BW为带宽; SF为扩频因子。传输的信号是一个恒定包络的信号,等效于每1Hz带宽上每秒发送一个码片。 2. LoRa帧结构 LoRa调制解调器使用显性和隐性两种类型的数据包格式。显性包包含一个短消息头,其包含了字节数、编码率和包中是否使用了CRC的信息,其包结构的格式如图37所示。 图37LoRa包格式 LoRa数据包开始于一个前导序列,该序列用于使接收机与输入信号同步。默认情况下,该前导通常被配置为一个包含12个码元长的序列。这是一个可变量,因此可以扩展前导码长度,例如为了减少接收密集型应用中的接收机占空比。一旦考虑了固定的前导码元(4.25个码元,为了方便计作4个码元),所传输的前导码长度可以为10~65535个码元数。 接收机会周期性地重启前导检测操作。出于这个原因,前导序列长度应该配置为与发射机前导序列相同的长度。如果不知道前导序列长度或者其是可变的情况下,应该在接收端将前导序列的长度设置为最大。 前导序列后面是一个包头,其包含了后续的有效载荷的信息。有效载荷字段长度可变,最后可以选择附加CRC校验。 根据所选的操作模式,可以使用两种类型的包头。 1) 显性包头模式 显性包头是默认的操作模式。这时包头提供了如下有效载荷的信息: 以字节计算的有效载荷长度; 前向纠错编码率; 对有效载荷进行校验的可选的16位CRC。 包头以最大纠错码(4/8)传输。同时它也有自己的校验码,以便允许接收器丢弃无效的包头。 2) 隐性包头模式 在某些情况下,有效载荷、编码率和CRC是固定的或预先知道的,这时可以通过使用隐性包头模式来减少传输时间。该模式中包头被删除。此时在收发两端中,有效载荷的长度、错误编码率和有效载荷校验CRC需要手动配置成相同的参数。在大量相同终端设备的应用中经常使用隐性包头,如大量数据格式相同的表计定时上报数据可以采用隐性包头。 3. LoRa 空中时间 空中时间(ToA)可以通过以下的方程式获得: ToA=2SFBWNsymbol(311) 式中,SF为扩频因子(5~12); BW为带宽(kHz); ToA为空中时间(ms); Nsymbol为码元数。 由于调制参数的不同,码元数的计算是不同的。 对于SF=5和SF=6: Nsymbol=Nsymbol_preamble+6.25+8+ceil max(8×Nbyte_payload+Nbit_CRC-4×SF+Nsymbol_header,0)4×SF× (CR+4)(312) 对于其他的SF: Nsymbol=Nsymbol_preamble+4.25+8+ceil max(8×Nbyte_payload+Nbit_CRC-4×SF+8+Nsymbol_header,0)4×SF× (CR+4) (313) 对低速率优化开启模式下的其他SF: Nsymbol=Nsymbol_preamble+4.25+8+ceil max(8×Nbyte_payload+Nbit_CRC-4×SF+8+Nsymbol_header,0)4×(SF-2)× (CR+4) (314) 上述式中参数设置如下: CRC 开启时,Nbit_CRC=16,反之为0; 显性包头模式时Nsymbol_header=20,隐性包头模式时为0; CR为1、2、3或4,分别对应于编码率 4/5、4/6、4/7或4/8。 关于空中飞行时间的详细计算会在第8章讲述。Semtech网站上针对不同芯片有相应的LoRa计算器,读者可以下载使用,3.2.1小节有LoRa计算器工具的使用讲解。 4. LoRa 信道状态检测(CAD) 对于扩频调制技术的应用,由于有用信号可能位于接收机的噪声之下,使得很难确定信道是否被占用。在这种情况下使用接收信号强度指示(RSSI)显然是行不通的。为了达到有效监测信道占用情况,信道状态检测(CAD)功能被发明出来用于检测信道中是否有LoRa信号。 在芯片SX126X中,信道状态检测是通过检测LoRa的前导或数据码元来实现的,而前一代SX127X产品仅能通过检测LoRa的前导来实现该功能。 在CAD模式中,芯片SX1261/2通过在用户选择的时间(由码元的数量确定)内扫描整个带宽,通过返回的信道状态检测IRQ来判断通道内是否有 LoRa 信号。 信道状态检测所需要的时间取决于 LoRa 调制的参数设置。对于给定的配置(SF/BW),典型的CAD检测时间可以选择为1、2、4、8或16个码元。一旦完成对指定码元数的监听持续时间,接收机将在RX中再保持半个码元时间用于后续的测量和处理。 视频讲解 3.2LoRa计算器工具 在3.1节的学习中,我们了解到了很多关于LoRa的核心参数,以及如何配置一个LoRa包,及码元长度,空中飞行时间等参数。为了方便大家了解和使用LoRa技术并计算上述的参数,Semtech公司开发了一套LoRa计算器。根据芯片类型不同分别是SX126X、SX127X和SX128X三款LoRa计算器。计算器内容大同小异,都是基于芯片可以配置的参数进行选择,从而自动计算出需要的参数。本计算器工具主要针对发射参数配置情况,对于接收参数和功耗参数等,计算工具中就没有涉及,可以参考产品说明书。 3.2.1LoRa计算器讲解 图38所示为SX1261芯片配套使用的LoRa计算器工具。该SX1261 LoRa计算器有两个操作界面,分别是LoRa模式和GFSK模式,是因为该芯片同时支持这两种制式。现在的展示是LoRa操作界面,单击GFSK可以切换到GFSK界面。本小节内容的重点是LoRa模式。 图38SX1261 LoRa 计算器截图 界面的左侧是LoRa参数输入部分。参数分为三组主要类型,分别是LoRa模式设置(LoRa Modem Settings)、数据包配置(Packet Configuration)、射频设置(RF Settings)。这三组参数基本包含了LoRa发射数据包需要的主要参数。 1. LoRa调制参数 Spreading Factor(SF,扩频因子): 可以设置5~12这几种配置(如果使用SX127X计算器只支持6~12的配置,因为SX127X芯片不支持SF=5)。 Bandwidth(BW,带宽): 支持7.81,10.42,15.63,20.83,31.25,41.67,62.5,125,250,500kHz这些带宽参数配置。一般常使用125kHz,这是LoRaWAN中默认信道带宽配置。 Code Rate(CR,编码率): 纠错编码的使用有四种配置,分别为4/5、4/6、4/7、4/8。其意义是每4b 载荷数据需要在通信纠错编码中使用多比特表示,如4/5表示需要5b表示原来的4b,说明额外增加了1b纠错编码信息。在LoRa芯片配置中常使用额外1b的纠错编码。一条通信数据中使用的纠错编码比例越高,这条数据在传输中的误包率就越低。在传输中,由于噪声影响,每一比特数据都有可能被解调错误,当有少量数据解调错误时有一定概率可以通过纠错码还原。LoRa解调是根据整个码元来解调的,如果出错会使整个码元出错,不过数据调制发射前采用了交织编码,纠错码与数据信息已经被分配到不同的码元中传输,不会因为一个码元错误而导致这一组数据无法还原。使用纠错码比率越高,纠错能力越强,与此同时其包内冗余数据就越多,占用了空中飞行时间。在实际的LoRa应用中,4/5的配置方式是纠错能力和包长度平衡的最佳选择,也是LoRaWAN标准中的常用配置。 Low Datarate Optimize(低速率优化): 采用低速率优化后可以使低速率的数据传输鲁棒性增强,但是带来的缺点是增加了信号的飞行时间。3.1.2小节的公式计算中有专门针对低速率优化的计算。低速率优化还可以增强对抗多普勒频移,以及增强长包信号在一次通信数据包内由于多径衰落等影响引起的频率漂移等。只有在低速率的SF=11和SF=12情况下才需要打开频率偏移功能。 上述的配置的LoRa调制模式为物理层配置,是发射一个LoRa数据包最基本的设置。对应的接收机必须开启与发射机参数完全一致的配置才可以进行数据接收和解调。数据包配置部分的参数属于链路层配置。 2. 数据包配置 Preamble Length(前导长度): 前导码的长度具有多样性,针对一些异步唤醒的应用,需要超长的前导码,有的前导码长接近1s或更长。一般应用中经常配置的前导码长度为8个码元。 Payload Length(载荷长度): 此长度是根据客户需求而定的,最小是1B,最大长度需要满足各国家/地区无线电规范,太长会导致空中飞行时间过长而违反规范。需要注意的是,每增加1B长度的载荷,其空中飞行时间不会连续增加,而是增加一定数量的载荷后一次性地增加飞行时间。这是因为载荷数据需要先经过交织器的交织编码处理,而交织器有一定的数据容量。比如在SF=10的配置下,增加1~5B的载荷,需要发送的码元都需要额外增加5个。在纠错编码为4/5的配置下,交织器为SF=10行、CR+1=5列,交织内有50b数据,其中40b为有效载荷,10b为前向纠错编码。所以每5B的载荷数据需要5个码元来携带。 Header Mode(帧头模式)和CRC(循环冗余校验)可以通过软件设置开启和关闭。 3. 射频参数配置 射频参数中可以设置其发射功率(Transmit Power),针对SX126x系列芯片,其输出功率在-6~22dBm可调,步进为1dB。 4. 输出栏显示 在调整界面左侧的计算输入数据后,计数器工具右侧的数据会发生变化。右侧共有如下输出栏: 选定配置(Selected Configuration): 是根据左侧的数据包配置决定的。在配置好左侧的包结构参数后,右侧会自动生成实际可以发送的帧结构组合。 Calculator Outputs(计算输出)中有两部分,分别是Timing Performance(时间性能参数)和RF Performance(射频性能参数)。 1) 时间性能参数 Total length(整体包长度): 单位是码元,表示当前参数的数据包一共需要多少码元来调制发送。这个码元的数据是根据数据包配置和选择的扩频因子共同计算的结果。 Symbol time(码元时长): 码元的长度是由LoRa调制的特性决定的,由带宽和扩频因子参数决定。带宽越大,其码元时长越短; 扩频因子越小,码元时长越短。LoRaWAN的应用中常见的参数为SF=7~SF=12,BW=125kHz,此时的码元时长为1~32ms。为了工程中方便记忆,SF=7的码元时长记为1ms,其他扩频因子的时长都为2的指数关系。如SF=12比SF=7大5,则时长为2的5次幂32ms。通过码元时长还可以计算出一个非常关键的参数,等效数据速率(Data Rate,DR)可以采用式(32)计算。也可以通过码元时长计算出DR,其中DR与Tsymb关系公式为 DR=4SFTsymb(CR+4)(315) 如常用的SF=7、BW=125kHz的传输数据速率为5.5kb/s,将参数代入式(315)和式(32)都可以计算得出同样的结果5.5kb/s。 Time on Air(空中时间): 整个包在空中飞行的时间,是由码元的时长及总共码元的数量决定的。在开启低速率优化模式下,其飞行时间会变长。请参照3.1.2小节中式(312)~式(314)。 2) 射频性能 Receiver Sensitivity(接收灵敏度): 芯片在当前的LoRa调制参数设置下的最小可以解调信号的强度(保证一定误码率),由扩频因子和带宽决定,是LoRa物理层解调参数。带宽越小、扩频因子越大,其灵敏度越好,表现为负数绝对值越大。比如常见的SF=7、BW=125kHz时的灵敏度为-123dBm。当使用超窄带,超远距离(如卫星通信)时,配置为SF=12、BW=7.81kHz,此时的灵敏度已经达到了惊人的-149.1dBm。在这种超窄带环境中有非常好的灵敏度,但是代价是通信速率很低,就算发短数据包也要至少十几秒的时间。 Link Budget(链路预算): 收发链路之间可以保证稳定通信的最大传输损耗,链路预算等于发射功率减去灵敏度。电磁波在传输的过程中会有损耗,传输距离越远损耗就越大。增加链路预算有两种方法,分别是增大发射功率和提高灵敏度。在一般的系统中,由于各国家和地区对无线电的发射功率有严格要求(发射功率过大会占用带宽及覆盖干扰区域增大,影响他人使用),剩下提升传输距离的方式就只剩下提高灵敏度了。所以远距离应用可以选择更低的带宽和更大的扩频因子来影响接收灵敏度,从而影响链路预算增加通信距离。在8.1.2小节中,有关于设置不同灵敏度和工作距离的计算。 Maximum Frequency Error(最大频率误差): LoRa由于采用扩频通信,对频率的敏感度很低,即使发射机和接收机之间带宽偏差25%,依然可以实现通信。此参数是由LoRa调制参数带宽决定的。 3.2.2LoRa飞行时间计算 LoRa计算器工具中飞行时间可以根据公式计算来验证。 【例35】采用SF=7,BW=125kHz,Code rate=4/5; 关闭包头和CRC,前导长度为12个码元长度,载荷为2B。 解: 由于关闭包头和CRC,所以Nbit_CRC=0,Nsymbol_hander=0。此时根据式(31)计算: Tsymb=2SFBW=27125kHz=1.024ms 根据式(313)可得: Nsymbol=Nsymbol_preamble+4.25+8+ceil max(8×Nbyte_payload+Nbit_CRC-4×SF+8+Nsymbol_hander,0)4SF×(CR+4) =12+4.25+8+ceilmax(8×2+0-4×7+8+0,0)4×7×(1+4) =12+4.25+8+ceilmax(-4,0)7×5=12+4.25+8+0=24.25 ToA=Tsymb×Nsymbol=1.024ms×24.25=24.832ms LoRa计算器工具的计算结果与上述数据相同,计算正确。 为了熟悉LoRa的主要参数,读者可以多动手操作此计算器工具。2.4GHz LoRa 128X系列中还增加了Fast LoRa调制模式的工具,读者可以下载尝试。对于LoRa的深入理解最好通过手工计算的方式进行验证和学习。 视频讲解 3.3LoRa空口实际案例分析 在3.1节中,我们讲解了LoRa的调制解调原理,本节将通过实际的案例和图形使读者深入了解LoRa参数以及调制过程。 3.3.1LoRa码元调制编码 图39是一个SF=7的LoRa调制编码图,从图中可以看出码元、码片、数据速率、载荷数据之间的关系。 图39LoRa调制编码图(见彩插) 图39中SF=7,所以发送信号带宽切分为128(即27=128)个频率段的码片。假设该系统工作频率为470MHz,BW=250kHz,相邻码片间隔为250kHz/128=1.95kHz,此时f0=470MHz,f1=470.00195MHz,f2=470.0039MHz,…,f127=470.24805MHz。 从图39中可以看出每128个码片代表一个码元,一个码元承载7b数据(b1/b2/b3/b4/b5/b6/b7),不同的码片连接方式代表不同的码元。由于每个码元最多承载7b数据,所以只要有128种码元即可表达7b的所有状态。 图39中有三个时间长度分别是码片率(Chip Rate)、数据速率(Data Rate)、码元率(Symbol Rate),可以清楚地看出它们的对应关系。3.1节有关于这三个参数的详细分析。 关于码片如何组合成码元来代表7b数据,可以简单地认为一个码元在其周期内的起始频率(第一个码片对应的fn)决定了该码元代表的数据。由于LoRa调制是通过DeltaSigma调制器的数字输出驱动锁相环的反馈分频器,那么只能实现连续的频率调节,符合这种初始值连续的方案。 不同的SF对应带宽BW除以时间的斜率,SF越大,倾斜角度越小。SF和BW对应一种LoRa调制方式,只有接收机也采用对应的SF和BW值才能正常解调,否则信号在相干解调中会淹没在噪声中。在实际的相干解调中,LoRa调制在不同的SF信号或不同的BW下都是正交的,频带可以充分利用。比如在BW=125kHz的同频段内,一个SF=7信号PSF7和一个SF=8信号PSF8都在发射,频段内的噪声为N0,当两个信号都满足解调信噪比要求时(SNRSF7≥-7.5dB; SNRSF8≥-10dB),两个信号都可以正常解调。这里需要注意,当计算SNRSF7时,SF=8的信号表现为此系统噪声,SNRSF7=PSF7/(N0+PSF8); 同理当计算SNRSF8时,SF=7的信号表现为此系统噪声,SNRSF8=PSF8/(N0+PSF7) 3.3.2LoRa数据发送实例 下面根据一个实际的LoRa数据发送案例,帮助读者了解LoRa发生数据的全过程。 图310所示为一次LoRa数据标志变化发送的全过程。其中要发送的数据内容为英文字符“LoRa”,发射参数为SF=8,BW=125kHz,CR=4/5,中心频率为470MHz。 图310LoRa调制封包及数据传输意图(见彩插) 首先需要将“LoRa”字符通过ASCII码转换为二进制数据。通过查表得到: “L”=01001100; “o”=01101111; “R”=01010010; “a”=01100001。如图310中转换为二进制数据串: “01001100011011110101001001100001”,共32b。 下一步为前向纠错编码处理,每4b后面增加1b的纠错位,如图310中纠错位加入后的数据流为: “0100111000011001111001010001010110000011”,共40b。 完成前向纠错编码后的数据需要进入交织器,由于采用SF=8编码,交织器的大小为8行5列。将前向纠错编码处理后的40b数据通过映射放入交织器中。此时有效载荷数据通过5个SF=8的码元携带。 负载(Payload)数据配置好后,增加前导和CRC校验,为一个标准的LoRa数据包,可以发送到数字输出驱动锁相环的反馈分频器。图310中2个前导(Preamble)都是f0的码元,而要发送的载荷数据为f80、f250、f54、f25、f133,CRC校验的两个码元为f130和f37。此时LoRa功率放大器输出的信号频率随时间变化的状态如图310中CCS调制部分所示,同时可以观察到其时域图形的变化规律。 如果需要解调本案例中的信号,只需要解调图中CCS调制中的横线代表的频率fn即可获得每个码元的数据,具体解调流程比较复杂,请参照3.1.1小节的讨论。 小结 本章内容虽然不多,但是关于LoRa调制方法和解调路径的资料外界几乎没有。尤其是本书中的实际LoRa案例,读者应仔细学习。本章介绍的LoRa调制参数,后续章节都会用到,需要完全掌握。LoRa计算器工具也希望读者从Semtech官网下载,反复操作熟练。