Xilinx-IP核 数学运算IP核

一、加减法-Adder/subtracter

1.1 功能介绍

  • 加法、减法、动态加减切换
  • 支持位宽依据具体芯片配置
  • 可选进位in/out,以及溢出信号
  • 流水线支持-加快速度,进位链优化-减少资源占用
  • 支持有无符号位

1.2 设置界面

二、乘法器-Multiplier

2.1 功能介绍

  • 有/无符号运算,有&无符号混合运算
  • 支持位宽依据芯片资源配置
  • 支持流水线控制、时钟使能、复位信号等

2.2 使用场景对比

2.3 设置界面

三、复数乘-Complex Multiplier

3.1 功能介绍

  • 支持复数的乘法器

3.2 设置界面

四、坐标旋转-CORDIC(待学习)

4.1 功能介绍

  • Rotate:将(x, y)按 θ 旋转后的值
  • traslate:将二维坐标(x, y)转换为极坐标(r,θ)
  • sin & cos:
  • sinn & cosh
  • arctan & arctanh
  • square root

4.2设置界面

五、除法器-Divider

5.1 算法选择建议

5.2 设置界面

5.3 仿真

module divider_tb;

  // Declare signals
    reg                                 aclk                        ;// Clock signal
    reg                                 s_axis_divisor_tvalid       ;// Valid signal for divisor
    reg                [  15: 0]        s_axis_divisor_tdata        ;// Divisor data
    reg                                 s_axis_dividend_tvalid      ;// Valid signal for dividend
    reg                [  15: 0]        s_axis_dividend_tdata       ;// Dividend data
    wire                                m_axis_dout_tvalid          ;// Valid signal for the result
    wire               [  15: 0]        quotient                    ;// Result data
    wire               [  15: 0]        remainder                   ;// Result data
  // Instantiate the divider IP core
  
  div_gen_0 your_instance_name (
    .aclk(aclk),                                      // input wire aclk
    .s_axis_divisor_tvalid(s_axis_divisor_tvalid),    // input wire s_axis_divisor_tvalid
    .s_axis_divisor_tdata(s_axis_divisor_tdata),      // input wire [15 : 0] s_axis_divisor_tdata
    .s_axis_dividend_tvalid(s_axis_dividend_tvalid),  // input wire s_axis_dividend_tvalid
    .s_axis_dividend_tdata(s_axis_dividend_tdata),    // input wire [15 : 0] s_axis_dividend_tdata
    .m_axis_dout_tvalid(m_axis_dout_tvalid),          // output wire m_axis_dout_tvalid
    .m_axis_dout_tdata({quotient,remainder})            // output wire [31 : 0] m_axis_dout_tdata
  );





  initial begin
    aclk = 0;
    s_axis_divisor_tvalid = 'd1;
    s_axis_dividend_tvalid = 'd1;
    s_axis_divisor_tdata = 'd1;
    s_axis_dividend_tdata = 'd300;
  end

always#5 aclk=~aclk;
always @(posedge aclk ) 
begin
  s_axis_divisor_tdata <= s_axis_divisor_tdata + 'd1;
    s_axis_dividend_tdata <= s_axis_dividend_tdata + 'd1;
end

 



  initial begin
    $monitor("At time %t: Dividend = %d, Divisor = %d, Result = %d, Valid = %b", 
             $time, s_axis_dividend_tdata, s_axis_divisor_tdata, quotient, remainder);
  end

endmodule

输出是32位,高16为商,低16位是余数(本例选的小数模式)

延时与软件自动模式下的延时一致

全部评论

相关推荐

迈瑞 智能产线的上位机软件和算法 总包31w, 最低32w 硕士
菜鸟hh:在迈瑞实习过,好像新员工要先到深圳干一年,当时实习是信号处理算法工程师,基本上不怎么加班,而且好像没有35裁员,肉眼可见老前辈很多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务