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

基于FPGA的16QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置

时间:2024/8/25 23:39:46 点击:

  核心提示:0sj_012m...

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

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

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

点击店铺

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

2.部分仿真图预览


3.算法概述

       16QAM全称正交幅度调制是英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一种数字调制方式。产生的方法有正交调幅法和复合相移法。16QAM是指包含16种符号的QAM调制方式。

4.部分源码

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

module TOPS_16QAM(

  input clk,

  input rst,

  input start,

  input signed[7:0]i_SNR,

  output  [3:0] parallel_data,

  output signed[15:0]sin,

  output signed[15:0]cos,

  output  signed[15:0]  I_com,

  output  signed[15:0]  Q_com,

  output  signed[15:0]I_Ncom,

  output  signed[15:0]Q_Ncom,

  output  signed[23:0]I_comcos2,

  output  signed[23:0]Q_comsin2,

  output  signed[7:0]o_Ifir,

  output  signed[7:0]o_Qfir,

  output  [3:0] o_sdout,

  output signed[31:0]o_error_num,

  output signed[31:0]o_total_num  

);

    

    

// DUT

tops_16QAM_mod  top(

   .clk(clk),

   .rst(rst),

   .start(start),

   .parallel_data(parallel_data),

   .sin(sin),

   .cos(cos),

   .I_com(),

   .Q_com(),

   .I_comcos(I_com),//基带方式输出,即实际通信中的复数模式

   .Q_comsin(Q_com)

   );

    

//加入信道

//实部

awgns awgns_u1(

    .i_clk(clk), 

    .i_rst(~rst), 

    .i_SNR(i_SNR), //这个地方可以设置信噪比,数值大小从-10~50,

    .i_din(I_com), 

    .o_noise(),

    .o_dout(I_Ncom)

    );  

//虚部    

awgns awgns_u2(

    .i_clk(clk), 

    .i_rst(~rst), 

    .i_SNR(i_SNR), //这个地方可以设置信噪比,数值大小从-10~50,

    .i_din(Q_com), 

    .o_noise(),

    .o_dout(Q_Ncom)

    ); 

    

    

tops_16QAM_demod  top2(

   .clk(clk),

   .rst(rst),

   .start(start),

   .I_Ncom(I_Ncom),

   .Q_Ncom(Q_Ncom),

   .I_comcos2(I_comcos2),

   .Q_comsin2(Q_comsin2),

   .o_Ifir(o_Ifir),

   .o_Qfir(o_Qfir),

   .o_sdout(o_sdout)

   );  

   

//4个bit同时统计误码率    

wire signed[31:0]o_error_num1;

wire signed[31:0]o_total_num1;

Error_Chech Error_Chech_u1(

    .i_clk(clk), 

    .i_rst(~rst), 

    .i_trans(parallel_data), 

    .i_rec(o_sdout), 

    .o_error_num(o_error_num1), 

    .o_total_num(o_total_num1)

    );  

 

assign o_total_num = o_total_num1;

assign o_error_num = o_error_num1; 

    

endmodule

0sj_012m

---

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