首页 > 其他分享 >m基于FPGA的8FSK调制解调系统verilog实现,包含testbench测试文件

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

时间:2023-11-01 23:56:45浏览次数:38  
标签:wire 8FSK FPGA de signed verilog 15 bits

1.算法仿真效果

vivado2019.2仿真结果如下:

 

 

 

 

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

 

 

 

 

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

  

标签:wire,8FSK,FPGA,de,signed,verilog,15,bits
From: https://www.cnblogs.com/51matlab/p/17804439.html

相关文章

  • 【FPGA】计数器 —— 时序逻辑
    小边想要日更!盲猜明天就会断hh,因为明晚我应该在疯狂看计网。。文章目录1.设计输入2.功能仿真3.板子调试时序逻辑基本概念:输出还与时钟信号相关D触发器-也就是有“记忆”特性,能存储电平状态计数器基本概念,基本4位加法器结构图计数值与技术时间之间的关系1.设计输入设计一个......
  • 【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境
    文章目录1.设计输入2.分析综合3.功能仿真4.板爷调试继续熟悉基于vivado的FPGA开发流程。。学习一些新语法3-8译码器的应用我们接下来还会用到~创建工程观众老爷们别管了,咱板子也不一定一样~1.设计输入编码画框图,vivado支持较弱使用IP,我们今天暂时不用哦~添加DesignSource......
  • szfpga 详细:高云1N1开发板高云gowin软件使用教程
     1.概述  国产FPGA是最近几年起来的产品,具有性价比高特点。高云FPGA,大多用在LED,电机控制,PLC设备上。 高云1N1开发板采用GW1N-LV1QN48C6/I5FPGA器件。具有低功耗,瞬时启动,高安全性,低成本,方便扩展等特点。价格便宜,易扩张,帮助用户快速进入国产FPGA学习。开发板集成多......
  • CSI摄像头模组MIPI配套GOWIN国产NR-9C和2AR-18开发板FPGA
    1.概述    国产FPGA是最近几年起来的产品,具有性价比高特点。而GOWIN属于国产FPGA成员,在技术服务和芯片价格都是比较大的优势,很多用户都用在LED控制,电机控制,PLC设备上,以及用于替换Lattice厂家中低端的芯片。   MIPI是移动联盟关键协议。用低功耗和高速传输摄像头和屏的内......
  • szfpga 高云gowin国产开发板GW2AR-18核心板fpga cpld测试板
    1.概述         国产FPGA是最近几年起来的产品,具有性价比高特点。而GOWIN属于国产FPGA成员,在服务和芯片都是比较大的优势,很多用户都用在LED控制,电机控制,PLC设备上,以及用于替换Lattice厂家中低端的芯片。    GW2AR-18 开发板采用GW2AR-18-LV9EQ144器件,是属于晨......
  • szfpga Lattice高速下载器HW-USBN-2B 常见问题解答
      .产品特点     1).支持windows7,Windows10操作系统,两个操作系统非常稳定不断线。  2).支持JTAG模式,速度快,最高30Mb/s,调试serdescore,不会像hw-usbn-2a出现错误。如这种错误Error:failedtosetcablepor(cable:USBport:EzUSB-0error:-1)  3). ......
  • Hello-FPGA CoaXPress 2.0 FPGA HOST IP Core PCIe Demo User Manual
     目录1说明42设备连接73VIVADOFPGA工程84调试说明9图1‑1资料目录4图1‑2VIVADO工程目录结构5图1‑3VS软件工程目录5图1‑4CXPHOSTPCIeBlockDesign5图1‑5VS工程6图1‑6CXPcamera6图1‑7KC705搭载Hello-FPGACoaXPress2.0FMC子......
  • 通过MATLAB自动产生Hamming编译码的verilog实现,包含testbench
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a和vivado2019.2 3.算法理论概述       Hamming编码是一种用于纠错错误的线性分组码。它是由理查德·哈明(RichardHamming)在20世纪中期提出的,用于在数字通信和存储系统中检测和纠正传输过程中产生的错误。本......
  • m基于FPGA的OFDM系统中降PAPR技术的实现,包含testbench测试文件和MATLAB辅助测试
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发:将FPGA的仿真结果导入matlab中,并通过matlab2022a进行papr对比:2.算法涉及理论知识概要峰值平均功率比(PAPR—PeaktoAveragePowerRatio),简称峰均比(PAPR)。MIMO-OFDM系统能够提供更大的覆盖范围、更好的传输质量、更高的数......
  • m基于FPGA的OFDM系统中降PAPR技术的实现,包含testbench测试文件和MATLAB辅助测试
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发: 将FPGA的仿真结果导入matlab中,并通过matlab2022a进行papr对比: 2.算法涉及理论知识概要        峰值平均功率比(PAPR—PeaktoAveragePowerRatio),简称峰均比(PAPR)。MIMO-OFDM系统能够提供更大的覆盖范围、......