首页 > 其他分享 >【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

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

时间:2024-12-19 21:23:13浏览次数:3  
标签:wire 模块 clk FSK 信号 硬件 SNR signed 测试

1.算法仿真效果

本文是之前写的文章

 

基于FPGA的2FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR_fpga 2fsk-CSDN博客

 

的硬件测试版本。

 

在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。

 

硬件ila测试结果如下:(完整代码运行后无水印):

 

vio设置SNR=30db

 

 

 

vio设置SNR=20db

 

 

 

vio设置SNR=10db

 

 

 

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

 

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

       频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了较为广泛的应用。

 

        在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1 和0)。产生FSK 信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK 信号称为不连续FSK 信号。由于相位的不连续会造频谱扩展,这种FSK 的调制方式在传统的通信设备中采用较多。随着数字处理技术的不断发展,越来越多地采用连继相位FSK调制技术。目前较常用产生FSK 信号的方法是,首先产生FSK 基带信号,利用基带信号对单一载波振荡器进行频率调制。相位连续的FSK信号的功率谱密度函数最终按照频率偏移的负四次幂衰落。如果相位不连续,功率谱密度函数按照频率偏移的负二次幂衰落。

 

2-FSK功率谱密度的特点如下:

 

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;

 

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

 

PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。

 

      在二进制频移键控(2FSK)中,当传送“1”码时对应于载波频率,传送“0”码时对应于载波频率。 2FSK信号波形可看作两个2ASK信号波形的合成,下图是相位连续的2FSK信号波形。

 

 

 

      FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。

 

       FSK:频移键控是利用两个不同频率f1和f2的振荡源来代表信号1和0,用数字信号的1和0去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽B较大,频带利用率小。

 

       FSK功率谱密度的特点如下:

 

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;

 

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

 

3.Verilog核心程序

wire o_msg;
 
//产生模拟测试数据
signal signal_u(
.i_clk (i_clk),
.i_rst (~i_rst),
.o_bits(o_msg)
);
 
 
 
 
//设置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_carrier1;
wire signed[15:0]o_carrier2;
wire signed[15:0]o_fsk;
wire signed[15:0]o_fskn;
wire signed[31:0]o_de_ffsk1;
wire signed o_bits;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num; 
wire  [1:0]o_rec2; 
 
//FSK调制解调系统    
FSK uut(
.i_clk(i_clk),
.i_rst(~i_rst),
.i_bits(o_msg),
.i_SNR(o_SNR),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_fsk(o_fsk),
.o_fskn(o_fskn),
.o_de_ffsk1(o_de_ffsk1),
.o_bits(o_bits),
.o_error_num(o_error_num),
.o_total_num(o_total_num),
.o_rec2     (o_rec2)
);
 
 
 
 
wire signed[15:0]w_de_ffsk1=o_de_ffsk1[25:10];
wire errflag = o_bits^{~o_rec2[1]};
 
 
//ila篇内测试分析模块
ila_0 ila_u (
	.clk(i_clk), // input wire clk
	.probe0({ 
	        o_msg,o_SNR,//9
	        o_fsk, o_fskn,w_de_ffsk1,o_bits,//50
	        o_error_num,o_total_num,errflag,//64
            o_rec2
	         })
	);	 
endmodule
0sj_025m

  

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

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

 

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

 

 

 

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

 

 

标签:wire,模块,clk,FSK,信号,硬件,SNR,signed,测试
From: https://www.cnblogs.com/51matlab/p/18617935

相关文章

  • 接口测试基础
    认识接口测试:1、是什么基于不同的输入参数,校验接口响应数据与预期数据是否一致。2、学什么接口测试用例设计工具实现接口测试代码实现接口测试3、流程接口文档解析设计测试用例脚本开发执行脚本缺陷跟踪测试报告4、URLURL:互联网上标准资源的地址,一般称为统一资源定......
  • Minium+PageObject:小程序UI自动化测试实践
    随着小程序的普及,用户体验成为各大开发团队追求的核心目标。UI自动化测试不仅提高了开发效率,更在提升用户满意度方面起到了至关重要的作用。而当你还在手动测试时,有人已经借助Minium+PageObject架构完成了全自动化的UI测试。那么,Minium+PageObject是如何为小程序UI自动化测......
  • 渗透测试实战—利用防火墙突破网络隔离
    免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。前言......
  • 端口连通性测试方法
    端口连通性测试方法一、telnettelnet<ip><port>说明:ip:是测试主机的ip地址port:是端口,比如22方法二、sshssh-v-pportusername@ip说明:-v调试模式(会打印日志)-p指定端口username:远程主机的登录用户ip:远程主机如果远程主机开通了相应的端口,会有如下图所示的......
  • 库卡机器人KR240电源模块维修思路讲解
    一、库卡机器人KR240电源模块故障诊断故障诊断是维修过程中的关键步骤。使用库卡提供的诊断工具或软件,对库卡机器人KR240电源模块进行故障诊断。重点关注电源供应、输出电压、电流等关键参数。通过诊断结果,确定故障的具体位置和性质,为后续的库卡机器人维修工作提供明确方向。二......
  • 【WRF教程第七期】WRF 物理模块概述:以4.5版本为例
    WRF物理模块概述:以4.5版本为例1积云参数化(CumulusParameterization)积云方案选项表(CumulusOptions)浅层对流(ShallowConvection)2微物理(Microphysics)微物理方案选项表(MicrophysicsOptions)3辐射(Radiation)长波辐射(LongwaveRadiation)短波辐射(ShortwaveRadiation)4......
  • Fiddler(抓包测试工具)下载安装步骤
    目录介绍主要功能:使用场景:一、下载二、安装​编辑三、测试介绍Fiddler是一个强大的网络调试工具,用于捕获和分析HTTP/HTTPS请求与响应。它通过代理服务器捕获流量,帮助开发者调试Web应用、API,进行性能分析和安全测试。ps:一般搭配postman使用进行测试网页主要功......
  • 单片机实物成品-001农业大棚监测(代码+硬件+论文)
     stm32 农业大棚监测系统(温度+湿度+烟雾+光照+二氧化碳+空调降温+加湿+报警+灯光+排风+自动模式+手动模式+wifi传输控制+送小程序源码)本系统基于STM32F103C8T6单片机,设计了一个集环境监测、智能控制与远程通信于一体的大棚环境监测系统。通过MQ-2气体传感器、DHT11温湿度......
  • 关于如何正确在测试用例中mock静态方法的问题
    文章目录情况一:希望在测试用例中直接执行静态方法的逻辑情况二:不希望在测试用例中执行静态方法的逻辑插桩方法坑1:报错SubclassByteBuddyMockMaker原因与解决方案坑2:报错theexistingstaticmockregistrationmustbederegistered原因与解决方案关于如何正确在......
  • 电源老化测试负载在各领域的作用
    电源老化测试负载在电子、通信、电力、汽车等领域中扮演着关键角色,主要用于验证和确保电源设备的性能和可靠性。以下是其在各领域的具体作用:电子领域:在电子产品的研发和生产过程中,电源老化测试负载用于模拟真实工作环境中的电流、电压等参数,对电源进行长时间连续工作测试。这有......