定点乘法器----基4booth算法

这篇具有很好参考价值的文章主要介绍了定点乘法器----基4booth算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 简介

本篇文章将介绍如何使用 基4 booth算法(赛题中介绍了)来生成部分积,在开始之前,简要介绍一下定点乘法器的计算流程:

乘数进行booth编码 —> 利用得到的编码值被乘数生成部分积 ----> 对部分积进行压缩求和。

基4 booth(后面简称为booth2)算法用来完成前面的两步。

ps: 有booth2就有booth1,它们大同小异,只不过booth1太垃圾了,感兴趣的可以自行了解。

二. booth2 编码

编码的过程很简单,将乘数的末尾补个0,然后三位三位为一组,通过公式计算出对应的值即可。如下图,末尾的0是补的,对8bit乘数来说,可以生成出4组数据。

定点乘法器----基4booth算法

然后将这4组数据,应用下面的这个公式,便可得到最终的4个编码值。

定点乘法器----基4booth算法

得到编码值之后,用每个编码值被乘数得到部分积,将部分积末尾不错对应数量的0即可。

编码值a,不需要补0,编码值b需要补充2个0,此时位宽为10bit,编码值c需要补充4个0,此时位宽为12bit,以此类推即可。

最后将部分积的符号位扩展一位即可,例如正数的符号位为0,那么就用00表示,负数的符号位为1,那么就用11表示。

定点乘法器----基4booth算法

boot2编码就这样完成了它的任务,至于为什么可以这样,可以参考下面的公式,来源于赛题,看懂就可以知道那个编码公式怎么来的了,以及补0操作(左移对应位数),非常简单是吧。

定点乘法器----基4booth算法

三. booth2 编码代码实现

通过booth2编码的真值表可以知道

组数为 000 或者 111 时 ,部分积为0

组数为 001 或者 010 时, 部分积就是被乘数

组数为 011 时, 部分积就是被乘数左移动一位

组数为 100 时,部分积就是被乘数左移动一位,然后取相反数

组数为 101 或者 110 时,部分积为被乘数的相反数。

总结可以发现,当组数的最高位为0时,被乘数不变,当组数的最高位为1时,需要对被乘数取反当组数的最后两位一样的时候,那么就需要对被乘数左移一位的操作。那么可以使用如下三个变量进行标记,当set0为1时,直接输出0,不用判断其他两个变量,否则需要判断。完整代码如下。

定点乘法器----基4booth算法

四. 部分积生成代码实现

首先,需要提前计算三个值-A,-2A,2A。

定点乘法器----基4booth算法

然后按照上面分析的,来生成部分积,这里将部分积扩展到了32bit,因为16bit乘16bit,结果的最大位宽为32bit。只截出了两个部分积,其余部分积依次类推。

定点乘法器----基4booth算法

至此 基4 booth算法介绍完毕,实现过程没有经过任何优化,和算法可以清晰对应上。当然,提前透露一下,最终效果延时比较高,效果不是很好,效果如图。

定点乘法器----基4booth算法

关注回复 : 定点乘法器基础版本
获取完整代码

下一篇,将介绍部分积的压缩。文章来源地址https://www.toymoban.com/news/detail-462229.html

