【【无符号乘法器的参数化verilog 代码+testbench实现】】

无符号乘法器的参数化verilog 代码+testbench实现

uumultiplier.v

module uumultiplier #(
    parameter       NUMBER1      =      8                    ,
    parameter       NUMBER2                                                                                                                                                                                                            =      10                   
  )(
    input  [NUMBER1-1 : 0]                  input1       ,
    input  [NUMBER2-1 : 0]                  input2       ,
    input                                   clk          ,
    input                                   rst_n        ,

    output  reg [NUMBER1+NUMBER2 : 0]       out
  );


  //======================================================================================\
  //                define parameter  and  internal signal                                \
  //======================================================================================\
 



  //==========================================================================================\
  //                     next   is  main  code                                                 \\
  //===========================================================================================\\
  
  
     always@(posedge clk or negedge rst_n)
  begin
    if(rst_n == 0) begin
      out <= 0 ;
    end

    else 
    begin
        
      out <= input1 * input2 ;
      
     
    end
  end

endmodule

testbench .v

module uumultiplier_tb #(
    parameter       NUMBER1      =      8                    ,
    parameter       NUMBER2      =      10                   

);

reg   [NUMBER1-1 : 0]                  input1       ;
reg   [NUMBER2-1 : 0]                  input2       ;
reg                                    clk          ;
reg                                    rst_n        ;

wire [NUMBER1+NUMBER2 : 0]             out          ;



uumultiplier#(
    .NUMBER1      ( NUMBER1 ),
    .NUMBER2      ( NUMBER2 )
)u_uumultiplier(
    .input1       ( input1       ),
    .input2       ( input2       ),
    .clk          ( clk          ),
    .rst_n        ( rst_n        ),
    .out          ( out          )
);




always    #5     clk = ~clk   ;

initial begin 
    clk =  0 ;
    rst_n = 0 ;
    input1 = 1 ;
    input2 = 1 ;
   

    #20
    rst_n = 1 ;


    input1 = 10 ; 
    input2 = 8 ;
   

    #20
    input1 = 12 ; 
    input2 = 8 ;
   



    #20 
    input1 = 1 ; 
    input2 = 8 ;
   



#20
    input1 = 3 ; 
    input2 = 5 ;
   


end
endmodule 

你可能感兴趣的:(FPGA学习,fpga开发)