用逻辑门实现四位加法器

这篇具有很好参考价值的文章主要介绍了用逻辑门实现四位加法器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.无符号数全加器

1.无符号数四位全加器原理:

先来看一位全加器:

加数A

加数B

结果

0

0

0

0

1

1

1

0

1

1

1

0(进位1)

异或门相似,用异或门记录

四位全加器电路图,fpga开发

用与门记录A+B的进位

四位全加器电路图,fpga开发

将进位输入与A+B结果相与再与进位相或得进位输出,将进位输入与加数相加计算结果

四位全加器电路图,fpga开发

四位全加器则将低位的进位输出与高位的进位输入相连,最低位进位输入接地从而保证其仅为输入始终为0,溢出与否由最高位进位输出判断

2.电路及方案

将四个一位全加器相互连接,低位的进位输出与高位的进位输入相连,最低位进位输入接地从而保证其仅为输入始终为0,溢出与否由最高位进位输出判断

四位全加器电路图,fpga开发

图表 1四位全加器电路图

3.verilog语言实现:

module full_adder(

    input [3:0] a, b,

    input cin,

    output reg [3:0] cout,

    output reg [3:0] sum ,

    output [3:0] s,

    output overflow);

   

    integer i=0;

    always@(*)

        begin

            for(i=0;i<=3;i=i+1)

                if (i==0) begin

                    sum[i]=cin^a[i]^b[i];

                    cout[i]=a[i]&b[i]|cin&(a[i]^b[i]);

                end

                else begin

                    sum[i]=cout[i-1]^a[i]^b[i];

                    cout[i]=a[i]&b[i]|cout[i-1]&(a[i]^b[i]);

                end

        end

            assign s=a+b;

            assign overflow = ( a[3] & b[3] & ~s[3] ) | (~a[3] & ~b[3] & s[3]);

endmodule文章来源地址https://www.toymoban.com/news/detail-806413.html

RTL分析生成原理图

四位全加器电路图,fpga开发

二.有符号数全加器

原理:有符号数则需要先判断符号位是否一致以及数的大小,当符号位不同时,需要将负数转补码再相通过一中的无符号数全加器相加,再将结果取补得原码;当符号位相同时,数值直接相加即可,同无符号数全加器,符号位取加数的符号位

至此,将无符号数全加器进行封装(如下图),根据原理通过HDL实现以上功能

四位全加器电路图,fpga开发

verilog 行为描述:

module signed_adder

#(parameter WIDTH=4)

(

input wire [WIDTH-1:0] a,

input wire [WIDTH-1:0] b,

output reg [WIDTH-1:0] o_sum,

output reg [3:0] s,

output reg overflow

);

reg [WIDTH-1:0] o_a;

reg [WIDTH-1:0] o_b;

reg sign_a;

reg sign_b;

integer i=0;

always@(*)

    begin

        sign_a=a[WIDTH-1];

        sign_b=b[WIDTH-1];

        if(sign_a==sign_b==0) begin

            o_sum=a+b;

            s=a+b;

            overflow = ( a[3] & b[3] & ~s[3] ) | (~a[3] & ~b[3] & s[3]);//溢出判断

        end

        else if(sign_a==sign_b==1) begin

            o_a=(a^1)+1;

            o_b=(b^1)+1;

            o_sum=(a+b)^1;

            s=a+b;

            overflow = ( a[3] & b[3] & ~s[3] ) | (~a[3] & ~b[3] & s[3]);//溢出判断

        end

        else if(sign_a==0) begin

            o_b=(b^1)+1;

            o_sum=((a+b)^1)+1;

            s=a+b;

            overflow = ( a[3] & b[3] & ~s[3] ) | (~a[3] & ~b[3] & s[3]);//溢出判断

        end

        else begin

                o_a=(a^1)+1;

                o_sum=((a+b)^1)+1;

                s=a+b;

                overflow = ( a[3] & b[3] & ~s[3] ) | (~a[3] & ~b[3] & s[3]);//溢出判断

        end

    end

endmodule

到了这里,关于用逻辑门实现四位加法器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • VHDL语言基础-组合逻辑电路-加法器

    目录 加法器的设计: 半加器: 全加器: 加法器的模块化: 四位串行进位全加器的设计: 四位并行进位全加器: 串行进位与并行进位加法器性能比较: 8位加法器的实现: 在数字系统中,常需要进行加、减、乘、除等运算,而乘、除和减法运算均可变换为加法运算,故加法

    2024年02月04日
    浏览(36)
  • 数字逻辑---头歌实训作业---加法器设计(Logisim)

    第1关:半加器设计 如有任何不解或者想要答案代码,可在评论区喊话我哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案:   任务描述 本关任务:利用在Logisim中的“组合逻辑分析”工具自动生成半加器电路。 相关知识 半加器电路是指对两个输

    2023年04月13日
    浏览(35)
  • # Quartus实现四位全加器

    1.首先将之前做的一位全加器作为模块选择File-Create/Update-CreateSymbolFilesforCurrentFile 选择File-New-Block Diagram/Schematic File 选择元件(四个fulladder,两个input,两个output,两个gnd) 原理图如下(注意标注输入输出名和分支名) 编译成功后选择tool-Netlist Viewers-RTL Viewer得到电路图如下

    2024年02月08日
    浏览(35)
  • FPGA入门:QuartusⅡ实现半加器,全加器,四位全加器

    1、半加器是指对输入的两个一位二进制数相加,输出一个半加结果位和半加进位的组合电路,是没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。 2、半加器的真值表如下; S位结果位,C为进位 3、由真值表可以推出半加器的逻辑表达式为: 4、半加器逻辑电

    2023年04月25日
    浏览(32)
  • FPGA加法器实现与资源消耗-四位数加法器

    测试在实现半加器和全加器的基础上开始实现多位数的加法器 可以按照一位全加器,然后循环实现多位加法器。 相加正确,功能正确。 可能看不太清,但是基本就是按照与、或、异或进行连接,而且是串行实现的。 分析可知,工具使用两个查找表(SUM[0]_INST_0,SUM[1]_INST_0)实

    2024年02月03日
    浏览(37)
  • 数字IC经典电路(1)——经典加法器的实现(加法器简介及Verilog实现)

    加法器是数字系统最基础的计算单元,用来产生两个数的和,加法器是以二进制作运算。负数可用二的补数来表示,减法器也是加法器,乘法器可以由加法器和移位器实现。加法器和乘法器由于会频繁使用,因此加法器的速度也影响着整个系统的计算速度。对加法器的设计也

    2024年02月14日
    浏览(38)
  • 【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日
    浏览(35)
  • 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日
    浏览(26)
  • 【FPGA】Verilog:二进制并行加法器 | 超前进位 | 实现 4 位二进制并行加法器和减法器 | MSI/LSI 运算电路

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

    2024年02月05日
    浏览(43)
  • 一位全加器及四位全加器————FPGA

    环境: 1、Quartus18.0 2、vscode 3、基于Intel DE2-115的开发板 全加器简介: 全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。

    2024年02月03日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包