关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析
本文结合相关论文对CSS信号的数学形式、调制解调、发射接收以及同步估计做了全面分析,希望有助于更好地理解lora信号
long-range (LoRa) modulation, also known as chirp spread spectrum (CSS) modulation, in LoRaWAN to ensure robust transmission over long distances by tolerating interference and noise.
参考:On the LoRa Chirp Spread Spectrum Modulation: Signal Properties and Their Impact on Transmitter and Receiver Architectures
正弦波线性调频信号由短时频率扫描组成,下图为其数学表示形式
a sine-wave chirp signal, concisely denoted as chirp in the following, consists of a short-time frequency sweep mathematically expressed as

使用M个chirp信号进行调制,Δf (s, t)表示调制符号s在t时刻的瞬时频率偏移
LoRa modulation uses M differently shaped chirps, each of which is in one-to-one correspondence with the M symbols of the modulation alphabet S = {0, ··· ,M − 1}. In particular, given a modulation symbol s ∈S, the instantaneous frequency-offset Δf (s, t) of the corresponding modulated chirp linearly increases starting from − B/2+B/M*s. Then, when the maximum frequency-offset B/2 is reached, Δf (s, t) wraps around to −B/2 and keeps on increasing linearly. Assuming t0 =0 as the symbol starting instant, the chirp stops when Δf (s, t = Ts)=Δf (s, 0). Its duration Ts is usually referred to as symbol time.
chirp调制是一个wrap-around式的操作,频偏到达最大会返回至最低再开始


调制信号的产生

随后是正常的基带信号调制的过程

基带信号的同相和正交信号的表示:in-phase and quadrature baseband signals
连续时间相位推导离散时间的相位

此处的采样时间:符号时间/扩频系数,也就是采样频率为符号带宽BW,而无需奈奎斯特带宽

基带信号上采样之后发射

调制信号的接收和解调
h表示信道参数

相干解调

针对接收信号使用极大似然方法进行符号估计
在信道参数和接收信号的条件下估计symbol属于s的概率,实质上就是找到接收信号在各个传输符号上的投影最大值

实际的FFT Detector实现
但是这种方法需要遍历各个符号,并不实用,实际上采用的是将接收信号的各个采样数值和basic up-chirp相关后进行FFT,找出最大值,就是估计出来的符号

实际的结构

解调前需要的同步:需要补偿CFO、STO、SFO
参考:Low Complexity LoRa Frame Synchronization for Ultra-Low Power Software-Defined Radios
为何会有频偏:Low-cost crystal oscillators have an inherent mismatch with their nominal frequency value and therefore the down-conversion is performed with a different frequency than the up-conversion.
Before being able to demodulate the received symbols and recover the data, a LoRa receiver must also compensate for sampling, carrier frequency and symbol timing offsets that are due to unsynchronized timing references between the transmitter and the receiver.


直观展示
CFO会使接收到的信号的频率整体搬移,超出频带,再经过采样,使采样后的在频带之内的信号与原信号不一致
CFO will shift the signal out of the receiver’s reception bandwidth, defined by in the interval [−N/2, .., N/2]. Sampling at a normalized minimum rate of 1/N folds the signal back into the receiver’s input bandwidth which, in Figure 3, has the effect of reconstructing complete up-chirps.
STO影响了接收信号的起始时刻
Next, in the absence of synchronization, after sampling, the receiver has no way of identifying the start of the received sequence, resulting in an STO consisting of an integer number of samples, STOint (with STOint <N) plus a fraction of a sample, STOfrac. In the example of Figure 3, the signal is received with an STO (horizontal time shift) equal to 7.2 samples. Recovering STOint is mandatory for correct alignment to the modulated symbols and compensating for STOfrac is necessary for concentrating the symbol energy within a single FFT bin.

