LoRa调制解调原理

更新时间:2022-10-25
       LoRa的优势是由自身的调制解调特性决定的,其难点和专利所在为接收机的解调过程,再准确一点说,LoRa的数字解调算法是最核心的部分。2.2节介绍了多种扩频方法,但并非使用了扩频技术其灵敏度就会大幅增加,也不是处理增益越高的系统灵敏度越高,而是与系统的调制解调机制相关。这也是LoRa调制技术区别于其他扩频技术的优势体现。

一、LoRa调制理论

在研究LoRa调制理论前需要对一些基础参数的概念进行解释:
  • SF:扩频因子,对码片数量取对数后的数字;
  • CR:编码速率,有效编码率为4/(4+CR);
  • BW:调制带宽,当前LoRa物理层支持的带宽范围为7.8~500kHz;
  • NF:无线电噪声系数(单位:dB)。

1.LoRa调制链路

        图3-1中的LoRa调制链路由五部分组成,分别是纠错编码机、交织器、扩频序列产生器、笛卡儿极坐标转换器、Delta-sigma调制器。
 LoRa调制框图
图3-1   LoRa调制框图
1)纠错编码机
 
       如图3-1所示,当一组数据[用户的有效载荷(Payload)]被推入数据包接口(PacketInterface)时,调制过程开始。调制器通过纠错编码机将前向纠错编码(ForwardErrorCorrection,FEC)添加到这些字节中。
 
       这些有效载荷数据每一字节首先分成半字节(4位一组)。然后,根据编码速率配置,在1~4冗余纠错位之间选择并追加到每个半字节。调制器编码速率通过CR寄存器进行设置,表3-1为前向纠错编码配置表。
表3-1    前向纠错编码配置表
 前向纠错编码配置表
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;再将上述数字填入交织器的存储列阵中。表3-2所示为交织器存储列阵数据模拟表,表中共有7行、5列,可以放置35b的数据。
表3-2   交织器存储列阵数据模拟表
交织器存储列阵数据模拟表
       交织器存储列阵中的数据放置是通过一定的映射关系实现的。如图3-2所示,为数据与码元的交织映射关系示意图,可以看到35位的数据按照一定的映射关系被塞入5个码元中。
交织映射示意图
图3-2    交织映射示意图
 
       当35b数据进入交织器的存储列阵后,交织器存储满了,下一组数据(b1/b2/b3/b4/C)需要填入下一个交织器中。
3)扩频序列产生器
       每个码元都由2SF个码片组成。码片速率chip-rate等于调制带宽BW。因此,码元(symbol)的持续时间为
则无限长有效载荷(Payload)的有效数据速率
       每个包前面都有一个前导码。前导码的目的是向无线链路另一端的接收器提供具有特性的可检测序列,以确定频率和定时同步。
       前导码由一系列未经调制的码元组成,其后是特定结束标记。前导码结束标记是一种不会在正常载荷数据扩频调制中出现的特殊标记(特殊标记为下降频率码元)。前导码结束标记的长度为4.25个码元。初始未调制码元序列必须至少有6个码元,但可以任意延长而不影响其性能。
       因此,前导码长度为(N+4.25)个Tsymb(码元周期时长),其中N是未调制码元的数目,最小前导码长度为10.25Tsymb。
4)坐标转换、Delta-sigma调制输出
       图3-1所示扩频序列发生器(SpreadingSequenceGenerator)的输出是一个具有恒定包络的复杂采样流。利用笛卡儿极坐标变换器提取这些复频率的相位信息。相位分量被区分,从而产生瞬时频率调制,该瞬时频率调制被送到Delta-sigma调制器。
       调制器的数字输出驱动锁相环的反馈分频器。LoRa调制器相干调制无线电载波的相位,而不是幅度。最后连接功率放大器和天线将LoRa信号发送出去。
        由此产生的无线电调制频谱看起来非常像平顶OFDM频谱。图3-3显示125kHz调制带宽的无线电发射频谱,该LoRa信号在邻道的抑制为-33.9dB,隔道的抑制为-49.3dB。
  LoRa125kHz调制带宽信号
图3-3    LoRa125kHz调制带宽信号

