您现在的位置:首页 >> 通信 >> 内容

基于FPGA的FSK调制解调通信系统verilog实现,包含testbench

时间:2023/4/23 22:52:26 点击:

  核心提示:A788,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJiUmJhx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

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

4.部分源码

.........................................................  

wire[31:0]m_axis_data_tdata2;

dds_compiler_0 dds_compiler_u2(

  .aclk    (i_clk),                                  // input wire aclk

  .aresetn (~i_rst),                            // input wire aresetn

  .s_axis_config_tvalid(1'b1),  // input wire s_axis_config_tvalid

  .s_axis_config_tdata(32'd160000000),    // input wire [31 : 0] s_axis_config_tdata

  .m_axis_data_tvalid(),      // output wire m_axis_data_tvalid

  .m_axis_data_tdata(m_axis_data_tdata2),        // output wire [31 : 0] m_axis_data_tdata

  .m_axis_phase_tvalid(),    // output wire m_axis_phase_tvalid

  .m_axis_phase_tdata()      // output wire [31 : 0] m_axis_phase_tdata

);

assign o_carrier2=m_axis_data_tdata2[15:0];   

 

 

 

 

//解调

wire signed[15:0]o_cos3;

wire signed[15:0]o_cos4;

 

wire[31:0]m_axis_data_tdata3;

dds_compiler_0 dds_compiler_u3(

  .aclk    (i_clk),                                  // input wire aclk

  .aresetn (~i_rst),                            // input wire aresetn

  .s_axis_config_tvalid(1'b1),  // input wire s_axis_config_tvalid

  .s_axis_config_tdata(32'd60000000),    // input wire [31 : 0] s_axis_config_tdata

  .m_axis_data_tvalid(),      // output wire m_axis_data_tvalid

  .m_axis_data_tdata(m_axis_data_tdata3),        // output wire [31 : 0] m_axis_data_tdata

  .m_axis_phase_tvalid(),    // output wire m_axis_phase_tvalid

  .m_axis_phase_tdata()      // output wire [31 : 0] m_axis_phase_tdata

);

assign o_cos3=m_axis_data_tdata1[15:0];   

......................................................

A788

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168