vivado IP学习 divider

发布于:2025-03-29 ⋅ 阅读:(24) ⋅ 点赞:(0)

IP:这个IP输出结果64位,32位整数部分,32位小数部分

 tb code

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/03/25 16:29:45
// Design Name: 
// Module Name: tb_IPdivider
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module tb_IPdivider(

    );
        
        reg         clk_100 ;
        reg         valid   ;
        wire         dout_valid  ;
        wire [63:0]  dout_data   ; 
        reg  [31:0]  data        ;    
        
        initial
        begin
            clk_100 =   1'b0    ; 
            valid   =   1'b0    ;
            #50
            valid   =   1'b1    ;   
            #1000
            $finish ;
        end
        
        always #5 clk_100 = ~clk_100    ;
    
        divider_1000000000 divider_inst 
        (
          .aclk(clk_100),                                   // input wire aclk
          .s_axis_divisor_tvalid(valid),                    // input wire s_axis_divisor_tvalid
          .s_axis_divisor_tdata( 32'd100 ),                  // input wire [31 : 0] s_axis_divisor_tdata
          .s_axis_dividend_tvalid(valid),                   // input wire s_axis_dividend_tvalid
          .s_axis_dividend_tdata( 32'd2000 ),               // input wire [31 : 0] s_axis_dividend_tdata
          .m_axis_dout_tvalid( dout_valid ),                // output wire m_axis_dout_tvalid
          .m_axis_dout_tdata( dout_data )                   // output wire [63 : 0] m_axis_dout_tdata
        );
        always@( posedge clk_100 )
        begin
            if( dout_valid == 1'b1 )
            begin
                data    =   dout_data[63:32]    ;
            end
            else
            begin
                data    <=  data    ;
            end
        end
 
    
endmodule

波形