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

这篇具有很好参考价值的文章主要介绍了verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

2023.4.25


一、半加器

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

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

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

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

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

二、全加器

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

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

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

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

用两个半加器来组成一个全加器
verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图

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

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的计算

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

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

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

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

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)

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

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

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

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

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

而整个电路的计算结果需要四级延时
verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图

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的数相加,分别得到进位和和的结果,再把进位和和进行相加。

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

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

verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图文章来源地址https://www.toymoban.com/news/detail-429657.html

到了这里,关于verilog手撕代码2——各种加法器介绍——真值表、表达式、电路图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog实现超前进位加法器

    在CPU等对性能要求较高的电路中,一般都会采用超前进位加法器,因为超前进位加法器的延时相对来说比较小。下面讲述超前进位加法器的原理: 我们知道,一个三输入,二输出的全加器,其逻辑关系为 S = A ⊕ B ⊕ C i n S=Aoplus Boplus C_{in} S = A ⊕ B ⊕ C in ​ C o u t = ( A B ) ∣

    2023年04月08日
    浏览(25)
  • 【verilog】6位二进制数加法器

    1:掌握无符号二进制数加法器的设计方法。 2:掌握使用Modelsim对verilog程序进行仿真和验证的方法。 二进制加法器由全加器构成,全加器功能和电路图如下图所示。 全加器对两个1位二进制数和1位来自低位的进位做加法运算,产生1位和和1位向更高位的进位。图中(a)是全加

    2024年02月06日
    浏览(31)
  • 【FPGA】Verilog:BCD 加法器的实现 | BCD 运算 | Single-level 16 bit 超前进位加法器 | 2-level 16-bit 超前进位加法器

    0x00 BCD 运算 在 BCD 中,使用4位值作为操作数,但由于只表示 0 到 9 的数字,因此只使用 0000 到 1001 的二进制数,而不使用 1010 到 1111 的二进制数(don\\\'t care)。 因此,不能使用常规的 2\\\'complement 运算来计算,需要额外的处理:如果 4 位二进制数的运算结果在 1010 到 1111 的范围

    2024年02月05日
    浏览(34)
  • 【FPGA】Verilog:二进制并行加法器 | 超前进位 | 实现 4 位二进制并行加法器和减法器 | MSI/LSI 运算电路

    0x00 并行加法器和减法器 如果我们要对 4 位加法器和减法器进行关于二进制并行运算功能,可以通过将加法器和减法器以 N 个并行连接的方式,创建一个执行 N 位加法和减法运算的电路。 4 位二进制并行加法器 4 位二进制并行减法器

    2024年02月05日
    浏览(41)
  • verilog数组的定义、转换和加法器的实现

    看了别人的博客有的人也称reg [31:0] add0[0:12]这样的数组为二维数组,其实中二维数组不是真正意义上的数组,而是由多个寄存器组成的ROM或者RAM。我觉得这样理解好记一点:这个是一维数组,一共有0到12共13组数据,每组数据的宽度是0到31一共32个位宽。 优势:简单易于编程

    2024年02月11日
    浏览(31)
  • verilog全加器和四位加法器

    半加器: 保存为half_addr.bsf之后,可以在该项目中添加半加器 全加器: 通过RTL-Viewer查看半加器和全加器 添加全加器到项目 在process里面先后执行start fitter 和start time analyzer 生成testbench模板 修改testbench文件: 添加到项目 注意在联合modelsim时让generate functinal simulation netlist值为

    2024年02月07日
    浏览(32)
  • Verilog数字系统设计——带进位的8位加法器

    试分别使用门级原语和always 语句设计带进位的8位加法器,要求编制测试模块对实现的逻辑功能进行完整的测试; 使用门级原语设计时注意先在草稿上做出该加法器的门级设计; 如有余力可以进一步使用门级原语设计出带超前进位链的8位加法器(期末有加分); 实验提交

    2024年02月15日
    浏览(31)
  • [FPGA]用Verilog写一个简单三位二进制加法器和减法器

    加法器和减法器是数字电路中的基本组件,它们可以对二进制数进行算术运算。加法器可以将两个或多个二进制数相加,得到一个和和一个进位。减法器可以将两个二进制数相减,得到一个差和一个借位。加法器和减法器可以用来实现更高级的运算,例如乘法、除法、移位等

    2024年02月04日
    浏览(36)
  • FPGA学习笔记(1):使用Verilog实现常见的加法器

    本文使用VerilogHDL实现一些简单的加法器,本人水平有限,希望大佬能够多指证 Quartus Prime(18.0) Modelsim 半加器可以用于计算两个单比特二进制数的和,C表征进位输出,S表述计算的结果。 半加器的真值表 化简以后的逻辑表达式可以表达为: s = a’b+ab’ c = ab Verilog 代码块 全加

    2024年02月09日
    浏览(32)
  • Verilog设计4位CLA加法器电路,并仿真测试

    使用Quartus+modelsim完成本次设计 对于超前进位加法器 (CLA)加法器,它不同于普通加法器。如果对于两个1024位的数字进行相加,那么普通的串行加法器因为只有算出 C x C_{x} C x ​ 才能继续计算 C x + 1 C_{x+1} C x + 1 ​ ,这会导致整体的效率非常低。如果使用超前进位加法器,那

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包