2.LoRa解调链路

       图3-4中的LoRa解调链路由多部分组成,分别是前向数字抽取滤波器、中频混频器、信道滤波器、软解映射器、解交织器、纠错解码器、扩频序列产生器。
       经过下变频的LoRa射频信号,再经过I/Q采样后进入解调路径。解调路径与传统的解调电路一样从数字抽取滤波器开始,将来自ADC的 高采样率流转换为高精度、低速率的样本流。中频混频器通过将样本流乘以复指数信号来执行复频率转换。这样做的目的是使系统能够利用可编程的低中频频率,避免出现通用无线电接收机中的直流偏置问题。
       信道滤波器是64抽头的FIR滤波器,负责消除多余的带外信号。在频率偏移为±BW时,滤波器衰减大于70dB。
 LoRa解调链路框图
图3-4      LoRa解调链路框图
       信道滤波器的输出与发射机中使用的扩频序列做复共轭卷积。软解映射器解调的数据被推入解交织器,其顺序与发送器在编码期间读取的顺序完全相同。
        一旦解交织器内数据填满,纠错解码器将对其进行处理。所使用的分组错误码是一种广义的软汉明码。
        纠错解码器完成数据纠错后,将所有数据重新拼接发向数据包接口。
       LoRa解调链路中使用了软解码器配合FEC编码特点可以实现很好的纠错能力,解调中的数据处理采用与原有扩频序列复共轭卷积的方式,从而实现滤除非相干的干扰信号。

3.LoRa信噪比Eb/N0分析

       表3-3给出了实现不同LoRa扩频因子解调所需的带内信号与干扰和噪声比(SignaltoNoise+InterfererRatio,SNIR),测试条件为编码率4/5,包长度32B,误包率10%。
表3-3    LoRa扩频信号与干扰和噪声比关系表
  LoRa扩频信号与干扰和噪声比关系表
        通过表3-3可以导出不同扩频因子在固定误包率下的Eb/N0(每比特信噪比)。根据2.2.3小节中香农定理公式变形,用频带换取信噪比,将扩频和冗余因素去除,只考虑1b信号强度与噪声的关系。在不考虑纠错校验位时,对于给定的SF,相应的Eb/N0为
       上述计算中只是对LoRa调制特性进行分析,未对纠错码的编码增益进行计算。在一定的信噪比下,合理的纠错码能够有  效地减小系统误码率。
      【例3-1】计算误包率10%,SF=12时的极限1b信噪比Eb/N0。
解:查表3-3,SF=12时SNIR=-21.5dB,将SF=12,SNIR=-21.5代入式(3-3),得
       表3-4给出了LoRa调制中不同扩频因子在几种误比特率下的极限Eb/N0,该数据源于笔者的实际测试。实际场景中常使用误比特率为10-4时所对应的Eb/N0。
表3-4    几种误比特率下的不同扩频因子的极限Eb/N0
 几种误比特率下的不同扩频因子的极限Eb/N0
       如表3-4所示,在相同的Eb/N0条件下,采用更高的扩频因子可以获得更好的误码率表现。当采用前向纠错编码后,表3-4中所需的极限Eb/N0可以再降低(编码增益可以降低系统误码率)。
       细心的读者可能注意到表3-3中,每当扩频因子加1,所需的LoRa调制SNIR只提高了2.5dB,而不是通常预期的3.0dB。这是因为当从SF切换到SF+1时,有效数据率不是减半而是乘以 。因此,相邻两个扩频因子的灵敏度差为
      通常,当从SF7到SF8时,根据式(3-4),我们期望最佳扩频系统将其灵敏度提高为
     这个结果确实也是实际测量值。

4.LoRa的接收灵敏度

