m基于FPGA的8FSK调制解调系统verilog实现,包含testbench测试文件

简介: m基于FPGA的8FSK调制解调系统verilog实现,包含testbench测试文件

1.算法仿真效果
vivado2019.2仿真结果如下:

78bd060d54ba8e791149017ccd27ded1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

将波形放大,看到如下效果:

46b51f25d13e9770e006a684eb6c1c35_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
8FSK(8-Frequency Shift Keying)是一种常用的数字调制方法,它通过在不同的频率上发送二进制数据来进行通信。8FSK在通信系统中被广泛应用,因为它具有较高的数据传输速率和较强的抗干扰能力。

   在8FSK中,每个二进制位被发送在一个特定的频率上。发送频率根据发送的数据位而变化,具体地说,发送的频率根据发送的二进制位的值确定。

  具体地,8FSK使用8个不同的频率来表示8个不同的二进制位。频率f0到f7对应于二进制位000到111。每个频率对应于一个特定的时间间隔,称为符号时间。在一个符号时间内,数据位被发送出去。在发送端,输入的二进制数据首先被分成两个比特一组,然后根据以下规则映射到相应的频率上:

000 - f0
001 - f1
010 - f2
011 - f3
100 - f4
101 - f5
110 - f6
111 - f7
以上是一种常见的映射方式,但也可以使用其他的映射方式。

   在接收端,8FSK信号被接收并解调,以恢复原始的二进制数据。解调器需要知道每个频率对应的二进制位,以便正确地恢复数据。解调器可以使用各种方法来实现,例如滤波器、频谱分析等。

   8FSK调制的基本原理可以用数学公式表示。假设输入的二进制数据为b(t),发送的频率为f(t),则调频信号s(t)可以表示为:

s(t) = Re[b(t)exp(j2πf(t))]

其中Re表示取实部,j表示虚数单位,π表示圆周率。

   在接收端,解调器需要对接收到的信号进行解调,以恢复出原始的二进制数据。解调可以使用各种方法来实现,例如包络检波、同步检测等。其中包络检波的基本原理是检测接收信号的包络线,以恢复出原始的数据。其数学公式可以表示为:

b(t) = Re[s(t)exp(-j2πf(t))]

8FSK调制具有以下优点:

较高的传输速率:由于使用了多个频率进行传输,因此可以实现较高的传输速率。
较强的抗干扰能力:由于使用了频率偏移键控,因此具有较强的抗干扰能力。
适用于多径传播环境:由于使用了不同的频率进行传输,因此可以适用于多径传播环境。
实现简单:相对于其他数字调制方法,8FSK的实现较为简单。
然而,8FSK调制也存在以下缺点:

频带利用率较低:由于使用了多个频率进行传输,因此频带利用率较低。
3.Verilog核心程序
````timescale 1ns / 1ps
//

//

module test_FSK;

reg i_clk;
reg i_rst;
reg[2:0]i_bits;
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[15:0]o_carrier5;
wire signed[15:0]o_carrier6;
wire signed[15:0]o_carrier7;
wire signed[15:0]o_carrier8;
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[31:0]o_de_fsk5;
wire signed[31:0]o_de_fsk6;
wire signed[31:0]o_de_fsk7;
wire signed[31:0]o_de_fsk8;
wire signed[15:0]o_fsk;
wire [2:0]o_bits;

FSK uut(
.i_clk(i_clk),
.i_rst(i_rst),
.i_bits(i_bits),
.o_carrier1(o_carrier1),
.o_carrier2(o_carrier2),
.o_carrier3(o_carrier3),
.o_carrier4(o_carrier4),
.o_carrier5(o_carrier5),
.o_carrier6(o_carrier6),
.o_carrier7(o_carrier7),
.o_carrier8(o_carrier8),
.o_fsk(o_fsk),
.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_de_fsk5(o_de_fsk5),
.o_de_fsk6(o_de_fsk6),
.o_de_fsk7(o_de_fsk7),
.o_de_fsk8(o_de_fsk8),
.o_bits(o_bits)
);

initial
begin
i_clk = 1'b1;
i_rst = 1'b1;

#1000
i_rst = 1'b0;

end
initial
begin
i_bits= 3'b000;

#3050
repeat(100)
begin
#700
i_bits= 3'b000;
#900
i_bits= 3'b011;
#880
i_bits= 3'b000;
#900
i_bits= 3'b001;
#700
i_bits= 3'b010;
#800
i_bits= 3'b100;
#800
i_bits= 3'b011;
#1600
i_bits= 3'b011;
#1600
i_bits= 3'b100;
#600
i_bits= 3'b110;
#700
i_bits= 3'b100;
#600
i_bits= 3'b101;
#1600
i_bits= 3'b111;
#1800
i_bits= 3'b010;
#1400
i_bits= 3'b01;
#1400
i_bits= 3'b101;
#1400
i_bits= 3'b100;

#1900
i_bits= 3'b101;
#1700
i_bits= 3'b101;
#700
i_bits= 3'b001;
#1700
i_bits= 3'b000;
#1800
i_bits= 3'b101;
#1600
i_bits= 3'b100;
#1400
i_bits= 3'b100;
#1600
i_bits= 3'b000;
end

end
always #5 i_clk=~i_clk;
endmodule
```

相关文章
|
17天前
|
测试技术 语音技术
FunASR英文离线文件转写软件包问题之性能测试详细结果查看如何解决
FunASR英文离线文件转写软件包问题之性能测试详细结果查看如何解决
28 0
|
10天前
|
JSON Java 测试技术
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
32 0
|
17天前
|
Docker 容器
FunASR离线文件转写软件包3.0问题之推理效率测试的配置如何解决
FunASR离线文件转写软件包3.0问题之推理效率测试的配置如何解决
20 0
|
4月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
118 7
|
4月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
148 2
|
4月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
4月前
|
算法 异构计算
m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
该内容包括三部分:1) 展示了Vivado 2019.2和Matlab中关于某种算法的仿真结果图像,可能与太阳能光伏系统的最大功率点跟踪(MPPT)相关。2) 简述了MPPT中的爬山法原理,通过调整光伏电池工作点以找到最大功率输出。3) 提供了一个Verilog程序模块`MPPT_test_tops`,用于测试MPPT算法,其中包含`UI_test`和`MPPT_module_U`两个子模块,处理光伏电流和电压信号。
44 1
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
升级版FPGA MSK调制解调系统集成AWGN信道模型,支持在Vivado 2019.2中设置不同SNR仿真误码率。示例SNR值从0到15,结果展示解调质量随SNR提升。MATLAB仿真验证了MSK性能,图片显示了仿真结果。 ### 理论概要 研究聚焦于软件无线电中的MSK调制解调,利用Verilog实现。MSK是一种相位连续、恒包络的二进制调制技术,优点包括频谱效率高。系统采用无核设计,关键模块包括调制器、解调器和误码检测。复位、输入数据、中频信号等关键信号通过Verilog描述,并通过Chipscope在线观察。
41 6
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
|
2月前
|
C语言 芯片 异构计算
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法
|
3月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```

热门文章

最新文章

下一篇
云函数