SFO影响采样频率,导致累计采样误差
序列越长,累计误差的影响越大,导致一个符号里面的各个采样点被混淆,在使用FFT解调的时候被错认为其他的frequency bin
Finally, Figure 4 shows the impact of SFO on an otherwise perfectly synchronized signal. In the figure, we observe the effect of a receiver with a slightly higher sampling frequency to that of the emitter. We observe a cumulative sampling offset which has the effect of slowly moving the samples off of the desired integer frequency bins. If this offset is not corrected, the demodulator will start confusing a symbol (identified by its frequency bin) with its next neighbor. This is an important problem for high order modulations. For example, the highest order modulation in LoRa has N = 4096. Assuming low cost quartz crystals with a ±20 ppm precision are used in both emitter and receiver, a potential worst case offset of 40 ppm can lead to a drift of 0.16 sample after a single symbol. While this effect can sometimes be ignored during preamble acquisition, for example if the preamble is relatively short, this effect must imperatively be corrected during the demodulation phase of frame detection. An estimation of SFO can be extracted from CFO if the source of both offsets, the quartz crystal reference, is identical.

核心方法:the presence of both up-chirps and down-chirps in a synchronization preamble leads to an elegant solution for extracting the integer part of both values.
CFO和STO的处理
理想的信号

收到CFO/STO影响下的接收信号

小数部分的提取:使用到两个完全相同的连续符号进行估计


SFO的估计
The mismatch between the transmitter and receiver oscillators also results in different sampling frequencies, and therefore, the sampled LoRa signal at the receiver experiences a sampling frequency offset.
参考:LORA DIGITAL RECEIVER ANALYSIS AND IMPLEMENTATION
第d个symbol的第n个采样时刻的表示形式

然后对实际采样信号和实际参考信号进行同样的dechirp处理

然后计算FFT,得到在SFO下的实际采样的计算值

offset逐符号累计,会导致持续性解调错误

Lora的前导preamble用于同步

接收机检查输入信号功率并进行FFT,如果至少一个频率分档的幅度超过给定阈值,则将幅度最大的分档的指数标记为 ˆ Spre,并继续该过程。
重复识别到frequency bin之后,跳过一定的采样点,进入header部分

