vivado仿真虚部一直高阻

img

img

img

img


最近在做fft仿真时参考
https://blog.csdn.net/id_yqduan/article/details/108882080
写的testbench仿真输出的虚部一直是高阻,要怎么解决?

fft代码

module fft(
    input   wire    clk,
    input   wire    [15:0]  din,
    input   wire    last,
    input   wire    s_axis_data_tvalid,
 
    output  wire     [22:0]  m_axis_data_tdata_r,
    output  wire     [22:0]  m_axis_data_tdata_i,
    output  wire     [7:0]   index
);
 
    
    wire [31:0]s_axis_data_tdata;
    wire [7:0]s_axis_config_tdata = {7'b0,1'b1};//NO need run time change length!
    wire s_axis_config_tvalid = 1;
    wire s_axis_config_tready ;
    wire            s_axis_data_tready ;
    //wire            s_axis_data_tlast = 0;
    //wire            s_axis_data_tvalid = 1 ;
    
    //wire    [7:0]  index;
    wire            m_axis_data_tvalid;
    wire            m_axis_data_tready = 1;
    wire            m_axis_data_tlast=0;
    
    wire            event_frame_started;
    wire            event_tlast_unexpected;
    wire            event_tlast_missing;
    wire            event_status_channel_halt;
    wire            event_data_in_channel_halt;
    wire            event_data_out_channel_halt;
    
    wire    [47:0]    m_axis_data_tdata;
    
    assign s_axis_data_tdata  = {16'b0,din};
//    assign  m_axis_data_tdata_r = m_axis_data_tdata[15:0];
//    assign  m_axis_data_tdata_i = m_axis_data_tdata[31:16];
    assign  m_axis_data_tdata_r = m_axis_data_tdata[22:0];
    assign  m_axis_data_tdata_i = m_axis_data_tdata[46:24];

xfft_0 fft_test (
  .aclk(clk),                                                // input wire aclk
  .s_axis_config_tdata(s_axis_config_tdata),                  // input wire [7 : 0] s_axis_config_tdata
  .s_axis_config_tvalid(s_axis_config_tvalid),                // input wire s_axis_config_tvalid
  .s_axis_config_tready(s_axis_config_tready),                // output wire s_axis_config_tready
  .s_axis_data_tdata(s_axis_data_tdata),                      // input wire [31 : 0] s_axis_data_tdata
  .s_axis_data_tvalid(s_axis_data_tvalid),                    // input wire s_axis_data_tvalid
  .s_axis_data_tready(s_axis_data_tready),                    // output wire s_axis_data_tready
  .s_axis_data_tlast(last),                      // input wire s_axis_data_tlast
 // .m_axis_data_tdata(m_axis_data_tdata),                      // output wire [31 : 0] m_axis_data_tdata
  .m_axis_data_tdata(m_axis_data_tdata),                      // output wire [47 : 0] m_axis_data_tdata
  .m_axis_data_tuser(index),                      // output wire [7 : 0] m_axis_data_tuser
  .m_axis_data_tvalid(m_axis_data_tvalid),                    // output wire m_axis_data_tvalid
  .m_axis_data_tready(m_axis_data_tready),                    // input wire m_axis_data_tready
  .m_axis_data_tlast(m_axis_data_tlast),                      // output wire m_axis_data_tlast
  .event_frame_started(event_frame_started),                  // output wire event_frame_started
  .event_tlast_unexpected(event_tlast_unexpected),            // output wire event_tlast_unexpected
  .event_tlast_missing(event_tlast_missing),                  // output wire event_tlast_missing
  .event_status_channel_halt(event_status_channel_halt),      // output wire event_status_channel_halt
  .event_data_in_channel_halt(event_data_in_channel_halt),    // output wire event_data_in_channel_halt
  .event_data_out_channel_halt(event_data_out_channel_halt)  // output wire event_data_out_channel_halt
);
endmodule

tb代码

module tb_fft();
   reg clk; 
   reg [15:0] din; 
   reg [15:0] stimulus[1:32];//32位
   integer count;
   integer i; 
   integer file;
   wire [15:0] data_real;
   wire [15:0] data_imag;
   wire [7:0] index;
   reg last;
   reg s_axis_data_tvalid;
   initial begin
        clk = 0;
        din = 0;
        count = 0;
        last = 0;
        s_axis_data_tvalid = 0;
        #10;
        $readmemb("C:/Users/hp/OneDrive/桌面/FFT/data_before_fft.txt", stimulus);
        file = $fopen("C:/Users/hp/OneDrive/桌面/FFT/data_before_fft.txt", "w");
        #10;
        for(i = 1;i<=32;i = i+1)begin
            s_axis_data_tvalid = 1;
            din = stimulus[i];
            #4;
        end
        last = 1;
        s_axis_data_tvalid = 0;
        din = 16'b0;
   end
   always # 2 clk =  ~clk;
        always @(posedge clk) begin
        $fwrite(file,"%h\n", data_real);  //data_o为需要保存的信号数据
        if(count > 2500)
            $fclose(file);
         count = count + 1;
    end
   
    fft fft_test(
        .clk(clk),
        .din(din),
        .last(last),
        .s_axis_data_tvalid(s_axis_data_tvalid),
        .m_axis_data_tdata_r(data_real),
        .m_axis_data_tdata_i(data_imag),
        .index(index)
    );  
endmodule

xfft_0 your_instance_name (
  .aclk(aclk),                                                // input wire aclk
  .s_axis_config_tdata(s_axis_config_tdata),                  // input wire [7 : 0] s_axis_config_tdata
  .s_axis_config_tvalid(s_axis_config_tvalid),                // input wire s_axis_config_tvalid
  .s_axis_config_tready(s_axis_config_tready),                // output wire s_axis_config_tready
  .s_axis_data_tdata(s_axis_data_tdata),                      // input wire [31 : 0] s_axis_data_tdata
  .s_axis_data_tvalid(s_axis_data_tvalid),                    // input wire s_axis_data_tvalid
  .s_axis_data_tready(s_axis_data_tready),                    // output wire s_axis_data_tready
  .s_axis_data_tlast(s_axis_data_tlast),                      // input wire s_axis_data_tlast
  .m_axis_data_tdata(m_axis_data_tdata),                      // output wire [31 : 0] m_axis_data_tdata
  .m_axis_data_tuser(m_axis_data_tuser),                      // output wire [7 : 0] m_axis_data_tuser
  .m_axis_data_tvalid(m_axis_data_tvalid),                    // output wire m_axis_data_tvalid
  .m_axis_data_tready(m_axis_data_tready),                    // input wire m_axis_data_tready
  .m_axis_data_tlast(m_axis_data_tlast),                      // output wire m_axis_data_tlast
  .event_frame_started(event_frame_started),                  // output wire event_frame_started
  .event_tlast_unexpected(event_tlast_unexpected),            // output wire event_tlast_unexpected
  .event_tlast_missing(event_tlast_missing),                  // output wire event_tlast_missing
  .event_status_channel_halt(event_status_channel_halt),      // output wire event_status_channel_halt
  .event_data_in_channel_halt(event_data_in_channel_halt),    // output wire event_data_in_channel_halt
  .event_data_out_channel_halt(event_data_out_channel_halt)  // output wire event_data_out_channel_halt
);

你把 xfft_0 ip 的 xfft_0 .veo 文件贴出来

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632