在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2681|回复: 4

[求助] 请问大家在FPGA内如何更好的实现乘法,乘加的,是直接用* 还是用IPcore

[复制链接]
发表于 2020-9-11 18:30:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如果直接用*, 不可能1clock出结果吧?象下面的程序,out_y的latency时间会有可能与综合出来是LUT或DSP48E这个因素有关吧?
always@(posedge clk)  begin
if(reset) begin

    out_x <= 0;

    out_y <= 0;

end
else begin

    out_y <= in_y + (in_x * coeff);

    out_x <= in_x;

    end

end



如果用Multiplier-adder这种IPcore,他们本身的latency基本上固定而且可以修改,用这种方式,那岂不是要写状态机来得到乘积结果。

我要计算类似下面的式子
Xb(1)=Xa(1) + Xa(2)*C1+Xa(3)*C2 + Xa(4)*C3 + Xa(5)*C4 + Xa(6)*C5
Xb(2)=Xa(2)+Xa(3)*C1+ Xa(4)*C2 + Xa(5)*C3 + Xa(6)*C4

结果Xb(1),Xb(2)会作为输入,计算上述的式子。




发表于 2020-9-11 20:38:39 | 显示全部楼层
看你时序是否满足了,时序满足就偷懒直接用表达式吧,否则的话用ip实现,可能会增加latency,自己加pipeline逻辑
发表于 2020-9-13 00:21:43 | 显示全部楼层
1 可以直接用*, 综合器会选用DSP核来综合。
2 延时问题也不是大问题。如果担心乘法器周期太长,可以设置Multi Clock.
3 FPGA内部的乘法器位宽是固定的。在输入位宽大于IP核固定位宽时,位宽分配需要手动优化,如采用“karatsuba乘法”优化。
发表于 2020-9-14 14:43:41 | 显示全部楼层
推荐使用硬核乘法器,使用lut综合出来的乘法器,占用资源很大
发表于 2020-9-15 19:40:53 | 显示全部楼层
FPGA设计中应该尽量避免直接使用运算符。当然简单的计算也是可以用的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 12:44 , Processed in 0.022683 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表