当前位置: 首页 > article >正文

定点乘法器----部分积压缩(华为杯)

一. 简介

在上篇文章中,已经介绍了如何使用booth算法生成部分积了,那么在这篇文章中将介绍如何使用加法树对部分积进行压缩。加法树压缩有多种形式,常见的是Wallace压缩,也是赛题中介绍一种方法。
感兴趣的可以,可以研究研究哦。

二. Wallace压缩

在Wallace压缩中,常见的压缩方法有3:2压缩和4:2压缩,罕见的有5:2压缩。

3:2压缩的表达式和框图如下

请添加图片描述

4:2压缩的表达式和框图如下

请添加图片描述

5:2的就不介绍了,这里详细说说4:2压缩器,因为经过的算法,生成的部分积恰好有8个,经过三个4:2压缩器就可以了。而使用3:2压缩则需要更深的结构,因此在我的设计中没有使用。

4:2压缩就是输入1bit的4个数据以及1bit进位,然后输出1bit的两个数据和一个进位。我们需要32bit的压缩器时,只需要将1bit的4:2压缩级联起来即可,上一个的Cout输入到下一个的Cin即可。最后的结果需要将Carry左一位。代码实现起来如下。

请添加图片描述

就将4个部分积压缩到了两个部分积,使用三个这样的压缩器,最终就得到了2个部分积。

压缩这里为什么不直接使用加法器呢?通过压缩器的结构即可明白。

三. 结果

最后使用一个32bit的加法器,将最后两个部分积相加即可。这里使用了四个8bit的超前进位加法器串联成的32bit加法器。超前进位加法器可以有效减少因为进位而带来的延时。

ps: 另外可以通过选择加法器,增加额外的两个8bit加法器,以及一个选择器,进一步降低延时。

请添加图片描述

四. 小结

简单的介绍了一下定点乘法器的实现原理,以及实现过程。在此框架下想要对乘法器的性能进行优化,一般都是从两点出发,部分积的生成和部分积的压缩,在知网阅读相关论文,大部分都是从这两点进行优化。后面我也将从这两点进行优化以及程序上,希望能有所提升。

目前整个设计大概消耗了2100多个与非门 和 800多个非门(转化为与非门)使用yosys工具可以自动统计,使用DC工具综合出只使用了800多个门,计算延时为16ns(在FPGA上),仿真图如下。还达不到比赛的要求,后续会分享优化的版本。感兴趣的可以一起研究研究。

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

请添加图片描述


http://www.kler.cn/a/6195.html

相关文章:

  • Eplan 布局图中的宏/设备/安装板比例缩放
  • 简单使用linux
  • 戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?
  • 庐山派K230学习日记1 从点灯到吃灰
  • 天猫推荐数据集实践
  • 面试题:@Transactional 注解在自调用情况下会失效原因
  • volatile、synchronize的特点和区别
  • python_接口自动化测试框架
  • 都说IT行业饱和了,2023年成为程序员还有发展前景吗?
  • 《Effective Objective-C 2.0 》 阅读笔记 item10
  • 从大到小排序-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第6章 封装组件高级篇(下) - table
  • 【经验】PCB拼板,不得不注意的10个问题,要收藏哦!
  • MySQL-事务
  • spark sql(五)sparksql支持查询哪些数据源,查询hive与查询mysql的区别
  • 【新2023Q2模拟题JAVA】华为OD机试 - 二叉树层次遍历
  • Linux下 lsof 命令详解
  • 文件系统设计详解
  • 蓝桥杯第21天(Python)(疯狂刷题第4天)
  • Kafka 原理以及分区分配策略剖析
  • 【HTML系列】第五章 · 表单
  • 【新2023Q2模拟题JAVA】华为OD机试 - 最大报酬
  • 多地发布暴雨蓝色预警,池塘水质危机,养殖户如何测控?
  • ThreeJS-自定义矩形BufferGeometry(八)
  • C++ Primer第五版_第七章习题答案(11~20)
  • 【CVPR2022】On the Integration of Self-Attention and Convolution自注意力和卷积的融合