到了这里,关于定点乘法器----基4booth算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • verilog编程之乘法器的实现

    知识储备 首先来回顾一下乘法是如何在计算机中实现的。 假设现在有两个32位带符号定点整数x和y,我们现在要让x和y相乘,然后把乘积存放在z中,大家知道,两个32位数相乘,结果不会超过64位,因此z的长度应该为64位。 z = x * y中,x是被乘数,在Verilog代码中 multiplicand表示

    2024年04月12日
    浏览(38)
  • Logism · 原码一位乘法器 实验

    8位无符号的原码一位乘法器的实现 通过时钟驱动右移,模拟运算过程 实现脉冲控制,位移指定次数后要及时停止 结果输出给到乘积隧道         A.掌握寄存器、分离器、比较器等一系列新的逻辑元件使用方法         B.学习并运用计算机原码乘法原理,在硬件电路中

    2023年04月25日
    浏览(42)
  • 流水线乘法器的原理及verilog代码

    二进制数乘法的显著特点就是可以将乘法转换为移位,乘2就是左移一位,乘2^n就是左移n位。而一个二进制数又可以看成是由若干个2的i次方的和。 设被乘数和乘数分别为M、N,且都是32位的二进制数,乘积结果为64位 的向量CO则 。 所以乘法可以由移位电路和加法器完成。计算

    2024年02月10日
    浏览(46)
  • 基于FPGA的任意位宽乘法器VHDL代码Quartus仿真

    名称:基于FPGA的任意位宽乘法器VHDL代码Quartus仿真(文末获取) 软件:Quartus 语言:VHDL 代码功能: 任意位宽乘法器 设计一个任意位宽乘法器,通过可调参数N,可以配置为任意位宽,N可以自由修改 可调参数N定义如下: N : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位

    2024年02月21日
    浏览(45)
  • 基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真

    名称:基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真(文末获取) 软件:Quartus 语言:Verilog 代码功能: Verilog HDL设计64bits算术乘法器 基本功能 1.用 Veriloghdl设计实现64bit二进制整数乘法器,底层乘法器使用16*168*88*328*16小位宽乘法器来实现底层乘法器可以使用FPGA内部P实现

    2024年02月19日
    浏览(54)
  • xilinx FPGA 乘法器ip核(multipler)的使用(VHDL&Vivado)

    一、创建除法ip核  可以选择两个变量数相乘,也可以选择一个变量输入数据和一个常数相乘 可以选择mult(dsp资源)或者lut(fpga资源) 可以选择速度优先或者面积优先 可以自己选择输出位宽 还有时钟使能和复位功能  二、编写VHDL程序:声明和例化乘法器ip核 三、编写仿真程

    2024年02月11日
    浏览(63)
  • 基于FPGA的3位二进制的乘法器VHDL代码Quartus 开发板

    名称:基于FPGA的3位二进制的乘法器VHDL代码Quartus  开发板(文末获取) 软件:Quartus 语言:VHDL 代码功能: 3位二进制的乘法器 该乘法器实现两个三位二进制的乘法,二极管LED2~LED0显示输入的被乘数,LED5~LED3显示乘数,数码管显示相应的十进制输入值和输出结果 本代码已在开

    2024年02月21日
    浏览(55)
  • m基于FPGA的半带滤波器verilog设计,对比普通结构以及乘法器复用结构

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA         HBF模块由半带滤波器(HBF)和抽取模块组成。该模块的任务是实现2倍抽取进一步降低信号采样速率。由于HBF的冲激响应h(k)除零点外其余偶数点均为零,所以用HBF实现2倍抽取可以节省一半的运算量,对增强软

    2023年04月08日
    浏览(80)
  • 计算机组成原理3个实验-logisim实现“七段数码管”、“有限状态机控制的8*8位乘法器”、“单周期MIPS CPU设计”。

    目录 标题1.首先是七段数码管   标题二:有限状态机控制的8*8位乘法器 标题三:单周期MIPS CPU设计 1看一下实验要求:    2.接下来就是详细设计: 1. 组合逻辑设计        由于7段数码管由7个发光的数码管构成,因为我们想用二进制将0-9这几个数字表示出来。所以他需要

    2024年01月17日
    浏览(50)
  • 补码一位乘法(Booth算法)

    在补码一位乘法的求解过程中我们需要的东西:[X]补,[Y]补以及被乘数的相反数的补码[-X]补 一.运算规则 1.符号位参与计算 2.采用补码进行计算 3.被乘数X 一般取双符号位参与计算,并且让部分积初始值为0,长度与被乘数X相同,乘数Y 可取单符号位 4.开始计算时,乘数Y 末尾

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包