【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

news/2025/3/2 0:50:47/文章来源:https://www.cnblogs.com/51matlab/p/18745695

1.算法仿真效果

本文是之前写的文章:

 

《基于FPGA的256QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》

 

的硬件测试版本。在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运行后无水印):

 

vio设置SNR=40db

 

 

 

vio设置SNR=30db

 

 

 

硬件测试操作步骤可参考程序配套的操作视频。

 

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

        256QAM(Quadrature Amplitude Modulation,正交幅度调制)是一种高级调制方案,能够在给定带宽内传输更多的信息比特。256QAM意味着每个符号可以携带8个比特的信息,因为 log⁡2(256)=8log2​(256)=8。

 

       在调制过程中,输入比特流首先被映射到复数值星座图上的特定点。对于256QAM,每个符号代表8个比特信息。调制器根据输入比特选择对应的星座点,并将这些星座点转换成相应的复数形式。例如,在理想情况下,256QAM星座图包含256个不同的点。

 

      256QAM的星座图是一个二维平面内的点阵,每个点代表一个独特的调制状态。在理想情况下,星座图中的每个点都对应于一个特定的复数值,该值由相位和幅度共同决定。由于256QAM有256个可能的状态,因此其星座图包含256个点。

 

256QAM映射过程如下:

 

数据编码:首先,输入的一组8比特数据需要被编码成一个复数形式的符号。这意味着每个256QAM符号实际上是由8比特信息组成的。

 

星座图映射:接下来,这8比特被映射到星座图上的一个特定位置。通常,这些比特会按照一定的规则分配给星座图的不同维度。例如,前4比特可以确定星座图上的一维坐标(实部),而后4比特确定另一维坐标(虚部)。

 

星座点分配:具体来说,星座图上的每个点都有一个特定的坐标(I,Q),其中I 表示同相分量,Q 表示正交分量。在256QAM中,这些坐标可以从一系列预定义的值中选取。在标准化的256QAM星座图中,I 和 Q 的取值范围通常是−7,−5,−3,−1,1,3,5,7−7,−5,−3,−1,1,3,5,7 或者类似的比例因子乘以这些值。

 

星座图结构:256QAM星座图通常呈格状排列,每个点在I-Q 平面上的位置决定了其代表的比特组合。例如,如果使用灰度编码(Gray coding)来减少相邻星座点之间的比特翻转数,那么每个点周围的8个邻居将与其仅有一个比特的不同。       

 

