GFSK RX Core分为以下几个模块:
1.Frequency offset compensation CORDIC
2.A low pass filter
3.A power estimator for packet detection,RSSI and digital gaion computation for DPSK path
4.A demodulator implemented as Phase Shift Discriminator
5.A drequency offset estimator
6.Sampling time offset estimator
7.A synchronizer doing jointly packet and symbol synchronization
8.A detector implemented as a decision feedback equalizer
9.A long range symbol de-mapper
10.Soft input viterbi decoder .
详细解释一下上述10个部分组成的蓝牙GFSK RX Core的架构原理以及各部分的作用以及算法原理

这个蓝牙 GFSK RX Core 的架构是一个典型的、高效的零中频接收机设计,专为处理蓝牙标准的 Gaussian Frequency Shift Keying 信号而优化。下面我将详细解释这10个模块的原理、作用以及核心算法:
首先是射频到基带的信号处理链(1-4模块),其次是同步补偿机制(5-7),最后是解调译码(8-10)

核心目标: 将从天线接收到的、经过信道损伤(噪声、干扰、频偏、时偏、衰减)的射频 GFSK 信号,恢复出发送端发送的数字比特流。

架构流程概览:
射频信号 -> 下变频(通常在模拟域完成,产生 I/Q 信号)-> ADC -> RX Core 开始 -> [1. 频偏补偿] -> [2. 低通滤波] -> [3. 功率估计] -> [4. 鉴频解调] -> [5. 频偏估计] -> [6. 采样时偏估计] -> [7. 同步器] -> [8. DFE 检测器] -> [9. 长距离解映射] -> [10. 维特比译码] -> 输出解码比特流。


