基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环

news2024/11/25 22:44:13

目录

1.算法描述

2.matlab算法仿真效果

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       载波同步是相干解调的基础,不管对于模拟通信还是数字通信来说,只要是相干解调,接收端都必须提供同频同相的载波。当然,若采用基带传输,此时便没有载波同步的问题,因为没有频带调制,即没有乘以载波进行频谱搬移的过程。

位同步,也叫符号同步、定时同步、码元同步,只有数字通信才需要,数字通信中不管是基带传输还是频带传输都需要。这是因为数字通信中,是用波形中的几个采样点去代替一个符号,在接收端只需要对这些采样点中的一个进行判决,便可以恢复出这个符号。

         实际通信中,由于信道的传输时延,接收两端的时钟偏移,接收端无法找到符号的最佳时刻来对其进行采样判决,这便使得接收端恢复出的数据与发送端的数据有误差。接收端若想在最佳采样时刻恢复发送端的数据,便要使得接收时钟与发送时钟同步,因此接收端要采取措施来调整接收端的采样时钟,这个同步的过程便定义为位同步。

        这里,我们分析了通信中的4进制相移键控QPSK调制解调算法,并使用具有多种信号处理IP核且开发灵活的现场可编程逻辑门阵列(Field-Programmable Gate Array:FPGA)对该算法进行了硬件实现。对BPSK调制解调算法中的关键技术数控振荡器(Numerically controlled oscillator: NCO)、成型滤波器、载波同步与定时同步的基本原理进行了详细的分析。随后,基于通信系统的设计要求,分别选择Costas环和Gardner环用于载波和码元同步,并利用Matlab软件对同步环路的参数及功能进行了仿真验证。在Matlab仿真验证成功后,使用Verilog语言对BPSK调制解调算法进行了硬件描述,并对该算法进行了功能仿真。仿真结果证明了 BPSK调制解调算法在FPGA中的正确实现。最后对水声通信试验平台中的上位机进行了简单设计,并完成了与FPGA的相互数据通信。为了进一步验证所编写的FPGA算法的正确性能,进行了相应的水池试验验证。结果表明,由于Costas环能够正确补偿信号传输过程中所产生的频偏,Gardner环也可以补偿信号在传输过程中所产生的定时偏差,因此当收发通信距离较短、信道的多途影响较小时,通过对估计的码元符号和原始码元符号进行对比,计算出环路在同步后的数据误码率为0,星座图分布良好,验证了基于FPGA的BPSK调制解调算法的正确实现。

         Costas环(Costas Loop)用在抑制载波调制信号(比如双边带抑制载波调制)和相位调制信号(BPSK、QPSK)的相干解调中的载波恢复(carrier frequency recovery)上。由通用电气公司的John P. Costas 在1950s发明。它的发明被描述为对现代数字通信产生了深远的影响。Costas环的主要应用是在无线通信接收机中。与基于PLL的检波器相比,它的优势在于,在相位差比较小的情况下,Costas环输出的误差电压为 sin(2(θi−θf)) ,而基于PLL的检波器输出的误差电压为 sin(θi−θf) ,这不仅使灵敏度提高了一倍,而且使Costas环路特别适合跟踪载波的多普勒频移,特别是在OFDM和GPS接收机中。

        Gardner定时误差算法通常用在BPSK、QPSK信号,通过改进可以应用在QAM等多进制基带信号中。Gardner定时误差算法,该算法的一个特点是每个符号只需要使用两个采样点,一个是strobe点,即最佳观察点,另外一个是midstrobe点,即两个观察点之间的采样点。Gardener环中的数控振荡器与锁相环路中的NCO功能完全不同,这里的NCO作用是产生时钟,即确定内插基点mk,同时完成分数间隔uk的计算,以提供给内插器进行内插。
位同步环路中的数控振荡器(NCO)是一个相位递减器,它的差分方程为:
η(m+1)=[η(m)-ω(m)]mod1

       式中,η(m)是第m个工作时钟NCO寄存器的内容,ω(m)为NCO的控制字,两者都是正小数。NCO的工作周期是T s(采样周期),内插器的周期为T i,ω(m)由环路滤波器进行调节,使NCO在最佳采样时刻溢出。当环路达到平衡时,ω(m)近似是个常数,此时平均每隔1/ω(m)个采样周期,NCO就溢出一次,所以

gardner环内部结构如下所示:

2.matlab算法仿真效果

matlab2022a仿真结果如下:

