1.超前进位加法器

看了一些面经,提到会让你用基础的门搭加法器,因此首先得熟悉半加器,全加器等最基础的加法器才能理解之后的超前进位加法器,树型加法器等复杂的加法器。

半加器的输入为a,b,输出为结果s和进位c,则其关系为

全加器的输入多了一个进位cin,输出为结果位s和进位输出cout,则其关系为

使用多个全加器级联,把每一级的进位输出作为下一级的进位输入即构成了行波进位加法器,其加法过程是很好理解的,就是从最低位开始一位一位运算,并且把低位的进位加到高位上,与手算的思路是一致的。其结构如图所示。

但若是画出其门级的电路图我们会发现,由于采用级联结构,行波进位加法器的关键路径非常长,N比特行波进位加法器的最长路径位

个门电路延迟,在高速处理器中将极大地限制电路的性能。因此诞生了超前进位加法器以改善关键路径,其主要思想是将所有的进位都并行进行,为此需对原始的加法器计算公式做一些改动。令

则对于N比特超前进位加法器,其结果位和进位可写成如下的形式

则通过迭代

的表达式,可将其写成只包含
的表达式,从而完成并行计算。以4bit超前进位加法器为例,其进位链公式计算如下

则对应的,超前进位加法器结构如图所示。

对于更大位宽的,例如32,64bit的加法运算,为了避免造成电路的扇入扇出过大,会用多个4bit超前进位加法器级联,从而获得一个折中的解决方案。

从关键路径上来看,4bit超前进位加法器的进位都只需要经过3级门电路延迟即可得到,相比较于行波进位加法器有巨大的优势,即使级联构成更大位宽的加法器仍然缩短了关键路径的长度。

2.Wallace树型结构

话说这Wallace是不是该翻译成华莱士呢,嗯~亦可赛艇啊。

要理解Wallace树需要先理解进位保存加法器。进位保存加法器以三个树作为输入,输出两个数,这两个数相加即为最终的加法结果,因此进位保存加法器相当于进行了一次压缩过程,将三个数的加法压缩为两个数的加法。然而进位保存加法器并不是什么新奇的黑科技,而是全加器的一个变形,如下图所示。

从图中可以看出,进位保存加法器就是对全加器进行重新包装。

熟悉了进位保存加法器后我们就可以来看Wallace树型结构了,其总体结构如下图所示。

可以看出,树型结构就是将多个加数分组,每三个分为一组后,经过进位保存加法器压缩为2个数,如此迭代循环得到最终加法的结果。

在乘法器中,乘法的积是多个部分和之和,若使用普通加法器,则需等待前面的部分和计算完成才能计算后面的部分和,延迟较高,因此可以使用Wallace树型结构,对部分和进行分组计算得到最后的总和结果,即为乘法的积。

3.Booth乘法器

若是用补码表示一个数,则其转换为十进制的计算方式为

将其展开,并令

,则可以得到

此时再计算乘法

可得

从上式可以看出,这样变化的优势是若B的某相邻两位相同,则可以省去运算而只进行移位即可。如果

,则为
,如果
,则为
,从而简化了运算过程。

以上是Radix-2 Booth算法的推导,其算法流程如下

1.被乘数和乘数分别放入A,B寄存器,中间结果放入M,B寄存器。
2.另设置一个1bit的

寄存器。将M,
寄存器初始为0。

3.在每个周期检查

寄存器。

4-1.若

= 00 或 11,将{
}直接右移1bit。

4-2.若{

} = 01,则A与M相加,将{
}直接右移1bit。

4-3.若{

} = 10,则A与M相减,将{
}直接右移1bit。

5.最终的结果即为{M,B},是乘法积的补码表示。

需要注意的是,上述所有数都是补码表示,且上述右移操作需保留符号位,即保持M的最高位不变。

在实际应用中较常用的是Radix-4 Booth乘法器,与Radix-2类似,其算法可通过原始的补码计算式展开得到

上式中的

设置为0。Radix-4 Booth编码表如下表所示。

不难看出,相较于Radix-2 Booth算法,Radix-4 Booth算法需要的循环次数更少,因此在实际中应用更加广泛。

参考链接

关于乘法器和加法器,如下的专栏讲述的非常详细,可以作为参考。

纸上谈芯:【HDL系列】超前进位加法器原理与设计​zhuanlan.zhihu.com

纸上谈芯:【HDL系列】乘法器(4)——图解Wallace树​zhuanlan.zhihu.com

纸上谈芯:【HDL系列】乘法器(5)——Radix-2 Booth乘法器​zhuanlan.zhihu.com

纸上谈芯:【HDL系列】乘法器(6)——Radix-4 Booth乘法器​zhuanlan.zhihu.com

