首页 > 其他分享 >基于FPGA的FSK调制解调系统verilog开发

基于FPGA的FSK调制解调系统verilog开发

时间:2023-05-08 23:25:06浏览次数:36  
标签:FPGA 相位 解调 FSK verilog 信号 载波 相干

1.算法仿真效果

VIVADO2019.2仿真结果如下:

 

 

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

      频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了较为广泛的应用。

 

        在二进制频移键控中,幅度恒定不变的载波信号的频率随着输入码流的变化而切换(称为高音和低音,代表二进制的1 和0)。产生FSK 信号最简单的方法是根据输入的数据比特是0还是1,在两个独立的振荡器中切换。采用这种方法产生的波形在切换的时刻相位是不连续的,因此这种FSK 信号称为不连续FSK 信号。由于相位的不连续会造频谱扩展,这种FSK 的调制方式在传统的通信设备中采用较多。随着数字处理技术的不断发展,越来越多地采用连继相位FSK调制技术。目前较常用产生FSK 信号的方法是,首先产生FSK 基带信号,利用基带信号对单一载波振荡器进行频率调制。相位连续的FSK信号的功率谱密度函数最终按照频率偏移的负四次幂衰落。如果相位不连续,功率谱密度函数按照频率偏移的负二次幂衰落。

 

2-FSK功率谱密度的特点如下:

 

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1和f2位置;

 

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|≤fs,则出现单峰。

 

PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。

 

  在二进制频移键控(2FSK)中,当传送“1”码时对应于载波频率,传送“0”码时对应于载波频率。 2FSK信号波形可看作两个2ASK信号波形的合成,下图是相位连续的2FSK信号波形。

 

 

 

 

     FSK信号的解调也有非相干和相干两种,FSK信号可以看作是用两个频率源交替传输得到的,所以FSK的接收机由两个并联的ASK接收机组成。

 

(1)相干解调

 

       相干解调是利用乘法器,输入一路与载频相干的参考信号与载频相乘,通过低通滤波,滤除高频信号,即得原始信号,FSK经过带通滤波之后,可以看作是两路ASK信号,相干检测器组成的原理如下所示:

 

 

 

FSK相干解调结构

 

上图是一种易于实现的FSK相干解调器,还有一种最佳FSK相干解调器如下所示:

 

 

 

FSK最佳解调结构

 

      从图上可以看出,在接收端要产生两个已知信号s1(t)和s2(t)的波形,分别和输入波形相乘,再送往积分器,在一定时间内积分,在t=Tb时刻,将积分结果取样,并在比较器中比较判决,然后输出,整个相干解调器的性能受载波锁相环路以及位同步性能影响很大,并且在高速率的情况下,积分、取样和清洗电路难以实现,因此通常采用第一种相干解调器的结构。

 

(2)非相干解调

 

       由于FSK信号中提取相干载波相对比较困难,实际工程应用中多用非相干解调法,在相同误码率的条件下,非相干解调需要的信噪比只比相干解调高1~2dB。非相干解调的种类有很多,例如:基于自适应滤波的解调法、差分检波算法、AFC环解调法、过零检测法、包络检波法等。

 

 

 

3.verilog核心程序

 

module FSK_modulator(
input bb_clk,
input bit_in ,
input [15:0] cnt0,cnt1,
input [7:0]  step0,step1,
output reg [11:0]  sin ,cos  
);
 
wire [11:0]  sin_w,cos_w;
always @(posedge bb_clk)sin<=sin_w;
always @(posedge bb_clk)cos<=cos_w;
 
wire [15:0] cnt0_w,cnt1_w ;
wire [7:0 ] step0_w,step1_w ; 
 
.........................................................................
reg [15:0] cnt = 0;
reg [7:0] step = 0  ;
 
always@(posedge bb_clk) cnt  <= ( bit_in ) ? cnt1_w  : cnt0_w ;
always@(posedge bb_clk) step <= ( bit_in ) ? step1_w  : step0_w ;
 
my_dds my_dds(.clk( bb_clk ) ,.rst( 1'b0 ) ,.clr ( 1'b0 ) ,.cnt( cnt) ,.step( step)  ,.sin(sin_w )  ,.cos(cos_w )  ); 
endmodule 
.........................................................................
module FSK_DEmodulator #(parameter SHORT_VALUE = 0 )(
input bb_clk,
output reg  bit_out  ,
input [15:0] v_short , v_long ,
input  flag_bit   
);
 
