基于FPGA的BPSK+costas环实现,包含testbench,分析不同信噪比对costas环性能影响

目录

1.算法仿真效果

2.算法涉及理论知识概要

3.Verilog核心程序

4.完整算法代码文件获得


1.算法仿真效果

本作品是之前作品的改进和扩展:

1.m基于FPGA的BPSK调制解调通信系统verilog实现,包含testbench,包含载波同步_csdn基于fpga的bpsk-CSDN博客

2.m基于FPGA的costas环载波同步verilog实现,包含testbench,可以修改频偏大小_基于fpga的载波同步技术-CSDN博客

在上述两个作品的基础上做了如下的改进:

第一、优化了环路滤波器,使得costas环收敛曲线接近理论曲线;

第二、增加了awgn信道模块,可以修改SNR,分析不同噪声对costas环的锁定性能影响;

vivado2019.2仿真结果如下(完整代码运行后无水印)

局部放大:

仿真操作步骤可参考程序配套的操作视频。

2.算法涉及理论知识概要

       Costas环是一种用于载波同步的常见方法,特别是在调制解调中,它被广泛用于解调相位调制信号,如二进制调相(BPSK)或四进制调相(QPSK)信号。它的目的是估计和追踪接收信号的相位偏移,以便正确解调数据。

       其基本结构如下图所示:

Costas环结构:

       如上图所示Costas环包括两个主要部分:一个偏移90度的本地振荡器(Local Oscillator,LO)和一个相移解调器。这两个部分协同工作来估计信号的相位偏移。

Costas环包括以下主要组件:

本地振荡器(Local Oscillator,LO): LO产生一个本地参考信号,其频率与接收信号的载波频率相同。这个本地参考信号通常包括正弦和余弦两路信号,相位相差90度。这两路信号将与接收信号相位进行比较。

相位解调器(Phase Detector): 相位解调器用于测量接收信号和本地振荡器之间的相位差。它的输出是一个带有相位信息的信号。

环路滤波器(Loop Filter): 环路滤波器对相位差信息进行滤波和处理,以生成一个控制电压。这个电压将用于调整本地振荡器的频率和相位,以最小化相位差。

本地振荡器控制单元: 这个单元接收来自环路滤波器的控制电压,并相应地调整本地振荡器的频率和相位。

输出: Costas环的输出是本地振荡器的相位信息,该信息已经被调整,以与接收信号的相位保持同步。这个输出可以用于解调接收信号。

Costas环原理:

       Costas环的原理是利用接收信号和LO之间的相位差异来估计信号的相位偏移。当信号的相位偏移接近0或180度时,乘积信号的幅值最大,而当相位偏移接近90或270度时,乘积信号的幅值最小。因此,通过测量乘积信号的幅值,可以估计相位偏移。

        设调制信号为m ( t ) ,m ( t ) 中无直流分量,则抑制载波的双边带信号为:

和接收信号相乘后,得到的信号为 

滤波之后得到:

乘法鉴相器输出得到 

当频偏较小时,上述公式近似为:

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/01/19 01:40:07
// Design Name: 
// Module Name: tops_costas
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:module tops_costas(
input            i_clk,
input            i_rst,
input signed[7:0]i_SNR,
input signed[1:0]i_msg,
output signed[7:0]o_msg_filter,
output  signed[15:0]o_msg_mod,
output  signed[15:0]o_msg_modn,
output signed[15:0]o_low_filter,
output signed[31:0]o_delta_fre
);T_mod T_mod_u(
.i_clk        (i_clk),
.i_rst        (i_rst),
.i_msg        (i_msg),
.o_msg_filter (o_msg_filter),
.o_msg_mod    (o_msg_mod)
);awgns awgns_u(.i_clk(i_clk), .i_rst(i_rst), .i_SNR(i_SNR), //这个地方可以设置信噪比,数值大小从-10~50,.i_din(o_msg_mod), .o_noise(),.o_dout(o_msg_modn));R_demod R_demodu(
.i_clk        (i_clk),
.i_rst        (i_rst),
.i_mod        (o_msg_modn),
.o_low_filter (o_low_filter),
.o_delta_fre  (o_delta_fre)
);endmodule
0sj_055m

4.完整算法代码文件获得

V

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

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

相关文章

后端开发Web