1)白噪声下的LoRa灵敏度
 
        根据表3-3,如果知道LoRa接收机的噪声系数(NF),可以很容易地预测LoRa系统的灵敏度。
        无线电噪声系数(通常以分贝表示)对应于无线电接收器在不可避免的热噪声之上所加的噪声量。理想的射频噪声系数为0dB。在50Ω的负载下,热噪声密度为-174dBm/Hz。因此等效无线电噪声为-174dBm/Hz+NF。
        在这种情况下,对于给定的SF,LoRa接收器的灵敏度为
        例如,优化后的LoRa网关接收机的噪声系数为2dB。对于125kHz的调制带宽,使用SF=12,代入式(3-5)后的灵敏度为
        这确实是在SF=12下测得的灵敏度!
        图3-5为SX1302网关工作在474.8MHz,载荷=32B情况下的灵敏度曲线。可以看出1%误包率比10%误包率要求严格,其灵敏度约相差1.5dB。不同的SF曲线之间灵敏度相差约2.5dB。
SX1302网关在不同误包率下的灵敏度
图3-5      SX1302网关在不同误包率下的灵敏度
      上述测试中如果采用更大载荷进行测试,如选择载荷=64B,则所有灵敏度都会略微变差。实际应用中选择1%的误包率或10%的误包率下的灵敏度作为系统的灵敏度。因为LoRa数据调制的特色,无法孤立地看误码率或误比特率,因此使用误包率的概念。
       在实际应用中,像SX1272这样的低功耗终端芯片,外部匹配滤波电路和内部解调电路会引入4~7dB的系统噪声。
我们已知LoRa的调制方式已经接近物理极限,如果想要进一步提升LoRa的性能,只能在降低接收信道的噪声系数上下功夫了。
      【例3-2】FSK系统与LoRa系统灵敏度对比。若两个系统工作在同样的传输速率下,其灵敏度差别为多少?LoRa的前向纠错为4/5。假设FSK系统与LoRa系统前端噪声系数相同,都为7dB。灵敏的定义为1%误包率环境中的灵敏度,假设LoRa与FSK包长度一样。
       解:假定LoRa工作在SF7,BW=125kHz,表3-5中LoRa终端节点在1%误包率(包长度32B)下的SNR极限为-7.5dB。
LoRa工作在SF=7,BW=125kHz时1%误包率情况下的LoRa解调器的SNR=-7.5dB。
FSK的误包率需要转换为误码率,假设FSK数据包内含有n=32B×8=256b。
根据比特误码率和包误码率公式
式中,Pb为误包率;Pe为比特误码率,n为每包长度中的比特个数。
可得
       代入2.1.4小节FSK相干及解调误码率公式计算,得到3.9×10-5误码率时的信噪比要求约为12dB,则SNIRFSK=12dB。要达到相同的有效数据率,带有冗余(帧头、校验等)的FSK通信速率约为6.5kb/s,此时检测带宽约为通信速率的1.5倍。
从上述比较可得
        在同样数据速率下LoRa比FSK灵敏度好8.4dB。
      【例3-3】已知NB-IoT上行信道15kHz,采用重传的方式,重传次数N的最大值为128,此时对应基站的极限SNIR为-11.8dB,基站的噪声系数NF=3,求NB-IoT基站的灵敏度以及每比特数据的信噪比Eb/N0极限。
解:根据式(3-5),NB-IoT灵敏度为
根据式(3-3)可得1b数据的信噪比Eb/N0极限为
       分析:从Eb/N0极限对比可知LoRa调制(例3-1中的LoRa在SF=12时,Eb/N0极限为3.8dB)比NB-IoT好5.5dB(9.3dB-3.8dB)左右。从终端设备分析,在不考虑NB-IoT与LoRa工作频率不同的前提下,NB-IoT设备需要发射LoRa设备的约3倍(5.5dB)功率才能实现同样的工作距离。实际上也是如此,NB-IoT设备输出功率为23dBm,LoRa设备输出功率为17dBm,两者相差5dB左右。