原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...相关推荐

  1. 异步fifo_数字IC校招基础知识点复习(五)——跨时钟域涉及part2(异步FIFO)

    1.跨时钟域设计(CDC)-part 2 在上一篇中我们主要关注的是单比特的控制信号,而对于多比特信号的跨时钟域传输则需要一些其他的手段. 首先需要明确的是,一般不采用对多比特信号中的每个比特单独使用 ...

  2. 超前进位加法器实验报告_北科大第二次计组实验报告超前进位加法器.doc

    北科大第二次计组实验报告超前进位加法器 北京科技大学 计算机与通信工程学院 实 验 报 告 实验名称: 超前进位加法器 学生姓名: 专 业: 计算机科学与技术 班 级: 学 号: 指导教师: 实验成绩 ...

  3. 超前进位加法器实验报告_北科大第二次计组实验报告超前进位加法器

    北科大第二次计组实验报告超前进位加法器 北京科技大学 计算机与通信工程学院实 验 报 告实验名称: 超前进位加法器 学生姓名: 专 业: 计算机科学与技术 班 级: 学 号: 指导教师: 实验成绩: ...

  4. 原码一位乘法器设计_对原码、反码和补码的加深理解

    我们知道计算机语言可以简单概括为三类,分别是机器语言.汇编语言和高级语言.机器语言是由二进制组成的编码,由无数个0和1组成.在二进制系统中,每个0或1就是一个位,而位是数据存储的最小单位,可称之为比特 ...

  5. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  6. 一位原码的乘法规则_原码一位乘法与补码一位乘法

    原码1位乘法 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得到.而乘积的数值部分则是两个正数相乘之积.设n位被乘数和乘数用定点小数表示(定点整数也相同适用) 被 ...

  7. 【细碎知识2】定点数的乘除运算(原码一位乘、恢复余数法、加减交替法)

    目录 1.定点数的乘法 1.1 原码一位乘 2.定点数的除法 2.1 恢复余数法 2.2 加减交替法 2.3 比较恢复余数法和加减交替法 方法要搭配例题一起看,才能看懂 1.定点数的乘法 定点数的乘法 ...

  8. 原码 反码 换算工具 补码_原码/反码/补码在线计算器

    原码/反码/补码计算器,在线计算给定整数的原码/反码/补码. 原码, 反码和补码的概念 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 原码 ...

  9. 【计算机组成原理】定点乘法运算之原码两位乘法

    讨论x * y = z 采用原码两位乘法,已知x和y,如何求得z 原码两位乘法和原码一位乘法一样,符号位不参加运算 部分积和被乘数x均采用三位符号,乘数y末位每次要加一个c,c一开始是0 根据如下法则 ...

最新文章

  1. 建立FPGA深度学习加速生态圈,为人工智能赋能
  2. 虚拟机ubuntu启动代码界面_Windows10下使用虚拟机安装Ubuntu18.04
  3. 长春8中2021年高考 成绩查询,长春八中2018高考喜报成绩、本科重本上线人数情况...
  4. VMware-使用VMware在本地搭建多个CentOS虚机
  5. Windows未能启动,原因可能是最近更改了硬件或软件,解决此问题的步骤
  6. 【转】typedef函数指针的用法(C++)
  7. 【数据分析实例】6000 条倒闭企业数据分析
  8. php读取pdf文件
  9. RequestParam注解
  10. 我的做题日志(1),来源:COCI2017,SDOJ
  11. Spring为啥默认把bean设计成单例的
  12. 雷军接连退出多家小米关联公司董事职务
  13. git rebase branch内部调整 调整commit顺序
  14. Arduino蓝牙无线自动下载程序
  15. spring bean作用域之间有什么区别
  16. 凯立德地图导航2022年懒人包 安卓版
  17. 微信小程序云开发数据库update函数更新不了数据(已解决)
  18. tplink 无线打印服务器,tplink打印服务器设置
  19. Cookie、Session、Token、JWT
  20. 云原生中间件RocketMQ-消费者消费模式之广播模式、偏移量offset解析

热门文章

  1. 移动短信回执怎么开通_才知道移动积分需要主动开通功能,才会消费产生积分,垃圾!!!...
  2. 机器学习中防止过拟合的方法总结
  3. OpenCV与图像处理学习八——图像边缘提取(Canny检测代码)
  4. TensorFlow的基本介绍及Hello,world
  5. C语言中#define中的一些特殊用法
  6. TFRecords文件的存储与读取
  7. 基于PCA的人脸特征抽取
  8. windows网络版象棋的实现
  9. 数独java界面基础_java版数独游戏界面实现(二)
  10. linux 和服务通讯,Android 的Activity和Service之间的通信