3.MATLAB核心程序

     mul = 2;%按块进入根升余弦滤波器
     for i = 1 + mul:carlen - mul
         %为加快收敛,前端使用较大的系数以快速震荡
         if i < 1000
                C1 = 0.007;
                C2 = C1 * 0.007;
         else
                C1 = 0.0005;
                C2 = C1 * 0.001;
         end
         %频率锁相环
         for k = 1 : nsamp
            I_NCO = cos(wc_nco/Freq_Sample*((i-1-mul)*nsamp+1 : (i-1+mul)*nsamp+nsamp)+mod(NCO_Phase,2*pi));%NCO产生的I路输入信息数据
            Q_NCO = - sin(wc_nco/Freq_Sample*((i-1-mul)*nsamp+1 : (i-1+mul)*nsamp+nsamp)+mod(NCO_Phase,2*pi));%NCO产生的Q路输入信息数据 
            I_RECE=rece((i-1-mul)*nsamp+1 : (i-1+mul)*nsamp+nsamp).*I_NCO;   %I路输入信息数据
            Q_RECE=rece((i-1-mul)*nsamp+1 : (i-1+mul)*nsamp+nsamp).*Q_NCO;   %Q路输入信息数据
            %根升余弦滤波
            I_RRC_S = RRCrece(I_RECE,Freq_Data,nsamp,alpha,delay);%I路输入信息数据经过根升余弦匹配滤波
            Q_RRC_S = RRCrece(Q_RECE,Freq_Data,nsamp,alpha,delay);%Q路输入信息数据经过根升余弦匹配滤波
            
            I_PLL=I_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k);   %鉴相器的I路输入信息数据
            Q_PLL=Q_RRC_S(delay*nsamp-nsamp/2+mul*nsamp+2+k);   %鉴相器的Q路输入信息数据
            dataoutI((i-1)*nsamp+k) = I_PLL;%用来查看鉴相器的I路输入信息数据
            dataoutQ((i-1)*nsamp+k) = Q_PLL;
            %鉴相器处理
            Discriminator_Out = (sign(I_PLL)*Q_PLL-sign(Q_PLL)*I_PLL)/sqrt(2);   
            dd((i-1)*nsamp+k) = Discriminator_Out;%用来查看鉴相器的输出
            %环路滤波器处理
            PLL_Phase_Part((i-1)*nsamp+k) = Discriminator_Out * C1;   
            Freq_Control((i-1)*nsamp+k) = PLL_Phase_Part((i-1)*nsamp+k)+PLL_Freq_Part((i-1)*nsamp+k-1);
            PLL_Freq_Part((i-1)*nsamp+k) = Discriminator_Out * C2 + PLL_Freq_Part((i-1)*nsamp+k-1);
            NCO_Phase = NCO_Phase + Freq_Control((i-1)*nsamp+k);  %生成的相位
            WC_frame((i-1)*nsamp+k) = FC_NCO + PLL_Freq_Part((i-1)*nsamp+k) * Freq_Sample;
            
            %=========================================================
            NCO_Phase_((i-1)*nsamp+k)=mod(NCO_Phase,2*pi);
         end
     end
A78

4.完整MATLAB

V

V

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hadoop 3.x大数据集群搭建系列7-安装Hudi

文章目录编译环境准备一. 下载并解压hudi二. maven的下载和配置2.1 maven的下载和解压2.2 添加环境变量到/etc/profile中2.3 修改为阿里镜像三. 编译hudi3.1 修改pom文件3.2 修改源码兼容hadoop33.3 手动安装Kafka依赖3.4 解决spark模块依赖冲突3.4.1 修改hudi-spark-bundle的p…

pytest + yaml 框架 - 3.全局仅登录一次,在用例中自动在请求头部添加Authentication token认证

前言 我们在使用自动化测试框架的时候&#xff0c;经常会遇到一个需求&#xff0c;希望在全局用例中&#xff0c;仅登录一次&#xff0c;后续所有的用例自动带上请求头部token 或者cookies。 环境准备 Python 3.8版本 Pytest 7.2.0 最新版 pip 安装插件 pip install pytes…

[附源码]Python计算机毕业设计Django的实验填报管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

OSSID: Online Self-Supervised Instance Detection by (And For) Pose Estimation

许多机器人操作算法都需要 实时目标姿态估计。然而&#xff0c;最先进的目标姿态估计方法是针对一组特定的对象进行训练的&#xff1b;因此&#xff0c;这些方法需要 重新训练 以估计每个新对象的姿势。本文提出了 OSSID 框架&#xff0c;利用 慢速零样本 姿态估计器 来 自监督…

OpenGL 图像色调

目录 一.OpenGL 图像色调 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像色调 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

Spring | IOC技术之Bean的配置与实例化

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 文章目录Bean的基础配置1、id 与 cla…

家电生产线数控机床上下料长臂机器人组设计

目录 摘 要 I ABSTRCT II 前言 III 1.长臂机器人组概况 1 1.1国内外发展状况 1 1.2研究意义 2 1.2.1长臂机器人组研究现状 2 1.2.2长臂机器人组研究方向 3 1.3本课题意义和目的 4 1.3.1本课题的意义 4 1.3.2本课题的目的 4 2.长臂机器人组的组成分类及设计分析 6 2.1 长臂机器人…

【车载开发系列】UDS诊断---诊断故障清除($0x14)

