5位无符号阵列乘法器设计_乘法器学习记录

组合电路乘法器

普通版

组合电路乘法器相对于时序电路乘法器,运算速度快很多,但要占用大量的面积,并且与字长的平方成正比,所以只在小字长乘法时可以采用

v2-37dc1d7dd5f3406713a6814446c14878_b.jpg

最常规的乘法器,图中+为全加器,有些两输入的全加器可以用半加器替代,但代码写起来麻烦,所以我没用

module 

8位乘法器大致需要7*8=56个全加器

该方法虽然易于理解,但由于每一个全加器都要等待上一行和行内上一个全加器的输出都到齐才能开始计算,所以关键路径很长。8位普通组合乘法器至少要有22级延迟。

进位保留版

通过使用进位保留的思想,使用大量全加器构成进位保留加法器,将进位从行内剥离,每行内的各个加法器可以并行计算,不用再等前一个加法器的进位输出,这样大大减少了延时
即第一次计算P1+P2+P3,以后每一次加一个部分积,共需6级延迟

v2-8ae13ca1f9bea1fd6ce5d17e10ba9552_b.jpg

该方法虽然大大减少了延时,但实现太幼稚,使用了过多的全加器,有很大的优化空间

Wallace树

下图即为采用了Wallace树的乘法器结构,共有四级压缩和一级加法。这里将全加器看作3:2压缩器,将许多个待加数逐级压缩,直到只剩两数即可

v2-2c5e8572601bad755ea3a6246da5e5d0_b.jpg

经过仔细优化,新的设计共用到了38个全加器、17个半加器和一个12位超前进位加法器

由于每一级内的各个加法器均是并行的,所以只需4级延迟即可得到最后一层。由于最后一层已经被压缩为两数相加,所以可以使用超前进位加法器快速求和。

最终延时只有5级

查找表乘法器

使用RAM将乘法所有可能的结果保存起来,然后将相乘的两个数当作地址来查找对应结果。这是一种面积换速度的策略,只需一个时钟周期即可完成一次乘法运算,但占用的储存面积随字长增加迅速增长,只适合位宽很小的情况

module 

这几种组合电路方案耗费面积太大,在不是那么追求速度或者缩小面积很重要的场合,可以使用时序乘法器。它不仅使用更少的加法器,还可以通过插入寄存器实现流水线操作提高吞吐率。并且通过行为级描述,该乘法器是参数化的,所以适合代码复用。

基本时序乘法器

最自然的想法是,不再将组合电路内的每个部分积都分配全加器,而是不断复用唯一的一行,将下一行的部分积移位后累加即可。这样将空间复杂度从O(N^2)降到了O(N),但时间复杂度从O(1)增加到了O(N)。

按照常规乘法规则,

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计一个不带符号的5阵列乘法器的步骤如下: 1. 确定输入和输出数,本题要求输入和输出均为5。 2. 设计5个4-2压缩器,将每个输入拆分为两个2进制。具体来说,将每个输入分为高2和低2,然后将高2和低2分别输入到4-2压缩器中,得到两个2进制输出。 3. 每个4-2压缩器的输出均为2,将这些2按照数对齐,然后使用5个2-1多路选择器将它们选择成一个5的输出。选择器的控制信号为输入的高2。 4. 将5输出与5输入相乘,得到一个10的中间结果。使用两个5-2压缩器将这个中间结果压缩为8。 5. 最后,使用一个8-2压缩器将8中间结果压缩为5输出。 以下是该乘法器的电路图: ![image](https://user-images.githubusercontent.com/43015526/126619547-ee66a6e8-6c04-4b77-8b9d-7cf9e5ca5e7f.png) 其中,M0到M4为输入,P0到P4为输出。每个4-2压缩器的电路图如下: ![image](https://user-images.githubusercontent.com/43015526/126619586-fdc4e4b7-d4c1-4b1c-8e3d-3c0bcf4d4cc4.png) 每个2-1多路选择器的电路图如下: ![image](https://user-images.githubusercontent.com/43015526/126619619-1b1a9a34-1b74-4b1a-ba17-4f07d9fadb9c.png) 每个5-2压缩器的电路图如下: ![image](https://user-images.githubusercontent.com/43015526/126619666-6ed2d6a0-fb84-4d32-87f5-0e7d5e5f9c7f.png) 最后一个8-2压缩器的电路图如下: ![image](https://user-images.githubusercontent.com/43015526/126619696-7e5d5d84-7be5-4e1c-a800-4a4c8a86e4e1.png)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值