wire flag_bit_cross;
 
wire [15:0] v_short_w , v_long_w  ;
 
.........................................................................
 
reg [15:0]  c;always @ (posedge bb_clk)c <= (flag_bit_cross)?0:(c+1);
 
always @ (posedge bb_clk)if (flag_bit_cross) 
begin if(c<v_short_w) bit_out <= SHORT_VALUE;else if (c>v_long_w)bit_out <= ~ SHORT_VALUE ;end   
 
endmodule 

 

  

 

标签:FPGA,相位,解调,FSK,verilog,信号,载波,相干
From: https://www.cnblogs.com/51matlab/p/17383487.html

相关文章

  • MFSK调制方式的频谱效率,误码率,频谱等matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要数字信号传输系统分为基带传输系统和频带传输系统.频带传输系统也叫数字调制系统。数字调制信号又称为键控信号,数字调制过程中处理的是数字信号,而载波有振幅、频率和相位3个变量,且二进制的信号只有高低电平两个逻......
  • MFSK调制方式的频谱效率,误码率,频谱等matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:        2.算法涉及理论知识概要        数字信号传输系统分为基带传输系统和频带传输系统.频带传输系统也叫数字调制系统。数字调制信号又称为键控信号,数字调制过程中处理的是数字信号,而载波有振幅、频率......
  • Verilog实现FIR低通滤波器,vivado平台开发,包含testbench
    1.算法仿真效果vivado2019.2仿真结果如下:    2.算法涉及理论知识概要       FIR(FiniteImpulseResponse)滤波器:有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其......
  • Xilinx Artix-7系列 FPGA器件XC7A100T-1FGG484I、XC7A200T-L2FFG1156E现场可编程门阵
    产品简介:Xilinx®Artix-7系列FPGA重新定义了成本敏感型解决方案,功耗比上一代产品降低了一半,同时为高带宽应用提供一流的收发器和信号处理能力。这些设备基于28纳米HPL工艺构建,提供一流的性能功耗比。与MicroBlaze™软处理器一起,Artix-7FPGA非常适用于便携式医疗设备、......
  • 广州星嵌DSP/FPGA/ARM开发板选型手册2023
    广州星嵌电子科技有限公司是一家专注嵌入式核心板研发、设计和生产的企业。提供以ARM、DSP、FPGA为核心处理器的工业核心板、开发套件、项目定制服务。 DSP/FPGA/ARM开发板选型手册2023,欢迎下载,敬请参阅!链接:https://pan.baidu.com/s/1NGTb6JSyEFwGzICcW-ZWqQ?pwd=xqdz提取......
  • 基于TI Sitara系列AM5728工业开发板——FPGA视频开发案例分享
    前言31cameralink_display案例41.1案例功能41.2操作说明41.3关键代码(MicroBlaze)111.4Vivado工程说明161.5模块/IP核配置20前言本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows7/1064bit、XilinxVivado2017.4、XilinxSDK2017.4。评估......
  • verilog语法:for与generate...for
    1for循环for循环必须在always块内使用,对应的always块内的变量需声明为reg类型。verilog的for和C语言的for的不同点:C语言的for里面的语句是串行执行,而verilog的for内的语句是并行执行的。例如下面的移位寄存器案例。integeri;always@(posedgeclk)begindata_reg[0]......
  • 第5讲 FPGA运算符详解
    1moduletop(2output[31:0]c3);45localparam[15:0]a=65535;6localparam[15:0]b=25687;789assignc=a*b;10//两个常数相乘,综合后不使用资源,直接综合为一个常数11moduletop(12output[15:0]c1......
  • 【System Verilog】初步学习笔记
    1、SV基本语法、分层验证平台、数据类型、task&function、oop(封装,继承,多态)、随机化、线程、组件内部通信(event,semaphores,mailboxes)等见https://www.cnblogs.com/xh13dream/tag/systemverilog/2、coverage:       3、assertion: ......
  • SystemVerilog for Design Edition 2 Chapter 2
    SystemVerilogforDesignEdition2Chapter2SystemVerilogDeclarationSpacesVerilogonlyhaslimitedplacesinwhichdesignerscandeclarevariablesandotherdesigninformation.SystemVerilogextendsVerilog’sdeclarationspacesinseveralways.These......