分母为定值的除法器实现求助
看你的精度要求,可以通过查表来实现
要速度快且精度高,不管面积,用查表。
要面积小且精度高,速度略慢,用移位减法。
要速度快且面积小,误差可以接受,使用定点除法近似,误差比例取决于你的被除数尺度。
取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位。
