0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

定点乘法器设计优化V1

FPGA开发 来源:FPGA之旅 作者:电击小子 2023-04-14 09:34 次阅读

文章作者:公众号 FPGA之旅 (电击小子) ; 欢迎大家关注作者公众号FPGA之旅 ;在此特别鸣谢!

一. 简介

在本篇文章开始之前,先对上篇文章中的一个错误进行指正一下。在部分积生成的时候,需要计算-2A和2A的值,我的做法就是直接左移了一位,这样就会有一个问题,符号位被移掉了,为什么我的计算结果还是对的呢 ? 因为仿真的A比较小,15位的值和符号位是一样的,没有影响,所以当时没有发现。需要对符号位扩展一位,变成17位的数之后,再进行计算2A和-2A。如下图这样,扩展一下最高位。

pYYBAGQ4rbaAO1KGAAAzis28YX0590.jpg

本次的优化在上次的基础上,进行了一定程度的优化,下面就一一介绍一下。

二. 计算-A,-2A,2A部分

先来看一下之前的代码,可以看到取反模块,这里使用了两次,其实是没有必要的,

poYBAGQ4rcuAebbHAACe4cPJFNM093.jpg

先移位再取反,和先取反再移位是完全等价的,但是在门电路的消耗上却节约了17个非门和17bit加法器。

pYYBAGQ4rd6AEXCdAACpqBcxGwI434.jpg

三. 部分积部分

在之前的代码中,生成的8个部分积的位宽全部是32bit,在进行部分积压缩的时候,使用了3个32bit的4:2压缩器。

但是将按照下列方式分组,将8个部分积分成两部分,每部分、每个部分积均为24bit,这样在使用前两个4:2压缩器可以选择24bit的;然后第三个4:2压缩器选择32bit的,将第一部分进行符号位扩展,第二部分末尾进行补0,将其扩展为32bit即可。

poYBAGQ4rfCAFp9JAACxqep3Yqo752.jpg

这样就将3个32bit的,优化到了 2个24bit和1个32bit的4:2压缩器了。

这里的三目运算符,替换为用搭建的选择器了。

pYYBAGQ4rhSAbfF_AADKGs1cnlU618.jpg
poYBAGQ4rhyAGcg2AADKPIfUqok409.jpg
pYYBAGQ4riWAeTsdAACwNTn512I641.jpg

四. 取反加一操作

在求A的负数的时候,需要有个加一的操作,可以将这个操作添加到部分积压上面去,如下图所示,第一个部分积的加一,添加到了第二个部分积的对应的位置,依次类推,第八个部分积的加一,会添加到第九个,但是,部分积的个数只用8个,所以这里就会多出一个部分积出来,在压缩的时候,会额外使用一个3:2压缩器。测试知道这样的操作是可取的。

poYBAGQ4rjeAUj-eAABmXz9tLdI541.jpg

在进行booth编码的时候,添加一个变量,可以认为是这里的S,看看该部分积是否需要加一操作。只要set0为0,inv为1,即有取放操作。

pYYBAGQ4rkmACn7xAAC6pY7pKKw006.jpg

然后在部分积生成的时候,将第一个部分积的加一标志,添加到第二个部分积对应的位置。

poYBAGQ4rl-AbAFFAADKtfnx0IM370.jpg

其中需要注意一点,由于我们对部分积进行了分组,第一组的最后一个部分积,是加不到第二组的第一个部分积的,需要在部分积压缩的时候添加上去,为什么可以看完整代码的位宽。

poYBAGQ4rnOAcgz7AADptY26QFg100.jpg

五. 小结

本次在上篇文章的基础上,进行了初步的优化,门的使用和延时有了初步的提升,在Vivado中延时从16ns下降到了15ns,DC中从6ns下降到了5ns。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    30092
  • 门电路
    +关注

    关注

    7

    文章

    199

    浏览量

    40124
  • 乘法器
    +关注

    关注

    8

    文章

    205

    浏览量

    36975
  • 选择器
    +关注

    关注

    0

    文章

    106

    浏览量

    14523

原文标题:定点乘法器设计(4)(华为杯)---优化V1