模块详细解释:

  1. Frequency Offset Compensation CORDIC

    • 作用: 补偿发射机与接收机本地振荡器之间的频率偏差(Frequency Offset, FO),以及由多普勒效应等引起的微小频率漂移。这对于后续的解调至关重要,因为频偏会扭曲信号相位,导致解调错误。
    • 算法原理: 使用 CORDIC 算法实现复数旋转器。
      • 输入: 数字化的 I/Q 采样点。
      • 处理: 根据估计出的频偏值(通常由模块5提供),计算每个采样点需要旋转的相位角度增量 Δθ = -2π * Δf * T_s (Δf 是频偏估计值,T_s 是采样周期)。CORDIC 算法通过迭代移位和加减法高效地计算出 cos(Δθ * n)sin(Δθ * n),并用它们对输入的 I/Q 采样点进行复数乘法(即旋转):
        I_corr = I * cos(Δθ * n) - Q * sin(Δθ * n)
        Q_corr = I * sin(Δθ * n) + Q * cos(Δθ * n)
        
      • 输出: 频偏得到补偿后的 I/Q 采样点。这相当于将信号的频谱搬移回基带中心。
    • 关键点: CORDIC 硬件效率高,适合在 FPGA 或 ASIC 中实现复数旋转。
  2. Low Pass Filter

    • 作用:
      • 限制噪声带宽: 滤除带外噪声和相邻信道干扰,提高信噪比。
      • 抗混叠 (Decimation Filtering): 如果后续处理需要降低采样率(降采样),该 LPF 首先防止混叠失真。
      • 脉冲整形匹配: 蓝牙 GFSK 使用高斯脉冲整形。接收端的 LPF 可以与发送端的高斯滤波器特性进行某种程度的匹配(虽然不完全等同),有助于集中信号能量并抑制码间干扰。
    • 算法原理: 通常采用 FIR 滤波器。其系数根据目标带宽(蓝牙标准规定带宽时间积 BT=0.5)、滚降系数和阻带抑制要求设计。滤波器对补偿后的 I_corr/Q_corr 进行卷积运算。
  3. Power Estimator (for Packet Detection, RSSI, Digital Gain)

    • 作用:
      • 包检测: 持续计算接收信号的瞬时功率或能量,并与预设阈值比较。当功率超过阈值并维持一定时间(防突发噪声误触发),判定为有效数据包到达,激活后续解调模块。这是接收机从空闲状态切换到工作状态的关键。
      • RSSI (Received Signal Strength Indication): 提供接收信号强度的数字估计值,用于链路质量评估、功率控制等。
      • 数字增益计算 (for DPSK Path): 虽然主路径是 GFSK,但一些蓝牙接收机可能包含用于未来扩展或特定模式(如 LE Coded PHY 的 FEC 部分)的 DPSK 解调路径。该模块计算信号的 RMS 功率,用于自动增益控制,确保输入到 DPSK 解调器的信号幅度稳定在合适范围。
    • 算法原理:
      • 功率计算: 瞬时功率 P[n] = I[n]^2 + Q[n]^2
      • 包检测: 通常对 P[n] 进行短时平均或积分得到能量 E[n],然后应用阈值比较和持续时长判断逻辑(有限状态机)。
      • RSSI:P[n]E[n] 进行较长时间的平均(平滑掉调制变化),并可能转换为 dB 值。
      • 数字增益: Gain = Target_Amplitude / sqrt(Avg(P[n])),用于后续乘法器。
  4. Demodulator (Phase Shift Discriminator - PSD)

    • 作用: 将 GFSK 信号(本质是角度调制)转换为包含原始比特信息的基带电压信号。PSD 是 FM 解调的一种高效数字实现方法。
    • 算法原理:
      • 输入: 滤波后的 I/Q 采样点。
      • 处理:
        1. 相位计算: 对每个 I/Q 采样点计算瞬时相位 Φ[n] = atan2(Q[n], I[n])atan2 是四象限反正切函数。
        2. 相位差分: 计算相邻采样点之间的相位差 ΔΦ[n] = Φ[n] - Φ[n-1]
        3. 相位卷绕处理: 确保 ΔΦ[n] 落在 [-π, π) 范围内(例如,加减 )。
      • 输出: ΔΦ[n] 直接与频率偏移成正比(FM 原理),而 GFSK 的频率偏移就代表了传输的比特信息。因此 ΔΦ[n] 就是解调出的软判决信号,其符号(正负)对应传输的比特 10,幅度对应频偏的大小(在理想情况下是恒定的)。
    • 关键点: PSD 直接、计算量相对较小,但对相位噪声和残留频偏敏感。模块 1 的补偿和模块 5 的精细估计对 PSD 的性能至关重要。
  5. Frequency Offset Estimator

    • 作用: 提供更精确的载波频率偏差估计值,反馈给模块 1 的 CORDIC 进行补偿。通常在包检测后,利用数据包前导码(Preamble,如蓝牙的“1010…”序列)进行初始估计,并在数据部分可能进行跟踪。
    • 算法原理: 常用方法:
      • 相位差分平均: 在前导码期间(已知是恒定频率调制的信号),解调器输出的 ΔΦ[n] 理论上应该是一个常数(对应频偏)。对一段 ΔΦ[n] 求平均即可得到频偏估计 Δf_est ∝ mean(ΔΦ[n])。需要考虑 ΔΦ 的周期模糊性。
      • 最大似然估计: 在频域或时域利用已知的前导码序列结构进行更鲁棒的估计。
      • 锁相环:ΔΦ[n] 或其变体输入一个数字 PLL 的相位检测器,PLL 的输出就是频偏估计。
    • 关键点: 该模块的精度直接影响解调性能。
  6. Sampling Time Offset Estimator

    • 作用: 估计并补偿 ADC 采样时钟与发射机符号时钟之间的偏差(Sampling Clock Offset, SCO)或初始相位偏差(Timing Offset)。确保在最佳时刻(符号中心点)对解调器输出 ΔΦ[n] 进行采样(符号判决)。
    • 算法原理: 常用 Gardner 算法 或其变种(尤其适合 BPSK/QPSK 类信号,也适用于 GFSK 的 PSD 输出)。
      • 输入: 解调器输出的软判决信号 ΔΦ[n](通常需要过采样,例如每个符号 2 个采样点)。
      • 处理: Gardner 算法利用符号过渡点(过零点)附近的信息。核心误差信号:
        ε[n] = (y[n-1/2] - y[n+1/2]) * y[n]
        
        其中 y[n] 是第 n 个符号时刻(整数索引)的采样值(理想应在符号中心),y[n-1/2]y[n+1/2] 是中间点的采样值(理想应在符号跳变点)。误差 ε[n] 反映了当前采样点相对于理想采样点的偏移方向。该误差用于驱动一个数字环路滤波器(如 PI 控制器),滤波器的输出控制一个插值器或直接调整采样时刻索引。
      • 输出: 定时误差信号或控制插值器的分数间隔。
    • 关键点: 需要与同步器模块 7 紧密配合。
  7. Synchronizer (Joint Packet & Symbol Sync)

    • 作用: 这是接收机的核心控制模块,结合了:
      • 符号同步: 利用模块 6 的定时误差信息,通过插值器(如 Farrow 结构)或控制采样点选择,精确地在每个符号的中心时刻产生一个采样点给后续的检测器。确保在最佳信噪比和最小码间干扰点进行判决。
      • 包同步: 在包检测(模块 3)触发后,利用前导码或接入地址(Access Address)进行帧同步,精确地定位数据包的起始位置(即第一个数据符号的开始时刻)。这通常通过相关器实现。
    • 算法原理:
      • 符号同步: 通常实现为一个 数字锁相环。模块 6 产生的定时误差 ε[n] 驱动一个环路滤波器。滤波器输出控制一个 数控振荡器,该 NCO 的溢出信号指示何时产生一个新的符号采样点(触发插值器或选择采样点)。
      • 包同步: 将接收到的前导码/Access Address 的采样序列与本地已知的序列进行 互相关。当相关峰值超过阈值时,认为找到帧头,并输出帧同步信号,复位符号同步 NCO 的相位。
    • 关键点: “联合”体现在包同步确定了数据流的绝对起始点,而符号同步在这个起点上精确地恢复出每个符号的时钟。两者通常共享定时恢复环路(模块 6 的误差 + 这里的环路滤波器 + NCO + 插值器)。
  8. Detector (Decision Feedback Equalizer - DFE)

    • 作用: 补偿信道引入的码间干扰。虽然 GFSK 和蓝牙信道通常 ISI 不严重,但 DFE 能有效处理由多径效应、滤波器非理想性等引起的有限长度的拖尾 ISI,尤其是在高速率或恶劣环境下。
    • 算法原理:
      • 结构: DFE 包含两个部分:
        • 前馈滤波器: 处理当前及过去几个符号的采样输入。
        • 反馈滤波器: 处理过去几个已判决的符号。
      • 工作: 当前输入 x[n] 经过 FFF 滤波,同时过去判决的符号 â[n-1], â[n-2], ... 经过 FBF 滤波。FFF 的输出减去 FBF 的输出得到均衡后的信号 y[n]
        y[n] = Σ (c_k * x[n-k]) - Σ (d_m * â[n-m])  // k 属于 FFF 抽头索引, m 属于 FBF 抽头索引
        
        然后对 y[n] 进行判决得到当前符号的估计 â[n]â[n] 被反馈回 FBF 用于均衡下一个符号。
      • 系数自适应: 通常使用 LMS (Least Mean Squares) 或其变种算法,根据误差信号 e[n] = â[n] - y[n] (训练模式) 或 e[n] = â[n] - y[n] (判决导向模式) 更新 FFF 和 FBF 的系数 c_k, d_m
    • 关键点: DFE 能有效处理因果性 ISI,计算复杂度相对线性均衡器较低,但对判决错误敏感(错误传播)。
  9. Long Range Symbol De-Mapper

    • 作用: 专为蓝牙 LE Coded PHY (Long Range 模式) 设计。该模式使用前向纠错编码(FEC),在物理层对每个信息比特重复多次并增加冗余比特(S=2 或 S=8)。解映射器将 DFE 输出的软判决符号(可能对应多个重复的信息比特)合并,为每个原始信息比特生成一个更可靠的软判决值(LLR - Log Likelihood Ratio),输入给维特比译码器。
    • 算法原理:
      • 输入: DFE 输出的软判决值(例如 ΔΦ 或均衡后的电压值),对应着经过 S 倍重复和 FEC 编码后的符号。
      • 处理:
        • 解重复: 对于 S=2 或 S=8,将对应于同一个原始信息比特的 S 个软判决采样值进行合并(如简单相加或加权平均)。合并后的值反映了该原始比特的总体可信度。
        • LLR 计算: 对于 FEC 编码引入的冗余比特(Pattern Mapper),解映射器需要根据编码规则,将合并后的软值映射回原始信息比特和冗余比特的软信息(LLR)。LLR 定义为:
          LLR(b) = log( P(b=1 | received signal) / P(b=0 | received signal) )
          
          在实际实现中,常使用简化的近似计算,其幅度代表可信度(越大越可信),符号代表比特估计(正为1,负为0)。
      • 输出: 原始信息比特流对应的 LLR 序列(软比特)。
    • 关键点: 这是实现蓝牙长距离模式(高灵敏度)的关键,通过时间分集(重复)和编码增益对抗深度衰落和噪声。
  10. Soft Input Viterbi Decoder

    • 作用: 对来自解映射器模块 9 的软判决输入(LLRs)进行前向纠错解码。蓝牙 LE Coded PHY 使用 卷积码。维特比算法是卷积码的最大似然序列检测算法,利用软信息可以显著提高解码性能(相比硬判决输入)。
    • 算法原理:
      • 输入: 解映射器输出的每个原始信息比特(和可能的尾比特)对应的 LLR 值序列。
      • 处理:
        • 网格图: 根据蓝牙使用的卷积码(码率 1/2, 约束长度 K=4)构建网格图,描述编码器状态转移。
        • 分支度量计算: 对于网格图中的每条可能分支(对应编码器可能的输入和状态转移),计算其分支度量(Branch Metric)。对于软输入,通常使用汉明距离的软版本或直接使用 LLR 的线性组合。常用的是计算接收到的软比特序列与分支预期编码输出序列之间的相关度量或欧氏距离的负值(最大化相关或最小化距离)。
        • 路径度量累积与比较: 在每个状态节点,计算到达该状态的所有可能路径的累积路径度量(Path Metric = 前状态路径度量 + 当前分支度量)。保留到达该状态的具有最佳(最大或最小,取决于度量定义)累积度量的路径(幸存路径)。淘汰其他路径。
        • 回溯: 在处理完整个数据块(或使用滑动窗)后,从具有最佳最终累积度量的状态开始,沿着幸存路径回溯,读出该路径对应的解码比特序列。
      • 输出: 解码恢复出的原始发送信息比特流。
    • 关键点: 维特比译码是卷积码的标准最优译码算法。使用软输入(LLRs)比硬判决输入可获得约 2-3 dB 的编码增益,这对于低功耗蓝牙在低信噪比下工作至关重要。其复杂度随约束长度指数增长,但蓝牙的 K=4 非常易于实现。

