LoRa 空口数据的同步与解调*

2022-04-19 10:49吕京昭李平安杜海涛
电子技术应用 2022年4期
关键词:空口罗德码率

雷 芳 ,陈 博 ,吕京昭 ,李平安 ,杜海涛 ,粟 栗

(1.重庆邮电大学 通信与信息工程学院,重庆 400065;2.中国移动通信集团公司研究院,北京 100053)

0 引言

近年来,智能设备的蜂拥而起,先后涌现了一系列的无线通信技术,被大规模应用于各个行业各种应用场景。其中,在广域网通信技术中,LoRa 是一种前景比较好的低功耗广域网(Low Power Wide Area Network,LPWAN)[1-3]技术,主要应用于具有低功耗、远距离特点的应用场景,如智能抄表[4]、智慧农业[5]、智慧城市[6]等。

LoRa 技术是由美国Semtech 公司开发的一种扩频技术,融合了数字扩频、数字信号处理及前向纠错编码等技术[7]。与传统扩频技术相比,LoRa 技术增加了链路预算和对带内干扰的抗干扰能力,扩大了无线通信链路的通信范围[8]。在SX1280 技术手册[9]以及文献[10]中,给出了LoRa 数据包结构以及长度计算方法,并没有给出物理层LoRa 数据包的调制解调算法、通信链路流程;仅有一些文献提到LoRa 调制解调技术的原理及物理层收发端流程框图[11-13]。在文献[14]中,提到了一种LoRa 空口数据锁相环的硬同步算法,但基本没有文献提出软同步算法。

基于此,本文将结合官方的罗德仪表中的LoRa 调制技术和文献中的资料对LoRa 物理层进行更详细更完整的说明,提出一种高效的软同步算法,并对罗德仪表生成的LoRa 空口数据实现解调。

1 LoRa 物理层

1.1 LoRa 数据包结构及各部分作用

根据罗德仪表LoRa 参数配置界面,可知数据包有显示和隐式两种报头,显示模式数据包结构如图1 所示,隐式模式是关闭报头。

图1 LoRa 显示模式(Explicit mode only)的数据包结构

在图1 中,前导(Preamble)主要用于接收端同步,不加密,不添加纠错编码;报头(Header)主要包含有效载荷信息(Payload)的字节数、前向纠错码的码率(CR)以及Payload 是否添加CRC,Header 的纠错码率按照最大纠错码码率CR 为4/8 添加;Payload CRC 部分采用循环冗余校验码。隐式模式在这些报头承载参数信息都已知,直接在接收端配置已知参数,不需要通过解报头来获取这些信息。

Payload 主要承载要发送的信息,数据长度为1~255 B;Payload CRC 是给Payload 进行差错检验,不添加纠错编码时占2 B。Payload 和Payload CRC 采用的加密方式以及添加纠错编码的码率相同,有5 种码率(CR∈{4/4,4/5,4/6,4/7,4/8})可选。

1.2 LoRa 收发端流程框图

通过罗德仪表的LoRa 调制的参数配置接口和文献[9]-[10],绘制LoRa 收发端流程如图2 所示。在下文对罗德仪表采集的LoRa 空口数据进行去前导解调,发现Payload 部分解出的符号个数大于实际配置比特长度生成的符号个数。因此,除了上述这些比特数据的处理方式,还涉及Payload 部分数据的填充规则。

在图2 中,报头Header 和Payload 码率可以不同,因此它们是分开添加纠错码。前导码由n 个上扫频信号(Upchirps 信号)、两个同步码以及2.25 个下扫频信号(Downchirps 信号)三部分组成。

图2 “LoRa 收发端”的流程图

其中,根据罗德仪表德LoRa 调制界面的各个模块功能作用分析,对Payload 部分比特流数据加密和提高鲁棒性处理的顺位依次为:是否添加CRC,是否开启低速率优化,是否添加纠错编码,是否打开交织器[15],白化、格雷码;而在接收端Payload 数据的解调、解密和去冗余比特,其处理顺序和发送端相反。

在LoRa 调制中白化是一种扰码技术,是对单个比特进行的,防止出现连续的0 或1 导致信道功率分配不均,但LoRa 技术中没有信道功率分布不均问题,这里作用主要是加密,白化和解白化的过程是一样。

2 LoRa 的调制解调技术

2.1 LoRa 的调制技术

LoRa 调制技术的本质是一种线性频率调制技术,对初始频率的循环偏移点数携带需要传递的信息进行扩频传输。将经过处理和填充的比特数据按扩频因子NSF个比特封装成1 个符号,将NSF个比特数据分割为个码片进行扩频传输。一个符号的LoRa 调制定义如下:

