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

news/2025/3/14 0:42:41/文章来源:https://www.cnblogs.com/51matlab/p/18771317

1.算法仿真效果

本文是之前写的文章:

 

《基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块》

 

的硬件测试版本。

 

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

 

VIO设置SNR=10db

 

 

 

VIO设置SNR=16db

 

 

 

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

 

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

       软件无线电是现代通信技术的重要研究领域和发展方向,目前发展迅速.快速发展的软件无线电技术与落后的硬件计算资源之间的矛盾越来越突出.为了缓解这个矛盾,一方面可以加快集成电路的研发进度,提升硬件的计算性能;另一方面可以对信号处理的算法进行深入的改进研究,降低算法的运算量,在现有的硬件水平下提出符合实际的解决方案.在信号处理的各种算法中,调制解调算法的地位十分重要.尤其是其中的解调算法,其复杂度已被作为衡量整个信号处理系统工作性能的有效指标. 本文的研究对象是恒定包络连续相位调制技术中的最小频移键控(MSK).这种调制方式具有恒定包络,相位连续,功率谱密度较集中,频带利用率高等特点.MSK信号的诸多优点使得它在信号理论研究和应用中具有重要意义.整个模型的基本框图为:

 

 

       MSK信号具有特点如下:①MSK信号是正交信号;②其波形在码元间是连续的;③其包络是恒定不变的;④其附加相位在一个码元持续时间内线性地变化2/p±;⑤调制产生的频率偏移等于T4/1±Hz;⑥在一个码元持续时间内含有的载波周期数等于1/4的整数倍。这里,我们考虑到硬件平台的高度可移植性,我们采用了无核化设计,就是全部使用verilog进行设计,下面首先说明一下系统的各个管脚。

 

系统复位,高电平复位清0,你接板子上任意一个开关即可。

 

数据发送端数据,有符号,你接起高位即可,示波器看

 

MSK符号,多维有符号数,需要使用chipscope在线看

 

MSK符号,多维有符号数,需要使用chipscope在线看

 

MSK调制,多维有符号数,需要使用chipscope在线看

 

MSK调制,多维有符号数,需要使用chipscope在线看

 

调制端最后输出的中频信号

 

接收端解调信号

 

接收端解调信号

 

低通滤波信号

 

低通滤波信号

 

MSK差分解调信号

 

最后的数据

 

误码数总比特数(两个相除就是误码率)

 

3.Verilog核心程序

 

 

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/12/09 20:41:35
// 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 [1:0] o_Trans_data_samples;wire [9:0] o_Msk_I_samples;wire [9:0] o_Msk_Q_samples;wire [15:0] o_msk_cos;wire [15:0] o_msk_sin;wire [15:0] o_msk_R;wire [15:0] o_msk_Rn;wire [15:0] o_msk_cos_rec;wire [15:0] o_msk_sin_rec;wire [15:0] o_msk_filter_recI;wire [15:0] o_msk_filter_recQ;wire [31:0] o_data;wire [1:0] o_bit;wire [1:0]o_rec2;wire[31:0]o_error_num;wire[31:0]o_total_num;// Instantiate the Unit Under Test (UUT)tops uut (.i_clk(i_clk), .i_rst(~i_rst), .i_SNR(o_SNR),.o_Trans_data_samples(o_Trans_data_samples), .o_Msk_I_samples(o_Msk_I_samples), .o_Msk_Q_samples(o_Msk_Q_samples), .o_msk_cos(o_msk_cos), .o_msk_sin(o_msk_sin), .o_msk_R(o_msk_R), .o_msk_Rn(o_msk_Rn),.o_msk_cos_rec(o_msk_cos_rec), .o_msk_sin_rec(o_msk_sin_rec), .o_msk_filter_recI(o_msk_filter_recI), .o_msk_filter_recQ(o_msk_filter_recQ), .o_data(o_data), .o_bit(o_bit),.o_rec2(o_rec2),.o_error_num(o_error_num),.o_total_num(o_total_num));//ila篇内测试分析模块//ila篇内测试分析模块
ila_0 ila_u (.clk(i_clk), // input wire clk.probe0({ o_SNR,o_Trans_data_samples,o_rec2,//12o_Msk_I_samples[9:3],o_Msk_Q_samples[9:3],//14o_msk_cos[14:7],o_msk_sin[14:7],o_msk_R[14:7],o_msk_Rn[14:7],//32o_msk_cos_rec[14:7],o_msk_sin_rec[14:7],o_msk_filter_recI[14:7],o_msk_filter_recQ[14:7],//32o_error_num[15:0],o_total_num//48}));endmodule

  

 

 

 

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

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

相关文章

根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真

1.程序功能描述 空域图是指航空领域中的一种图形表示方式,它涵盖了空中交通管理所需要的各种信息,比如航线、导航点、飞行高度层、飞行限制等。空域图是航空人员进行飞行计划制定的重要工具。在本课题中,根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真。 2.…

基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)classs = 2; % 创建一个图像数据存储对象imdsTrain,用于从名为"Data"的文件夹及其子文件夹中读取图像数据。 % "…

