您的位置:首页 > 新闻 > 会展 > 新沂今天重大新闻_株洲人才网_谷歌google play官网下载_网站seo服务公司

新沂今天重大新闻_株洲人才网_谷歌google play官网下载_网站seo服务公司

2024/12/23 20:51:30 来源:https://blog.csdn.net/hlayumi1234567/article/details/144254093  浏览:    关键词:新沂今天重大新闻_株洲人才网_谷歌google play官网下载_网站seo服务公司
新沂今天重大新闻_株洲人才网_谷歌google play官网下载_网站seo服务公司

目录

1.算法仿真效果

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

2.1 64QAM调制解调系统的设计

2.2 信号解调

3.Verilog核心程序

4.开发板使用说明和如何移植不同的开发板

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


1.算法仿真效果

本文是之前写的文章:

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

的硬件测试版本。

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

vio设置SNR=25db

vio设置SNR=30db

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

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

        随着无线通信技术的不断发展,越来越多的应用需要高速、高可靠性的通信系统来传输数据。调制解调是一种常用的数字通信技术,它可以将数字信号转换成模拟信号进行传输,同时也可以将接收到的模拟信号转换成数字信号进行处理。在数字调制解调中,QAM是一种常用的调制方式,它可以将数字信号分为实部和虚部两个部分进行编码,从而实现高效的数据传输。本文旨在介绍基于FPGA的64QAM调制解调通信系统的设计和实现,包括信号生成、信号调制、信号解调和误码率测试等环节,以验证系统的可行性和性能。

2.1 64QAM调制解调系统的设计

       在64QAM调制解调系统中,需要生成一定数量的数字信号,作为调制信号和参考信号。数字信号可以使用随机数生成器产生,也可以使用特定的算法生成。在本文中,我们采用了带噪声的随机数生成器产生数字信号,其中噪声是为了模拟实际通信中的信道噪声。

      在64QAM调制解调系统中,需要将数字信号转换成模拟信号进行传输,这个过程称为信号调制。在QAM调制中,数字信号分为实部和虚部两个部分进行编码,然后将它们分别调制到不同的载波上,最后将两个载波叠加在一起。具体来说,假设数字信号为s(n),其中n表示信号的采样点,QAM调制可以表示为:

   

      其中,s_I(n)表示实部信号,s_Q(n)表示虚部信号,A_I和A_Q分别表示实部和虚部的调制系数,f_c表示载波频率,t(n)表示采样时间。在64QAM调制中,实部和虚部分别采用8QAM调制,然后叠加在一起,最终得到64QAM调制信号。

2.2 信号解调

        在接收端,需要将接收到的模拟信号转换成数字信号进行处理,这个过程称为信号解调。在64QAM解调中,首先需要将接收到的实部和虚部,进行8QAM解调,最后将解调后的实部和虚部重新组合成数字信号。

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/12/04 15:36:16
// 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  [5: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[7:0]o_Ifir;
wire  signed[7:0]o_Qfir;
wire  [5:0] o_sdout;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num;TOPS_64QAM TOPS_64QAM_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),
.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,o_Qfir,//48parallel_data,o_sdout,o_error_num,o_total_num//64}));endmodule0sj_035m

4.开发板使用说明和如何移植不同的开发板

注意:硬件片内测试是指发射接收均在一个板子内完成,因此不需要定时同步模块。

在本课题中,使用的开发板是:

如果你的开发板和我的不一样,可以参考代码包中的程序移植方法进行移植:

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

V