由式(1)可知,LoRa 调制信号的频率随时间变换的表达式f(n)为:

2.2 LoRa 的解调技术

根据LoRa 调制的基本原理,由本地Upchirp 信号作为基本的调制信号,对初始频点进行循环位移得到调制信号。在接收端应对先接收数据去载频fc和滤波处理,得基带LoRa 调制信号sm(n)′,在这里sm(n)′是在理想情况下,不包含噪声n(t)的归一化数据(与sm(n)相同);再与μ=-1、K=0 的Downchirp 信号进行相乘得sr(n)。

其中,N1、N2与式(1)中相同,n 为接收端采样点的横坐标。对sr(n)的个码片的行向量进行离散快速傅里叶变化(Fast Fourier Transformation,FFT),可以得到1 个符号的频谱y(n)。根据第p 个符号的频谱y(n,p)的压缩脉冲的最大模值的横坐标n 乘以B 为频率突变采样点的位置,得第p 个符号的解调值为K(p)。

3 LoRa 空口数据的解调

3.1 获取LoRa 空口数据

通过罗德仪表选择LoRa 标准,配置相应的参数生成LoRa 调制数据包。为了下文数据包的Payload 部分LoRa 解调简单化,更好地验证文献中提到的LoRa 解调算法和Payload 部分数据的加密特点,在参数配置选择隐式模式,关闭可以配置数据编码方式,B 设置为500 kHz,NSF设置为7,Payload 设置4 字节全1 数据,只有LoRa 调制的白化处理以及Payload 部分独特的数据填充方式是仪表内部自动配置的。通过罗德仪表连续采集的40 ms数据的实部、虚部幅值以及模值波形如图3 所示。

由于通过罗德仪表采集的空口数据噪声很小,因此在图3 中可以直接区分数据部分和噪声部分;为了能截取到1 个完整LoRa 数据包,故在其明显的数据大概的起始位置,向前多取20 个点。

图3 罗德仪表生成40 ms 的LoRa 调制数据

利用LoRa 解调算法进行滑动解调,并观察解调数据的FFT 频谱图判断解调结果的正确性,直到发现解调值为8 个连续的0、两个同步字,再接着使用Upchirp 信号反解为2 个0,可得LoRa 数据包的起点,并结合罗德仪表可视化界面可得该参数配置数据包的点数,截取出一个完整的幅值归一化LoRa 数据包如图4 所示,并标出了前导各部分的位置。

图4 LoRa 数据包的时域图

由于LoRa 调制是一种频率调制技术,并且在传递消息时,1 个符号或相邻会有频率突变的地方,在罗德仪表抓取数据需对数据进行重采样,会经过内部的低通滤波器,因此在图4 的第3 子图数据取模的幅度不是一个固定值,而是当频率发生很大突变就会出现凹陷,当频率发生几个采样点或者几十个采样点突变就出现一些小波动。

图4 的第3 个子图中,标出了前导3 个部分所处的采样点数所在的区间,可以明显发现,前8 个符号都是以高频开始和高频结束的;在罗德仪表参数配置时,数据包前导的8 个Upchirp 信号起始频率为-B/2,以B/2结束,通过这一特点就很容易找到了LoRa 数据包的前导,也符合LoRa 官方文档中提到的LoRa 前导的结构特点。

3.2 LoRa 空口数据的同步

在3.1 节中,由于罗德仪表生成的空口数据噪声很小,可以直接找到数据的大概位置,可以直接通过LoRa解调算法进行滑动解调,找到LoRa 数据包的精同步点,从而得到完整的Payload 部分。但在噪声比较大的环境下,LoRa 信号被噪声淹没,不能直接找到大概的数据区,如果使用滑动解调的方法进行同步,获得Payload 部分,同步复杂度很高,需要的时长很长,该方法只适用于本文的特殊情况作验证。

针对这个问题,在这里结合LoRa 数据包的前导特点,提出了一种高效的同步算法,按符号进行偏移解调,直到解调疑似前导的连续Upchirp 信号部分,再进行频点偏移检测同步码,最后再检测2 个Downchirp 信号。算法详细过程如下:

(1)检测LoRa 信号的到来,提供2 种方式:检测信号强度(RSSI)进行判断;检测信号频率突变边缘。

(2)检测LoRa 信号的前导:通过2.2 节的解调算法,持续解调信号直到出现3 个连续相同符号,并记录解调值K,也就是整个符号的解调向后偏移了K 个点。

