目录
1.本系统整体构架
2.16QAM调制解调各个模块基本原理
2.1 16QAM调制原理
2.2 16QAM解调原理
3.仿真结果
4.完整程序下载
1.本系统整体构架
本系统结构如下图所示:

本系统是一个完整的点对点数字基带通信链路:数据源→16QAM调制模块→信道传输模块→16QAM解调模块→数据恢复模块,是现代数字通信(5G、WiFi、卫星通信)里典型的正交幅度调制收发完整链路。
2.16QAM调制解调各个模块基本原理
2.1 16QAM调制原理
16QAM是一种正交幅度调制技术,它通过同时改变载波的幅度和相位来传输数字信息。在 16QAM中,将输入的二进制比特流按照每4个比特一组进行分组,每组比特对应一个特定的幅度和相位组合,即一个16QAM符号。由于每个符号携带4比特信息,所以16QAM的频谱效率为4 bit/s/Hz,相比一些简单的调制方式(如BPSK、QPSK),具有更高的数据传输能力。常见的映射规则如下:


2.2 16QAM解调原理
16QAM信号在接收端经过信道 传输后,会受到噪声干扰和可能的相位偏移。接收信号y(t)可以表示为:
y(t)=x(t)+n(t)=I(t)cos(2πfct)−Q(t)sin(2πfct)
其中,x(t)是原始的16QAM信号,I(t)和Q(t)分别是信号的同相分量和正交分量,fc是载波频率。
将每个采样点y[k]投影到最近的星座点上。这一步通常通过计算最小欧几里得距离实现,即对于每个y[k],找到一个星座点y^[k]使得:

一旦找到最近的星座点,就可以根据该点的坐标恢复出原始的4比特信息。
16QAM解调过程涉及复杂的信号处理步骤,包括匹配滤波、同步、星座映射和判决。通过精确的信号处理和优化算法,可以有效地从噪声中恢复出原始数据,保证了在有限带宽内高效的数据传输。
3.仿真结果
本系统的RTL结构如下图所示:

顶层程序结构如下:
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2024/05/09 18:51:24
// Design Name:
// Module Name: tops_16QAM
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 – File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module tops_16QAM(
input i_clk,
input i_rst,
input i_x,
input signed[7:0]i_SNR,
output signed[3:0]o_I,
output signed[3:0]o_Q,
output signed[15:0]o_cos,
output signed[15:0]o_sin,
output signed[15:0]o_Icos,
output signed[15:0]o_Qsin,
output signed[15:0]o_16qam_mod,
output signed[15:0]o_N16qam_mod,
output signed[31:0]o_I_cos2,
output signed[31:0]o_Q_sin2,
output signed[15:0]o_Ifilter,
output signed[15:0]o_Qfilter,
output signed[15:0]o_I3bit,
output signed[15:0]o_Q3bit,
output o_ybit
);
mod_16qam mod_16qamu(
.i_clk (i_clk),
.i_rst (i_rst),
.i_x (i_x),
.o_I (o_I),
.o_Q (o_Q),
.o_cos (o_cos),
.o_sin (o_sin),
.o_Icos (o_Icos),
.o_Qsin (o_Qsin),
.o_16qam_demod (o_16qam_mod)
);
awgns awgnsu(
.i_clk (i_clk),
.i_rst (i_rst),
//SNR 5~30
.i_SNR (i_SNR),
.i_din (o_16qam_mod),
.o_noise (),
.o_dout (o_N16qam_mod)
);
demod_16qam demod_16qamu(
.i_clk (i_clk),
.i_rst (i_rst),
.i_16qam_mod (o_N16qam_mod),
.o_cos (),
.o_sin (),
.I_cos (o_I_cos2),
.Q_sin (o_Q_sin2),
.o_Ifilter (o_Ifilter),
.o_Qfilter (o_Qfilter),
.o_I3bit (o_I3bit),
.o_Q3bit (o_Q3bit),
.o_ybit (o_ybit)
);
endmodule
仿真测试结果如下:

4.完整程序下载
完整可运行代码,博主已上传至CSDN,使用版本为Vivado2022.2:
(本程序包含程序操作步骤视频)
基于FPGA的16QAM调制解调系统verilog实现【包括程序,中文注释,程序操作视频】资源-CSDN下载




