乘法器与除法器
课程主要介绍了两种版本的乘法器和除法器,分别是“直观表达版”和“面积优化版”。
本质上讲,乘法就是加法,除法就是减法。
所以,在第一版的乘法器和除法器中,最核心的要点:
- 乘法:从小往大加,即从低位到高位(乘数个位为低位)取出值(0或者1),如果是1那么就将被乘数照抄下来,然后被乘数向高位移动一位(二进制中乘2,即低位补0),如果是0直接跳到这一步(省略了将全部的0照抄)。由此通过由小到大的加法实现乘法的计算。
- 除法:思路,不过这里是先除掉大的,再除小的,即由大到小,具体的实现,就是让除数每次向低位移动一位(二进制的除以2,即低位去掉一个),所以商的形成就是先高位后低位。整个过程就是不断地做减法。
关于“面积优化的改良版”
改良的地方就在于:由于是通过移位做加法和减法,来实现乘法和除法的,所以对于刚才“直观表达版”而言:需要两倍的位数来存放被乘数、乘积或者除数和余数。而移位是相对的,A相对B向右等同于B相对于A向左。
所以就有了:
- 乘数与乘积结合且增加右移(原本是被乘数左移),被乘数寄存器、ALU面积减半的改良版乘法器。
- 商与余数相结合且增加双向移位(可能左移过了要移回来,原本是除数右移),除数寄存器、ALU面积减半的改良版除法器。
总结一点
理解乘法器和除法器的本质:它们就是移了位的加减法,而优化的措施是考虑哪些能够共用资源,那么结合在一起。