(3)检测两个同步字和两个Downchirp 信号:由于在LoRa 数据包的Payload 部分,也可能存在连续3 个及以的相同的符号,因此在步骤(2)可能检测到的是LoRa 数据包的前导码或Payload 部分,前移K 个点,再继续持续解调信号直到出现5 个连续符号为0、同步字1、同步字2,继续解调使用Upchirp 信号进行反解得两个连续的0,只需要这个5 个符号中有4 个符号解调正确,则同步成功,进入步骤(4)。若解调次数超过前导符号数,则继续执行步骤(1)和步骤(2)。

(4)对同步信号向后偏移0.25 个Downchirp 信号,得有效载荷Payload 部分。根据LoRa 调制配置的参数,可以计算出Payload 及Payload CRC 的长度,得到其进行编码后的n 个符号。

3.3 LoRa 数据包的解调

将罗德仪表采集的空口数据直接经过上文提出同步算法,得Payload 部分的数据模值图及对应数据的LoRa解调数据的时频图如图5 所示。根据配置的参数,计算得Payload 部分为1 536 个采样点12 个符号。

对从罗德仪表获取的LoRa 空口数据经过去前导后,经过使用上文提到的LoRa 解调算法分别对剩余的Payload 部分进行解调,得12 个符号为:96、124、0、0、0、0、0、0、28、92、99、96。从图5 可以直接观察到,时频图(b)的每个符号内部频率变化和模值图(a)的凹陷以及波动的地方是一一对应,说明了解调结果是的正确,所以文献中提供的解调算法没有问题。

图5 Payload 数据模值图及对应的时频图

在罗德仪表LoRa 调制参数界面中,Payload 部分只配置4 字节32 bit 数据,而实际上解出了84 bit,明显是对32 bit 数据填充了52 bit,从而对传输数据达到了提升鲁棒性和加密的目的。在上文中,选择从罗德仪表采集的LoRa 空口数据,主要有两个原因:一个是由于罗德仪表的是官方提供的LoRa 仿真仪器;另一个是由于采集数据的噪声比较小,数据部分和噪声部分区分明显,数据部分的时域模值波形的特征明显,容易观察解调的正误。

4 性能仿真

在文献[7]中,对LoRa 调制的7 种扩频因子分别在高斯信道和多径衰落下进行MATLAB 性能仿真,可以发现在误码率小于0.01 时,扩频因子增加1,抗噪声性能可以带来3 dB 的增益。为了观察LoRa 调制前向纠错编码位数对通信链路带来的增益,在下文中,对LoRa 调制的不同纠错码率在在高斯信道进行了MATLAB 性能仿真。

由于官方没有给出确切的前向纠错编码方式,而汉明码纠错码要求2r-1≥n,r 是监督位数,n 是编码后的bit数。若采用汉明码,其中纠错编码码率为4/4、4/5、4/6就不满足要求,因此在这里采用循环纠错编码。在图6 性能仿真中给出了LoRa 扩频因子为7、基带带宽为500 Hz调制的5 种码率的仿真曲线。

图6 LoRa 的SF7 不同码率误码性能曲线图

由图6 可知,在LoRa 的前向纠错编码中,并不是循环纠错码位数越多对系统性能提升越大;在误码率小于0.01 时,码率为4/5、4/6 或4/8,抗噪声性能大约增加了1 dB;码率为4/7,抗噪声性能大约增加了2 dB。

在LoRa 调制技术中,除了添加纠错编码、增大扩频因子,还可以配置Payload 部分低速率优化来提高信息传输的鲁棒性。在实际应用中,LoRa 技术传输对设备进行控制命令时,只要传输几个比特信息,由于LoRa 传输是以符号为单位进行传输的,而且有预留空间,至少可以传输几个字节的信息,因此在保证发送数据能同步的基础上,无需通过增加发送数据包的长度来增加传输信息之间的码距,进而提高信息传输的可靠性,如配置几个比特表示1 bit 信息。

5 结论

本文根据罗德仪表的LoRa 参数界面配置接口结合文献提供通信链路流程,对LoRa 物理层进行了详细说明;通过罗德仪表生成的LoRa 空口数据,对文献提到的LoRa 调制解调算法进行验证,完成了对该数据的解调;根据LoRa 数据包前导的特点,提出了一种高效的LoRa空口数据的同步算法;最后,通过LoRa 调制扩频因子为7 时的5 种码率的仿真,说明添加1 位纠错码的效果最佳。

猜你喜欢
空口罗德码率
移动视频源m3u8多码率节目源终端自动适配技术
一种基于HEVC 和AVC 改进的码率控制算法
5G无线空口原理
吃呼
基于状态机的视频码率自适应算法
英特尔携手德国电信和华为完成5G新空口标准测试
高通联合中移动、中兴为5G而战
对话中兴通讯无线总工程师朱伏生5G有望2019年提前预商用
巩辰卓申请罗德奖学金时的个人陈述
多光谱图像压缩的联合码率分配—码率控制方法