问答网

当前位置: 首页 > 知识问答 > 乘法电路原理

乘法电路原理

知识问答 浏览5次

主流的数字乘法器是Booth乘法器,网上有Booth乘法器的HDL电路描述代码,你可以去看看它的原理。

简单来说就是模拟笔算中乘数和被乘数分别为(0,0)、(0,1)、(1,0)、(1,1)这四种情况下运算出来的中间值和规律,然后按照乘数的位置进行一定次数的左移位操作,最后汇总相加。

现代CPU为了优化,还会引入LUT查找表,也就是事先把8bit以内所有乘数可能的情况(2^8=256)计算出来然后存储在CPU内部的一个特殊的ROM里面,要计算的时候直接查找指定位置上的值是多少,那结果就是多少。

这个查找表如果足够大的情况下,计算8bit或者16bit以内的乘法可能只需要一个周期,因为本质上就是LUT查表,LUT表通常非常小所以寻址和访问速度极快,才能实现单周期乘法。

还有一种思路是根据 FPGA 的 Logic Element 规格,厂商根据不同芯片器件制定对应的“成本模型”,并且针对不同的乘数,使用不同的综合方案。

例如在数字电路中如果需要计算 n * 6 ,FPGA 综合器会根据目标器件的成本模型选择综合成 n << 2 + n + n 这种逻辑单元或者 n << 2 + n << 1 甚至更多方案,至于选择哪种方案,就会根据成本模型来决定,也就是计算到底是 << (左移位)更加节省 Logic Element 还是 - (减法,也就是补码加法)更加节省 Logic Element 来选择综合方案,而通常都是 shifter 比 adder 的电路面积会更小,所以后者方案应用更多。