总结:

这个蓝牙 GFSK RX Core 架构体现了一个精心设计的数字信号处理流水线:

  1. 前端处理: 补偿主要损伤(频偏 - CORDIC),滤除噪声干扰(LPF),检测有效信号(Power Estimator)。
  2. 核心解调: 将频率调制转换为基带软信息(PSD Demodulator)。
  3. 精细同步与跟踪: 精确估计和补偿残留频偏(FO Est)和采样时钟偏差(STO Est),联合实现精确的符号定时和帧起始定位(Synchronizer)。
  4. ISI 抑制: 使用 DFE 对抗码间干扰,提高信号质量。
  5. 长距离支持: 针对 LE Coded PHY,合并重复符号并计算软信息(De-Mapper)。
  6. 纠错解码: 利用维特比算法和软信息(LLRs)进行强大的前向纠错(Viterbi Decoder),最终输出可靠的比特流。

这种架构充分利用了数字信号处理的优势,在功耗、性能和复杂度之间取得了良好的平衡,非常适合低功耗蓝牙芯片的实现。各个模块协同工作,共同克服无线信道带来的各种挑战,实现可靠的数据接收。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93659.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93659.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93659.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微电网管控系统中python多线程缓存与SQLite多数据库文件连接池实践总结(含源码)

1. 引言 在分散的微电网能源管理场景中,系统采用集中式云平台模式,为100个独立微电网用户提供高并发数据写入服务面临三大挑战:用户数据隔离、I/O性能瓶颈、多线程安全性。本文揭示一种新式的分片锁+三级缓存+sqlite多数据库文件连接池架构,在保持SQLite轻量级优势的同时,…

