verilog 为什么乘法器写的那么复杂? 不是这样写也可以吗 assign c = a * b;

如题所述

现在很多的数据存储在ram里是以补码形式存储的,现在a和b都是补码表示,乘法之后还需要是补码,如果你用*号,那乘法之前需要求补码,乘法之后需要再求补码,岂不是很麻烦,还会占用额外的面积和延时。用verilog写一个wallance-booth乘法器,直接是补码乘法器,便可以直接乘法了。
综合工具里面一般都有乘法器,当然那是最优化的,面积和延时还有功耗都是最优的,但是不知道这些乘法器是不是补码乘法器,如果不是,还是需要代码里面做补码运算的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-31
直接用*其实就是调用了硬件内部的乘法器,可是有些不带乘法器的就只能用语言实现,也就会看到你所说的复杂代码了
第2个回答  2011-10-30
以前综合工具不支持乘法器。