我是靠谱客的博主 高挑钢铁侠,这篇文章主要介绍m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序1.算法描述2.仿真效果预览3.Verilog核心程序4.完整FPGA,现在分享给大家,希望可以做个参考。

目录

1.算法描述

2.仿真效果预览

3.Verilog核心程序

4.完整FPGA


1.算法描述

整个模型的基本框图为

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

 MSK信号是一种相位连续、包络恒定并且占用带宽最小的二进制正交FSK信号。它的第k个码元可以表示为:

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

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

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

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

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

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

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

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

接收端解调信号

接收端解调信号

低通滤波信号

低通滤波信号

MSK差分解调信号

最后的数据

误码数

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

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

3.Verilog核心程序

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
`timescale 1ns / 1ps module tops( i_clk, i_rst, //Trans o_Trans_data_samples, o_Msk_I_samples, o_Msk_Q_samples, o_msk_cos, o_msk_sin, o_msk_R, o_msk_Rn, //Rec o_msk_cos_rec, o_msk_sin_rec, o_msk_filter_recI, o_msk_filter_recQ, o_data, o_bit, o_error_num, o_total_num ); input i_clk; input i_rst; //Trans output signed[1:0] o_Trans_data_samples; output signed[9:0] o_Msk_I_samples; output signed[9:0] o_Msk_Q_samples; output signed[15:0]o_msk_cos; output signed[15:0]o_msk_sin; output signed[15:0]o_msk_R; output signed[15:0]o_msk_Rn; //Rec output signed[15:0]o_msk_cos_rec; output signed[15:0]o_msk_sin_rec; output signed[15:0]o_msk_filter_recI; output signed[15:0]o_msk_filter_recQ; output signed[31:0]o_data; output signed[1:0] o_bit; output signed[31:0]o_error_num; output signed[31:0]o_total_num; //Trans //output o_clk_4M; //100M ~ 4M , 25 times //output o_clk_1600K; //100M ~ 0.8M, 125 times //output o_clk_200K; //100M ~ 0.1M, 1000 times wire clk200; wire clk_4M; Msk_mod Msk_mod_u( .i_clk (i_clk), .i_rst (~i_rst), .o_clk_4M (clk_4M), .o_clk_1600K (), .o_clk_200K (clk200), .o_Trans_data (), .o_Trans_data_samples(o_Trans_data_samples), .o_Msk_I (), .o_Msk_Q (), .o_Msk_I_samples (o_Msk_I_samples), .o_Msk_Q_samples (o_Msk_Q_samples), .o_cos (), .o_sin (), .o_msk_cos (o_msk_cos), .o_msk_sin (o_msk_sin), .o_msk_R (o_msk_R) ); awgns awgns_u( .i_clk(clk_4M), .i_rst(~i_rst), .i_power(16'd100), .i_din(o_msk_R), .o_dout(o_msk_Rn) ); //Rec Msk_demod Msk_demod_u( .i_clk (i_clk), .i_rst (~i_rst), .i_msk_R (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) ); //error calculate Error_Chech Error_Chech_u( .i_clk(clk200), .i_rst(~i_rst), .i_trans(o_Trans_data_samples), .i_rec(o_bit), .o_error_num(o_error_num), .o_total_num(o_total_num) ); endmodule 01_117m

4.完整FPGA

V

最后

以上就是高挑钢铁侠最近收集整理的关于m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序1.算法描述2.仿真效果预览3.Verilog核心程序4.完整FPGA的全部内容,更多相关m基于FPGA内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部