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

news/2025/3/5 21:34:17/文章来源:https://www.cnblogs.com/51matlab/p/18753757

1.算法仿真效果

本文是之前写的文章:

 

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

 

的硬件测试版本。

 

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

 

vio设置SNR=10db

 

 

 

vio设置SNR=20db

 

 

 

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

 

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

       四频移键控(4FSK)是一种常用的数字调制方法,具有较高的频带利用率和抗干扰性能。它利用不同的频率来传输二进制数据,通常应用于无线通信和数据传输等领域。

 

  4FSK调制的基本原理是将输入的二进制数据转换为不同频率的信号,以实现数据的传输。解调则是将接收到的不同频率的信号还原为原始的二进制数据。

 

      4FSK调制中,输入的二进制数据被分为两组,每组有两个比特。根据这两个比特的值,选择相应的频率输出。具体来说,有四个频率f1、f2、f3、f4与之对应,每个频率都代表一个二进制组合(00、01、10、11),即十进制的0,1,2,3。

 

       频率选择:根据输入的比特组合选择相应的频率输出。例如,当输入为“00”时,选择频率f1;当输入为“01”时,选择频率f2;当输入为“10”时,选择频率f3;当输入为“11”时,选择频率f4。

       调制信号:将选择的频率进行幅度调制,以便在传输过程中具有更好的抗干扰性能。通常采用开关键控(OOK)或脉冲幅度调制(PAM)等方法进行幅度调制。

       解调信号:在接收端,根据不同频率的信号进行解调。首先通过带通滤波器将所需的频率信号提取出来,然后通过解调器将其还原为原始的二进制数据。解调方法通常采用相干解调或非相干解调。

 

3.Verilog核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/12/09 20:40:31
// 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[1:0] 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_carrier3;
wire signed[15:0]o_carrier4;
wire signed[31:0]o_de_fsk1;
wire signed[31:0]o_de_fsk2;
wire signed[31:0]o_de_fsk3;
wire signed[31:0]o_de_fsk4;
wire signed[15:0]o_fsk;
wire signed[15:0]o_fsk_Rn;
wire [1:0]o_bits;
wire signed[31:0]o_error_num;
wire signed[31:0]o_total_num; FSK uut(
.i_clk(i_clk),
.i_rst(~i_rst),
.i_SNR(o_SNR),
.i_bits(o_msg),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_carrier3(o_carrier3),
.o_carrier4(o_carrier4),
.o_fsk(o_fsk),
.o_fsk_Rn(o_fsk_Rn),
.o_de_fsk1(o_de_fsk1),
.o_de_fsk2(o_de_fsk2),
.o_de_fsk3(o_de_fsk3),
.o_de_fsk4(o_de_fsk4),
.o_bits(o_bits),
.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,o_msg,//8o_fsk,o_fsk_Rn,o_bits,o_error_num,o_total_num//64}));endmodule

  

 

 

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

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

相关文章

智能客服支持助手

customer_support_assistant https://github.com/jiangnanboy/customer_support_assistant 1.简介 customer_support_assistant是智能客服支持助手项目,利用LLM对Query的理解,去调用相应函数,实现智能客服功能。 本项目具体的功能为根据用户的查询,利用deepseek去理解查询并…

UPFC统一潮流控制器的simulink建模与仿真

1.课题概述UPFC统一潮流控制器的simulink建模与仿真。能够在不增加输电线路物理容量的情况下,显著提高电力系统的传输能力和稳定性。UPFC能够同时控制输电线路的有功功率、无功功率以及节点电压,具有调节系统潮流分布、提高系统稳定性和改善电压质量等重要作用。2.系统仿真结…

人员离岗预警系统为人员值班保驾护航

人员离岗监测预警系统设备。系统设备实现对机场值班室工作人员进行24小时离岗监测预警,当值班工作人员离开超过规定时间,系统设备监测到及时推送告警信息到监控室管理平台和手机端通知管理人员及时处理,将事后取证变为事前预警。人员离岗监测预警系统设备。系统设备实现对机…

OpenVX节点执行独立性

节点执行独立性 在如图2-5所示例中,客户端根据输入图像、梯度幅度和梯度相位。OpenVX并不要求并行运行,但可以由OpenVX供应商实现。图2-5 具有一些独立节点的简单图形。 构造这种图形的代码,如下所示。 vx_context context = vxCreateContext(); vx_image images[] = {vxCre…

kettle插件-高性能插入更新插件Upsert

场景:假如T日需要将a表中T-1日的数据同步到b表。由于某种业务需求a表中已经同步到b表中的数据发生了变化需要重新同步,这个时候就会用到插入更新插件,也就是 说a表中数据重新同步b表,若b表中存在此数据(根据唯一id)则执行更新操作,否则执行插入操作。 1、软硬件环境 本次…

kettle插件-高性能插入更新组件Upsert

场景:假如T日需要将a表中T-1日的数据同步到b表。由于某种业务需求a表中已经同步到b表中的数据发生了变化需要重新同步,这个时候就会用到插入更新插件,也就是 说a表中数据重新同步b表,若b表中存在此数据(根据唯一id)则执行更新操作,否则执行插入操作。 1、软硬件环境 本次…

周界人员入侵预系统保障工厂生产安全

工厂生产车间区域不能有人闯入机器人生产区域,如果有人员闯入生产区域,周界人员入侵预警摄像机监测识别到有人进入,系统设备现场联动语音告警,提醒人员禁止进入,同时将告警抓拍的图像传输到厂区二楼监控室,监控室电脑报警弹窗,提醒管理人员监看,从而保障美的工厂车间安…

探秘Transformer系列之(10)--- 自注意力

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(10)--- 自注意力 目录探秘Transformer系列之(10)--- 自注意力0x0…

【Azure Application Insights】配置 JMX 指标无法收集到参数的情况

问题描述 使用 Application Insights Java 3.x 收集 Java 管理扩展 (JMX) 指标, 根据文档在 applicationinsights.json 文件中添加 "jmxMetrics" 部分,并添加如下内容:"jmxMetrics": [{"name": "Demo - G1 Collection Count Young"…

ONE阅读,不只阅读

OneRead - ONE阅读是一个使用Flutter构建的集书籍、漫画、听书和视频资源为一体的手机APP。使用自定义源来解析对应的资源,以舒适的UI来展示数据。你可以在APP中阅读书籍,阅读漫画、听书以及观看视频;使用APP导入、查看、编辑源等。ONE阅读,不只阅读。 部分界面更多介绍 ON…

leetcode hot 21

解题思路:本题前面的思路和前一个相同,但是要找到对应的环开始的点,那就需要分析,结论就是:slow的指针继续走,同时一个从head出发的节点同时走,最后他们一定会在环开始点相遇。 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode …

jdk环境变量的配置以及class文件的生成

jdk的文件下载路径:https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows 搭建环境变量 path中添加下载好的jdk文件夹 第一种方法: public class frank_app{ public static void main(String[] args){ System.out.println("hello,world"); …