数字IC前端学习笔记:数字乘法器的优化设计(进位保留乘法器)

news2025/1/16 2:05:56

相关阅读

数字IC前端icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482


        阵列乘法器设计中限制乘法器速度的是随着数据位宽而迅速增大的串行进位链,如果使用进位保留加法器,则可以避免在设计中引入较长时间的等待,即可以将两、三个数相加时不同比特位的加法割裂开,使进位得到保留而不是立刻将进位传递给更高位运算,进位保留加法器的结构如图1所示。 

图1 进位保留乘法器

        其实进位保留加法器和普通全加器的内部结构一模一样,但不同的是对于进位的处理,普通的全加器接受两位加数和一位进位,输出一位和以及一位进位。而保留进位加法器接受三位加数的输入,输出两位,具体的转换如图2所示。 

图2 全加器和保留进位加法器的转换

        使用保留进位加法器组成多位加法器时,本文采用了与传统串行进位加法器不同的设计方案,不是将多个全加器首尾相连方式串行传播进位信号,而是多个保留进位加法器并行输出,因为这种保留进位加法器输入三位,输出两位,所以也把它叫做3-2压缩器(3-2 compressor)。

        进位保留乘法器的结构图如图3所示,可以看到,与之前的阵列乘法器相比,进位保留乘法器对于输出的进位,并不将其传递给本级的高位加法器,而是传递给下一级的高位乘法器,在最后一级使用一个被称为向量合并加法器(图中用绿色框出)的模块来处理最后的两个多位二进制数。向量合并加法器可以选择普通的串行进位加法器或者超前进位加法器,还可以是其他高效的加法器。四位进位保留加法器的资源规划如表1所示。

进位保留乘法器结构

表4-1 无符号4位二进制乘法规划​​​​​​

A3

B3

A2

B2

A1

B1

A0

B0

被乘数

乘数

资源配置

A3B1

A3B0

A2B1

A2B0

A1B1

A1B0

A0B1

A0B0

部分积0

部分积1

上级进位

第1行加法器

C13

A3B2

S13

A2B2

C12

S12

A1B2

C11

S11

A0B2

C10

S10

S00

第1行和

部分积2

上级进位

第2行乘法器

C23

A3B3

S23

A2B3

C22

S22

A1B3

C21

S21

A0B3

C20

S20

第2行和

部分积3

上级进位

第3行乘法器

C33

S33

S32

S31

S30

第3行和

向量合并加法器

C32

C31

C30

第3行和

        具体的Verilog代码实现见附录,Modelsim软件仿真截图如图4所示。使用Synopsis的综合工具Design Compiler综合的结果如图5所示,综合使用了0.13μm工艺库。

进位保留乘法器仿真结果

图5 进位保留乘法器综合结果

        在Design Compiler中使用report_timing命令,可以得到关键路径的延迟,如图6所示。使用report_area命令,报告所设计电路的面积占用情况,如图7所示。

图6 关键路径报告

​​​​​​​

面积报告

        进位保留乘法器的Verilog代码如下所示。

module Carry_save_multiplier(input [3:0]A,B,output[7:0]Sum);
    wire [3:0]partial_product[3:0];
    //产生部分积
    assign partial_product[0]=B[0]?A:0;
    assign partial_product[1]=B[1]?A:0;
    assign partial_product[2]=B[2]?A:0;
    assign partial_product[3]=B[3]?A:0;

    //中间进位
    wire C10,C11,C12,C13;
    wire C20,C21,C22,C23;
    wire C30,C31,C32,C33;

    //中间和
    wire S11,S12,S13;
    wire S21,S22,S23;
    wire S31,S32,S33;
    //第一行加法器
    assign Sum[0]=partial_product[0][0];
    Adder_half Adder_half_0(partial_product[0][1],partial_product[1]    
                            [0],Sum[1],C10);
    Adder_half Adder_half_1(partial_product[0][2],partial_product[1][1],S11,C11);
    Adder_half Adder_half_2(partial_product[0][3],partial_product[1][2],S12,C12);
    Adder_half Adder_half_3(partial_product[1][3],1'b0,S13,C13);

    //第二行乘法器
    Adder Adder_1(S11,partial_product[2][0],C10,Sum[2],C20);
    Adder Adder_2(S12,partial_product[2][1],C11,S21,C21);
    Adder Adder_3(S13,partial_product[2][2],C12,S22,C22);
    Adder_half Adder_half_4(C13,partial_product[2][3],S23,C23);

    //第三行加法器
    Adder Adder_4(S21,partial_product[3][0],C20,Sum[3],C30);
    Adder Adder_5(S22,partial_product[3][1],C21,S31,C31);
    Adder Adder_6(S23,partial_product[3][2],C22,S32,C32);
    Adder_half Adder_half_5(C23,partial_product[3][3],S33,C33);

    //向量合并加法器
    assign Sum[7:4]={C33,S33,S32,S31}+{1'b0,C32,C31,C30};


endmodule

module Adder (
    input  Mult1,
    input  Mult2,
    input  I_carry,
    output Res,
    output Carry
);
 
    assign Res = Mult1 ^ Mult2 ^ I_carry;
    assign Carry = (Mult1 & Mult2) | ((Mult1 ^ Mult2) & I_carry);
 
endmodule
 
module Adder_half (
    input  Mult1,
    input  Mult2,
    output Res,
    output Carry
);
 
    assign Res = Mult1 ^ Mult2;
    assign Carry = Mult1 & Mult2;
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1057765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springmvc中DispatcherServlet关键对象

以下代码为 spring boot 2.7.15 中自带的 spring 5.3.29 RequestMappingInfo 请求方法相关信息封装,对应的信息解析在 RequestMappingHandlerMapping 的 createRequestMappingInfo() 中实现。 对于 RequestMapping 赋值的相关信息进行解析 protected RequestMappi…

淘宝天猫渠道会员购是什么意思?如何开通天猫淘宝渠道会员购有什么用?

淘宝天猫渠道会员购是什么意思? 淘宝天猫渠道会员购与淘宝天猫粉丝福利购意思基本相同,都可以领取淘宝天猫大额内部隐藏优惠券、通过草柴APP开通绑定渠道会员还可以获得购物返利。 草柴APP如何绑定开通淘宝天猫渠道会员? 1、手机下载安装「…

GRACE-FO L2产品的发布说明 - 版本UTCSR RL-06.1产品

数据更新日期:2023-5-11 0)此说明取代了所有先前与UTCSR-RL06.1 GRACE-FO Level-2产品相关的旧版本发布说明。 1)截止到本发布说明日期的GRACE-FO RL-06.1产品文件列表如下: 2)通常情况下,每个日历月有四…