InfluxDB 开发工具链:IDE 插件与调试技巧(一)

引言 ** 在当今数字化时代,时间序列数据的处理与分析在众多领域中都扮演着至关重要的角色。无论是物联网设备产生的海量传感器数据,还是金融市场中实时波动的交易数据,又或是服务器运维过程中不断产生的性能指标数据,这些都属于…

计算机网络-IPv6

1、IPv6基础IPv4与IPv6的对比:问题IPv4的缺陷IPv6的优势地址空间IPv4地址采用32比特标识,能提供的地址数量是43亿,分配很不均衡。针对IPv4的地址短缺问题,有几种解决方案:无类别域间路由CIDR(Classless Int…

整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层融合 之2

摘要(CSDN的AI助手自动生成的)本文提出了一种基于"整除"数学原型的智能合约与DBMS融合架构设计,将SQL查询语句的四个关键段(SELECT、FROM、WHERE、BY)分别映射到整除运算的四个要素(商、被除数、…

【赵渝强老师】TiDB表数据与键值对的映射关系

TiDB实例将表中的每一行数据映射成RocksDB中的键值对,则需要考虑如何构造Key和Value。首先,OLTP场景下有大量针对单行或者多行的增、删、改、查等操作,要求数据库具备快速读取一行数据的能力。因此,对应的Key最好有一个唯一ID&…

带操作系统的延时函数

delay.c:#include "delay.h"/*** brief 微秒级延时* param nus 延时时长,范围:0~233015* retval 无*/ void delay_us(uint32_t nus) {uint32_t ticks;uint32_t tcnt 0, told, tnow;uint32_t reload SysTick->LOAD; //重…

ES Module 和 CommonJS的区别

ES Module(ESM,ES6 模块系统)和 CommonJS 是 JavaScript 中两种主流的模块规范,分别用于现代前端和 Node.js 环境(早期),它们在语法、加载机制、特性等方面有显著区别。以下是详细对比&#xff…

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化

猫头虎AI分享|一款智能量化交易系统:QuantCell,从数据收集到策略执行全流程自动化 在当今金融市场中,量化交易系统已经成为越来越多投资者和机构的重要选择。无论是股票、期货还是加密货币,自动化交易与人工智能的结合…

直播美颜SDK架构揭秘:动态贴纸功能的实现原理与性能优化

如今,美颜SDK 已经不再只是“磨皮、美白”的基础工具,而是逐渐进化为一个涵盖 人脸识别、实时特效、动态贴纸交互 的复杂技术体系。尤其是 动态贴纸功能 的加入,让主播与观众之间的互动更加生动有趣,也成为提升用户粘性与平台差异…

Docker安装CDC

Docker安装CDC拉取镜像离线形式安装上传文件并创建docker-compose.yml把镜像加载到docker中启动容器连接数据库创建账号,并给账号授权设置wal_level确认wal_level的值创建链接查询连接状态使用kafdrop消息中看不到修改之前的信息怎么办补充拉取镜像 docker pull co…

如何在win服务器中部署若依项目

一、安装jdk的环境: 这一步很简单,直接拿到安装包双击安装即可。 二、配置jdk的环境变量默认安装的路径为:C:\Program Files (x86)\Java\jdk1.7.0_51安装完成之后进行环境变量配置右击计算机(此电脑)点击属性点击高级系…

CSS从入门到精通完整指南

第一部分:CSS基础入门1.1 什么是CSSCSS(层叠样式表,Cascading Style Sheets)是用于描述HTML文档外观和格式的样式语言。CSS将内容与表现分离,让HTML专注于内容结构,CSS专注于视觉效果。1.2 CSS语法结构选择…

重温k8s基础概念知识系列二(Pod)

文章目录1、Pod概念2、K8s 中的 Pod 的两种用法3、定义Pod4、Pod的创建资源5、Pod 模板6、容器探针7、总结干货8、 K8s Pod 经典面试题速查表Pod是Kubernetes中最小的单元: 1、Pod概念 Pod 是可以在 Kubernetes中创建和管理的、最小的可部署的计算单元。它由一组、一…

设计模式之静态代理

一些个人理解 顾名思义,就是代理一个对象。 那么,既然要代理一个东西,就要传入它吧? 【1】所以将代理对象当作属性【【2】往往通过构造方法传入被代理的目标对象】。 既然要代理,那必然要和代理对象拥有相同的功能吧? 所以实现了…

牛津大学xDeepMind 自然语言处理(1)

牛津大学xDeepMind 自然语言处理 Natural Language Processing 词向量与词汇语义学 Word Vectors and Lexical Semantics 词语表示的基本问题与分布语义思想 传统词语表示(如独热向量)存在稀疏、正交、语义弱的问题,无法表达语义相似性。分布…

StarRocks数据库集群的完整部署流程

目录 依赖环境 下载安装包 部署FE 部署BE 搭建集群 停止集群 依赖环境 详见&#xff1a;StarRocks 部署&#xff1a;依赖环境-CSDN博客 下载安装包 在官方网站下载安装包&#xff1a;StarRocks 部署FE 创建元数据目录。 mkdir -p <meta_dir> 修改 FE 配置文件 f…

简单的 VSCode 设置

以下是我使用的vscode设置。虽然有些主观&#xff0c;但很实用。1 主题。我放弃了那些炫酷的主题。我选择了Tokyo Night (Storm)。理由是&#xff1a;它平静、赏心悦目&#xff0c;并且与代码形成了美丽的对比&#xff0c;却又不显得刺眼。2. 字体。我切换到了 JetBrains Mono …

Rust 条件语句

Rust 条件语句 在编程语言中&#xff0c;条件语句是程序流程控制的重要组成部分。Rust 作为一种系统编程语言&#xff0c;其条件语句的设计简洁而强大。本文将详细介绍 Rust 中的条件语句&#xff0c;包括其语法、用法以及一些高级特性。 1. 基本条件语句 Rust 中的基本条件语句…

【Java EE进阶 --- SpringBoot】初识Spring(创建SpringBoot项目)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java, Java EE初阶&#xff0c; Java数据结构 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励…

脑潜在进展:基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究|文献速递-深度学习人工智能医疗图像

Title题目Brain Latent Progression: Individual-based spatiotemporal diseaseprogression on 3D Brain MRIs via latent diffusion脑潜在进展&#xff1a;基于潜扩散模型的三维脑磁共振成像个体时空疾病进展研究01文献速递介绍神经退行性疾病是现代医疗保健领域最紧迫的挑战之…