一种Booth乘法器及其运算方法与流程

文档序号:24735232发布日期:2021-04-20 19:28阅读:来源:国知局

技术特征:
1.一种booth乘法器,其特征在于,包括:初步译码模块,连接数据输入设备,用于对输入的乘数和被乘数进行初步译码,得到部分积,并对所述部分积进行正负标记,得到正负标志信号;修正译码模块,连接所述初步译码模块,用于根据正负标志信号对所述部分积进行分类处理,再根据分类结果,对所述部分积进行修正译码处理,得到修正部分积;4

2压缩单元,连接所述修正译码模块,用于对所述修正部分积进行两级4

2压缩处理,得到压缩部分积;32位超前进位加法器,连接所述4

2压缩单元,用于计算所述压缩部分积的和值,所述和值为最终的乘积结果;信号控制模块,分别连接所述修正译码模块、所述4

2压缩单元和所述32位超前进位加法器,用于根据正负标志信号,确定取补操作中所需“加1”的个数,并向所述4

2压缩单元和所述32位超前进位加法器发送控制信号,控制所述4

2压缩单元和所述32位超前进位加法器执行相应的取补操作;所述取补操作包括按位取反操作和“加1”操作。2.根据权利要求1所述的booth乘法器,其特征在于,所述初步译码模块对输入的乘数和被乘数进行初步译码,得到部分积,并对所述部分积进行正负标记,得到正负标志信号,具体包括:对16位乘数的低8位和高8位同时进行基于radix

4的booth初步译码,输出8个初步32位部分积,定义低8位输出的部分积为i0~i3,高8位输出的部分积为i4~i7;设被乘数为a,则初次译码后得到的所述部分积有0,a,2a三种情况,对每个所述部分积进行正负标记,输出正负标志信号sign
n
,n为0~7的整数,正负标志信号sign0~sign7与部分积i0~i7相对应;当所述部分积是正数时,则所述初步译码模块输出所述部分积的原值,同时正负标志信号sign
n
输出低电平“0”;当所述部分积是负数时,则所述初步译码模块输出所述部分积的绝对值,同时正负标志信号sign
n
输出高电平“1”。3.根据权利要求2所述的booth乘法器,其特征在于,所述修正译码模块根据正负标志信号对所述部分积进行分类处理,再根据分类结果,对所述部分积进行修正译码处理,得到修正部分积,具体包括:当所述部分积i0~i7都为正时,则将所述部分积作为修正部分积直接输出给所述4

2压缩单元;当所述部分积i0~i7都为负时,计算所述部分积i0~i7的绝对值的乘积,然后对乘积进行取补操作;当所述部分积i1~i3中至少有一个为正时,将负部分积按位取反,同时利用正负标志信号sign1~sign3计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到任意一个正部分积的尾部;当所述部分积i4~i7中至少有一个为正时,将负部分积按位取反,同时利用正负标志信号sign4~sign7计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到任意一个正部分积的尾部;当所述部分积i4~i7全为负,i1~i3非全负时,则将i1~i3中的负部分积按位取反,同时
利用正负标志信号sign1~sign3计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到i1~i3中任意一个正部分积的尾部;i4~i7的处理根据[x]

+[y]

=[x+y]

原理,对i4~i7的和值进行取补操作,取补操作在压缩处理后进行,i4~i7依旧输出正值;当所述部分积i0~i3全为负,i4~i7非全负时,则将i4~i7中的负部分积按位取反,同时利用正负标志信号sign4~sign7计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到i4~i7中任意一个正部分积的尾部;i0~i3的处理根据[x]

+[y]

=[x+y]

原理,对i0~i3的和值进行取补操作,取补操作在压缩处理后进行,i0~i3依旧输出正值;当所述部分积i1~i3为负,i0为正时,i1~i3取反输出,i0直接输出正值。4.根据权利要求1所述的booth乘法器,其特征在于,所述4

2压缩单元包括第一4

2压缩器和第二4

2压缩器,所述第一4

2压缩器分别与所述修正译码模块、所述第二4

2压缩器连接,所述第二4

2压缩器还与所述32位超前进位加法器连接;所述第一4

2压缩器用于对所述修正部分积进行第一级4

2压缩处理,所述第二4

2压缩器用于对第一级4

2压缩处理结果进行第二级4

2压缩处理。5.根据权利要求4所述的booth乘法器,其特征在于,所述booth乘法器还包括数选器,所述数选器包括第一数选器和第二数选器;所述第一4

2压缩器经所述第一数选器与所述修正译码模块相连接,所述第二数选器与所述32位超前进位加法器相连接,所述第一数选器和所述第二数选器还分别与所述信号控制模块相连接;所述第一数选器用于从所述压缩部分积中进行数据选择,使被选择的所述压缩部分积进入所述第二4

