行波进位加法器和超前进位加法器比较

news2024/11/14 21:28:22

文章目录

    • 1.行波进位加法器
    • 2.超前进位加法器

1.行波进位加法器

行波进位加法器就是将全加器串联起来,将低位的进位输出作为高位的进位输入。

由全加器公式可知:

S = A ⊕ B ⊕ C i n C o u t = A B + B C i n + A C i n S=A\oplus B\oplus C_{in}\\ C_{out}= AB+BC_{in}+AC_{in} S=ABCinCout=AB+BCin+ACin

我们可以发现,单级的全加器产生和(将Cin视作已知量)需要1个三输入异或门,即1级电路;产生进位需要两级门电路,即AB/BCIN/ACIN之间的与门以及三项之间的或门。如果将全加器串联起来,后级全加器的进位输入需要前级全加器计算出进位之后才能进行计算,因此串联的全加器越多,其产生进位以及和的链路越长,延迟越大

4bit行波进位加法器verilog如下:

module twave_carry #(
    parameter width = 4
)(
    input  [width-1:0] A,
    input  [width-1:0] B,
    output [width-1:0] S,
    
    input  C_i,
    output C_o
);
    wire [width:0] C;
    genvar i;
    generate
        for (i=0; i<width; i=i+1)begin
            full_adder myadder(
                .A    (A[i]),
                .B    (B[i]),
                .C_i  (C[i]),
                .S    (S[i]),
                .C_o  (C[i+1])
            );
        end
    endgenerate
    assign C[0] = C_i;
    assign C_o  = C[width];
endmodule



module full_adder(
    input  A,
    input  B,
    input  C_i,
    output S,
    output C_o
);
    assign S    = A ^ B ^ C_i;
    assign C_o  = A & B | C_i&(A^B);
endmodule


其RTL电路如下图:

在这里插入图片描述

将myadder展开:

在这里插入图片描述

2.超前进位加法器

超前进位加法器的本质就是并行计算各个进位,无需通过进位传递计算,缩短关键路径

我们定义生成项G和传输项P:

