各种加法器介绍——真值表、表达式、电路图、verilog代码实现

news2024/11/25 23:03:42

文章目录

  • 前言
  • 一、半加器
  • 二、全加器
  • 三、串行/行波进位加法器(Ripple-Carry Adder/RCA)
  • 四、超前进位加法器(Lookahead Carry Adder/LCA)
  • 五、进位保存加法器(Carry Save Adder/CSA)


前言

2023.4.25


一、半加器

两个数直接相加,无进位,真值表如下

在这里插入图片描述

module add_half(
   input                A   ,
   input                B   ,
 
   output	wire        S   ,
   output   wire        C   
);

	assign S = A ^ B;
	assign C = A & B;
	
endmodule

在这里插入图片描述

二、全加器

两个数和进位一起相加,根据真值表画出卡诺图,对表达式进行化简

在这里插入图片描述

S = A ^ B ^ Cin;
CO = A & B | A & Cin | B & Cin;

{CO, S} = A + B + Cin;  //也可以直接写成这种形式

用两个半加器来组成一个全加器
在这里插入图片描述

在这里插入图片描述

module add_full(
   input                A   ,
   input                B   ,
   input                Ci  , 

   output	wire        S   ,
   output   wire        Co   
);

	wire c_1;
	wire c_2;
	wire sum_1;
	
	add_half add_half_1(
	   .A   (A),
	   .B   (B),
	         
	   .S   (sum_1),
	   .C   (c_1)  
	);
	add_half add_half_2(
	   .A   (sum_1),
	   .B   (Ci),
	         
	   .S   (S),
	   .C   (c_2)  
	);
	
	assign Co = c_1 | c_2;
endmodule

三、串行/行波进位加法器(Ripple-Carry Adder/RCA)

原理N bit的加法器由N个1 bit的全加器组成。从低位开始,逐位相加, 每一bit需要等待前面计算出来得到进位,才能进行下一bit的计算

优点:电路结构比较简单
缺点:速度比较慢,组合逻辑延时较长

在这里插入图片描述

内部的门延迟如下图所示:

在这里插入图片描述

module add_4(
   input         [3:0]  A   ,
   input         [3:0]  B   ,
   input                Ci  ,
 
   output   wire [3:0]  S   ,
   output   wire        Co  
);

    wire [3:0] C;
   
    genvar i;    //用generate来例化多个模块
    generate
    for(i=0;i<4;i=i+1)begin:adder
        add_full add(
            .A(A[i]),
            .B(B[i]),
            .Ci(i==0?Ci:C[i-1]),
            .S(S[i]),
            .Co(C[i])
        );
    end
    endgenerate
    assign Co = C[3];     
endmodule

四、超前进位加法器(Lookahead Carry Adder/LCA)

原理:逻辑电路事先得出每一位全加器的进位输入信号(并行计算各个加法器的进位),而无需再从最低位开始向高位逐位传递进位信号,一种用面积换性能的方法。

优点:缩短路径的延时
缺点:电路比较复杂,面积大

在这里插入图片描述

只需要三级门电路就可以计算出进位CO

在这里插入图片描述

而整个电路的计算结果需要四级延时
在这里插入图片描述

module lca_4(
	input		[3:0]       A_in  ,
	input	    [3:0]		B_in  ,
    input                   C_1   ,
 
 	output	 wire			CO    ,
	output   wire [3:0]	    S
);

	wire [3:0] P,G,C;
	genvar i;
	generate for(i=0;i<4;i=i+1)
		begin:adder  //这个地方的名称不可少
			assign P[i] = A_in[i] ^ B_in[i];
			assign G[i] = A_in[i] & B_in[i];
		    assign C[i] = (i==0)?(G[i] | P[i] & C_1) : (G[i] | P[i] & C[i-1]);
			assign S[i] = (i==0)?(P[i] ^ C_1) : (P[i] ^ C[i-1]);	
		end
	endgenerate

	assign CO = C[3];

endmodule

五、进位保存加法器(Carry Save Adder/CSA)

