【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

目录

1.算法仿真效果

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

3.Verilog核心程序

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

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


1.算法仿真效果

本文是之前写的文章:

《基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》

的硬件测试版本。

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

VIO设置SNR=6db

VIO设置SNR=12db

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

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

QPSK是一种常用的调制方式,通过将两个比特映射到一个复平面上的相位点,实现了高效的信号传输。软解调是一种基于接收信号的概率估计进行解调的方法,能够提供更好的性能。本文将逐步介绍QPSK软解调的实现过程,包括信号采样、相位估计、判决和解调等方面。软解调是一种通过概率估计实现解调的方法,能够在信道噪声存在的情况下提供更好的性能。QPSK是一种常用的调制方式,通过将两个比特映射到相位点,实现了高效的信号传输。本文旨在详细介绍QPSK软解调的实现过程,包括信号采样、相位估计、判决和解调等步骤。

软解调是QPSK软解调的关键步骤,它利用判决符号和相位估计的结果进行概率估计,以提高解调的准确性。假设判决符号为d_hat,软解调过程的结果为软解调符号d。常见的软解调公式为: d = d_hat / P(d_hat|r[n])

其中P(d_hat|r[n])表示在接收到信号r[n]的条件下,判决符号d_hat为d_hat的概率。该概率可以通过估计信号点的概率分布函数或使用最大似然估计等方法得到。软解调过程需要进行概率估计,以提高解调的准确性。这涉及到估计信号点的概率分布函数或使用其他概率估计方法,其中噪声的影响需要被适当地考虑。

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/12/12 22:31:53
// 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
);
    

wire o_msgI;
wire o_msgQ;
//产生模拟测试数据
signal signal_u(
.i_clk (i_clk),
.i_rst (~i_rst),
.o_bits1(o_msgI),
.o_bits2(o_msgQ)
);

//设置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 signed[15:0]o_Ifir_T;
wire signed[15:0]o_Qfir_T;
wire signed[15:0]o_mod_T;
wire signed[15:0]o_Nmod_T;
wire signed[31:0]o_modc_R;
wire signed[31:0]o_mods_R;
wire signed[31:0]o_Ifir_R;
wire signed[31:0]o_Qfir_R;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num; 
wire signed[1:0]o_Ibits;
wire signed[1:0]o_Qbits;

QPSK_tops QPSK_tops_u(
.i_clk       (i_clk),
.i_rst       (~i_rst),
.i_Ibits     (o_msgI),
.i_Qbits     (o_msgQ),
.i_SNR       (o_SNR),
.o_Ifir      (o_Ifir_T),
.o_Qfir      (o_Qfir_T),
.o_mod_T     (o_mod_T),
.o_Nmod_T    (o_Nmod_T),
.o_modc      (o_modc_R),
.o_mods      (o_mods_R),
.o_rIfir     (o_Ifir_R),
.o_rQfir     (o_Qfir_R),
.o_error_num (o_error_num),
.o_total_num (o_total_num),
.o_Ibits     (o_Ibits),
.o_Qbits     (o_Qbits)
);
 
 
    
//ila篇内测试分析模块
ila_0 ila_u (
	.clk(i_clk), // input wire clk
	.probe0({ 
	        o_msgI,o_msgQ,o_SNR,//10
	        o_Ifir_T[15:6],o_Qfir_T[15:6],o_mod_T[15:6],o_Nmod_T[15:6],//40
	        o_modc_R[27:12],o_mods_R[27:12],o_Ifir_R[27:12],o_Qfir_R[27:12],//64
	        o_error_num,o_total_num,//64
            o_Ibits,o_Qbits//4
	         })
	);
endmodule
0sj_041m

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

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

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

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

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

V

相关推荐
ehiway7 小时前
FPGA+GPU+CPU国产化人工智能平台
人工智能·fpga开发·硬件工程·国产化
蓑衣客VS索尼克12 小时前
什么是逻辑分析仪?
arm开发·人工智能·fpga开发
Terasic友晶科技1 天前
第29篇 基于ARM A9处理器用C语言实现中断<五>
c语言·fpga开发·定时器中断
9527华安2 天前
FPGA实现GTY光口视频转USB3.0传输,基于FT601+Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
fpga开发·音视频·aurora·gty·usb3.0·ft601
博览鸿蒙2 天前
FPGA开发要学些什么?如何快速入门?
fpga开发
@晓凡2 天前
FPGA中利用fifo时钟域转换---慢时钟域转快时钟域
fpga开发
乘风~&2 天前
fpga助教面试题
fpga开发
Hcoco_me2 天前
HDLBits ——> Building Larger Circuits
fpga开发
碎碎思3 天前
FPGA DSP:Vivado 中带有 DDS 的 FIR 滤波器
fpga开发
电子阿板5 天前
ZYNQ TCP Server PS端千兆网口速率低问题,要修改BSP中LWIP配置参数
嵌入式硬件·tcp/ip·fpga开发·tcp