2压缩器进行第二级4

2压缩处理;所述第二数选器用于从所述32位超前进位加法器的输出结果或者对所述输出结果进行取补操作后得到的数值中进行数据选择,将选择的数据作为最终的乘积结果;所述信号控制模块向所述第一数选器和所述第二数选器下发控制信号,控制所述第一数选器和所述第二数选器进行数据选择。6.根据权利要求5所述的booth乘法器,其特征在于,所述booth乘法器还包括反相器,所述反相器包括第一反相器和第二反相器;所述第一反相器分别与所述第一4

2压缩器、所述第一数选器连接,所述第二反相器分别与所述32位超前进位加法器、所述第二数选器连接;所述第一反相器用于对所述压缩部分积进行按位取反,所述第二反相器用于对所述32位超前进位加法器的输出结果进行按位取反。7.根据权利要求6所述的booth乘法器,其特征在于,所述初步译码模块设置有2个,所述信号控制模块、所述32位超前进位加法器以及所述修正译码模块均仅有1个,所述第一4

2压缩器设置有2个,所述第二4

2压缩器设置有1个,所述第一数选器、所述第一反相器均设置有4个,所述第二数选器、所述第二反相器均设置有1个。8.一种booth乘法器的运算方法,其特征在于,包括:对输入的乘数和被乘数进行初步译码,得到部分积,并对所述部分积进行正负标记,得到正负标志信号;根据正负标志信号对所述部分积进行分类处理,再根据分类结果,对所述部分积进行修正译码处理,得到修正部分积;
根据正负标志信号,确定取补操作中所需“加1”的个数,并执行相应的取补操作;所述取补操作包括按位取反操作和“加1”操作;对所述修正部分积进行两级4

2压缩处理,得到压缩部分积;计算所述压缩部分积的和值,所述和值为最终的乘积结果。9.根据权利要求8所述的booth乘法器的运算方法,其特征在于,所述对输入的乘数和被乘数进行初步译码,得到部分积,并对所述部分积进行正负标记,得到正负标志信号,具体包括:对16位乘数的低8位和高8位同时进行基于radix

4的booth初步译码,输出8个初步32位部分积,定义低8位输出的部分积为i0~i3,高8位输出的部分积为i4~i7;设被乘数为a,则初次译码后得到的所述部分积有0,a,2a三种情况,对每个所述部分积进行正负标记,输出正负标志信号sign
n
,n为0~7的整数,正负标志信号sign0~sign7与部分积i0~i7相对应;当所述部分积是正数时,则输出所述部分积的原值,同时正负标志信号sign
n
输出低电平“0”;当所述部分积是负数时,则输出所述部分积的绝对值,同时正负标志信号sign
n
输出高电平“1”。10.根据权利要求9所述的booth乘法器的运算方法,其特征在于,所述根据正负标志信号对所述部分积进行分类处理,再根据分类结果,对所述部分积进行修正译码处理,得到修正部分积,具体包括:当所述部分积i0~i7都为正时,则将所述部分积作为修正部分积直接输出;当所述部分积i0~i7都为负时,计算所述部分积i0~i7的绝对值的乘积,然后对乘积进行取补操作;当所述部分积i1~i3中至少有一个为正时,将负部分积按位取反,同时利用正负标志信号sign1~sign3计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到任意一个正部分积的尾部;当所述部分积i4~i7中至少有一个为正时,将负部分积按位取反,同时利用正负标志信号sign4~sign7计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到任意一个正部分积的尾部;当所述部分积i4~i7全为负,i1~i3非全负时,则将i1~i3中的负部分积按位取反,同时利用正负标志信号sign1~sign3计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到i1~i3中任意一个正部分积的尾部;i4~i7的处理根据[x]

+[y]

=[x+y]

原理,对i4~i7的和值进行取补操作,取补操作在压缩处理后进行,i4~i7依旧输出正值;当所述部分积i0~i3全为负,i4~i7非全负时,则将i4~i7中的负部分积按位取反,同时利用正负标志信号sign4~sign7计算负部分积的个数,负部分积的个数即为需要“加1”的个数,将需要“加1”的个数这一数值转化为二进制数,添加到i4~i7中任意一个正部分积的尾部;i0~i3的处理根据[x]

+[y]

=[x+y]

原理,对i0~i3的和值进行取补操作,取补操作在压缩处理后进行,i0~i3依旧输出正值;当所述部分积i1~i3为负,i0为正时,i1~i3取反输出,i0直接输出正值。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1