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

m基于插入导频相关峰判决法的基带信号跳频图样识别FPGA实现,包含testbench

时间:2023/8/25 16:39:41 点击:

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

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

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

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

点击店铺

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

2.部分仿真图预览


3.算法概述

    插入导频: 跳频信号在传输过程中可能会经历频率变化,这使得信号的频谱随时间变化。为了帮助识别信号的频率,我们在跳频信号中插入导频序列。导频序列是预先知道的、不随时间变化的信号,它可以用来估计信号的频率偏移。

   相关峰判决法: 跳频图样识别基于导频序列的相关峰。在收到信号后,首先通过相关操作计算信号与导频序列之间的相关性。当信号的频率与导频序列的频率相匹配时,相关性峰值最高。通过检测相关性峰值,我们可以判断信号是否匹配特定的跳频图样。

4.部分源码

`timescale 1ns / 1ps

//

// Company: 

// Engineer: 

// 

// Create Date: 2020/04/22 15:13:09

// Design Name: 

// Module Name: tops

// Project Name: 

// Target Devices: 

// Tool Versions: 

// Description: 

// 

// Dependencies: 

// 

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

// 

//

 

 

module tops(

                  i_clk_61_44M,//输入时钟

                  i_rst,       //复位

                  o_clk_fre,

                  i_controller,

                  o_freq_coder,

                  o_I_dw,

                  o_Q_dw,

                  o_freq_coder2,

                  o_peak1,

                  o_peak2,

                  o_peak3,

                  o_peak4,

                  o_peak5                                

           );

    

input     i_clk_61_44M;

input     i_rst;              

output    o_clk_fre; 

 

input     i_controller;

output[3:0]o_freq_coder;

 

output signed[11:0]o_I_dw;

output signed[11:0]o_Q_dw; 

 

output[3:0]        o_freq_coder2; 

output signed[9:0]o_peak1;

output signed[9:0]o_peak2;

output signed[9:0]o_peak3;

output signed[9:0]o_peak4;

output signed[9:0]o_peak5; 

 

 

 

    

wire clk_61_44M;    

wire clk_15_36M;

wire clk_7_68M; 

clk_wiz_0 clk_wiz_0_u

   (

    // Clock out ports

    .clk_out1(clk_61_44M),     // output clk_out1

    .clk_out2(clk_15_36M),     // output clk_out2

    .clk_out3(clk_7_68M),     // output clk_out3

    // Status and control signals

    .reset   (1'b0), // input reset

    .locked  (),       // output locked

   // Clock in ports

    .clk_in1 (i_clk_61_44M)

    );   

assign o_clk_fre=clk_15_36M;    

 

wire signed[11:0]w_I_dw1;

wire signed[11:0]w_Q_dw1; 

 

wire signed[11:0]w_I_dw2;

wire signed[11:0]w_Q_dw2; 

wire signed[11:0]w_I_dw3;

wire signed[11:0]w_Q_dw3; 

wire signed[11:0]w_I_dw4;

wire signed[11:0]w_Q_dw4; 

wire signed[11:0]w_I_dw5;

wire signed[11:0]w_Q_dw5;  

signal_f1 signal_f1_u(

                  .i_clk (o_clk_fre),

  .i_rst (i_rst),

  .o_I_dw(w_I_dw1),

  .o_Q_dw(w_Q_dw1)

          );

signal_f2 signal_f2_u(

                  .i_clk (o_clk_fre),

  .i_rst (i_rst),

  .o_I_dw(w_I_dw2),

  .o_Q_dw(w_Q_dw2)

          );

          

signal_f3 signal_f3_u(

                  .i_clk (o_clk_fre),

  .i_rst (i_rst),

  .o_I_dw(w_I_dw3),

  .o_Q_dw(w_Q_dw3)

          );           

          

signal_f4 signal_f4_u(

                  .i_clk (o_clk_fre),

  .i_rst (i_rst),

  .o_I_dw(w_I_dw4),

  .o_Q_dw(w_Q_dw4)

          );           

          

signal_f5 signal_f5_u(

                  .i_clk (o_clk_fre),

  .i_rst (i_rst),

  .o_I_dw(w_I_dw5),

  .o_Q_dw(w_Q_dw5)

          );

 

 

jump_frequency jump_frequency_u(

                     .i_clk        (o_clk_fre),

                     .i_rst        (i_rst),

                     .i_controller (i_controller),

                     .i_freqset    (4'b0010),

                     .o_freq_coder (o_freq_coder)//输出跳频带你

                     );

 

reg signed[11:0]o_I_dw;

reg signed[11:0]o_Q_dw; 

always @(posedge o_clk_fre or posedge i_rst)

begin

     if(i_rst)

     begin

     o_I_dw <= 12'd0;

     o_Q_dw <= 12'd0;

     end

else begin

          if(o_freq_coder == 4'b0000)//根据不同的频点,插入不同的序列,接收端根据序列类型判决频点

          begin

             o_I_dw <= w_I_dw1;

             o_Q_dw <= w_I_dw1;

          end

          if(o_freq_coder == 4'b0001)

          begin

             o_I_dw <= w_I_dw2;

             o_Q_dw <= w_I_dw2;

          end

          if(o_freq_coder == 4'b0010)

          begin

             o_I_dw <= w_I_dw3;

             o_Q_dw <= w_I_dw3;

          end          

          if(o_freq_coder == 4'b0011)

          begin

             o_I_dw <= w_I_dw4;

             o_Q_dw <= w_I_dw4;

          end          

          if(o_freq_coder == 4'b0100)

          begin

             o_I_dw <= w_I_dw5;

             o_Q_dw <= w_I_dw5;

          end                 

          

     end

end 

jump_check jump_check_u(

                  .i_clk       (o_clk_fre),

  .i_rst       (i_rst),

  .i_I_dw      (o_I_dw),

  .i_Q_dw      (o_Q_dw),

  .o_freq_coder(o_freq_coder2),

  .o_peak1     (o_peak1),

  .o_peak2     (o_peak2),

  .o_peak3     (o_peak3),

  .o_peak4     (o_peak4),

  .o_peak5     (o_peak5)

           );

endmodule

00_040m

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