微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 分母为定值的除法器实现求助

分母为定值的除法器实现求助

时间:10-02 整理:3721RD 点击:
现在有分母denom为一定值100,分子numer,要求他们的商quotient,余数不用管,有什么简单的实现方法吗?不能用自带的除法器IP核,请大家帮忙!

看你的精度要求,可以通过查表来实现

要速度快且精度高,不管面积,用查表。
要面积小且精度高,速度略慢,用移位减法。
要速度快且面积小,误差可以接受,使用定点除法近似,误差比例取决于你的被除数尺度。
取1/128+1/512,约等于0.009765625。
当你的被除数=511时,商=3,误差41.29%。
当你的被除数=1024时,商=10,误差2.34%。
-------------------------
要快速实现高精度,直接用FPGA的IP。



   被除数16位,除数8位(是个定值),只要求得到商就行,不要求余数,这样是不是就不要求什么精度呢,上次在网上找到一个除法器算法,是被除数8位,除数4位的,用的是移位,后来改了一下,改成16位和8位的,但是结果不正确,难道这个算法不通用吗?我现在不能用IP核是因为用后时序不收敛,暂时没办法解决,所以要用一除法算法替换



    移位除法可行。



    先拓展位宽,乘12,再右移十位。这样精度应该够。

这里碰到高人了,请教:
我在用core generator 产生一个除法器后例化、仿真。之前查看仿真结果一直没问题,今天除法器突然输出全为零了,我也不知道是因为改动了哪里
综合时提示:
WARNING:Xst:616 - Invalid property "SYN_BLACK_BOX 1": Did not attach to divider.
WARNING:Xst:616 - Invalid property "SYN_NOPRUNE 1": Did not attach to divider.

请求有经验的前辈指点一下,万分感谢!



    1/100 = 0.01;
    round(1024*0.01)/1024 = 10/1024 =  0.009765625;
    round(1024*1024*0.01)/1024/1024 = 10485/1024/1024 = 0.00999927520751953125;
精度够了吗?
  分母是定值的除法都可以转换成乘法。


   您写的小弟不是很懂,呵呵,恕我愚钝,能不能讲详细一点,另外round函数fpga里有吗?另外函数里面乘以0.01是什么意思,恕我学的东西太少,见笑了!



   谢谢你热心的帮助



    分母为定值的除法,可以转换成乘法,乘以一个小数,可以把这个小数放大2^N次方倍,然后截取整数,最后右移N位。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top