原理:把对应bit的数相加,分别得到进位和和的结果,再把进位和和进行相加。

优点:把三个数相加变成了两个数相加,门延迟最小

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Stable Diffusion人工智能图像合成

AI 图像生成大有来头。新发布的开源图像合成模型称为Stable Diffusion&#xff0c;它允许任何拥有 PC 和像样的 GPU 的人想象出他们能想象到的几乎任何视觉现实。它几乎可以模仿任何视觉风格&#xff0c;如果你给它输入一个描述性的短语&#xff0c;结果就会像魔术一样出现在你…

HTML5 <span> 标签

实例 HTML5 <span>标签内的内容独立于文档&#xff0c;当对该标签应用样式时&#xff0c;包含在其中的内容会呈现出不同的视觉效果。请参考下述示例&#xff1a; 使用 <span> 元素对文本中的一部分进行着色&#xff1a; <p>我的母亲有 <span style&quo…

Redis缓存预热、雪崩、击穿和穿透

文章目录 1、Redis缓存预热2、Redis缓存雪崩3、Redis缓存击穿4、Redis缓存穿透 1、Redis缓存预热 Redis需要缓存预热是因为Redis是基于内存的缓存系统&#xff0c;当Redis启动时&#xff0c;它的内存是空的&#xff0c;需要在实际使用前将需要缓存的数据提前加载到内存中。这个…

DevExpress:报表中XRPictureBox控件绑定数据库(SQlite)中的图片数据

一.需求描述 1.使用XRPictureBox控件显示图片&#xff1b; 2.因为报表需求&#xff0c;显示的图片在指定条件下需要改变&#xff0c;比如&#xff1a;指定生成小明的报表时&#xff0c;加载小明的头像&#xff1b;指定生成小红的报表时&#xff0c;加载小红的头像&#xff1b;…

midjourney关键词总结

Midjourney是一个自主研发的实验室&#xff0c;用户可以通过Discord与Midjourney bot交互&#xff0c;并提交“Prompt”来快速获取所需的图像。 Midjourney具有易上手、难精通的特点&#xff0c;想要绘制出自己满意的图片&#xff0c;需要掌握各种命令和参数&#xff0c;并花费…

web 应用常用功能 -文件上传下载以及原理分析图和注意事项和细节

目录 web 应用常用功能 -文件上传下载 基本介绍 文件上传 文件上传应用实例 upload.jsp 实现步骤 文件上传注意事项和细节 文件下载 文件下载的原理分析图 文件下载应用实例 ● 需求&#xff1a;演示文件下载&#xff0c;如图 download.jsp FileDownloadServlet …

牛客网Verilog刷题——VL28

牛客网Verilog刷题——VL28 题目答案 题目 请编写一个序列检测模块&#xff0c;输入信号端口为data&#xff0c;表示数据有效的指示信号端口为data_valid。当data_valid信号为高时&#xff0c;表示此刻的输入信号data有效&#xff0c;参与序列检测&#xff1b;当data_valid为低…

【手把手做ROS2机器人系统开发五】使用C++实现编写简单的服务器和客户端

使用C实现编写简单的服务器和客户端 目录 使用C实现编写简单的服务器和客户端 一、程序编写 1、创建软件包 2、编译软件包 3、软件配置 4、服务器程序编写 5、客户端程序编写 6、软件包设置 7、设置编译选项 二、程序测试 1、编译程序 2、开启节点测试运行 3、执行…

verilog语言中的门级描述、行为描述及测试验证

描述D型主从触发器模块的门级结构建模&#xff1a; module flop(data, clock, clear, q, qb);input data, clock, clear; output q, qb;// 批量定义门电路 nand #10 nd1(a, data, clock, clear)&#xff0c;nd2(b, ndata, clock)&#xff0c;nd4(d, c, b, clear)&#xf…

算法刷题|1049.最后一个块石头的重量||、494.目标和、474.一和零

最后一个块石头的重量|| 题目&#xff1a;有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉…

HBase的表设计笔记

