微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 除3取整电路一般怎么做?

除3取整电路一般怎么做?

时间:12-12 整理:3721RD 点击:
比方32bits数除三
希望低延迟吧,不要一个个周期迭代的那种做法

蒙哥马利算法

这哥们儿是不是研究rsa加速的那位

好高大上

对,窝总说的rsa里面的蒙哥马利算法基本就是最快的了

学习成本太高,我还是泰勒展开移位加吧

分段查表,比如, 分成4段,
每段9个BIT,然后处理,32/3 一个周期应该能完成的,通常

我仔细想了一下,把除法变成乘法, a/3=a*0.33(0.25+0.0625+...)
后来就变成32 BIt数的移位加法了,很简单,你按照直接写RTL,工具自己也能帮你优化

与楼上说的类似,把除3变成乘0.333333,变成一串数的加。
然后用Carry Save Adder来把这些部分积变成2个,再用一个CPA搞定。

使用蒙哥马利算法,可以把除以3,变成乘以“3的逆”。
这样就变成了乘法运算,可以准确算出商和模。
而3是常量,不是变量,3的逆是很容易求出来的,即3x (mod2^32) = 1,求x。

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

网站地图

Top