vscode 无法打开源文件

以下是c/c插件的intelligense设置情况: 解决办法: 重新安装vsode无用;重新下载mingw64,管用了!(我猜可能是之前换电脑移植文件的时候导致了部分文件丢失)

【LLM】主流大模型体验(文心一言 科大讯飞 字节豆包 百川 阿里通义千问 商汤商量)

note 智谱AI体验百度文心一言体验科大讯飞大模型体验字节豆包百川智能大模型阿里通义千问商汤商量简要分析:仅从测试“老婆饼为啥没有老婆”这个问题的结果来看,chatglm分点作答有条理(但第三点略有逻辑问题);字节豆包…

普通人需要做副业吗?有什么合适的副业

普通人现在需要做副业吗,我觉得有这个必要,当然也要根据个人情况选择,那么做副业有什么好处呢?做副业可以带来额外的收入,增加灵活性,提升技能,发展创造力,降低风险,提供…

(黑客)网络安全———自学方法

如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…

YoloV5实时推理最短的代码

YoloV5实时推理最简单代码 import cv2 import torch# 加载YOLOv5模型 model torch.hub.load(ultralytics/yolov5, yolov5s)# 使用CPU或GPU进行推理 device cuda if torch.cuda.is_available() else cpu model.to(device)# 打开摄像头(默认摄像头) cap…

【论文笔记】Diffusion-based 3D Object Detection with Random Boxes

原文链接:https://arxiv.org/abs/2309.02049 1. 引言 基于激光雷达的3D目标检测方法通常依赖经验设置锚框或中心半径,而本文探索从随机框直接预测真实边界框。   本文提出Diff3Det,使用扩散模型进行3D目标检测。首先为真实边界框添加高斯噪…

[论文必备]最强科研绘图分析工具Origin(1)——安装教程

之前在论文中pr曲线和loss曲线对比用到了Origin这个最强科研绘图分析工具,被导师狠狠夸了,下面来分享一下~ 本篇先带你手把手安装这个软件,可以先点再慢慢看哦~ 目录 📢一、软件简介 🌻二、安装教程 &#x1f384…

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…

Docker中将静态页面部署nginx

1.启动nginx docker start nginx 2.进入nginx cd /usr/share/nginx/html 3.vim index.html 说明:没有vim命令,docker镜像只保留了基本的功能(文件)。 4.解决方法 数据卷:是一个虚拟目录,是容器内目录与…

山西电力市场日前价格预测【2023-10-04】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-04)山西电力市场全天平均日前电价为311.79元/MWh。其中,最高日前电价为427.05元/MWh,预计出现在18: 45。最低日前电价为249.76元/MWh,预计…

Linux apt-get update - Could not connect to XXX(Connection refused)

Linux: apt-get update ----Err:Could not connect to XXX(Connection refused) - 知乎 先换源(vi不好使用,可以换成gedit) 若还是不行,可以再尝试执行: unset http_proxy unset https_proxy

决策树C4.5算法的技术深度剖析、实战解读

目录 一、简介决策树(Decision Tree)例子: 信息熵(Information Entropy)与信息增益(Information Gain)例子: 信息增益比(Gain Ratio)例子: 二、算…

【好玩的开源项目】Docker部署cook菜谱工具

【好玩的开源项目】Docker部署cook菜谱工具 一、cook菜谱工具介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本 四、下载cook镜像五、部署cook菜谱工具5.1 创建cook容器5.2 查看容器状态5.3 检查容器日志 六、…

C/S架构学习之TCP的三次握手和四次挥手

TCP的三次握手:一定由客户端主动发起的,发生在建立连接的过程中。此过程发生在客户端的connect()函数和服务器的accept()函数之间。第一次握手:客户端向服务器发送一个带有SYN标志的数据包,表示客户端请求建立连接。并且客户端会选…

码多多ChatAI智能聊天系统-PHP源码版V2.5.0+开源端 安装教程

码多多ChatAI智能聊天系统PHP源码版,基于前后端分离架构以及Vue3、uni-app、ThinkPHP6.x、PHP8.0技术栈开发,包含PC端、H5端、小程序端、APP端。 该系统播播资源测试安装了针对环境要求高,PHP8.0MYSQL5.7。根目录下check文件加密文件&#x…

Ae 效果:CC Ripple Pulse

扭曲/CC Ripple Pulse Distort/CC Ripple Pulse CC Ripple Pulse (CC 波纹脉冲)主要用于创建动态的波纹脉冲效果,适用于需要动态涟漪或水波效果的场景。 效果将被限制在图层大小范围。 ◆ ◆ ◆ 效果属性说明 Center 中心 用于设置波纹脉冲…