基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
目录
1.算法仿真效果
2.算法涉及理论知识概要
2.1 16QAM调制解调原理
2.2 帧同步
3.Verilog核心程序
4.完整算法代码文件获得
1.算法仿真效果
vivado2019.2仿真结果如下(完整代码运行后无水印):
设置SNR=12db

将FPGA数据导入到MATLAB显示星座图:

设置SNR=16db

将FPGA数据导入到MATLAB显示星座图:

设置SNR=25db

将FPGA数据导入到MATLAB显示星座图:

仿真操作步骤可参考程序配套的操作视频。
2.算法涉及理论知识概要
16QAM全称正交幅度调制是英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一种数字调制方式。产生的方法有正交调幅法和复合相移法。16QAM是指包含16种符号的QAM调制方式。
2.1 16QAM调制解调原理
16QAM 是用两路独立的正交 4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是 2ASK 调制的推广,和 2ASK 相比,这种调制的优点在于信息传输速率高。正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。16进制的正交振幅调制是一种振幅相位联合键控信号。16QAM 的产生有 2 种方法:
(1)正交调幅法,它是有 2 路正交的四电平振幅键控信号叠加而成;
(2)复合相移法:它是用 2 路独立的四相位移相键控信号叠加而成。
这里采用正交调幅法。
数字信号是通过FPGA的输出端口生成的。在16QAM调制中,每个符号包含4个比特,因此需要一个4位二进制计数器来生成数字信号。计数器的输出被映射到星座图上的一个点,然后通过数字到模拟转换器(DAC)转换为模拟信号。串/并变换器将速率为Rb的二进制码元序列分为两路,速率为Rb/2.2-4电平变换为Rb/2 的二进制码元序列变成速率为RS=Rb/log216 的 4 个电平信号,4 电平信号与正交载波相乘,完成正交调制,两路信号叠加后产生 16QAM信号.在两路速率为Rb/2 的二进制码元序列中,经 2-4 电平变换器输出为 4 电平信号,即M=16.经 4 电平正交幅度调制和叠加后,输出 16 个信号状态,即16QAM.
16QAM信号采取正交相干解调的方法解调,解调器首先对收到的16QAM 信号进行正交相干解调,一路与cosωct 相乘,一路与sinωct相乘。然后经过低通滤波器,低通滤波器LPF滤除乘法器产生的高频分量,获得有用信号,低通滤波器LPF 输出经抽样判决可恢复出电平信号。
2.2 帧同步
在数字通信中,信息通常是以帧为单位进行组织和传输的。帧同步的目的是确定每一帧的起始位置,以便接收端能够正确地解调出每帧中的数据。
设发送的帧结构为:帧同步码 + 信息码元序列 。帧同步码是具有特定规律的码序列,用于接收端识别帧的起始。
帧同步的过程就是在接收序列中寻找与帧同步码匹配的位置,一旦找到匹配位置,就确定了帧的起始位置,后续的码元就可以按照帧结构进行正确的划分和处理。
3.Verilog核心程序
T16QAM T16QAMU(
.i_clk (dat_clk),
.i_clksample(i_clk),
.i_rst (i_rst),
.i_en (i_en),
.i_dat (i_dat),
.o_ISET (o_ISET),
.o_clk_3div(),
.o_I16QAM(o_I16QAM),
.o_Q16QAM(o_Q16QAM),
.o_I16QAMs (o_I16QAMs),
.o_Q16QAMs (o_Q16QAMs),
.o_cos (),
.o_sin (),
.o_modc (),
.o_mods (),
.o_mod (o_mod_T)
);//加入信道
awgns awgns_u(.i_clk(i_clk), .i_rst(i_rst), .i_SNR(i_SNR), //这个地方可以设置信噪比,数值大小从-10~50,.i_din(o_mod_T[28:13]), .o_noise(),.o_dout(o_Nmod_T)); 16QAM解调
R16QAM R16QAMU(
.i_clk (dat_clk),
.i_clksample(i_clk),
.i_rst (i_rst),
.o_clk_3div(),
.i_med (o_Nmod_T),
.o_cos (),
.o_sin (),
.o_modc (o_modc_R),
.o_mods (o_mods_R),
.o_Ifir (o_Ifir_R),
.o_Qfir (o_Qfir_R),
.o_wbits(o_wbits),
.o_bits (o_bits),
.o_bits_head(o_bits_head),
.o_peak(o_peak),
.o_en_data(o_en_data),
.o_en_pn(o_en_pn),
.o_frame_start(o_frame_start)
);Error_Chech Error_Chech_u1(.i_clk(dat_clk), .i_rst(i_rst), .i_trans({~i_dat,1'b1}), .i_en_data(o_en_data),.i_rec({~o_bits,1'b1}), .o_error_num(o_error_num), .o_total_num(o_total_num)); 0sj2_068m
4.完整算法代码文件获得
V
相关文章:
基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印): 设置SNR12db 将FPGA数据导入到MATLAB显…...
QuecPython 外设接口之GPIO应用指南
基础知识 了解GPIO基础知识更有益于我们使用它。 框图 GPIO(通用输入输出)是指一种通用的数字输入/输出接口,用于与外部电子元件或设备进行通信。它通常存在于微处理器、微控制器和其他嵌入式系统中。 物理电路结构如下图所示:…...
Spring Boot 整合 Nacos 注册中心终极指南
在微服务架构中,配置管理和动态路由是核心需求。Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,能够帮助开发者实现配置热更新、多环境共享配置以及动态路由管理。本文将结合 Spring Boot 和 Spring Cloud Gateway,手把手教…...
清晰易懂的 Maven 彻底卸载与清理教程
一、Windows 系统卸载 Maven 步骤 1:删除 Maven 安装目录 找到 Maven 的安装路径(默认可能为 C:\Program Files\apache-maven-3.x.x 或自定义路径)。直接删除整个 Maven 文件夹(如 apache-maven-3.x.x)。 步骤 2&am…...
光流 | 基于KLT算法的人脸检测与跟踪原理及公式,算法改进,matlab代码
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 人脸检测与跟踪 一、KLT算法原理与分析1. 核心思想2. 数学模型二、人脸…...
Spring MVC请求与响应全解析:从参数绑定到异常处理
文章目录 一、请求映射的艺术:RequestMapping深度解析1. 多级路径配置2. 六大核心属性3. RESTful风格实践 二、参数绑定黑科技1. 智能绑定机制基础类型绑定对象嵌套绑定集合类型绑定 2. 参数处理三剑客 三、响应处理全攻略1. 视图跳转三种模式2. JSON交互实践 四、文…...
用免费的github的key调用gpt实现一个简单的rag自动打分评测系统,不用任何框架
1.环境准备 !pip install pymupdf numpy openai 2.导入依赖 import fitz import os import numpy as np import json from openai import OpenAI 3.pdf提取文本 def extract_text_from_pdf(pdf_path):"""从 PDF 文件中提取文本内容。参数:pdf_path (str): …...
SQLServer列转行操作及union all用法
1.创建测试表及数据sql如下 create table ScoresTable( Name varchar(50), ChineseScore int, MathScore int ) insert into ScoresTable values(小张,90,95) insert into ScoresTable values(小王,98,99) 2.表中查询结果如下 3.现需列转行显示,每行显示 姓名…...
深度学习框架PyTorch——从入门到精通(6.2)自动微分机制
本节自动微分机制是上一节自动微分的扩展内容 自动微分是如何记录运算历史的保存张量 非可微函数的梯度在本地设置禁用梯度计算设置requires_grad梯度模式(Grad Modes)默认模式(梯度模式)无梯度模式推理模式评估模式(n…...
Java面试10个“隐藏考点”
1. Java模块化系统(JPMS)的requires transitive作用 问题:如何在模块化项目中传递依赖? 解析: **requires transitive**:声明模块的依赖可被下游模块隐式继承。示例:模块A依赖模块B并添加…...
【GL010】C++
1.C中的const关键字有哪些用法? 1.修饰变量:表示变量的值不可修改。 const int a 10; 2.修饰指针: const int* p: // 指针指向的内容不可修改。 int* const p: // 指针本身不可修改。 const int* const…...
(Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏
MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏 paper是HKUST发布在Arxiv 2025的工作 paper title:MagicDistillation: Weak-to-Strong Video Distillation for Large-Scale Portrait Few-Step Synthesis Project page:地址 Abst…...
Linux paste命令
目录 一. 简介二. 基本语法三. 小案例 一. 简介 paste 命令用于合并多个文件的行,按列方式输出,默认以制表符(Tab)分隔。 ⏹基本语法 paste [选项] 文件1 文件2 ...二. 基本语法 <()的方式模拟文件流paste命令将2个文件流粘…...
大模型金融企业场景落地应用
一、商业银行体系 1. 江苏银行 企业背景:江苏银行是总部位于江苏南京的全国性股份制商业银行,在城商行中资产规模位居前列,积极拥抱金融科技,将数字化转型作为核心战略之一。近年来,江苏银行持续加大在人工智能、大数…...
Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表
目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…...
神经网络解决非线性二分类
这份 Python 代码实现了一个简单的神经网络,用于解决复杂的非线性二分类问题。具体步骤包含生成数据集、定义神经网络模型、训练模型、测试模型以及可视化决策边界。 依赖库说明 python import numpy as np import matplotlib.pyplot as plt from sklearn.datase…...
CentOS 8.2 上安装 JDK 17 和 Nginx
AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站 一、安装 JDK 17 1. 使用 dnf 安装(推荐)…...
Python 爬虫(4)HTTP协议
文章目录 一、HTTP协议1、HTTP特点2、HTTP工作原理3、HTTP与HTTPS的区别 前言: HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于在客户端和服务器之间传输超文本…...
Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成
文件路径models/view_transformers 父类 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函数解析 函数bev_coord_to_feature_coord的功能 将鸟瞰图3D坐标通过多相机(针孔/鱼眼)内外参投影到图像特征平面࿰…...
Midscene.js自然语言驱动的网页自动化全指南
一、概述 网页自动化在数据抓取、UI 测试和业务流程优化中发挥着重要作用。然而,传统工具如 Selenium 和 Puppeteer 要求用户具备编程技能,编写复杂的选择器和脚本维护成本高昂。Midscene.js 通过自然语言接口革新了这一领域,用户只需描述任…...
同一个局域网的话 如何访问另一台电脑的ip
在局域网内访问另一台电脑,可以通过以下几种常见的方法来实现: 直接通过IP地址访问: 首先,确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址,这可以通过在目标电脑上打开命令提示符(Windows系…...
基于SpringBoot的名著阅读网站
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Excel(实战):INDEX函数和MATCH函数、INDEX函数实战题
目录 经典用法两者嵌套查值题目解题分析 INDEX巧妙用法让数组公式,自动填充所有、有数据的行/列INDEX函数和SEQUENCE函数 经典用法两者嵌套查值 题目 根据左表查询这三个人的所有数据 解题分析 INDEX函数的参数:第1个参数是选定查找范围,…...
希尔排序中的Hibbard序列
一 定义 Hibbard序列的每个元素由以下公式生成: h_k = 2^k - 1 其中k从1开始递增,序列为:1, 3, 7, 15, 31, 63, … 二 生成方式 起始条件:k=1,对应h_1=2^1-1=1 递推公式:每次k增加1,计算 h_{k+1}=2^{k+1}-1 示例:前5项…...
uniapp超简单ios截屏和上传app store构建版本方法
假如使用windows开发ios的应用,上架的时候,你会发现,上架需要ios应用多种尺寸的ios设备的截图,和需要xcode等工具将打包好的ipa文件上传到app store的构建版本。 大部分情况下,我们的公司都没有这么多款ios设备来…...
Netty源码—5.Pipeline和Handler一
大纲 1.Pipeline和Handler的作用和构成 2.ChannelHandler的分类 3.几个特殊的ChannelHandler 4.ChannelHandler的生命周期 5.ChannelPipeline的事件处理 6.关于ChannelPipeline的问题整理 7.ChannelPipeline主要包括三部分内容 8.ChannelPipeline的初始化 9.ChannelPi…...
Netlify 的深度解析及使用指南
以下是关于 Netlify 的深度解析及使用指南,结合其核心功能与用户需求,提供一站式解决方案: 一、Netlify 核心优势 全托管静态网站服务Netlify 提供从代码托管、自动化构建到全球 CDN 加速的全流程服务,支持 HTML/CSS/JS 静态资源及…...
MySQL小练习
目录 一、单表查询 二、多表查询 一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float…...
Apache Hive:基于Hadoop的分布式数据仓库
Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统,支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…...
推荐算法分析
一、性能分析指标 1. 准确性指标(Accuracy Metrics) 衡量推荐系统预测评分的准确性,包括: ✅ RMSE(均方根误差, Root Mean Squared Error) 解释:衡量预测评分 (\hat{r}_i) 和真实评分 (r_i)…...
