- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Booth算法16位乘法器
西安电子科技大学 大三 集成电路设计与集成系统专业 尹俊镖
一 乘法器原理分析
16位有符号乘法器可以分为三个部分:根据输入的被乘数和乘数产生部分积、部分积压缩产生和和进位、将产生的和和进位相加。这三个部分分别对应着编码方式、拓扑结构以及加法器。
1 编码方式:
本设计采用booth2编码。
部分积是负数时S=1,部分积是正数时S=0;
当部分积是+0时,E=1,部分积是-0时,E=0,其余情况E=S取反。
2 拓扑结构:
本设计采用二进制树的拓扑结构。二进制树拓扑结构排列的较为规整,且部分积压缩的速度也非常快。
部分积压缩的目的是为了减小进位传播的延时,采用进位保留加法器,根据当前位信息产生下一位的进位,仅仅产生而没有进位行波传播,这样就可以把当前的多位压缩到较少的位数。经过几次压后,把部分积压缩成和以及进位。
部分积主要是通过counter和compressor进行压缩,通常使用(3:2)counter和(4:2)compressor。
(3:2)counter其实质就是一个全加器,进位输入为ci,进位输出为c;
(4:2)compressor可以由两个全加器组成,ci为进位输入,Coin为内部进位,输入到下一位的进位输入Ci,Coex为输出进位。
上图为二进制树的拓扑结构图,每4个部分积输入到一个(4:2)compressor中,产生两个输出,则8个部分积使用3次(4:2)compressor就可以得到和和进位。部分积的压缩方式可以见下图。
如图中所示,加上最后一个部分积的进位,共有9个部分积,本设计把最后的进位位移到第一个部分积上,使用5个全加器,把进位融合到第一个部分积,这样就转变成8个部分积了,再使用两级二进制树压缩,所以总共使用了三级压缩,最终得到部分积的和和进位。为了免去不必要的硬件开销,对于部分积边上的位采用counter压缩。上文提到的符号位扩展的改进方法,其目的也就是减少硬件开销,所以在不影响性能的情况下,单独出来部分积的边缘位是十分有必要的。
3 加法器
本设计采用超前进位加法器。为了使得乘法器的延时最小,最后一级的加法器采用传播延时最小的超前进位加法器。
超前进位加法器的原理及构成,在此不做详述。
二 仿真验证
对于16位乘法器的仿真验证,若采用穷举法,则有232种情况,验证次数太多,所以只能采用随机数的验证方法。产生两个随机数,加入到乘法器的两个输入端,如此循环10000次,若没有错误,则可以认为乘法器功能正确。
X,Y是产生的两个随机数,product是两数的乘积,product_check是用于验证结果是否正确。Count用于计数,循环10000次,error记录计算一万次错误的次数,若发生错误,则退出仿真。
三 源程序代码
1 Booth2 模块
module mul_16 (x,y,product); //generate partial product
input [15:0] x;
input [15:0] y;
output [31:0] product;
wire [19:0] pp1; //partial product
wire [20:0] pp2;
wire [20:0] pp3;
wire [20:0] pp4;
wire [20:0] pp5;
wire [20:0] pp6;
wire [20:0] pp7;
wire [19:0] pp8;
reg symb8; //ninth partial product
reg [16:0] tpp1;
reg [16:0] tpp2;
reg [16:0] tpp3;
reg [16:0] tpp4;
reg [16:0] tpp5;
reg [16:0] tpp6;
reg [16:0] tpp7;
reg [16:0] tpp8;
reg symb1;
reg symb2;
reg symb3;
reg symb4;
reg symb5;
reg symb6;
reg
文档评论(0)