文章出处:【微信号:FPGA之旅,微信公众号:FPGA之旅】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    fpga中定点乘法器设计(中文)

    fpga中定点乘法器设计(中文)目录声明 ………………………………………………………………………………………… 10、 约定
    发表于 08-12 11:59

    分享--fpga中定点乘法器设计(中文)

    本帖最后由 eehome 于 2013-1-5 10:07 编辑 fpga中定点乘法器设计(中文)
    发表于 08-24 00:55

    怎么设计基于FPGA的WALLACETREE乘法器

    在数字信号处理中,乘法器是整个硬件电路时序的关键路径。速度和面积的优化乘法器设计过程的两个主要考虑因素。由于现代可编程逻辑芯片FPGA的集成度越来越高,及其相对于ASIC设计难度较低和产品设计
    发表于 09-03 07:16

    乘法器的基本概念

    乘法器的基本概念 乘法器是一种完成两个互不相关的模拟信号相乘作用的电子器件。理想乘法器的输出特性方程可由下式表示: UO
    发表于 05-18 14:03 1.4w次阅读
    <b class='flag-5'>乘法器</b>的基本概念

    1/4平方乘法器

    1/4平方乘法器 这种乘法器是根据数学关系设计而成的,因此称为1/4平方乘法电路,或称1
    发表于 05-18 14:08 1966次阅读
    <b class='flag-5'>1</b>/4平方<b class='flag-5'>乘法器</b>

    脉冲-宽度-高度调制乘法器

    脉冲-宽度-高度调制乘法器 脉冲-宽度-高度调制乘法器双称为时间分割乘法器。这类乘法器电路原理图如图5.4-24A所示。图中,三角波电压UT和模拟输入电压UY
    发表于 05-18 14:23 2010次阅读
    脉冲-宽度-高度调制<b class='flag-5'>乘法器</b>

    变跨导乘法器的基本原理

    变跨导乘法器的基本原理 图5.4-25为变跨导乘法器原理图。它利用V1V2管的跨导GM正比于恒流源电流IO,而IO又受另一个输入电压控制,而实
    发表于 05-18 14:48 3188次阅读
    变跨导<b class='flag-5'>乘法器</b>的基本原理

    变跨导乘法器

    变跨导乘法器 这种乘法器现在已经成为一种工业上的标准方法,是应用极为广泛的优质乘法器
    发表于 05-18 16:00 1230次阅读

    基于IP核的乘法器设计

    实验目的 1、熟悉Xilinx的ISE 软件的使用和设计流程; 2、掌握Modelsim仿真软件的使用方法; 3、用乘法运算符实现一个16*16 乘法器模块; 4、用IP核实现一个16*16
    发表于 05-20 17:00 68次下载
    基于IP核的<b class='flag-5'>乘法器</b>设计

    基于FPGA的WALLACE TREE乘法器设计

    本文着重介绍了一种基于WALLACETREE优化算法的改进型乘法器架构。根据FPGA内部标准独特slice单元,有必要对WALLACE TREE部分单元加以研究优化,从而让在FPGA的乘法器
    发表于 11-17 10:50 5279次阅读
    基于FPGA的WALLACE TREE<b class='flag-5'>乘法器</b>设计

    定点乘法器设计(中文)

    定点乘法器设计(中文) 运算符: + 对其两边的数据作加法操作; A + B - 从左边的数据中减去右边的数据; A - B - 对跟在其后的数据作取补操作,即用0减去跟在其后的数据; - B * 对其两边的
    发表于 01-17 10:39 32次下载

    乘法器

    一个自己写的八位数的乘法器
    发表于 12-01 15:45 17次下载

    硬件乘法器是什么?

    硬件乘法器是现代计算机中必不可少的一部分,其基础是加法器结构。
    的头像 发表于 05-11 10:52 8834次阅读

    使用verilogHDL实现乘法器

    VerilogHDL语言实现的两位阵列乘法器和传统的 Booth编码乘法器进行了性能比较,得出用这种混合压缩的器乘法器要比传统的4-2压缩器构成的乘法器速度提高了10%,硬件资源占用减
    发表于 12-19 13:30 1.1w次阅读
    使用verilogHDL实现<b class='flag-5'>乘法器</b>

    乘法器原理_乘法器的作用

    乘法器(multiplier)是一种完成两个互不相关的模拟信号相乘作用的电子器件。它可以将两个二进制数相乘,它是由更基本的加法器组成的。乘法器可以通过使用一系列计算机算数技术来实现。乘法器
    发表于 02-18 15:08 2.6w次阅读
    <b class='flag-5'>乘法器</b>原理_<b class='flag-5'>乘法器</b>的作用