2021年-PTA模拟赛-L1-8 编程团体赛(仅代码)

简单题,无解析没必要存进去再遍历数组,数组就起一个记忆的作用,我还没想到有什么优化的办法。AcCode: #include<bits/stdc++.h> using namespace std; int team[10010]; int main(){int winner = 0, max = 0, N;cin >> N;while(N--){int tid, id, g;scanf("…

[AI/GPT/综述] AI Agent的设计模式综述

【AI Agent】作为【AI应用层】的三大件(Prompt/RAG/Agent[MCP])之一, AI Agent的设计模式,作为未来或正在向AI开发转型的IT从业人员(开发人员/产品经理等),不得不深入研究研究。序:文由其一,随着大模型的发展,通用智能不断迭代升级,应用模式也不断创新,从简单的Prompt应…

2021年-PTA模拟赛-L1-7 整除光棍(C/C++思路)

除法竖式运算思路:在L1里面,那就不考虑大数运算了,列个竖式发现只需要每次得到除数之后输出,然后把余数乘10加1就可以进行下一轮运算了。 为什么说c/c++思路呢————java自带高精度运算,应该十行左右就可以搞定了。AcCode: #include<bits/stdc++.h> using namespac…

2021年-PTA模拟赛-L1-7 整除光棍(思路)

除法竖式运算思路:在L1里面,那就不考虑大数运算了,列个竖式发现只需要每次得到除数之后输出,然后把余数乘10加1就可以进行下一轮运算了。AcCode: #include<bits/stdc++.h> using namespace std; int main(){int x, t = 0, cnt = 0;cin >> x;while(t < x) t =…

记住密码和访问外部链接的实现

记住密码和访问外部链接的实现 今天的开发中实现了两项功能一个是记住密码,另外一个是可以访问外部链接. 记住密码 这个功能要使用到缓存技术,storage,uni中有自己的uni.stotageSync是同步的缓存技术,在登录成功跳转页面前把密码和用户名直接存储到缓存中, 在页面加载完成时在o…

Netty基础—4.NIO的使用简介

大纲 1.Buffer缓冲区 2.Channel通道 3.BIO编程 4.伪异步IO编程 5.改造程序以支持长连接 6.NIO三大核心组件 7.NIO服务端的创建流程 8.NIO客户端的创建流程 9.NIO优点总结 10.NIO问题总结1.Buffer缓冲区 (1)Buffer缓冲区的作用 (2)Buffer缓冲区的4个核心概念 (3)使用Direct模式创…

第二章 感知机

感知器模型数学理论 感知器(Perceptron)是一种二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别(取 +1 和 -1)。 模型定义 给定一个输入向量 \(\mathbf{x} = (x_1, x_2, \cdots, x_n)^T\),感知器模型的输出 \(y\) 由以下公式计算: \[y = \text{sign}(\ma…

国产操作系统为何被称为“矛盾综合体”

不知不觉我们已经使用了足足两个月的深度系统,同时还用虚拟机体验了开放麒麟,并收到了来自基层一线国产硬件系统办公用户的投稿,而且本系列文章在电脑报、壹零社等新媒体平台也饱受读者朋友关注,话题讨论度持续走高。 而在翻看了大家的留言之后,我们发现其实国产操作系统堪…

matplotlib常用方法

目录安装库创建图画流程1. 创建画板2. 创建一个个在画板上的图形轴3. 开始在图上进行画画线图plot散点图scatter条形图bar、barh直方图hist饼图pie 安装库 pip install matplotlib创建图画流程 1. 创建画板 在任何绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画板…