vivado 除法器ip核的使用

vivado 除法器ip核的使用

  • 1 IP 例化
  • 2 源文件
  • 3 结果

1 IP 例化

vivado 除法器ip核的使用_第1张图片
vivado 除法器ip核的使用_第2张图片

2 源文件

top

`timescale 1ns / 1ps
//**Algorithm Type:选择不同的算法模式,其中Radix2为常用的模式,LutMult当时数较小的时候使用,High Radix是当数很大的时候使用。常用的是Radix2,此处也是选择的为Radix2.
//Dividend Width:被除数的位数。
//Divisor Width:除数的位数。
//Remainder Type:选择余数的模式。
//            有两种模式:Remainder:余数,以及Fractional分数模式。
//             Remainder模式的余数模式位数固定,由系统根据除数自动设定。
//             而选择Fractional Width模式,则可以在Fractional Width那一栏选择自己想要的余数位数。
//             常用模式为Remainder模式。本文也应选则Remainder模式。


module top(
    input           clk             ,
    input           reset           ,
    input   [15:0]  Dividend        , // Dividend:被除数。
    input           Dividend_valid 
);

     
     
        
 // Dividend:被除数。 Divisor:除数  
 //  Dividend / Divisor  = 商+余数
wire [15 : 0] Divisor ;
assign Divisor=16'd100;             // Divisor:除数  
wire [31 : 0]  div_tdata            ;//除法结果
wire           div_tdata_tvalid     ; //除法结果有效信号
divide Inst_divide (
  .aclk(clk),                                      // input wire aclk
  .s_axis_divisor_tvalid(1'b1),    // input wire s_axis_divisor_tvalid
  .s_axis_divisor_tdata(Divisor),      // input wire [15 : 0] s_axis_divisor_tdata
  .s_axis_dividend_tvalid(Dividend_valid),  // input wire s_axis_dividend_tvalid
  .s_axis_dividend_tdata(Dividend),    // input wire [15 : 0] s_axis_dividend_tdata
  
  .m_axis_dout_tvalid(div_tdata_tvalid),          // output wire m_axis_dout_tvalid
  .m_axis_dout_tdata(div_tdata)            // output wire [31 : 0] m_axis_dout_tdata
);

wire [15:0]  div_tdata_intergral;//整数部分
wire [15:0]  div_tdata_remainder;//余数部分
assign div_tdata_intergral=div_tdata[31:16];
assign div_tdata_remainder=div_tdata[15:0];       
    

   
    
    
    
    
    
endmodule

testbench

`timescale 1ns / 1ps


module sim_top;

reg             clk  ;
reg             reset;
reg   [15:0]    Dividend;
reg             Dividend_valid;

top  Inst_top(
    .clk             (clk           ),
    .reset           (reset         ),
    .Dividend        (Dividend      ), // Dividend:被除数。   [15:0]
    .Dividend_valid  (Dividend_valid)   // 被除数有效信号 
);



//----------------1、时钟、复信号、校正启动信号控制
initial 
begin
	   clk <= 1'b0;
	   reset <= 1'b1;
	   Dividend <= 16'd0;
	   Dividend_valid  <= 1'b0;
	#20  
      reset <= 1'b0;
    #20 
      Dividend <= 16'd533;
      Dividend_valid  <= 1'b1;  
end
 
always #5 clk =~clk;   //20ns一个周期,产生50MHz时钟源


endmodule

3 结果

vivado 除法器ip核的使用_第3张图片

你可能感兴趣的:(ViVado,IP的使用,数据处理,fpga开发)