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

文章介绍了在电路设计中对部分积生成的优化方法,从标准四选一选择器转换为onehot编码,减少了门电路的使用,实现了资源的显著节省。通过优化选择电路,将每个部分积的生成成本从221个门电路降至119个,总共节省了800个门电路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 简介

在上次优化中,对各个部分都进行了一些微小的优化,门电路的使用 和 延时都下降了一点点。但是这还远远达不到设计的要求,还需要进一步的优化。本次的优化分享,主要在部分积的生成上进行优化。

二. 优化

在上个版本中,部分积的生成中,改用了标准的四选一的选择器和一个二选一的选择器。标准四选一选择器实现如下(二选一的选择器消耗的资源先忽略),一共消耗了13个门电路。所以一个部分积的生成就需要花费13*17 = 221个门电路。资源的消耗是巨大的。

//sel0 = 0 sel1 = 0 e = a
//sel0 = 1 sel1 = 0 e = b
//sel0 = 0 sel1 = 1 e = c
//sel0 = 1 sel1 = 1 e = d
module selector4_1(
    input   a,
    input   b,
    input   c,
    input   d,
    input   sel0,
    input   sel1,
    output  e
);
    wire inv_sel0;
    wire inv_sel1;

    wire a_out;
    wire b_out;
    wire c_out;
    wire d_out;

    assign inv_sel0  = ~sel0;
    assign inv_sel1  = ~sel1;

    assign a_out = inv_sel0 & inv_sel1 & a;
    assign b_out = sel0 & inv_sel1 & b;
    assign c_out = inv_sel0 & sel1 & c;
    assign d_out = sel0 & sel1 & d;

    assign e = a_out | b_out | c_out |d_out;

endmodule

首先,对选择部分修改为one hot编码,编码如下(顺序不一定一样)。这样编码电路的资源消耗会增多一点点,可以忽略不计。经过这样的编码之后,二选一的选择器就不需要了。

A	1 0 0 0
-A  0 1 0 0
-2A 0 0 1 0
2A  0 0 0 1
0   0 0 0 0

然后选择电路就可以优化成如下,可以看出只需要消耗7个门电路了,一个部分积的生成只需要消耗 7 * 17 = 119个门电路。一共部分积的资源消耗就降低了100个门电路,八个部分积,就是800个门电路。所以经过这点小小的改动,就使门电路的消耗大大减少了。

// sel0 --> a
// sel1 --> b
// sel2 --> c
// sel3 --> d
module selector4_1_hp(
    input   a,
    input   b,
    input   c,
    input   d,
    input   sel0,
    input   sel1,
    input   sel2,
    input   sel3,
    output  e
);

    wire sel_a;
    wire sel_b;
    wire sel_c;
    wire sel_d;

    assign sel_a = a & sel0;
    assign sel_b = b & sel1;
    assign sel_c = c & sel2;
    assign sel_d = d & sel3;
   
    assign e = sel_a | sel_b | sel_c | sel_d;
endmodule

当这是极限了嘛! 不 !! 这部分还可以进一步的优化。下篇再进行分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FPGA之旅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值