基于FPGA的Booth算法乘法器.docx

基于FPGA的Booth算法乘法器.docx

ID:58863633

大小:58.23 KB

页数:3页

时间:2020-09-22

基于FPGA的Booth算法乘法器.docx_第1页
基于FPGA的Booth算法乘法器.docx_第2页
基于FPGA的Booth算法乘法器.docx_第3页
资源描述:

《基于FPGA的Booth算法乘法器.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Booth算法乘法器可以看做是一种“加码”乘法运算。这是数学角度的Booth算法。这里的B[-1]是什么意思呢?B的最右边的后面一位就称为B[-1],假设B是2即4’b0010。加上B[-1]位的效果就是4’b0010_0。后边这个0是默认的。实现B[0:-1]时,可以将B对某个变量赋值,例N<={B,1’b1},此时的N[1:0]就是B[0:-1]。从数学的角度来看Booth算法是比较麻烦的,需要进行移位相加等操作。当从位操作的角度来看,Booth算法的优势就可以体现出来。这是位操作的Booth算法。设乘数和

2、被乘数都为4位,即n=4。这里要建立一个P空间,容量为2*n+1,还要将p空间初始化,默认为0;第一步:先用补码的形式表现出-1*被乘数,方便一会儿做减法,将p[4:1]填入乘数B,空出来的p[0]相当于前边的N[0],即为了方便使用B[-1];第二步:判断p[1:0],因为已经将乘数B填入到P[4:1],所以p[1:0]即对应的B[0:-1];判断p[1:0]的值于上表对应,进行相应的操作。表中提到的加减被乘数,是要在p[2n:n+1]位进行,这个需要注意。所谓的p空间右移一位,高位需要补充一位。补充的这一位

3、,要由进行加减被乘数以后的p[8](p[2n])决定,p[8]是1补充1,是0补充0;此步骤循环n次,最后结果取p[8:1];相应核心代码(8位)case(i)0:begina<=A;s<=(~A+1’b1);p<={8’d0,B,1’b0};i<=i+1’b1;end//a寄存被乘数,s寄存被乘数的补码,对p空间装填乘数B1:If(X==8)beginX<=4’d0;i<=i+1’b2;endelseif(p[1:0]==2’b01)beginp<={p[16:9]+a,p[8:0]};i<=i+1’b1;e

4、ndelseif(p[1:0]==2’b10)beginp<={p[16:9]+s,p[8:0]};i<=i+1’b1;endelsei<=i+1’b1;在八次循环前对p[1:0]进行判断,然后进行相应的操作(加减被乘数)。2:beginp<={p[16],p[16:1]};X<=X+1’b1;end对加减被乘数以后的p空间进行移位,并在高位进行补位,补位结果因p[16]而定。循环次数加一。3:…………endcase对于八位的乘数和被乘数,位操作需要八个始终周期,而在此例程中,要先操作后移位,会多消耗八个时钟。

5、可以适当改变,使得消耗的时钟缩短,将1,2在一个时钟内完成。即位操作和移位一步完成。P<={p[16],p[16:9]+a,p[8:1]},但是由于非阻塞赋值的缘故,此时的p[16]并不是进行位操作以后的p[16],因此要适当的用阻塞赋值;R=p[16:9]+a;p<={R[7],R,p[8:1]};这样就可以将1,2在一个时钟内完成,因此这样改进以后的Booth算法乘法器会缩短所消耗的时钟。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。