精华内容
下载资源
问答
  • 一位全加器设计一个四位的加法器一位全加器设计一个四位的加法器
  • 、基于LUT3的四位加法器设计 对于generate语句块,这是Verilog 2001语法中新增的语法,但需要注意generate-for语句: 二、基于LUT5的四位加法器设计 利用LUT3设计四位加法器的资源利用及延迟情况 对于上面利用LUT3...

    数字IC设计 FPGA——再谈加法器设计(使用Verilog 原语 进行四位加法器设计)

    前面介绍了关于xilinx FPGA CLB的基本原理和结构,以及如何使用原语进行设计(在一般的设计中使用不到,本节只是更好理解FPGA内部逻辑块资源的使用),参考这篇博客:
    浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))

    之前写过一篇关于如何使用Verilog 设计半加器,全加器及超前进位加法器的博客:数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器

    在使用FPGA进行设计时,如果能对FPGA中的资源分布及配置能有详细的了解,对于设计高性能的计算硬件具有更好的指导意义。因此我们可以使用原语来设计快速加法器或乘法器等比较常用的电路。

    一、基于LUT3的四位加法器设计

    因为一个全加器由输入A,B,及进位信号Cout 三个输入端口,所以利用查找表进行设计,应该选用LUT3以上的查找表,下面针对LUT3 单元进行设计分析
    下面的结构是经典的行波进位加法器
    在这里插入图片描述

    1. 全加器
      有关基本的加法器的介绍本节会略去。
      一位全加器的基本逻辑方程:
      S = A xor B xor Cin
      Cout = (A and B) or (A and Cin) or (B and Cin)

      下表给出了真值表:
      在这里插入图片描述
      因此输出S的三位查找表的初始值为:8’b1001_0110 (8’h96)
      进位输出Cout的三位查找表的初始值为:8’b1110_1000 (8’hE8)

    2. 使用Vivado进行一位全加器的设计
      代码如下:

    module addr_1bit(
    A,B,Cin,S,Cout
        );
    
    input A,B;
    input Cin;
    output S,Cout;
    
    LUT3 #(
          .INIT(8'h96)  // Specify LUT Contents    查找表值
       ) LUT3_inst1 (		
          .O(S),   // LUT general output 结果输出端
          .I0(Cin), // LUT input
          .I1(B), // LUT input
          .I2(A)  // LUT input
       );
    
    LUT3 #(
          .INIT(8'hE8)  // Specify LUT Contents 	查找表值
       ) LUT3_inst2 (		
          .O(Cout),   // LUT general output 进位输出端
          .I0(Cin), // LUT input
          .I1(B), // LUT input
          .I2(A)  // LUT input
       );
    
    endmodule
    

    LUT3_inst1和LUT3_inst2分别是S 结果输出端和Cout进位输出端。

    1. 仿真结果在这里插入图片描述
    2. 四位全加器的设计
    module addr_4bit(
    A,B,Ci,S,Co
        );
    
    input [3:0] A,B;
    input Ci;
    output [3:0] S;
    output Co;
    
    wire [4:0] Cin;
    
    genvar i;
    generate
       assign Ci = Cin[0];
       assign Co = Cin[4];
       for (i=0;i<4;i=i+1)
       begin: label				// label是实例化之后的名称
            addr_1bit u(
            .A(A[i]),
            .B(B[i]),
            .S(S[i]),
            .Cout(Cin[i+1]),
            .Cin(Cin[i])
            );  
       end  
    endgenerate
    
    endmodule
    

    需要注意的是Cin是线网wire类型的变量,位宽为5bit。addr_1bit即为上面的一位全加器的模块。

    对于generate语句块,这是Verilog 2001语法中新增的语法,方便了设计者设计电路。
    但需要注意generate-for语句:
    (1) 必须有genvar关键字定义for语句的变量。
    (2)for语句的内容必须加begin和end(即使就一句)。
    (3)for语句必须有个名字。

    上面的generate 的代码片段等效于下面:

    /*
    addr_1bit u1(.A(A[0]),.B(B[0]),.S(S[0]),.Cin(Cin[0]),.Cout(Cin[1]));
    addr_1bit u2(.A(A[1]),.B(B[1]),.S(S[1]),.Cin(Cin[1]),.Cout(Cin[2]));
    addr_1bit u3(.A(A[2]),.B(B[2]),.S(S[2]),.Cin(Cin[2]),.Cout(Cin[3]));
    addr_1bit u4(.A(A[3]),.B(B[3]),.S(S[3]),.Cin(Cin[3]),.Cout(Cin[4]));
    
    assign Ci = Cin[0];
    assign Cout = Cin[4];
    */
    

    其RTL电路为:
    在这里插入图片描述
    仿真结果如下:
    可以看到有正确的结果输出和进位输出
    在这里插入图片描述
    5. 利用LUT3设计四位加法器的资源利用及延迟情况
    在这里插入图片描述
    在这里插入图片描述

    二、基于LUT5的四位加法器设计

    1. 对于上面利用LUT3来设计加法器的情况,无论是资源使用情况还是延迟都存在改进的空间,由于Xilinx 7 系列中CLB是由LUT5/6组成,而上述的LUT3实际上把LUT5当作是LUT3来使用了,即资源中所使用的8个LUT3实际上占用8个LUT5。
      因此可以想到的是将加法器直接使用LUT5,就可以减少资源的使用及可以减少延迟。
      下图是改进的四位加法器结构:
      使用5输入查找表,就可以使用俩位全加器,即五个输入分别是,两个加数A0,A1、两个加数B0,B1,进位输入Cin;输出需要三个结果输出S0,S1,进位输出Cout。
      在这里插入图片描述
    2. 设计思路
      由于把两个全加器当作一级来使用,因此有五个输入,三个输出,但是LUT5只能提供俩输出,因此还需要一个LUT3来作为第三个输出使用。因此,每一级使用2个五输入查找表和一个三输入查找表。
      具体的每一级全加器的真值表如下:
      在这里插入图片描述

    我们将S0作为三位查找表的输出,其初始值仍为:8’b1001_0110 (8’h96);
    输出S1的五位查找表,初始值为:32’b1001_1001_1001_0110_1001_0110_0110_0110 (32’h9996_9666);
    输出Cout的五位查找表,初始值为:32’b1110_1110_1110_1000_1110_1000_1000_1000 (32’hEEE8_E888)

    1. 一级对应的全加器代码如下:
      在这里插入图片描述
      RTL电路结构:
      在这里插入图片描述
    2. 两级形成四位全加器
    module addr_4bit(
    a0,a1,b0,b1,Ci,s0,s1,Co
        );
    
    input [1:0] a0,a1,b0,b1;
    input Ci;
    output [1:0] s0,s1;
    output Co;
    
    wire [2:0] Cin;
    
    addr_2bit u1(
            .A0(a0[0]),
            .A1(a0[1]),
            .B0(b0[0]),
            .B1(b0[1]),
            .S0(s0[0]),
            .S1(s0[1]),
            .Cin(Cin[0]),
            .Cout(Cin[1])
    );
    
    addr_2bit u2(
            .A0(a1[0]),
            .A1(a1[1]),
            .B0(b1[0]),
            .B1(b1[1]),
            .S0(s1[0]),
            .S1(s1[1]),
            .Cin(Cin[1]),
            .Cout(Cin[2])
    );
    
    assign Ci = Cin[0];
    assign Co = Cin[2];
    
    endmodule
    

    RTL电路结构:
    在这里插入图片描述
    仿真结果:
    在这里插入图片描述
    5. 两级形成四位全加器的资源利用和延迟情况对比
    在这里插入图片描述
    在这里插入图片描述
    可以看到和之前采用LUT3设计的四位加法器相比,资源利用变少了,关键路径延迟也变小了。

    但需要说明一点的是:
    如果再不采用原语进行设计的情况下,直接编写加法器Verilog代码,综合工具会根据自己的算法给出一个比较合理的电路,可能会比我们采用后一种方法设计的要更好,这需要依赖EDA综合工具。
    但是通过了解CLB的不同的基本配置方式以及内部资源分布,对于更好理解软件综合过程和设计具有更好的指导意义,如果能再关键的位置手动配置硬件资源,可能会改善局部性能,这对于高性能计算硬件有重要意义,尤其是底层的硬件加法等部件。

    展开全文
  • 利用前一步设计好的四先行进位电路构造四快速加法器,其引脚定义如图所示,其中 X,Y 为四相加数,Cin 为进位输入,S 为和数输出,Cout 为进位输出,G,P 为 4 成组进位生成函数和成组进位传递函数
  • 加法器设计

    2012-11-04 15:35:56
    种64位加法器设计方法,,设计加法器的同学可参考
  • 华中科技大学计算机组成原理实验 运算器设计(加法器设计) 8可控加减法电路设计 CLA182四先行进位电路设计 4快速加法器设计 16快速加法器设计 32快速加法器设计 5无符号阵列乘法器设计 6有符号补码...
  • 16快速加法器、32快速加法器(运算器设计

    万次阅读 多人点赞 2020-04-23 20:35:40
    实验要求我们设计32的快速加法器,其思路同16快速加法器,有两种解题思路,可用两个16快速加法器进行设计,也可用8个四快速加法器进行设计(在这里我采用的是后种解法)。 .16快速加法器电...

    一.16位快速加法器
    首先了解下实验要求,实验要求我们设计出16位并行计算的加法器,因此我们可以借助第三关的四位快速加法器,用四个四位快速加法器构造成一个16位快速加法器
    二.32位快速加法器
    实验要求我们设计32位的快速加法器,其思路同16位快速加法器,有两种解题思路,可用两个16位快速加法器进行设计,也可用8个四位快速加法器进行设计(在这里我采用的是后一种解法)。

    一.16位快速加法器电路设计如下:
    做完前面三关的实验,应该懂得了其电路设计思路,因此在这里就不一一解说了。
    但是次高进位千万不要连接错了,如下图所示,用红色方框标注的是次次次高进位(既是第12位进位)次高如下图所示。
    在这里插入图片描述
    二.32位快速加法器电路设计如下:
    (注意点仍然是次高进位)
    在这里插入图片描述

    展开全文
  • 关于个 四超进位加法器设计报告
  • 计组实验四位加法器设计

    千次阅读 2019-10-02 23:34:59
    要求Verilog HDL语言设计一位全加器电路,调用一位全加器符号模块,顶层采用原理图方式设计位加法器一位全加器的符号:包括3个输入端和2个输入端 链接:https://pan.baidu.com/s/1GwJ2FukNtzbH6KJ8Xm5QSA ...

    QUARTUS2四位加法器

    要求Verilog HDL语言设计一位全加器电路,调用一位全加器符号模块,顶层采用原理图方式设计四位加法器。

    一位全加器的符号:包括3个输入端和2个输入端
    在这里插入图片描述
    链接:https://pan.baidu.com/s/1GwJ2FukNtzbH6KJ8Xm5QSA
    提取码:hw4w
    四位全加器原理图:
    在这里插入图片描述
    一位全加器代码:
    module jizushiyan1(a, b, cin, cout, sum);
    input a, b, cin;
    output cout, sum;
    assign {cout, sum}=a+b+cin;
    endmodule

    展开全文
  • 种基于FPGA的32快速加法器设计.pdf
  • 摘要:根据块32嵌入式CPU的400MHz主频的要求,结合该CPU五级流水线结构,并借鉴各种算法成熟的加法器,提出了种电路设计简单、速度快、功耗低、版图面积小的32改进定点加法器设计方案,为后续浮点加法器的...
  • 八位加法器设计

    2018-04-19 16:09:51
    基于vivado开发平台使用Verilog实现四位加法器设计然后再级联实现八位加法器
  • EDA实验(1)二位加法器设计

    千次阅读 2020-11-02 01:12:20
    EDA实验(1)二位加法器设计 这学期有一门EDA的实验课,正好准备学习FPGA,想分享一下这几次实验的思路和代码。 实验要求 1.采用verilog HDL设计全加器 2.采用全加器设计两位加法器 思路与代码 首先用Verilog设计...

    EDA实验(1)二位加法器设计

    这学期有一门EDA的实验课,正好准备学习FPGA,想分享一下这几次实验的思路和代码。

    实验要求
    1.采用verilog HDL设计全加器
    2.采用全加器设计两位加法器

    思路与代码
    首先用Verilog设计一个半加器,用半加器设计全加器,再用全加器设计两位加法器。
    1.1半加器的设计
    首先画出半加器的真值表,如下:

    abSOCO
    0000
    0110
    1010
    1101

    其中a,b为输入;SO,CO为输出
    1.2半加器的Verilog

    module h_adder(a,b,SO,CO);
    	input a,b;
    	output SO,CO;
    	assign SO=a^b;
    	assign CO=a&b;
    endmodule	

    2.1用半加器设计全加器
    全加器的真值表如下:

    ABCiSumCout
    00000
    00110
    01010
    01101
    10010
    10101
    11001
    11111

    其中A,B,Ci为输入;Sum,Cout为输出
    2.2全加器的Verilog

    module f_adder(A,B,Cin,count,sum);
    	input A,B,Cin;
    	output count,sum;
    	wire P1,P2,P3;
    	h_adder U1(A,B,P1,P2);
    	h_adder U2(.a(P1),.SO(sum),.b(Cin),.CO(P3));
    	or U3(count,P2,P3);
    endmodule	

    3.1两位加法器

    module two_adder(A0,B0,A1,B1,S0,S1,Cout);
    	input A0,B0,A1,B1;
    	output S0,S1,Cout;
    	wire P4=1'b0;
    	wire P5;
    	f_adder U4(A0,B0,P4,P5,S0);
    	f_adder U5(A1,B1,P5,Cout,S1);
    endmodule	
    
    展开全文
  • 8位加法器设计

    2015-06-10 09:41:46
    怎么说呢,这个文档比较详细的介绍了相关的做法,并且包含了一定的车工序代码,希望能帮助到大家
  • 32超前进位加法器设计verilog 分成几个部分啊
  • EDA技术》实验报告8二进制加法器设计 EDA技术》实验报告8二进制加法器设计 EDA技术》实验报告8二进制加法器设计
  • 款32嵌入式CPU的定点加法器设计.pdf
  • 利用quartusII9.0编译仿真的一位加法器,适合新人学习参考,学习eda的同学可以拿来参考学习 ,自己参考设计,有利于加深理解
  • 设计一个4位加法器

    千次阅读 2019-05-26 11:26:00
    a,b为4输入,cin为进位输入,把a+b+cin的结果赋值给5的data,cout为进位标志,dout为输出结果。 实验管脚配置: a[0]~a[3]配51、52、53、55,b[0]~b[3]配57、58、59、60;输出dout配48、47、45、44,cout配43...
  • 实验二 8位加法器设计

    千次阅读 2013-07-06 19:19:00
    一、实验目的 熟悉利用QuartusⅡ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,...利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。 2. 扩展命题 ...
  • 在Logisim设计一个用4个FA4构成个4的加减法器:可以在引脚输出结果,并显示在LED上。输入采用手动设置引脚
  • 篇 四超前进位加法器设计 ———————————————— 版权声明:本文为CSDN博主「IC跳跳鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://bl
  • ,内容介绍 加法器是数字电路中的最基础电路之,也是CPU的核心功能之。 在这个专栏,我会把所有我知道的数字电路的加法器相关模型...上篇:4行波加法器设计 目前:四超前进位加法器设计篇:暂无 ...
  • 这里是WUST数字逻辑课设的一道题目,内容是设计十进制加法器和八位二进制加法器,都需要用数码管显示,用的是老师给的isis,wust的学生可以直接拿来用,免费的,其中八位二进制加法器的用法需要看我的另篇讲解...
  • 基于VHDL语言八位加法器设计

    千次阅读 2020-06-12 16:53:59
    基于VHDL八位加法器设计 设计思路 ​ 加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。多位加法器的构成有两种方式:并行进位和串行进位。并行进位加法器设有进位产生逻辑,运算速度较快...
  • 实现个8加法器,并完成其仿真波形图(贴图)。 二、源代码 说明:本实验实现了八位加法器,可以实现八位的两数相加,获得八位结果以及进位。 全加器模块: //-----------------------------------------------...
  • 第5关:32快速加法器设计

    千次阅读 2021-03-30 20:05:49
    实验目的 帮助学生理解成组进位产生函数,成组进位传递函数的概念,...可能方案:(1)2个16位加法器直接串联,C16 信号采用下层的进位输出;(2))2个16位加法器直接串联,C16 进位输入采用上层的进位输出;(3)在16
  • 4BCD码加法器设计

    2009-12-17 08:38:01
    ALU的设计与仿真—4BCD码加法器设计 本次的设计内容是ALU的设计与仿真—4BCD码加法器设计

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,419
精华内容 11,767
关键字:

一位加法器的设计