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

m基于FPGA的BPSK调制解调通信系统verilog实现,包含testbench,不包含载波同步

时间:2023/4/26 22:30:43 点击:

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

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

>面包多安全交易平台

如果需要使用vivado平台开发,打开链接:https://mbd.pub/o/bread/ZJiVmppr

如果需要使用quartusii平台开发,打开链接:https://mbd.pub/o/bread/mbd-ZJiXkp5y

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

点击店铺

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

2.部分仿真图预览


3.算法概述

        BPSK (Binary Phase Shift Keying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一,利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪,使一方为0,另一方为1,从而可以同时传送接受2值(1比特)的信息。

4.部分源码

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

    

//调制端    

assign o_nz=(i_bits == 1'b1)?2'b01:2'b11;

    

wire[23:0]m_fir;

fir_compiler_0 uut (

  .aresetn(~i_rst),                        

  .aclk(i_clk),                               

  .s_axis_data_tvalid(1'b1),   

  .s_axis_data_tready(),  

  .s_axis_data_tdata({o_nz[1],o_nz[1],o_nz[1],o_nz[1],o_nz[1],o_nz[1],o_nz}),   

  .m_axis_data_tvalid(),   

  .m_axis_data_tdata(m_fir)    

);   

 

assign o_fir=m_fir[23:8]; 

    

wire[31:0]m_carrier;

dds_compiler_0 uut2(

  .aclk    (i_clk),                            

  .aresetn (~i_rst),                          

  .s_axis_config_tvalid(1'b1),   

  .s_axis_config_tdata(32'd100000000),    

  .m_axis_data_tvalid(),      

  .m_axis_data_tdata(m_carrier),        

  .m_axis_phase_tvalid(),   

  .m_axis_phase_tdata()      

);

assign o_carrier=m_carrier[15:0];    

    

    

always @(posedge i_clk or posedge i_rst)

begin

     if(i_rst)

     begin

     o_mod <= 32'd0;

     end

else begin

     o_mod <= $signed(o_carrier)*$signed(o_fir);

     end

end    

    

    

    

//解调端 ,不考虑载波同步

wire[31:0]m_carrier_local;

dds_compiler_0 uut3(

  .aclk    (i_clk),                            

  .aresetn (~i_rst),                          

  .s_axis_config_tvalid(1'b1),   

  .s_axis_config_tdata(32'd100000000),    

  .m_axis_data_tvalid(),      

  .m_axis_data_tdata(m_carrier_local),        

  .m_axis_phase_tvalid(),   

  .m_axis_phase_tdata()      

);

assign o_carrier_local=m_carrier_local[15:0];   

 

reg signed[31:0]tmps;

always @(posedge i_clk or posedge i_rst)

begin

     if(i_rst)

     begin

     tmps <= 32'd0;

     end

else begin

     tmps <= $signed(o_carrier_local)*$signed(o_mod[31:16]);

     end

end       

assign o_dw=tmps;

 

wire signed[31:0]tmps2;

fiter_rrc uut4(

.i_clk  (i_clk),

.i_rst  (i_rst),

.i_dat  (tmps[20:5]),

.o_demod(o_demod)

);

 

endmodule

00_001m

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