相关文章:
关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析
本文结合相关论文对CSS信号的数学形式、调制解调、发射接收以及同步估计做了全面分析,希望有助于更好地理解lora信号 long-range (LoRa) modulation, also known as chirp spread spectrum (CSS) modulation, in LoRaWAN to ensure robust transmission over long d…...
Java - API
API全称"Application Programming Interface",指应用程序编程接口 API(JDK17.0)链接如下 : Overview (Java SE 17 & JDK 17) (oracle.com)https://docs.oracle.com/en/java/javase/17/docs/api/中文版: Java17中…...
力扣 3152. 特殊数字Ⅱ
题目描述 queries二维数组是nums数组待判断的索引区间(左闭右闭)。需要判断每个索引区间中的nums相邻元素奇偶性是否不同,如果都不同则该索引区间的搜索结果为True,否则为False。 暴力推演:也是我最开始的思路 遍历q…...
识别和缓解软件安全威胁的最佳工具
软件安全威胁会给企业带来重大损失,从经济损失到声誉受损。 企业必须主动识别和缓解这些威胁,防止它们造成危害。 幸运的是,有许多工具可以帮助企业识别和缓解软件安全威胁。 在本博客中,我们将探讨识别和缓解软件安全威胁的顶…...
Linux下的压缩与解压:掌握核心命令行工具
目录 一.前言 二.压缩文件概述 三.tar:Linux 的通用归档工具 常用 tar 命令 四.gzip:强大的压缩程序 常用 gzip 命令 五.zip 和 unzip:处理 ZIP 压缩文件 常用 zip 和 unzip 命令 实用技巧和最佳实践 六.结语 一.前言 在 Linux …...
BGP选路实验
要求: 1.如图连接网络,合理规格IP地址,AS200内IGP协议为OSPF; 2.R1属于AS 100;R2-R3-R4小AS234、R5-R6-R7小AS567,同时声明大AS 200,R8属于AS300; 3.R2-R5、R4-R7之间为联邦EBGP邻居…...
白骑士的C#教学高级篇 3.3 网络编程
网络编程是现代应用程序开发中至关重要的一部分。C# 提供了一套丰富的 API 来处理基本网络通信、Web请求与响应。在本节中,我们将深入探讨这些内容,帮助您掌握如何在 C# 中进行网络编程。 基本网络通信 基本网络通信通常涉及套接字(Socket&a…...
AI大模型赋能游戏:更智能、更个性化的NPC
参考论文:https://arxiv.org/abs/2403.10249 在传统游戏中,NPC(非玩家角色)的行为往往是预先设定好的,缺乏灵活性和变化性。然而,基于大模型的NPC可以利用其强大的推理和学习能力,实时生成对话…...
pymysql的上下文管理器:简化数据库操作
pymysql的上下文管理器:简化数据库操作 当我们使用 pymysql 操作数据库时,管理数据库连接和游标的生命周期是一项重要的任务。Python 的上下文管理器提供了一种优雅的方式来处理资源的获取和释放。在本文中,我们将探索如何创建一个简单的 py…...
AI秘境-墨小黑奇遇记 - 修炼成神经(二)
在解开了感知机和门电路的谜题后,墨小黑对人工智能的世界渐渐产生了浓厚的兴趣。他开始意识到,自己不仅是在学习一门复杂的技术,更是在探索一个充满未知与挑战的神秘领域。 入夜,墨小黑一脸无奈地盯着电脑屏幕,思考着自…...
计算机网络之分组交换时延的计算
一.类型 分组交换的时延包括一下几种: 1.1发送时延 发送时延,也叫传输时延,结点将分组的所有比特推向链路所需要的时间,即从发送分组的第一个比特算起,到该分组的最后一个比特发送完为止。 发送时延 分组长度 / 发…...
虚幻5|入门AI行为树,建立敌人
本章分成两块部分一块是第一点的制作一个简单的AI,后面第二点之后是第二部分建立ai行为树。这两个部分是一个衔接,最好不要跳看 一,制作一个简单的AI 1.首先,我们创建一个敌人的角色蓝图,添加一个场景组件widget用于…...
ARM处理架构中的PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)简介
在 ARM 架构中,PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)是用于性能分析和监控的硬件单元,但它们的功能和应用场景有所不同。以下是它们的主要区别: 1. PMU (Performance Monitoring Unit) 功能:PMU 是一种用于监控处理器性能的硬件单元。它可…...
Service服务在Android中的使用
目录 一,Service简介 二,Service的两种启动方式 1,非绑定式启动Service 2,绑定式启动Service 三,Service的生命周期 1,非绑定式Service的生命周期 2,绑定式Service的生命周期 四…...
浅谈C语言位段
1、位段的定义 百度百科中是这样解释位段的: 位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。 以下,我们均在VS2022的…...
arcgisserver登陆信息不正确
密码明明对,但是登录提示登录信息不正确 Arcgis server 9.3.1 无法登录ArcGIS Manager 提示Incorrect Login Information 操作系统windows 2008 x64server 解决办法: 关闭window防火墙解决。 如果防火墙已经关闭: 通过修改用户口令后就可以重…...
KOLA: CAREFULLY BENCHMARKING WORLD KNOWLEDGE OF LARGE LANGUAGE MODELS
文章目录 题目摘要简介KOLA 基准实验评估结论和未来工作道德声明 题目 KOLA:仔细对大型语言模型的世界知识进行基准测试 论文地址:https://arxiv.org/abs/2306.09296 项目地址:https://github.com/ranahaani/GNews 摘要 大型语言模型 (LLM) 的卓越性能要求评估方法…...
Robot Operating System——机器人关节的角度、速度和力矩
大纲 应用场景定义字段解释 案例 sensor_msgs::msg::JointState 是 ROS (Robot Operating System) 中的一个消息类型,用于表示机器人关节的状态信息。它通常用于传输和处理机器人关节的角度、速度和力矩等信息。 应用场景 机器人控制 关节控制:在机器人…...
一分钟掌握java9新特性
try-with-resources语句 /** * 在处理必须关闭的资源时,使用try-with-resources语句替代try-finally语句。 生成的代码更简洁,更清晰,并且生成的异常更有用 * java9 之前写法 */ public static String readFile1(String fileName){ tr…...
89. UE5 RPG 实现伤害 冷却 消耗技能描述
在上一篇文章里,我们能够通过富文本显示多种格式的文字,并显示技能描述。在这一篇文章里,我们继续优化技能描述,将技能说需要显示的内容显示出来。 实现火球术的基础描述 首先,我们现实现火球术的基础描述࿰…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