2)干扰噪声下的LoRa灵敏度
上述讨论的灵敏度均为只考虑白噪声而没有外界干扰的情况。当附近存在一定强度噪声时,LoRa接收机可以解调的最小信号强度与接收的信噪比相关。根据LoRa信号SNIR的表格所示,如果此时接收机附近的带内噪声强度为PN(PN>sensiLoRa+SNIR),则此时的接收机可以解调的最小信号为
式中不同扩频因子对应的SNIR不同。
       当PN<sensiLoRa-SNIR时,接收机可以解调的最小信号为Pmin=sensiLoRa。
       因此LoRa接收机会输出两个接收参数,分别是信号强度(RSSI)和信噪比(SNR)来说明接收信号的质量情况。RSSI说明接收到信号的强度,而SNR说明信号的质量。LoRa接收机可以解调的最小信号强度是由RSSI和SNR中相对较差的一个决定的。
      【例3-4】一个LoRa系统接收机附近有-100dBm的带内噪声干扰,计算此时接收机可解调的最小信号强度是多少。
       解:由于LoRa信号在SF=12时有最好的抗噪特性,查表3-5得到SF=12时的SNIR为-20dB,已知此时接收机的灵敏度为-142.5dBm。
       那么系统总噪声要求最大不能超过-142.5-(-20)=-122.5dBm。
       而此时的带内噪声由两部分组成,分别是干扰噪声和热噪声。PN=Pi+Pn,其中Pi=-100dBm,Pn=-174+10lg125000=-123dBm,Pi≫Pn。
       由于PN>-122.5dBm,则系统可解调的最小信号Pmin为Pmin=PN+SNIR=-99.98-20=-119.98dBm
本例题中,干扰噪声比热噪声大得多,可以近似认为PN=Pi;当干扰噪声与热噪声相当时,必须通过PN=Pi+Pn计算。

二、LoRa调制解调器模块详解

1.调制参数

       对于一个给定的应用,在LoRa调制方式下,可以通过给出的4个参数对其性能进行优化,以便在链路预算,抗干扰性能,频谱占用和传输速率之间做出平衡。这4个参数为调制带宽(BW)、扩频因子(SF)、编码率(CR)和低速率优化(LDRO)。
1)扩频因子
       LoRa扩频调制是通过把有效载荷信息中每比特数据用多位码片信息表示来实现的。由于不同的扩频因子之间两两正交,所以在一组收发链路中,扩频因子必须提前预知。除此之外,还要注意在接收机输入端所需的信噪比(SNR)。表3-5为1%误包率下,LoRa终端节点芯片解调所需的最小信噪比。
表3-5    SX1262扩频因子范围及SNR
 SX1262扩频因子范围及SNR
       在LoRa接收机中,由于能够接收负信噪比的信号,因此增加了接收机灵敏度,链路预算以及覆盖距离。较高的扩频因子提供更好的接收机灵敏度,但是以更长的空中传输时间为代价。
2)带宽
       增加信号带宽可以提高有效载荷的传输速率,但是在减小发射时间的同时也带来了接收机灵敏度的下降。
如图3-6所示,在LoRa模式下,带宽(BW)可以用软件设置,位于中心频率(fRF)附近。
 LoRa信号带宽
图3-6     LoRa信号带宽
       很多国家对占用带宽都有限制。LoRa调制带宽指的是双边带带宽。如表3-6所示,LoRa可选的带宽范围非常广,共有10种不同的带宽可选。
表3-6     LoRa模式下的信号带宽设置
LoRa模式下的信号带宽设置
       对于小于或等于250kHz的带宽(BW),接收机需要做二次变频。第一次变频为高频变到低中频,第二次变频为中低频变到基带频率,以便基带用作解调。当使用500kHz带宽时,在RF链路内一次性直接变频至零中频(zero-IF)。
3)前向纠错编码率
       为了进一步提高链路的鲁棒性,LoRa调制解调器采用循环误差编码来执行前向误差检测和校正。
       前向纠错(FEC)对于提高存在干扰的链路的可靠性特别有效。因此,可以改变编码速率和抗干扰的鲁棒性来应对不同的信道条件。在发射机端选择的编码速率通过包头(当存在时)传递给接收机。
       更高的编码率提供了更好的抗扰性,但需要更长的传输时间。如表3-1所示为前向纠错编码率表。在正常情况下,4/5的因子提供了最佳的折中;在强干扰的情况下,可以使用更高的编码率。错误校正码不需要被接收器预先知道,因为它被编码在包头部分。
