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位是余数(本例选的小数模式)

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

全部评论

相关推荐

05-12 18:24
长安大学 UE4
因为是家里第一代大学生,报专业报学校都没人可以指导,只能自己看着来毕业找工作,父母只知道考公务员啊考教师啊,丝毫不考虑难度我说要去大城市打工才行,小县城对学历没有需求,开的工资都很低,两三千养活不了的结果都不同意我去大城市,觉得北上广深远,不稳定,一年到头不着家,养这么大孩子算白养了要我怎么办,不考公不考编就是死路一条呗,出去打工就是不孝呗可是考公考编也好难,考上也是小职员,到时候又变成了家里第一代体制内了,不还是样样靠自己有时候很羡慕同学,要去大城市打拼,家里都很支持去看看外面的世界也羡慕同学父母都是体制内的,考上还有所依靠家里没有办法给予帮助,简直是进入死胡同一样
Two_Shadow:你先拿到offer,路是自己走的,你真去了谁拦得住你呢,不用给自己扣帽子,我也是我家第一代大学生啊,农村人,高考96个志愿我就填50多个计算机,爸妈让我填满保底我说我不,我就学计算机,上大学了让我考研我说我不考,我就喜欢干活,现在签了offer,他们也释怀,不回家就努力提升自己,就往家里打钱,就开视频,还能怎么样呢,路是自己走的,他们只是希望你能走得好一点,但大部分父母,尤其是农村父母根本帮不了你什么,难道你就不走路了吗,希望能骂醒你,不要想太多做太少。
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务