定点乘法器优化(3)---华为杯

一. 简介

在上次优化中,针对部分积生成进行了一个优化,将一个部分积生成的门电路数从221减少到了119。虽然减少了很多,但不够。本次将提出另外一种新的编码与部分积生成方式,将门电路的个数大大减少。

二. 新的编码方式

基4 Booth编码生成部分积一共有5个选项:0,A,-A,2A,-2A;其中0选项可以不考虑。经过观察可以发现A和-A,以及2A和-2A对应位均是相反数(-A,-2A没有进行加一操作),这样就会产生一种新的编码方式:

A和-A一组编码值为C1,2A和-2A为一组编码值为C2,-A和-2A为一组编码值为C3。

例如:

  • 当前现需要生成-2A的部分积,那么C1 = 0,C2 = 1,C3 = 1
  • 当前现需要生成A的部分积, 那么C1 = 1,C2 = 0,C3 = 0

三. 部分积生成

部分积的生成,即对应为编码的解码,解码方式如下:

  1. 根据C1,C2的值选择出A和2A,如果C1和C2同时为0,那么选择结果为0
  2. 根据C3的值对C1,C2选择出的结果进行取反

两个与或非门即可解决,那么一个部分积的生成所消耗的门电路为2*17 = 34而且与或非门的资源代价仅仅为8

  //与或非门  选择A,2A
    assign n = a & c1;
    assign p = b & c2;
    assign d_inv = n | p;
    assign d = ~d_inv;
    //-------

    //与或非门 根据c3的值判断是否对选择的值进行取反
    wire w;
    wire q;
    assign w = c3 & d_inv;
    assign q = c3_inv & d;
    assign e = ~(w | q);  //最终结果
    //--------

这部分的优化就到此为止了,对这部分优化有进一步的改进方案的小伙伴,可以交流交流(#.#)
qq交流群: 649098696
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值