精华内容
下载资源
问答
  • 基于quartus II 实现的四位串行加法器 内含VHDL和逻辑图以及激励波形文件(VWF)
  • 做Quartus2实验的同学可以使用此资源,其中包括半加器,全加器和四位加法器。能够帮助你的更高的EDA分数
  • 四位串行进位加法器

    2018-11-26 23:49:30
    四位串行进位加法器,只能上传一个文件,所以TB 和 code在一个文件里了。
  • //4位串行进位加法器 module cy4 ( input[n-1:0]A,B,//输入端口声明 input Cin,//输入端口声明 output reg[n-1:0]SUM,//输出端口及变量的数据类型声明 output reg Cout//输出端口及变量的数据类型声明 ); ...
    //4位串行进位加法器
    module cy4
    (
     input[n-1:0]A,B,//输入端口声明
     input Cin,//输入端口声明
     output reg[n-1:0]SUM,//输出端口及变量的数据类型声明
     output reg Cout//输出端口及变量的数据类型声明
    );
    parameter n = 4;
    reg[n:0] C;
    integer k;//声明一个整型变量
    always @(A,B,Cin)
    begin
       C[0] = Cin;
       for(k = 0;k < n; k = k + 1)
       begin  
         SUM[k] = A[k] ^ B[k] ^ C[k];//求和
         C[k+1] = (A[k] & B[k])|(A[k] & C[k])|(B[k] & C[k]);//求进位
       end
       Cout = C[n];//输出进位号
    end
    endmodule
    
    

    这里写图片描述

    展开全文
  • FPGA_串行加法器

    2019-09-28 18:58:52
    四位串行加法器:  被加数a,加数b,低位进位ci,和数s,进位co. Verilog代码: module cxjfq(a,b,ci,s,co); input[3:0] a,b;input ci;output[3:0] s;output co; assign {co,s} = a+b+ci; endmodule 仿真结果:...

    四位串行加法器:

        被加数a,加数b,低位进位ci,和数s,进位co.

    Verilog代码:

    module cxjfq(a,b,ci,s,co);

    input[3:0] a,b;
    input ci;
    output[3:0] s;
    output co;

    assign {co,s} = a+b+ci;


    endmodule

    仿真结果:

    转载于:https://www.cnblogs.com/Sagoo/p/3219234.html

    展开全文
  • Verilog——四位加法器74HC283设计思路实现过程一位全加器原理代码实现设计模块测试模块仿真结果四位全加器74HC283原理 设计思路 先设计出一位全加器,再根据分层次分模块设计出四位加法器。原理图如下: 实现过程 ...

    一. 串行四位加法器

    设计思路

    先设计出一位全加器,在根据分层次分模块设计出四位加法器。

    1. 一位全加器

    1.1原理

    根据全加器真值表进行行为级建模。 真值表如下图所示:
    在这里插入图片描述

    1.2代码实现

    1.2.1设计模块

    module full_adder(
    input A,B,Ci,
    output reg S,Co);
    /*参数说明:
    输入:
    A,B为一位二进制被加数,Ci为来自低位的进位
    输出:
    S为和,Co为进位
    */
    always@(*)
    begin
        case({A,B,Ci})
    	3'b000:begin S=0;Co=0; end
    	3'b001:begin S=1;Co=0; end
    	3'b010:begin S=1;Co=0; end
    	3'b011:begin S=0;Co=1; end
    	3'b100:begin S=1;Co=0; end
    	3'b101:begin S=0;Co=1; end
    	3'b110:begin S=0;Co=1; end
    	3'b111:begin S=1;Co=1; end
        endcase
    end
    endmodule
    

    1.2.2测试模块

    //filename:tb_fulladder.v
    `timescale 10ns/1ns
    module tb_fulladder();
    reg A,B,Ci;
    wire S,Co;
    
    full_adder U(A,B,Ci,S,Co);
    
    initial
    	$monitor($time,"\tA=%b,B=%b,Ci=%b,S=%b,Co=%b",A,B,Ci,S,Co);
    initial
    begin
    	A=0;B=0;Ci=0;
    	#5;
    	A=1;B=0;Ci=1;
    	#5;
    	A=1;B=1;Ci=0;
    	#5;
    	$stop;
    end
    endmodule
    

    1.3 仿真结果

    在这里插入图片描述
    在这里插入图片描述

    2.用四个一位全加器串行成四位加法器

    2.1原理

    串行进位加法器。采用四个全加器构成四位数加法器。其原理图如图所示,将低位的进位输出信号接到高位的进位输出端。
    在这里插入图片描述

    2.2代码

    2.2.1设计模块

    module full_adder(
    input A,B,Ci,
    output reg S,Co);
    /*参数说明:
    输入:
    A,B为一位二进制被加数,Ci为来自低位的进位
    输出:
    S为和,Co为进位
    */
    always@(*)
    begin
        case({A,B,Ci})
    	3'b000:begin S=0;Co=0; end
    	3'b001:begin S=1;Co=0; end
    	3'b010:begin S=1;Co=0; end
    	3'b011:begin S=0;Co=1; end
    	3'b100:begin S=1;Co=0; end
    	3'b101:begin S=0;Co=1; end
    	3'b110:begin S=0;Co=1; end
    	3'b111:begin S=1;Co=1; end
        endcase
    end
    endmodule
    
    module _4adder(
    input [3:0] A,B,
    input Ci,
    output [3:0] S,
    output Co);
    /*参数说明:
    输入:
    A,B为四位二进制被加数,Ci为来自低位的进位
    输出:
    S为和,Co为进位
    */
    
    wire C0,C1,C2;
    full_adder U0(A[0],B[0],Ci,S[0],C0);
    full_adder U1(A[1],B[1],C0,S[1],C1);
    full_adder U2(A[2],B[2],C1,S[2],C2);
    full_adder U3(A[3],B[3],C2,S[3],Co);
    
    endmodule
    

    2.2.2测试模块

    //filename:tb_4adder.v
    `timescale 10ns/1ns
    module tb_74HC283();
    reg [3:0] A,B;
    reg Ci;
    wire [3:0] S;
    wire Co;
    /*参数说明:
    输入:
    A,B为一位二进制被加数,Ci为来自低位的进位
    输出:
    S为和,Co为进位
    */
    
    _74HC283 U(A,B,Ci,S,Co);
    
    initial
    	$monitor($time,"\tA=%b,B=%b,Ci=%b,S=%b,Co=%b",A,B,Ci,S,Co);
    initial
    begin
    	A=4'b0000;B=4'b0000;Ci=0;
    	#5;
    	A=4'b0000;B=4'b0000;Ci=1;
    	#5;
    	A=4'b1111;B=4'b1111;Ci=0;
    	#5;
    	A=4'b1111;B=4'b1111;Ci=1;
    	#5;
    	$stop;
    end
    endmodule
    

    2.3仿真结果

    在这里插入图片描述在这里插入图片描述

    二.超前四位加法器74HC283

    设计思路

    行为级建模加法器的功能明晰的,直接列真值表行为级建模,但是在编写过程中发现会出现这样

    case({A,B,Ci})
    	9'b0000_0000_0:begin S=4'b0000;Co=0; end
    	9'b0000_0001—0:begin S=4'b0001;Co=0; end
    ......
        endcase
    

    case语句会出现512条语句,显然不可取。

    数据流建模:
    由于串行进位加法器速度受到进位信号的限制。人们又设计出一种多位数超前进位加法逻辑电路。
    定义两个中间变量:产生变量Gi,传输变量Pi。这两个变量都与进位信号无关。通过代换将各位进位信号表达为只含有Gi,Pi与Ci-1的逻辑表达式(如下),所以个位的进位信号都只与两个加数和向最低位的进位信号Ci-1有关,因此它们是可以并行产生的。
    难点核心体现在这个超前进位产生电路中,上面我们知道超前进位产生电路输入和输出的逻辑表达式之后,采用数据流建模即可。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.超前进位产生电路

    1.1代码实现

    1.1.1设计代码

      //filename:ahead_gene_circuit.v
    module ahead_gene_circuit(
    input [3:0] P,G,
    input Ci,
    output  [3:0] C);
    /*参数说明:
    输入:
    P,G为定义的中间变量,产生变量Gi,传输变量Pi
    Ci为来自低位的进位
    输出:
    C为各位的进位信号
    */
    //根据各位进位信号的逻辑表达式,进行数据流建模。
    assign C[0]=G[0]|(P[0]&Ci);
    assign C[1]=G[1]|(P[1]&C[0]);
    assign C[2]=G[2]|(P[2]&C[1]);
    assign C[3]=G[3]|(P[3]&C[2]);
    endmodule
    

    1.1.2测试代码

    //filename:tb_ahead_gene_circuit.v
    `timescale 10ns/1ns
    module tb_ahead_gene_circuit();
    reg [3:0] P,G;
    reg Ci;
    wire  [3:0] C;
    
    ahead_gene_circuit U(P,G,Ci,C);
    initial
    	$monitor($time,"\tP=%b,G=%b,Ci=%b,C=%b",P,G,Ci,C);
    initial    begin
    	P=4'b0000;G=4'b0000;Ci=0;
    	#5;
    	P=4'b1111;G=4'b1111;Ci=0;
    	#5;
    	P=4'b1010;G=4'b1010;Ci=0;
    	#5;
    	P=4'b1010;G=4'b1010;Ci=1;
    	#5;
    	$stop;
    end
    endmodule
    

    1.2 仿真结果

    在这里插入图片描述
    在这里插入图片描述

    2.应用超前进位产生电路设计出74HC283

    2.1代码实现

    2.1.1设计模块

    //filename:ahead_gene_circuit.v
    module ahead_gene_circuit(
    input [3:0] P,G,
    input Ci,
    output  [3:0] C);
    /*参数说明:
    输入:
    Pi为传输信号,Gi为产生信号
    Ci为对最低位的进位
    输出:
    C为各位的进位信号
    */
    //根据各位进位信号的逻辑表达式,进行数据流建模。
    assign C[0]=G[0]|(P[0]&Ci);
    assign C[1]=G[1]|(P[1]&C[0]);
    assign C[2]=G[2]|(P[2]&C[1]);
    assign C[3]=G[3]|(P[3]&C[2]);
    endmodule
    
    module _74HC283(
    input [3:0] A,B,
    input Ci,
    output [3:0] S,
    output Co);
    /*参数说明:
    输入:A,B为被加数;Ci为对最低位的进位
    输出:S为和,co为产生的进位信号
    */
    //根据中间变量的定义表示出gi和pi。
    wire [3:0] P,G,C;
    assign P=A^B;
    assign G=A&B;
    //应用超前进位产生电路。
    ahead_gene_circuit U(P,G,Ci,C);
    
    assign Co=C[3];
    assign S[3]=C[2]^P[3];
    assign S[2]=C[1]^P[2];
    assign S[1]=C[0]^P[1];
    assign S[0]=Ci^P[0];
    endmodule
    

    2.1.2测试模块

    `timescale 10ns/1ns
    module tb2_74HC283();
    reg [3:0] A,B;
    reg Ci;
    wire [3:0] S;
    wire Co;
    
    _74HC283 U(A,B,Ci,S,Co);
    initial
    	$monitor($time,"\tA=%b,B=%b,Ci=%b,S=%b,Co=%b",A,B,Ci,S,Co);
    initial    begin
    	A=4'b0000;B=4'b0000;Ci=0;
    	#5;
    	A=4'b1111;B=4'b1111;Ci=0;
    	#5;
    	A=4'b1010;B=4'b1010;Ci=0;
    	#5;
    	A=4'b1010;B=4'b1010;Ci=1;
    	#5;
    	$stop;
    end
    endmodule
    

    2.2仿真结果

    在这里插入图片描述
    在这里插入图片描述

    三.问题与总结

    1。对于两个多位二进制数,也可以直接按位或,按位异或等等,不需要对数组一个一个进行或,异或等操作。
    2.仿真时,对于多位二进制数进行波形显示时,点击对用变量左侧的加号,将数据波形分开,效果更好。

    文章图片来自康华光编写的《电子技术基础——数字部分》

    展开全文
  • (1)计组实验_32位串行进位加法器 一、实验目的 1.掌握全加器和串行进位加法器的建模方法与验证技术。 2.掌握超前进位加法器的建模与验证技术。 二、实验工具 1.Xilinx Vivado 2014.2软件。 2.Windows系统PC机。 三、...

    (1)计组实验8加法器——32位串行进位加法器

    一、实验目的

    1.掌握全加器和串行进位加法器的建模方法与验证技术。
    2.掌握超前进位加法器的建模与验证技术。

    二、实验工具

    1.Xilinx Vivado 2014.2软件。
    2.Windows系统PC机。

    三、实验要求

    1.利用Verilog HDL对全加器和串行进位加法器建模与验证。
    2. 利用Verilog HDL对超前进位加法器建模与验证。

    四、实验内容

    32位串行进位加法器:
    图2 n位串行进位加法器

    五、代码

    【试用Verilog HDL对其进行建模,编写Testbench进行仿真,进行RTL分析查看其原理图,综合后查看原理图、获得最大功耗、资源消耗和最大延迟】

    1.建模如下:

    module CRA_32(A,B,Cin,S,Cout);
    parameter N=32;
    input wire [N-1:0] A;
    input wire [N-1:0] B;
    input wire Cin;
    output wire [N-1:0] S;
    output wire Cout;
    wire [N-2:0]C;
    
    FullAdder FA0 (A[0],B[0],Cin,S[0],C[0]);
    FullAdder FA1 (A[1],B[1],C[0],S[1],C[1]);
    FullAdder FA2 (A[2],B[2],C[1],S[2],C[2]);
    FullAdder FA3 (A[3],B[3],C[2],S[3],C[3]);
    FullAdder FA4 (A[4],B[4],C[3],S[4],C[4]);
    FullAdder FA5 (A[5],B[5],C[4],S[5],C[5]);
    FullAdder FA6 (A[6],B[6],C[5],S[6],C[6]);
    FullAdder FA7 (A[7],B[7],C[6],S[7],C[7]);
    FullAdder FA8 (A[8],B[8],C[7],S[8],C[8]);
    FullAdder FA9 (A[9],B[9],C[8],S[9],C[9]);
    FullAdder FA10 (A[10],B[10],C[9],S[10],C[10]);
    FullAdder FA11 (A[11],B[11],C[10],S[11],C[11]);
    FullAdder FA12 (A[12],B[12],C[11],S[12],C[12]);
    FullAdder FA13 (A[13],B[13],C[12],S[13],C[13]);
    FullAdder FA14 (A[14],B[14],C[13],S[14],C[14]);
    FullAdder FA15 (A[15],B[15],C[14],S[15],C[15]);
    FullAdder FA16 (A[16],B[16],C[15],S[16],C[16]);
    FullAdder FA17 (A[17],B[17],C[16],S[17],C[17]);
    FullAdder FA18 (A[18],B[18],C[17],S[18],C[18]);
    FullAdder FA19 (A[19],B[19],C[18],S[19],C[19]);
    FullAdder FA20 (A[20],B[20],C[19],S[20],C[20]);
    FullAdder FA21 (A[21],B[21],C[20],S[21],C[21]);
    FullAdder FA22 (A[22],B[22],C[21],S[22],C[22]);
    FullAdder FA23 (A[23],B[23],C[22],S[23],C[23]);
    FullAdder FA24 (A[24],B[24],C[23],S[24],C[24]);
    FullAdder FA25 (A[25],B[25],C[24],S[25],C[25]);
    FullAdder FA26 (A[26],B[26],C[25],S[26],C[26]);
    FullAdder FA27 (A[27],B[27],C[26],S[27],C[27]);
    FullAdder FA28 (A[28],B[28],C[27],S[28],C[28]);
    FullAdder FA29 (A[29],B[29],C[28],S[29],C[29]);
    FullAdder FA30 (A[30],B[30],C[29],S[30],C[30]);
    FullAdder FA31 (A[31],B[31],C[30],S[31],Cout);
    endmodule
    
    module FullAdder(A,B,CarryIn,Sum,CarryOut);
    	input wire A;
    	input wire B;
    	input wire CarryIn;
    	output wire Sum;
    	output wire CarryOut;
    	assign Sum=A^B^CarryIn;
    	assign CarryOut=(A&B)|(A&CarryIn)|(B&CarryIn);
    endmodule
    
    

    2.Testbench测试文件如下:

    module test;
        reg clk;
    	reg [31:0] A;
    	reg [31:0] B;
    	reg Cin;
    	wire Cout;
    	wire [31:0] S;
    	CRA_32 cra_32_0(A,B,Cin,S,Cout);//实例化
    	always #10 clk=~clk;
    	initial
    	begin
    	   clk=1'b0;
    		     A=32'h232234;B=32'h3013121;Cin=1'b0;
    		#100;A=32'h543;B=32'h171234;Cin=1'b0;
    		#100;A=32'h2554;B=32'h18122;Cin=1'b0;
    		#100;A=32'h3456;B=32'h193112;Cin=1'b0;
    		#100;A=32'h4765;B=32'h20321;Cin=1'b0;
    		#100;A=32'h5784;B=32'h30412;Cin=1'b1;
    		#100;A=32'h622;B=32'h40421;Cin=1'b1;
    		#100;A=32'h7999;B=32'h5032;Cin=1'b1;
    		#100;A=32'h8532;B=32'h630;Cin=1'b1;
    		//其他测试用例
    		$finish;
    	end
    endmodule
    
    

    3、功能仿真波形

    在这里插入图片描述

    4、RTL分析如图

    在这里插入图片描述

    5、综合如图

    在这里插入图片描述

    6、功耗分析如表

    在这里插入图片描述

    7、资源消耗如表

    在这里插入图片描述

    8、延迟分析如表

    六、总结

    链接:添加链接描述
    提取码:ahnu
    打开文件夹里的后缀为.xpr的文件即可在这里插入图片描述

    展开全文
  • 一般位数很多的话可以使用超前进位加法器和串行加法器结合或者就通过流水线来进行设计,提高频率。 可以参考的几个资料: 这个写的还是可以的,一个两级流水线: verilog流水线加法器 流水线定义请看这篇,讲的还蛮...
  • 加法器

    2021-02-03 17:45:16
    串行进位加法器图3-12为四位串行进位加法器的逻辑框图。这种加法器的构成比较简单,只需把四个全加器串联起来即可,S0—最低位和数,…,S4—最高位和数。1.低位全加器的进位输出连到相邻高位全加器的进位输入。2....
  •  电路1— 8位可控加减法电路在 Logisim 模拟器中打开 alu.circ 文件,在对应子电路中利用已经封装好的全加器设计8位串行可控加减法电路,可以直接使用在电路中使用对应的隧道标签,其中 X,Y 为两输入数,Sub 为加...
  • 实验:8位加法器设计实验1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的...
  • 这篇注释比较详细,由《Moselsim 第一个仿真程序 四位加法器》修改而来 原博客:https://blog.csdn.net/sinat_42483341/article/details/88970852 关于begin end 串行并行的易错点 源程序 //source program module ...
  • 如上图,s1的进位输入是s0的进位输出,相当于是等到第一个加法器运算完成,第二个加法器才开始工作,等到第二个加法器运算完成,第三个加法器才开始运算,一直等到第加法器运算完成。 假设每个加法器运算需要的...
  • 四位超前进位加器原理PAGEPAGE 8超前进位加法器原理74283为4位超前进位加法器,不同于普通串行进位加法器由低到高逐级进位,超前进位加法器所有位数的进位大多数情况下同时产生,运算速度快,电路结构复杂。...
  • 定点数补码加减法运算设计

    千次阅读 2019-08-28 10:14:43
    定点数补码加减法运算器设计一,四位串行加法器的设计(基于一位全加器FA)二,四位串行加减法器设计三,带溢出检测功能的加/减法运算器四,带无符号数溢出检测功能的加减运算器五,串行进位六,并行进位七,多位...
  • 在学习乘法器booth编码加Wallace树压缩时,发现在压缩部分积的时候用到了进位保留加法器(Carry Save Adder),博主对这种加法器不是很理解,而且拖了好久,我一直认为进位保留加法器就是一般的串行加法器,今天终于...
  • 在学习乘法器booth编码加Wallace树压缩时,发现在压缩部分积的时候用到了进位保留加法器(Carry Save Adder),博主对这种加法器不是很理解,而且拖了好久,我一直认为进位保留加法器就是一般的串行加法器,今天终于...
  • 串行进位加法器:把n个全加器按低位的进位输出与高位的进位输入相连的方法连接起来,各位全加器的进位信号以串联形式逐产生。 并行进位加法器:并行进位加法器的所有各位的进位都直接依赖最低进位C-1,即所有...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

四位串行加法器