4)低数据率优化
       对于低的数据率(通常是高的扩频因子或低的带宽)和一个需要在空中持续传输几秒的有效载荷,此时可以打开低速率优化(LDRO)。这样每个码元对应的比特数减少为SF=2(详见3.1.2小节的LoRa空中 时间),以便接收机更好地追踪LoRa信号。根据有效载荷大小,当LoRa的码元时间等于或大于16.38ms时推荐使用低数据率优化功能。
       在LoRa调制模式下应该使包传输时间内的频率漂移降至最小并且低于Freq_drift_max。
       在低速模式下LowDataRateOptimize配置为0x01,则可以使包传输时间内的频率漂移的要求放松至16×Freq_drift_max。
5)LoRa发射的参数关系
根据所知的关键参数,LoRa码元率被定义为
        式中,BW为带宽;SF为扩频因子。传输的信号是一个恒定包络的信号,等效于每1Hz带宽上每秒发送一个码片。

2.LoRa帧结构

       LoRa调制解调器使用显性和隐性两种类型的数据包格式。显性包包含一个短消息头,其包含了字节数、编码率和包中是否使用了CRC的信息,其包结构的格式如图3-7所示。
 LoRa包格式
图3-7   LoRa包格式
       LoRa数据包开始于一个前导序列,该序列用于使接收机与输入信号同步。默认情况下,该前导通常被配置为一个包含12个码元长的序列。这是一个可变量,因此可以扩展前导码长度,例如为了减少接收密集型应用中的接收机占空比。一旦考虑了固定的前导码元(4.25个码元,为了方便计作4个码元),所传输的前导码长度可以为10~65535个码元数。
       接收机会周期性地重启前导检测操作。出于这个原因,前导序列长度应该配置为与发射机前导序列相同的长度。如果不知道前导序列长度或者其是可变的情况下,应该在接收端将前导序列的长度设置为最大。
       前导序列后面是一个包头,其包含了后续的有效载荷的信息。有效载荷字段长度可变,最后可以选择附加CRC校验。
根据所选的操作模式,可以使用两种类型的包头。
1)显性包头模式
  显性包头是默认的操作模式。这时包头提供了如下有效载荷的信息:
  • 以字节计算的有效载荷长度;
  • 前向纠错编码率;
  • 对有效载荷进行校验的可选的16位CRC。
包头以最大纠错码(4/8)传输。同时它也有自己的校验码,以便允许接收器丢弃无效的包头。
2)隐性包头模式
       在某些情况下,有效载荷、编码率和CRC是固定的或预先知道的,这时可以通过使用隐性包头模式来减少传输时间。该模式中包头被删除。此时在收发两端中,有效载荷的长度、错误编码率和有效载荷校验CRC需要手动配置成相同的参数。在大量相同终端设备的应用中经常使用隐性包头,如大量数据格式相同的表计定时上报数据可以采用隐性包头。

3.LoRa空中时间

空中时间(ToA)可以通过以下的方程式获得:
式中,SF为扩频因子(5~12);BW为带宽(kHz);ToA为空中时间(ms);Nsymbol为码元数。
       由于调制参数的不同,码元数的计算是不同的。对于SF=5和SF=6:
对于其他的SF:
对低速率优化开启模式下的其他SF:
上述式中参数设置如下:
  • 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中再保持半个码元时间用于后续的测量和处理。
 

下一篇

开源SIP服务器你了解多少

通信系统集成

开源SIP服务器你了解多少

SIP服务器是促进基于互联网的电话的重要工具。它将您公司的IPPBX连接到互联网电话服务提供商(ITSP)。SIP开源服务器允许您以低成本创建自己的服务器,这与许多商业替代方案不同。 ...

相关内容

光信息调制传输技术

光信息调制传输技术

光信息调制传输技术在光电信息系统与安防监控系统中应用很多,因为只......

弱电工程

2023-05-04

LoRa应用案例详解——智慧表计

LoRa应用案例详解——智慧表计

LoRa具有物联网的DNA,为多种物联网应用提供坚实的技术保障。尤......

通信系统集成

2022-11-16

  LoRa技术功耗问题及多普勒频率偏移

LoRa技术功耗问题及多普勒频率偏移

一、功耗问题 LoRa技术的低功耗优势帮助各种低功耗设备使用寿命增加......

通信系统集成

2022-11-10