Maven Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具 Maven的作用 依赖管理 方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题 统一项目结构 提供标准、统一的项目结构 项目构建 标准跨平台(…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝,2024年已经来临,回顾过去一年,科技的迅猛进步简直让人目不暇接。 在人工智能(AI)越来越强大的今天,我们不再停留在幻想阶段,量子计算的雏形开始展示它的无穷潜力,Web …

【10.2】队列-设计循环队列

一、题目 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普…

博客之星2024年度总评选——我的年度创作回顾与总结

2024年,是我在CSDN博客上持续耕耘、不断成长的一年。在此,与大家分享一下我的年度创作回顾与总结。 一、创作成长与突破 在人工智能领域,技术迭代迅速,知识更新频繁。为了保持自己的竞争力,在今年,我始终…

IDEA运行Java项目总会报程序包xxx不存在

我的在另外一台电脑上跑是没有问题的,在新的电脑上跑的时候,又出现了这个恶心的问题...... 思来想去,唯一的问题就是我的mavn环境没的配置好 如何在本地部署mavn环境,这里推荐一篇很好的文章: Maven安装与配置&…

java 根据前端传回的png图片数组,后端加水印加密码生成pdf,返回给前端

前端传回的png图片数组,后端加水印加密码生成pdf,返回给前端 场景:重点:maven依赖controllerservice 场景: 当前需求,前端通过html2canvas将页面报表生成图片下载,可以仍然不满意。 需要java后…

数据分库分表和迁移方案

在我们业务快速发展的过程中,数据量必然也会迎来突飞猛涨。那么当我们的数据量百倍、千倍、万倍、亿倍增长后,原有的单表性能就不能满足我们日常的查询和写入了,此时数据架构就不得不进行拆分,比如单表拆分成10张表、100张表、单个…

线上突发:MySQL 自增 ID 用完,怎么办?

线上突发:MySQL 自增 ID 用完,怎么办? 1. 问题背景2. 场景复现3. 自增id用完怎么办?4. 总结 1. 问题背景 最近,我们在数据库巡检的时候发现了一个问题:线上的地址表自增主键用的是int类型。随着业务越做越…

Java导出通过Word模板导出docx文件并通过QQ邮箱发送

一、创建Word模板 {{company}}{{Date}}服务器运行情况报告一、服务器:总告警次数:{{ServerTotal}} 服务器IP:{{IPA}},总共告警次数:{{ServerATotal}} 服务器IP:{{IPB}},总共告警次数:{{ServerBTotal}} 服务器IP:{{IPC}}&#x…

【22】Word:小李-高新技术企业政策❗

目录 题目​ NO1.2 NO3 NO4 NO5.6 NO7.8 NO9.10 若文章中存在删除空白行等要求,可以到最后来完成。注意最后一定要检查此部分!注意:大多是和事例一样即可,不用一摸一样,但也不要差太多。 题目 NO1.2 F12Fn&a…

自动化部署(三):项目管理平台

一、项目管理平台作用 帮助团队高效规划、执行和监控项目进度,确保任务按时完成并实现目标 敏捷开发:提供标准敏捷研发管理,支持Scrum 与 Kanban 规模化敏捷:支持大型研发团队跨项目协同,实现多项目路线图规划和资源管…

常用集合-数据结构-MySql

目录 java核心: 常用集合与数据结构: 单例集合: 双列集合: 线程安全的集合: ConcurrentHashMap集合: HashTable集合: CopyOnWriteArrayList集合: CopyOnWriteArraySet集合: ConcurrentLinkedQueue队列: ConcurrentSkipListMap和ConcurrentSkipListSet&…

IP属地与视频定位位置不一致:现象解析与影响探讨

在数字化时代,IP属地和视频定位位置已成为我们获取网络信息、判断内容真实性的重要依据。然而,有时我们会发现,某些视频内容中展示的定位位置与其发布者的IP属地并不一致。这种不一致现象引发了广泛的关注和讨论。本文旨在深入剖析IP属地与视…

计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

机器学习-数据集划分

文章目录 一. 为什么要划分数据集二. 数据集划分的方法1. 留出法:2. 交叉验证:将数据集划分为训练集,验证集,测试集3. 留一法:4. 自助法: 一. 为什么要划分数据集 为了能够评估模型的泛化能力,可…

Vue 拦截监听原理

Vue 渐进式JavaScript 框架 学习笔记 - Vue 拦截监听原理 目录 拦截监听原理 如何跟踪变化 拦截监听示例 观察者 注意:vue3的变化 总结 拦截监听原理 如何跟踪变化 当你把一个普通的Javascript 对象传入 Vue 实例作为data选项,Vue 将遍历此对象所有的proper…

全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析

本文介绍了我在 DOCA 开发环境下对 DPU 进行测评和计算能力测试的一些真实体验和记录。在测评过程中,我主要关注了 DPU 在高并发数据传输和深度学习场景下的表现,以及基本的系统性能指标,包括 CPU 计算、内存带宽、多线程/多进程能力和 I/O 性…

基于JAVA的校园二手商品交易平台的设计与开发

摘 要:政府政策引导与社会观念的转变使得国内大学生的创业意识逐渐提高,很多高校大学生开始自主创业。目前我国各大高校暂且还没有较为成型的针对校内学生创业者的校园网络服务平台。本文首先主要是介绍了关于java语言以及web开发的相关技术,…

HarmonyOS Next 应用UI生成工具介绍

背景 HarmonyOS Next适配开发过程中难买难要参考之前逻辑,但是可能时间较长文档不全,只能参考Android或iOS代码,有些逻辑较重的场景还可以通过AI工具将Android 的Java代码逻辑转成TS完成部分复用。对于一些UI场景只能手动去写,虽…

总结6..

背包问题的解决过程 在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义V(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值,同…