LUT乘法器——查表乘法器
我们可以通过查表的方法,快速的实现乘法运算!
实际上,有以下公式:
我们只需要建立乘方表就可以了!
===================================================================================================================
因为涉及到整数的乘法运算,我们有必要了解一下补码的相关知识。
负数的加法要利用补码化为加法来做,减法运算当然也要设法化为加法来做。其所以使用这种方法而不使用直接减法,是因为它可以和常规的加法运算使用同一加法器电路,从而简化了计算机的设计。 补码减法的公式是:
| [x-y]补=[x]补-[y]补=[x]补+[-y]补 |
| ( 2.2.2 ) |
这里只要证明 - [y]补 = [ - y]补,上式即得证。现证明如下: ∵ [x]补 + [y]补 = [x + y]补 (mod 2) ∴ [y]补 = [x + y]补 - [x]补 (2.2.3) ∵ [x - y]补 = [x + ( - y)]补 = [x]补 + [ - y]补 ∴ [ - y]补 = [x - y]补 - [x]补 (2.2.4) 将式(2.2.3)与(2.2.4)式相加,得 [ - y]补 + [y]补 = [x + y]补 + [x - y]补 - [x]补 - [x]补 = [x + y + x - y]补 - [x]补 - [x]补 = [x + x]补 - [x]补 - [x]补 = 0 所以 | [-y]补=-[y]补即减去y补相当于加上-y的补 | (2.2.5)
|
不难发现,只要能通过[y]补求得[ - y]补,就可以将补码减法运算化为补码加法运算。 已知[y]补求[ - y]补的法则是:对 [y]补各位(包括符号位)取反且末位加1,就可以得到[ - y]补。
===================================================================================================================
于是有了一下的实验:
test5.zip
(5.81 MB, 下载次数: 4)
不过由仿真图如下:
我们发现当乘数为0时,算法发生了错误,主要因为两个八位二进制数加减运算扩展为九位二进制数时,符号位发生错误,为了避免这种错误,我们有了一下实验:
test5.1.zip
(5.82 MB, 下载次数: 5)
仿真图如下:
5从图中可以看到,程序已经正确!
[ 本帖最后由 wsdymg 于 2013-9-9 19:52 编辑 ] |