在接收端,接收到的复数信号经过解调处理,将其映射回最接近的星座点,然后恢复出原始比特序列。这个过程可能会受到信道引入的噪声和失真的影响,导致错误的发生。

 

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/12/04 15:36:34
// Design Name: 
// Module Name: tops_hdw
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module tops_hdw(input i_clk,
input i_rst,
output reg [3:0] led
);//设置SNR
wire signed[7:0]o_SNR;
vio_0 your_instance_name (.clk(i_clk),                // input wire clk.probe_out0(o_SNR)  // output wire [7 : 0] probe_out0
);wire  [7:0] parallel_data;
wire signed[15:0]sin;
wire signed[15:0]cos;
wire  signed[15:0]  I_com;
wire  signed[15:0]  Q_com;
wire  signed[15:0]I_Ncom;
wire  signed[15:0]Q_Ncom;
wire  signed[23:0]I_comcos2;
wire  signed[23:0]Q_comsin2;
wire  signed[15:0]o_Ifir;
wire  signed[15:0]o_Qfir;
wire  [7:0] o_sdout;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num;TOPS_256QAM TOPS_256QAM_u(
.clk           (i_clk),
.rst           (i_rst),
.start         (1'b1),
.i_SNR         (o_SNR),
.parallel_data (parallel_data),
.sin           (sin),
.cos           (cos),
.I_com         (I_com),
.Q_com         (Q_com),
.I_Ncom        (I_Ncom),
.Q_Ncom        (Q_Ncom),
.I_comcos2     (I_comcos2),
.Q_comsin2     (Q_comsin2),
.o_Ifir        (o_Ifir),
.o_Qfir        (o_Qfir),
.o_sdout       (o_sdout),
.flag_reg      (),
.o_error_num   (o_error_num),
.o_total_num   (o_total_num)  
);//ila篇内测试分析模块
ila_0 ila_u (.clk(i_clk), // input wire clk.probe0({ o_SNR,//8I_com[15:6], Q_com[15:6],I_Ncom[15:6],Q_Ncom[15:6],//40I_comcos2[23:8],Q_comsin2[23:8],o_Ifir[15:4],o_Qfir[15:4],//48parallel_data,o_sdout,o_error_num,o_total_num//64}));endmodule
0sj_036m

  

 

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

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

相关文章

V90通过工艺对象在1200上的使用

配置CU参数打开V-Assistant,新建工程选择驱动选择电机型号选择控制模式V90伺服定位控制方式分为两种,一种是通过工艺对象,另外一种是通过EPOS标准块: a.如果选用工艺对象控制伺服电机,控制模式选用速度控制。报文选用标准报文3. b.如果选用EPOS标准块控制伺服电机,控制模式…

昆明理工大学25年冶金工程考研预计调剂145人

--冶金工程考研809冶金物理化学有色冶金学有色金属冶金冶金过程及设备F002钢铁冶金学

VSG虚拟同步发电机simulink建模与仿真

1.课题概述VSG虚拟同步发电机simulink建模与仿真,虚拟同步发电机(Virtual Synchronous Generator, VSG)技术是电力电子领域的一项重要创新,特别在可再生能源接入电网的应用中展现出巨大潜力。VSG通过先进的控制策略,使逆变器控制的电源系统(如光伏、风能系统)表现出与传…

基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真

1.程序功能描述 基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真.对比Kawasaki sampler,IMExpert,IMUnif以及IMBayesOpt。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序% 以下部分(IMExpert, IM…

2025-03-01-telegram-message-sync-bot

Repo MetaWhy 過去用 logseq 一直搭配用一款插件 — logseq-inbox-telegram-plugin,用於摘取 TG 上轉發的內容。說不上好用 [1],後來我自己 Fork 了 一份,對主要特性修改了一些,即使仍然缺乏對超鏈接的支持,但也順手了很多。 可是問題仍然存在,爲了在小主機上運行這個服務…

【Linux基础】less命令查看日志

Less 命令简介 less 命令源于 more 命令,但是增加了反向导航和查找等功能。最重要的是,与 more 和 cat 不同,less 不必一次性读取整个文件。这对于大文件非常有用,因为用户可以立即开始浏览文件,而不需要等待文件完全加载。 基础用法 语法:less [参数] 文件 参数说明:-…

大数据原理、技术与实践

大数据基本概念 大数据通常指的是数据量巨大、增长速度快、类型繁多且无法通过传统的数据库管理工具处理的数据集合。 大数据的“4V”特征——数据量(Volume)、数据种类(Variety)、数据速度(Velocity)和数据价值(Value),是理解大数据的核心。 数据结构 大数据中数据种…

2025年2月文章一览

2025年2月编程人总共更新了17篇文章: 1.2025年1月文章一览 2.《Operating System Concepts》阅读笔记:p2-p8 3.《Operating System Concepts》阅读笔记:p9-p12 4.《Operating System Concepts》阅读笔记:p13-p16 5.《Operating System Concepts》阅读笔记:p17-p25 6.《Ope…

STM32的GPIO详解(HAL库)

STM32的GPIO详解(HAL库) 基础部分 GPIO全名为General Purpose Input Output,即通用输入输出。有时候简称为“IO口”。通用,说明它是常见的。输入输出,就是说既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。输入模式和输出模式是GPIO的基本特性,当然GP…

步进电机在1200上的使用

配置轴步进主要控制的是脉冲和方向。配置1200端,用MC指令,先配置轴的常规和驱动器。此处若不填“使能输出”,可以在程序管脚填写。 步进电机的方向和脉冲输出点,如果是1200PLC,必须用PLC本体上的Q点。步进主动回原点,参考点上下侧和回原点方向要一致,不然原点开关得电后…

创建物体 更正物体位置

逻辑就是 ui是 按照1米比1米的比例 生成的时候是 嵌套两个循环生成 x 和y 两个循环 那么就是按照 x 和y的位置去生成 那么我们生成在父物体位置下 是以他中心为起始点 所以需要矫正

ReentrantLock底层源码分析

一、简单使用 在聊它的源码之前,我们先来做个简单的使用说明。当我在IDEA中创建了一个简单的Demo之后,它会给出以下提示提示文字 在使用阻塞等待获取锁的方式中,必须在try代码块之外,并且在加锁方法与try代码块之间没有任何可能抛出异常的方法调用,避免加锁成功后,在fina…