多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于 P201Pro 的 QPSK 无线收发 (4) 阶段性总结:从比特流到 QPSK 星座点簇,完整 GNU Radio 收发链路复盘

基于 P201Pro 的 QPSK 无线收发 (4) 阶段性总结:从比特流到 QPSK 星座点簇,完整 GNU Radio 收发链路复盘 前言这段时间写了不少软件无线电相关的文章内容从发射端的符号映射和脉冲成形一直延伸到数字前端、ADC/DAC、晶振与时钟误差最后又回到接收端的符号同步和载波同步。单独看每一篇它们解决的是一个具体问题把这些内容串起来其实就是一套简单 QPSK 无线收发系统从数字比特到星座点簇的完整过程。本文不再重复推导每个模块的详细原理而是沿着信号实际经过的路径对前一阶段的学习和调试结果做一次总结。目录发射端从比特流到可发送的 IQ 序列数字前端基带采样率与硬件采样率的衔接ADC/DAC数字域与模拟域的分界线晶振误差接收端为什么必须进行同步实验平台升级从 HackRF One 到 P201Pro接收端从混乱星座恢复出 QPSK 点簇整条 QPSK 收发链路的串联下一阶段1. 发射端从 bit 流得到可发送的 IQ 序列1.1 bit 流如何变成基带符号数字通信的起点是一串二进制 bit。以 QPSK 为例每两个 bit 映射为一个复数符号形成四个理想星座点。关于符号映射、上采样和脉冲成形的初步实验我记录在了[[发射端基础知识--脉冲成形滤波器的相关问题1]]中。整个过程可以概括为下图这里需要区分“符号”和“采样点”符号决定要传递的信息而 SPS 决定一个符号在数字波形中由多少个采样点表示。完成映射后得到的仍然是离散复数序列还需要经过成形滤波才能成为适合传输的基带波形。1.2 成形滤波器和匹配滤波器在[[数字信号处理理论--匹配滤波器及为什么成型和匹配均用RRC滤波器3]]中我进一步讨论了升余弦和根升余弦滤波器。本系统在发射端使用 RRC 进行脉冲成形在接收端再次使用参数一致的 RRC 进行匹配滤波两只 RRC 级联后的整体响应满足升余弦特性。发射端的 RRC 负责限制带宽并塑造脉冲接收端的匹配滤波器则在采样判决前提高信噪比。两者不是重复处理而是同一套收发设计的前后两半。1.3 将调制流程封装成 OOT 模块在[[Gnuradio中数字调制一般方法]]中我把 bit 生成、QPSK 映射、上采样和 RRC 成形等步骤封装成了 GNU Radio OOT 模块封装以后发射端不再需要反复搭建零散模块只需要统一设置调制方式、SPS、滚降系数和滤波器长度运行后即可得到发射端的时域波形、频谱和星座图1.4 IQ 序列如何变成无线信号调制器输出的是数字复基带序列 它还不是空间中传播的无线电波。在[[发射端基础知识--IQ序列是如何变成无线信号的2]]中我把后续过程分成了 DAC、正交混频、功率放大和天线几个阶段DAC 将数字 I/Q 转换为模拟基带电压本振提供载波正交混频器把 I、Q 两路搬移到射频最后经过功率放大器和天线发射出去。到这里软件中生成的一串复数才真正进入物理世界。2. 数字前端基带采样率如何连接硬件采样率发射端生成 IQ 序列后下一步就是将数据送入 PlutoSDR Sink这里的 Sample Rate 是 GNU Radio 与设备之间的基带采样率并不是 ADC/DAC 的物理采样率。两者之间由数字前端 DFE 完成采样率转换和频谱搬移具体可参考[[发射端基础知识--为什么GNU Radio的sampleRate不是ADC采样率3]]。当转换倍率较大时DFE 通常采用 CIC、半带滤波器和 CFIR 组成的多级结构在降低计算量的同时完成插值与滤波详见[[发射端基础知识--DFE数字前端-多级插值架构4]]3. ADC/DAC数字域与模拟域的分界线经过 DFE 后信号到达 ADC/DAC。它们是数字域与模拟域的物理分界线发射端由 DAC 将数字 IQ 转换为模拟电压接收端由 ADC 对模拟波形进行采样和量化。采样率、量化位数、ENOB 和采样时钟等参数决定了系统的带宽与精度具体内容见[[发射端基础知识--DAC与ADC工作原理与关键参数5]]。其中采样时钟又自然引出了下一部分时钟从哪里来它为什么会产生误差4. 晶振误差为什么接收端必须进行同步采样时钟和射频本振都来自晶振与 PLL具体见[[发射端基础知识--晶振与频率合成6]]。由于发射机和接收机使用不同的晶振两端的时间与频率基准不可能完全一致最终表现为CFO收发本振不一致使基带星座持续旋转SFO收发采样时钟不一致使最佳采样位置随时间漂移STO初始符号时刻不对齐使采样点偏离符号中心。这条从晶振误差到同步补偿的因果链在[[发射端基础知识--时钟误差如何破坏通信7]]中有更详细的讨论因此符号同步解决“什么时候采样”载波同步解决“星座旋转了多少”。5. 从 HackRF One 到 P201Pro实验平台的升级早期接收实验使用 HackRF One后来将收发平台统一升级为 P201Pro/PlutoSDR 双机。P201Pro 使用 AD9361 和精度约 的 VCTCXO并可在 GNU Radio 中分别通过 PlutoSDR Sink 与 Source 完成收发降低了同步难度也统一了实验接口。设备参数、选型和连接过程见[[软件无线电接收端学习——从HackRF One到P201Pro的设备升级2]]。 将设备链接如下图6. 接收端从混乱星座恢复出 QPSK 点簇P201Pro 接收并输出复基带 IQ 后GNU Radio 接收链为PlutoSDR Source → AGC → FLL Band-Edge → RRC 匹配滤波 → Symbol Sync → Costas Loop → Constellation SinkAGC、FLL 和匹配滤波完成前置处理后面的主线就是符号同步与载波同步。6.1 Symbol Sync找到最佳采样时刻Symbol Sync 使用 Gardner 定时环路寻找最佳采样时刻将匹配滤波后的4 SPS转换为1 SPS。实测中星座由多层散乱轨迹收敛成较窄的旋转环平均周期稳定在4附近说明定时环路已经稳定跟踪详细原理和参数见[[接收端基础知识——找准最佳采样时刻定时环路原理与实测4]]。6.2 Costas Loop让旋转圆环停下来符号同步后的星座仍会受残余 CFO 和相位偏差影响而旋转。四阶 Costas Loop 对符号进行反向旋转后圆环收敛为四个 QPSK 点簇详细调试过程和 Loop Bandwidth 的影响见[[接收端基础知识--从混乱星座到QPSK点簇-Costas Loop载波同步实测3]]。这个调试效果其实不是很好这点后面我发现是天线问题我更换后星座图的收敛效果明显变得更好并且发射端用RC接收端不用匹配滤波情况下得到的效果也非常不错这将在之后内容详细介绍。7. 把整条 QPSK 收发链路串起来bit 流 → QPSK 符号映射 → 上采样与 RRC 成形 → DFE 插值与 DUC → DAC → 正交上变频与功率放大 → 无线信道 → 下变频与 ADC → DDC → AGC/FLL → RRC 匹配滤波 → Gardner 定时恢复 → Costas 载波同步 → QPSK 四点簇到这里前面分散学习的调制、数字前端、ADC/DAC、晶振和同步算法被串成了同一条信号链。GNU Radio 中的各个模块也能够与真实收发机内部的处理环节一一对应。 我们将设备链接好后通过两台PC设备进行收发如下展示8. 下一阶段目前已经能够发出 QPSK 波形并在接收端恢复出四个点簇。下一阶段将继续完成QPSK 硬判决与 bit 解映射帧头、前导序列和包同步收发 bit 对比和 BER 统计在稳定单载波链路的基础上继续学习 OFDM、信道估计和 MIMO。
返回列表