之前说过一点加法器的内容,大致讲了几个简单的类型的加法器,好像没有说加法器可以同时做减法的,做减法的思路其实就是变成加上一个负数,比如说sum=a-b就变成了sum=a+(~b)+1;主要是运用了一点点逻辑上的转换。
今天简单介绍一点乘法器的内容,乘法器其实根本上也是运用了加法器的原理,只是不过是算每一个值的时候,采用移位的方式来实现单个bit相乘,然后再采用加法器来实现最终结果。比如说Mul=4’ba1a2a3a4 * 4’bb1b2b3b4这个值,Mul=a1*b4 + a2*b4 + a3*b4 + a4*b4+a1*b2+a2*b2+a3*b3+a4*b4+a1*b3+a2*b3+a3*b3+a4*b3+a1*b4++a2*b4+a3*b4+a4*b4,这样就相当于16个值加起来,然后比如说a1*b4这一项可以先把a1向左移动3个单位,可以用{a1,3’b0}的方式来移位。然后根据乘法器两个乘机项是否是有符号数来决定高位补全时采用补0或者符号位扩展的方式来添加项(wallance tree的思想)。首先介绍一个boothencode,第一种是采用radix-2的方式,比如说110这个值,可以用radix-2先在最低位补0,变成01100(有符号扩展符号位,无符号扩展0),然后采用radix-2编码00=>0,10=>-1,11=.>0,01=>1,整个数相当于变成了1000-0010这个值,类似的radix4的编码于此类似,可以百度或者google上查询,下次把那本经典的数字集成电路分享部分经典内容出来。然后wallance tree,是简化加法层数,提高乘法器速度的方式,比如说两个4-bit的a和,b相乘,最终除了四层数字,还有一组常数值,这一行可以添加到具体的wallance tree中来减少一层加法器数目,这样就是4层加起来,当然可以采用之前介绍的CRA来实现,不过会慢一些。Wallance tree简化层数的效果,比如说9层:9*2/3=6 第一层,;6*2/3=4第二层;4*2/3+1=3第三层;3*2/3=2第四层;1+1=result第五层,这样本来9层的结果变成了5层,当层数很多的时候效果会很明显。
除法一般有两种,restoring和non-restoring,具体的话,下次再写。
网友评论