【车载开发系列】UDS诊断—诊断故障清除&#xff08;$0x14&#xff09; UDS诊断---诊断故障清除&#xff08;$0x14&#xff09;【车载开发系列】UDS诊断---诊断故障清除&#xff08;$0x14&#xff09;一.概念定义二.参数说明三.清除内容方式1&#xff09;清除内容2&#xff09;…

python接口自动化44- requests 库使用 hook 机制

前言 requests 是 Hooks 即钩子方法&#xff0c;用于在某个框架固定的某个流程执行是捎带执行&#xff08;钩上&#xff09;某个自定义的方法。 requests 库只支持一个 response 的钩子&#xff0c;即在响应返回时可以捎带执行我们自定义的某些方法。 可以用于打印一些信息&am…

Unity引擎开发-无人机模拟飞行实现

目 录 摘 要 I Abstract II 一、 绪论 1 &#xff08;一&#xff09; 研究背景和研究意义 1 &#xff08;二&#xff09; 国内外研究现状 1 &#xff08;三&#xff09; 论文组织结构 2 二、 3D游戏技术的知识系统 2 &#xff08;一&#xff09; 3D图形库 2 &#xff08;二&…

UML概述及UML类图详解

一 UML介绍 UML这三个字母的全称是Unified Modeling Language&#xff0c;翻译就是统一建模语言&#xff0c;是一种用于软件系统分析和设计的语言工具&#xff0c;它用于帮助软件开发人员进行思考和记录思路的结果 UML 本身是一套符号的规定&#xff0c;就像数学符号和化学符…

Linux——md5命令

文章目录介绍选项使用案例生成文件md5值文本模式或二进制模式md5值重定向重定向追加md5校验实际开发场景介绍 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容&#xff0c;与文件名无关&#xff0c;也就是文件内容相同&#xff0c;其md5值相…

CTGU操作系统

CTGU操作系统第一章第二章 Operating-System structures操作系统结构第三章自己看&#xff0c;懒得写了&#xff0c;我也不知道为啥划重点他要把所有PPT过一遍&#xff0c;离谱第一章 第二章 Operating-System structures操作系统结构 第三章自己看&#xff0c;懒得写了&#x…

【能效管理】电力监控系统在某商业数据中心的应用分析

摘要&#xff1a;在电力系统的运行过程中&#xff0c;变电站作为整个电力系统的核心&#xff0c;在保证电力系统可靠的运行方面起着至关重要的作用&#xff0c;基于此需对变电站监控系统的特点进行分析&#xff0c;结合变电站监控系统的功能需求&#xff0c;对变电站电力监控系…

Yoshua Bengio:我的一生

文 | 智商掉了一地2018 年图灵奖获得者、AI 先驱、深度学习三巨头之一、对抗生成网络 GAN、标志性的银灰卷发和浓眉&#xff0c;如果还没猜到的话&#xff0c;当你看到这个封面&#xff0c;一定就会意识到自己在学习的路上&#xff0c;已经或间接或直接地拜读过大佬的著作了。看…

云原生主题学习月|成为社区领学员,解锁专属奖励及超多数量社区学员奖品!

CSDN 已上线亚马逊云科技超过 60 门中文数字化培训课程&#xff0c;希望为学习者提供亚马逊云科技基础技能知识和最佳实践。 每门课程时长从十分钟到几小时不等&#xff0c;由亚马逊云科技专家打造&#xff0c;其中包括最受欢迎的《亚马逊云科技云从业者必修知识》&#xff0c…

为什么 FindFirstFile 会查找短文件名?

FindFirstFile 函数会尝试匹配短文件名和长文件名。这可能会产生一些令人惊讶的结果。例如&#xff0c;如果你查找 “*.htm” &#xff0c;那么它会返回给你文件 “x.html” &#xff0c;因为它的短文件名是 “X~1.HTM”。 这确实比较令人感到意外。 为什么 FindFirstFile 会匹…

行业重磅!神策可视化全埋点正式支持 Flutter 平台!

Flutter 框架推出至今&#xff0c;已经在超过 50 万个应用中使用&#xff0c;从 2019 年到现在一直保持着强劲的增长趋势。优秀的性能、跨平台能力和活跃的技术社区使得其愈发受到广大开发者的青睐。而随着 Flutter 的普及和广泛应用&#xff0c;越来越多的企业和开发者对自动高…

答题小程序源码题目选项随机打乱功能分析

答题小程序随机打乱功能分析 通过多年的开发经验及实际使用用户的反馈&#xff0c;答题小程序源码完善了题库选项随机打乱功能&#xff0c;该功能的出现有效避免了用户在答题时不经审题、思索而凭机记忆机械化做出选择的弊端。 那么题库选项随机打乱功能具体是什么样的的呢&…

计算机组成原理期末复习第四章-1(唐朔飞)

计算机组成原理期末复习第四章-1&#xff08;唐朔飞&#xff09; ✨欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ &#x1f52e;本文由京与旧铺原创&#xff0c;csdn首发&#xff01; &#x1f618;系列专栏&#xff1a;java学习 &#x1f4bb;首发时间&#xff1a;&am…