{ P k = A k ⊕ B k , k = 0 , … , N − 1 G k = A k B k k = 0 , … , N − 1 \left\{\begin{array}{ll}P_{k}=A_{k} \oplus B_{k}, & \mathrm{k}=0, \ldots, \mathrm{N}-1 \\ G_{k}=A_{k} B_{k} & \mathrm{k}=0, \ldots, \mathrm{N}-1\end{array}\right. {Pk=AkBk,Gk=AkBkk=0,,N1k=0,,N1

则和与进位对应的关系表达式为:

{ S k = P k ⊕ C k , k = 1 , … , N C k = G k − 1 + C k − 1 P k − 1 k = 1 , … , N C N = C out  C 0 = C in  \left\{\begin{array}{ll}S_{k}=P_{k} \oplus C_{k}, & \mathrm{k}=1, \ldots, \mathrm{N} \\ C_{k}=G_{k-1}+C_{k-1} P_{k-1} & \mathrm{k}=1, \ldots, \mathrm{N} \\ C_{N}=C_{\text {out }} & \\ C_{0}=C_{\text {in }} & \end{array}\right. Sk=PkCk,Ck=Gk1+Ck1Pk1CN=Cout C0=Cin k=1,,Nk=1,,N

我们将各个进位展开:

{ C 1 = G 0 + C 0 P 0 C 2 = G 1 + C 1 P 1 = G 1 + G 0 P 1 + C 0 P 1 P 0 C 3 = G 2 + C 2 P 2 = G 2 + G 1 P 2 + G 0 P 2 P 1 + C 0 P 2 P 1 P 0 C 4 = G 3 + C 3 P 3 = G 3 + G 2 P 3 + G 1 P 3 P 2 + G 0 P 3 P 2 P 1 + C 0 P 3 P 2 P 1 P 0 \left\{\begin{array}{l}C_{1}=G_{0}+C_{0} P_{0} \\ C_{2}=G_{1}+C_{1} P_{1}=G_{1}+G_{0} P_{1}+C_{0} P_{1} P_{0} \\ C_{3}=G_{2}+C_{2} P_{2}=G_{2}+G_{1} P_{2}+G_{0} P_{2} P_{1}+C_{0} P_{2} P_{1} P_{0} \\ C_{4}=G_{3}+C_{3} P_{3}=G_{3}+G_{2} P_{3}+G_{1} P_{3} P_{2}+G_{0} P_{3} P_{2} P_{1}+C_{0} P_{3} P_{2} P_{1} P_{0}\end{array}\right. C1=G0+C0P0C2=G1+C1P1=G1+G0P1+C0P1P0C3=G2+C2P2=G2+G1P2+G0P2P1+C0P2P1P0C4=G3+C3P3=G3+G2P3+G1P3P2+G0P3P2P1+C0P3P2P1P0

在上述公式中,以C4举例,比如对于G0P3P2P1这一项,G0、P3、P2、P1四个是并行结构,并且他们四个都是只有一级门电路(与门/或门),因此对于C4来说其一共有三级门电路,从低层次往高层次看分别是G或P中的与门/或门、G与P的相与(与门)、各项(G3、G2P3、…、G0P3P2P1P0)的或门。其结构如下:

在这里插入图片描述

S k = P k ⊕ C k S_{k}=P_{k} \oplus C_{k} Sk=PkCk

则产生和的门电路级数比Ck的门电路多一级(Pk和Ck的异或门,Pk自己内部的异或门和Ck内部的三级门电路视作是并行结构),即4级

无论加法器位宽是多少,其产生和的级数均为4级,产生进位的级数均为3级。

其verilog如下:

module carry_ahead #( width=4 ) (
    input  [width-1:0] op1,
    input  [width-1:0] op2,
    input  C_i,
    output [width-1:0] S,
    output C_o
);
    wire [width-1:0] G;
    wire [width-1:0] P;
    wire [width:0] C;

    genvar i;
    for( i=0; i<width; i=i+1) begin
        pg_gen u_pg_gen(
            .A( op1[i]),
            .B( op2[i]),
            .G( G[i]  ),
            .P( P[i]  )
        );
    end

    assign C[0] = C_i;
    assign C[1] = G[0] || ( C[0] & P[0] );
    assign C[2] = G[1] || ( (G[0] || ( C[0] & P[0]) ) & P[1] );
    assign C[3] = G[2] || ( (G[1] || ( (G[0] || (C[0] & P[0]) ) & P[1])) & P[2] );
    assign C[4] = G[3] || ( (G[2] || ( (G[1] || ( (G[0] || (C[0] & P[0]) ) & P[1])) & P[2] )) & P[3]);
    assign C_o = C[width-1];

    genvar k;
    for( k=0; k<width; k=k+1) begin
        assign S[k] = P[k] ^ C[k];
    end
endmodule



module pg_gen(
    input A,
    input B,
    output G,
    output P
);
  assign G = A & B;
  assign P = A ^ B;
endmodule

RTL电路结果如下图:

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

ssm教职工防疫打卡小程序-计算机毕业设计源码73760

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;教职工防疫打卡小程序被用户普遍使用&#xff0c;为方便用…

QGIS:根据已知色带数组生成sld文件

1、将已知的色带数组转换为Excel文件&#xff08;Test.xlsx&#xff09; 格式如下&#xff1a; 2、Python生成QGIS colormap文件&#xff08;.txt&#xff09; import numpy as np import os import sys import pandas as pd#QGSI输入文件 #读取C中导出的Rainbow数组 fp_rain…

电商API接口||电商数据连接器:一键连接,效率加倍!

电商数据API接口&#xff1a; 一键连接&#xff0c;效率加倍&#xff01; 打造智能数据生态&#xff0c;让数据流动更加高效 在数字化时代&#xff0c;数据已成为企业发展的核心驱动力。电商API数据采集接口&#xff0c;助力电商企业实现数据的高效管理和应用。 电商数据API…

【乐吾乐3D可视化组态编辑器】模型类型与属性

编辑器地址&#xff1a;3D可视化组态 - 乐吾乐Le5le 本章主要为您介绍模型的属性功能。 一个模型至少会包含一个节点&#xff08;Node&#xff09;&#xff0c;从节点类型上可以分为转换节点&#xff08;TransformNode&#xff09;、网格&#xff08;Mesh&#xff09;、实例网…

【OpenGL手册-13】光源和颜色模型

文章目录 一、说明二、颜色综述三、灯光场景四、光源位置 一、说明 光源和颜色模型也是OpenGL的重要模型之一&#xff0c;我们将光源也看成是一个物体&#xff0c;这个物体特点是&#xff0c;不仅可以自己移动位置&#xff0c;而且要和其它物体颜色进行反射运算&#xff0c;从而…

应急响应-网页篡改-技术操作只指南

初步判断 网页篡改事件区别于其他安全事件地明显特点是&#xff1a;打开网页后会看到明显异常。 业务系统某部分出现异常字词 网页被篡改后&#xff0c;在业务系统某部分网页可能出现异常字词&#xff0c;例如&#xff0c;出现赌博、色情、某些违法APP推广内容等。2019年4月…

【一小时学会Charles抓包详细教程】初识Charles (1)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 Charles介绍 …

1、pyton环境的安装-windows系统下

python官网 https://www.python.org/ 点击黄色的按钮&#xff0c;下载完成&#xff0c;如下&#xff1a; 双击安装&#xff0c;我现在以3.10.4版本进行安装说明&#xff1a; 一定要勾选上下边的to path&#xff0c;然后选择自定义安装 全选&#xff0c;点击next 选择要安装的路…

HTML大雪纷飞

目录 写在前面 HTML简介 完整代码 代码分析 运行结果 系列文章 写在后面 写在前面 小编又又又出现啦&#xff01;这次小编给大家带来大雪纷飞HTML版&#xff0c;不需要任何的环境&#xff0c;只要有一个浏览器&#xff0c;就可以随时随地下一场大雪哦&#xff01; HTM…

从金蝶云星空到旺店通·企业奇门通过接口配置打通数据

从金蝶云星空到旺店通企业奇门通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上&#xff0c;提供了标准的管理模式&#xff1b;通过标准的业务架构&#xff1a;多会计准则、多币别、多地点、多组织、多税制应用框架等&#xff0c;有…

QT:协议概述

文章目录 概念帧结构&#xff1a;通信流程 示例&#xff1a;请求帧&#xff1a;响应帧&#xff1a; 概念 帧结构&#xff1a; | SOF (1 byte) | Frame Length (1 byte) | Command (1 byte) | Data Field (N bytes) | Checksum (1 byte) | 通信流程 示例&#xff1a; 请求帧&a…

ld链接文件

文章目录 1. sections缩写2. 链接脚本2.1 MEMORY&#xff08;内存命令&#xff09;2.1.1 作用2.1.2 格式 2.2 SECTIONS&#xff08;段命令&#xff09;2.2.1 作用2.2.2 格式 2.3 特殊符号含义2.4 通配符2.5 Eg 1. sections缩写 2. 链接脚本 https://www.cnblogs.com/jianhua19…

如何处理 Google Chrome中的代理服务器错误?

如果您在 Google Chrome 浏览器中遇到代理服务器错误&#xff0c;您可以采取一些步骤来排除故障并解决问题。代理服务器充当您的设备和互联网之间的中介&#xff0c;与其相关的错误有时会破坏您的浏览体验。以下是帮助您解决该问题的一些步骤&#xff1a; 1. 检查您的互联网连接…

shell脚本编译成二进制文件shc

文章目录 1. 安装shc2. 使用shc编译Shell脚本3. 执行二进制文件4. 编译后执行效率 将Shell脚本转换为二进制执行文件&#xff0c;可以使用 shc工具。 shc是一个Shell编译器&#xff0c;它可以将Shell脚本编译成二进制文件。以下是详细步骤&#xff1a; 1. 安装shc 在大多数L…

图片缩放随心所欲,自定义保存尽在掌控,解锁全新图片处理神器,轻松驾驭视觉创作之旅!

在数字化浪潮汹涌的今天&#xff0c;图片作为视觉信息的核心载体&#xff0c;已经渗透到我们生活的方方面面。一张精美的图片&#xff0c;往往能够成为我们表达思想、分享生活的得力助手。然而&#xff0c;面对大小不一、格式各异的图片&#xff0c;如何轻松实现缩放并自定义保…

新火种AI|警钟长鸣!教唆自杀,威胁人类,破坏生态,AI的“反攻”值得深思...

作者&#xff1a;小岩 编辑&#xff1a;彩云 在昨天的文章中&#xff0c;我们提到了谷歌的AI Overview竟然教唆情绪低迷的网友“从金门大桥跳下去”。很多人觉得&#xff0c;这只是AI 模型的一次错误判断&#xff0c;不会有人真的会因此而照做。但现实就是比小说电影中的桥段…

Jetpack架构组件_2. 数据绑定库

1.理论基础 数据绑定库是一个支持库&#xff0c;可让您使用声明性格式&#xff08;而不是以程序化方式&#xff09;将布局中的界面组件绑定到应用中的数据源。 布局通常使用调用界面框架方法的代码在 activity 中定义。例如&#xff0c;以下代码会调用 findViewById() 来查找 T…

一键秒删TXT文本符号,释放工作效率新高度,轻松应对海量文本处理挑战!

在这个信息爆炸的时代&#xff0c;我们每天都会面对海量的文本信息。而在处理这些文本时&#xff0c;你是否曾经因为各种符号的干扰而头疼不已&#xff1f;现在&#xff0c;我们为你带来了一款高效批量处理工具&#xff0c;它能够一键删除TXT文本中的符号&#xff0c;让你的工作…

面试八-存泄漏是什么,有哪几种,怎么解决?

一、内存泄漏几种情况 当使用基类指针指向派生类对象时&#xff0c;如果基类的析构函数不是虚函数&#xff0c;那么在使用基类指针来删除这个对象时&#xff0c;只会调用基类的析构函数&#xff0c;而不会调用派生类的析构函数。这就导致了派生类中的资源无法正确释放&#xff…

前端使用JavaScript实现一个LRU缓存

引言 LRU&#xff08;Least Recently Used&#xff09;算法是一种广泛应用于内存管理和缓存系统的策略&#xff0c;在微前端、状态管理以及性能优化等场景下&#xff0c;合理使用缓存机制能够有效提升应用性能。本文将介绍LRU算法的基本原理&#xff0c;并通过JavaScript实现案…