组合逻辑之乘法器的4种方法——并行、移位相加、查找表和加法树
并行乘法器
采用并行乘法设计的乘法器,在Verilog中直接采用 * 设计,这种方法设计出来的乘法器需要根据综合工具得到乘法结果,往往这种算法都是比较差的算法。
特点:
由乘法运算符描述、由EDA软件综合
运算速度快、耗用资源多
移位相加乘法器
移位相加的原理
从被乘数的最低位开始判断,若为1,则乘数左移i(i=0,1(width-1))位后,与上一次和进行相加,若为0,则乘数左移i位后,以0相加。直到被乘数的最高位。
实际是由移位运算和加法运算构成。比较高速。
优点:
占用资源较少,主要在低速信号处理中
缺点:
串行乘法器的速度比较慢,一个结果输出需要更多的时钟周期。在高位宽的乘法运算中非常明显。
查找表乘法器
查找表乘法器原理:
先将乘法的所有可能结果存储起来,然后将两个相乘的数据组合起来作为“地址”找到相应的结果。
例如:
设A,B为两个2位二进制数,则A,B各有4种取值可能,乘积有4*4=16种可能(排除重复的其实只有8种可能),我们先将{A,B}对应的16种可能结果存储起来,然后对于每一特点的输入组合{A,B},找到对应的输出即可。
查找表乘法器特点:
该方式速度很快,只取决于读取存储器的速度,但是预存结果要占用较多资源,因此是面积换取速度思想的体现。
随着乘数位宽的增加,需要存储的结果迅速增加,不利于实现,因此该方式适用于位宽很小的情况。但是我们可以将高位宽的数据分解成低位宽的数据再调用查找表乘法器。
适用情况:适合位数较小的乘法,特别适合有一个乘数为固定的乘法。
加法树乘法器
能在一个时钟周期即可完成乘法运算(但是个人认为和移位相加乘法器区别不大,原理类似)。