HBase的RowKey设计 HBase是三维有序存储的&#xff0c;通过rowkey&#xff08;行键&#xff09;&#xff0c;column key&#xff08;column family和qualifier&#xff09;和TimeStamp&#xff08;时间戳&#xff09;这个三个维度可以对HBase中的数据进行快速定位。 HBase中row…

中国能源网络安全大会举办,腾讯安全曹文炎分享助力能源企业安全建设的实践经验

2023年4月20日-21日&#xff0c;由中国能源研究会主办的“2023年中国能源网络安全大会”&#xff08;以下简称“大会”&#xff09;在南京召开。大会以“新形势新安全”为主题&#xff0c;围绕提升我国能源行业网络安全水平&#xff0c;增强和维护我国能源网络安全能力&#xf…

Pytorch的CNN,RNNLSTM

CNN 拿二维卷积举例&#xff0c;我们先来看参数 卷积的基本原理&#xff0c;默认你已经知道了&#xff0c;然后我们来解释pytorch的各个参数&#xff0c;以及其背后的计算过程。 首先我们先来看卷积过后图片的形状的计算&#xff1a; 参数&#xff1a; kernel_size &#xff…

【AI炼丹术】写深度学习代码的一些心得体会

写深度学习代码的一些心得体会 体会1体会2体会3总结内容来源 一般情况下&#xff0c;拿到一批数据之后&#xff0c;首先会根据任务先用领域内经典的Model作为baseline跑通&#xff0c;然后再在这个框架内加入自己设计的Model&#xff0c;微调代码以及修改一些超参数即可。总体流…

Matlab进阶绘图第18期—相关性气泡热图

相关性气泡热图是一种特殊的气泡热图。 与一般的气泡热图相比&#xff0c;其数值位于[-1 1]区间&#xff0c;其颜色用于表示正负&#xff0c;而其气泡的大小用于表示数值绝对值的大小&#xff0c;可以十分直观地对两个变量的相关性进行分析。 由于Matlab中未收录相关性气泡热…

In-Context Learning中的示例选择及效果

一. ICL的背景 大型语言模型&#xff08;LLM&#xff09;如GPT-3是在大规模的互联网文本数据上训练&#xff0c;以给定的前缀来预测生成下一个token&#xff08;Next token prediction&#xff09;。这样简单的训练目标&#xff0c;大规模数据集以及高参数量模型相结合&#x…

国内可直接使用的OpenAI DALL*E 图片AI体验站,可通过自然语言生成图片

体验站最终演示效果 国内可直接使用的图片AI体验站&#xff1a;https://zizhu888.cn/text2img/index.html ChatGPT3.5 Turbo国内体验站: https://zizhu888.cn/chatgpt/index.html OpenAI DALL*E可以通过自然语言生成图片&#xff0c;内容创作者的福音&#xff0c;大大降低了创…

基于飞桨 PaddleVideo 的骨骼行为识别模型 CTR-GCN

main.pysame_seedsparse_argsmain ensemble.pyconfigs 文件夹Joint&#xff08;J&#xff09;的配置文件ctrgcn_fsd_J_fold0.yamlctrgcn_fsd_J_fold1.yaml Joint Angle&#xff08;JA&#xff09;的配置文件ctrgcn_fsd_JA_fold0.yaml paddlevideo 文件夹utils 文件夹__init__.p…

【Python 协程详解】

0.前言 前面讲了线程和进程&#xff0c;其实python还有一个特殊的线程就是协程。 协程不是计算机提供的&#xff0c;计算机只提供&#xff1a;进程、线程。协程是人工创造的一种用户态切换的微进程&#xff0c;使用一个线程去来回切换多个进程。 为什么需要协程&#xff1f; …

中国制造再击败一家海外企业,彻底取得垄断地位

中国制造已在13个行业取得领先优势&#xff0c;凸显出中国制造的快速崛起&#xff0c;日前中国制造又在一个行业彻底击败海外同行&#xff0c;再次证明了中国制造的实力。 一、海外企业承认失败 提前LGD宣布它位于广州的8.5代液晶面板生产线停产&#xff0c;预计该项目将出售给…