基于FPGA的Booth算法乘法器_第1页
基于FPGA的Booth算法乘法器_第2页
基于FPGA的Booth算法乘法器_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Booth算法乘法器可以看做是一种“加码”乘法运算。这是数学角度的Booth算法。这里的B-1是什么意思呢?B的最右边的后面一位就称为B-1,假设B是2即4b0010。加上B-1位的效果就是4b0010_0。后边这个0是默认的。实现B0:-1时,可以将B对某个变量赋值,例N=B,1b1,此时的N1:0就是B0:-1。从数学的角度来看Booth算法是比较麻烦的,需要进行移位相加等操作。当从位操作的角度来看,Booth算法的优势就可以体现出来。这是位操作的Booth算法。设乘数和被乘数都为4位,即n=4。这里要建立一个P空间,容量为2*n+1,还要将p空间初始化,默认为0;第一步:先用补码的形式表

2、现出-1*被乘数,方便一会儿做减法,将p4:1填入乘数B,空出来的p0相当于前边的N0,即为了方便使用B-1;第二步:判断p1:0,因为已经将乘数B填入到P4:1,所以p1:0即对应的B0:-1;判断p1:0的值于上表对应,进行相应的操作。表中提到的加减被乘数,是要在p2n:n+1位进行,这个需要注意。所谓的p空间右移一位,高位需要补充一位。补充的这一位,要由进行加减被乘数以后的p8(p2n)决定,p8是1补充1,是0补充0;此步骤循环n次,最后结果取p8:1;相应核心代码(8位)case(i)0:begin a=A;s=(A+1b1);p=8d0,B,1b0;i=i+1b1;end/a寄存被

3、乘数,s寄存被乘数的补码,对p空间装填乘数B1:If(X=8) begin X=4d0;i=i+1b2;endelse if(p1:0=2b01) begin p=p16:9+a,p8:0;i=i+1b1;endelse if(p1:0=2b10)begin p=p16:9+s,p8:0;i=i+1b1;endelse i=i+1b1;在八次循环前对p1:0进行判断,然后进行相应的操作(加减被乘数)。2:begin p=p16,p16:1;X=X+1b1;end 对加减被乘数以后的p空间进行移位,并在高位进行补位,补位结果因p16而定。循环次数加一。3:endcase 对于八位的乘数和被乘数,位操作需要八个始终周期,而在此例程中,要先操作后移位,会多消耗八个时钟。可以适当改变,使得消耗的时钟缩短,将1,2在一个时钟内完成。即位操作和移位一步完成。P=p16,p16:9+a,p8:1,但是由于非阻塞赋值的缘故,此时的p16并不是进行位操作以后的p16,因此要适当的用阻塞赋值;R=p16:9+a;p=R7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论