0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

看看全减器电路与Verilog

冬至子 来源:FPGA探索者 作者:FPGA探索者 2023-06-25 17:38 次阅读

半加器

图片

** 输入 A/B,输出和 S,输出 C 为进位。

**

** 输入 A = 0,B = 0,0+0 = 0,所以 S = 0,C = 0;

**

** 输入 A = 0,B = 1,0+1 = 1,所以 S = 1,C = 0;**

** 输入 A = 1,B = 0,1+0 = 1,所以 S = 1,C = 0;**

** 输入 A = 1,B = 1,1+1 = 10(二进制加法,进 1),**

** 所以 S = 0,C = 1;**

图片

S = A ^ B        // 输出加法结果
C = A & B        // 输出进位结果

(1)根据真值表编写

按照半加器和全加器的真值表写出输出端的逻辑表达式,对半加器,输出的进位端是量输入的“与”,输出的计算结果是量输入的异或;对全加器,也按照逻辑表达式做。

//半加器模块
module adder_half(  
  input        a,
  input        b,
  output reg   sum,
  output reg   cout
);


//这里的always @(*)搭配里面的“=”阻塞赋值符号
//实现的效果和 assign sum = a ^ b; assign cout = a & b;是一样的
always @(*)
begin
  sum = a ^ b;
  cout = a & b;
end
endmodule

全加器

当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数,这种就是“全加”。

真值表:

图片

图片

使用与门、或门和异或门搭建电路:

图片

根据真值表编程,门级描述:

// 全加器
module all_adder(cout,sum,a,b,cin);


input a,b,cin;
output sum,cout;


assign sum = a^b^cin;
assign cout = (a&b)|(a&cin)|(b&cin);
endmodule

全加器编程其他思路

直接描述功能,加法直接得到低位的和、高位的进位。

这种方式描述简单,易于扩展,但是底层具体的实现方式比较抽象。

// 1 位全加器
module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;


assign {cout,sum} = a+b+cin;  // 位拼接,直接描述功能


endmodule

扩展,4 位全加器,运算不需要改变,只需要更改位宽:

module add4(cout,sum,a,b,cin);


 input[3:0] a,b;
 input cin;
 output[3:0] sum;
 output cout;
 
 assign {cout,sum}=a+b+cin;
 
 endmodule

图片

半减器

输入:被减数 A,减数 B

输出:差 S,借位 Cout

(1)0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2)0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(3)1 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

(4)1 - 0 = 0,不需要借位,所以 S = 1,Cout = 0;

图片

通过观察(或者卡诺图化简),可以得出

S = A ^ B;
Cout = (~A) & B;

图片

全减器

输入:被减数 A,减数 B,低位向高位的借位 Cin

输出:差 S,借位 Cout

这里需要注意:需要计算的是 A - B - Cin

(1) 0 - 0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2) 0 - 1 - 0 = 1,需要借位,所以 S = 1,Cout = 1;

(3) 1 - 1 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(4) 1 - 0 - 0 = 1,不需要借位,所以 S = 1,Cout = 0;

(5) 0 - 0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(6) 0 - 1 - 1 = 0,需要借位,所以 S = 0,Cout = 1;

(7) 1 - 1 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(8) 1 - 0 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

图片

对 Cout,不容易观察其表达式,使用卡诺图化简:

图片

S = A ^ B ^ Cin
Cout = (~A) & ( B ^ Cin ) + B & Cin

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 门电路
    +关注

    关注

    7

    文章

    199

    浏览量

    40160
  • 全加器
    +关注

    关注

    10

    文章

    62

    浏览量

    28496
  • 半加器
    +关注

    关注

    1

    文章

    29

    浏览量

    8791
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8224
收藏 人收藏

    评论

    相关推荐

    北大verilog课件,大家都来看看

    北大verilog课件,大家都来看看啊{:12:}
    发表于 04-27 16:51

    学生作品:怎样做一个四位全减器

    怎样做一个四位全减器
    发表于 05-30 21:50

    请问如何用74LS138和与门实现一位全减器

    如何用74LS138和与门实现一位全减器,知识有限,求解答
    发表于 10-29 00:43

    Verilog典型电路设计

    Verilog典型电路设计
    发表于 08-03 09:23 61次下载
    <b class='flag-5'>Verilog</b>典型<b class='flag-5'>电路</b>设计

    Verilog_HDL教程

    Verilog_HDL教程,又需要的朋友下来看看
    发表于 05-11 17:30 0次下载

    Verilog+HDL实用教程-电科

    Verilog+HDL实用教程-电科,下来看看
    发表于 05-11 17:30 34次下载

    Verilog 黄金指南

    Verilog 黄金指南,有需要的朋友下来看看
    发表于 05-20 11:16 24次下载

    8051 verilog 版代码

    8051 verilog 版代码分享,有需要的下来看看
    发表于 05-24 09:45 0次下载

    8051core-Verilog

    8051core-Verilog源代码分享,有需要的下来看看
    发表于 05-24 09:45 14次下载

    Verilog 入门的实例代码

    Verilog 入门的实例代码,有需要的下来看看
    发表于 05-24 10:03 20次下载

    verilog_代码

    verilog_代码分享,有需要的朋友下来看看
    发表于 05-24 10:03 12次下载

    用74ls138实现一位全减器

    用3线—8线译码器74LS138和门电路设计1位二进制全减器,输入为被减数、减数和来自低位的借位;输出为两数之差和向高位的借位信号。
    发表于 10-31 17:15 24w次阅读
    用74ls138实现一位<b class='flag-5'>全减器</b>

    Verilog语法基础

    Verilog HDL是一种用于数字系统设计的语言。用Verilog HDL描述的电路设计就是该电路Verilog HDL模型也称为模块。
    的头像 发表于 03-08 14:29 1.3w次阅读

    如何使用Verilog HDL描述可综合电路

    1、如何使用Verilog HDL描述可综合电路 Verilog 有什么奇技淫巧?我想最重要的是理解其硬件特性。Verilog HDL语言仅是对已知硬件
    的头像 发表于 04-04 11:19 4207次阅读
    如何使用<b class='flag-5'>Verilog</b> HDL描述可综合<b class='flag-5'>电路</b>?

    看看两个使用Verilog HDL设计的简单电路

    与非门的Verilog 描述如下图所示,源程序文件的后缀为.v。
    的头像 发表于 09-17 15:03 1573次阅读
    <b class='flag-5'>看看</b>两个使用<b class='flag-5'>Verilog</b> HDL设计的简单<b class='flag-5'>电路</b>