Verilog学习之路(7)— 数字加法器

一、前言

数字加法器是一种较为常见的逻辑运算器件,被广泛用于计算机、通信和多媒体数字集成电路中。广义发加法器包括加法器和减法器,在实际系统中加法器的输入信号通常采用的是补码形式,因此就电路结构而言,加法器和减法电路是一样的,只不过输入信号采用的是补码输入。

二、全加器

如果运算考虑了来自低位的进位,那么该运算就为全加运算,实现全加运算的电路称为全加器。2输入1bit信号全加器的真值表如下所示, 其中A、B是两个加数,CI是来自低位的进位,SUM是相加的和,CO是向高位的进位。

A B CI SUM CO
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

通过真值表结合卡诺图我们可以化简得到逻辑表达式为如下所示

 SUM = A⊕B⊕CICO  = AB+(A⊕B)CI

我们则可以得到与之对应的电路图如下所示

在verilog中使用连续赋值语句实现如下所示

module fulladder(SUM, CO, A, B, CI);input A, B, CI;output SUM, CO;assign SUM = A^B^CI;assign CO = (A&B)|((A^B)&CI);
endmodule

另外还可以直接使用行为级描述方法实现

module fulladder(SUM, CO, A, B, CI);input A, B, CI;output SUM, CO;assign {CO, SUM} = A+B+CI;
endmodule

三、超前进位加法器

超前进位加法器是一种高速加法器,每级进位由附加的组合电路产生,高位的运算不需等待低位运算完成,因此可提供运算速度。如下为超前进位加法器的设计原理,来自《数字电子技术基础(第6版)》

然后我们可以编写一个4位超前进位加法器如下所示

module four_bits_fast_addr(sum, cout, a, b, cin);input   [3:0]   a, b;input          cin;output  [3:0]   sum;output          cout;wire   [4:0]   g,p,c;assign c[0] = cin;assign p = a | b;assign g = a & b;assign c[1] = g[0] | (p[0] & c[0]);assign c[2] = g[1] | (p[1] & (g[0] | (p[0] & c[0])));assign c[3] = g[2] | (p[2] & (g[1] | (p[1] & (g[0] | (p[0] & c[0])))));assign c[4] = g[3] | (p[3] & (g[2] | (p[2] & (g[1] | (p[1] & (g[0] | (p[0] & c[0])))))));    assign sum = p ^ c[3:0];assign cout = c[4];
endmodule

综合后的电路如图所示

将每一位分拆后如下所示

四、附录

上一篇:Verilog学习之路(6)— 组合电路的设计
下一篇:Verilog学习之路(8)— 时序电路的设计

Verilog学习之路(7)— 数字加法器相关推荐

  1. Verilog学习之路(8)— 时序电路的设计

    Verilog学习之路(8)- 时序电路的设计 一.前言 时序逻辑电路的输出不仅与当前时刻输入变量的取值有关,而且与电路的原状态,即与过去的输入情况有关. 时序逻辑电路的两个特点: 时序逻辑电路包括组 ...

  2. Verilog学习之路(4)— Verilog HDL的程序设计语句

    Verilog HDL的程序设计语句 一.连续赋值语句 连续赋值语句通常用来描述组合逻辑电路,连续赋值的目标类型主要是标量线网和向量线网两种,标量线网如"wire a,b;",向量 ...

  3. Verilog学习之路(6)— 组合电路的设计

    组合电路的设计 一.前言 组合电路的特点是电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路之前的状态无关,组合电路没有记忆功能. 在使用Verilog设计中组合电路的描述方法主要有四种:真值表 ...

  4. Verilog学习之路

    Verilog编程规范 1.冒号前后==同时==出现变量 2.模块接口写法 2.1 parameter . localparam.`define 1.冒号前后同时出现变量 在已知所需位宽的情况下,可使 ...

  5. 【Verilog HDL学习之路】第二章 Verilog HDL的设计方法学——层次建模

    2 Verilog HDL的设计方法学--层次建模 重要的思想: 在语文教学中,应该先掌握核心方法论,再用正确的方法论去做题目,这样能够逐渐加深对于方法论的理解,做题的速度和准确率也会越来越高. 在V ...

  6. verilog学习:加法器

    前言 之前的文章<verilog学习:使用VCS仿真验证一个全加器>,示范了下全加器,这篇文章就展开说一下加法器. 参考的视频有: [老邱数电]半加器与全加器基础 单片机功能这么强,为什么 ...

  7. FPGA学习之路—应用程序—原码二位乘法器及Verilog代码分析

    FPGA学习之路--原码二位乘法器及Verilog代码分析 原理 原码乘法可以分为原码一位乘和原码二位乘,两者在实现规则上大同小异.原码一位乘每次判断乘数的最低位,对被乘数和部分积进行相应操作.而原码 ...

  8. FPGA学习之路—应用程序—基于Verilog设计单总线8位ALU

    FPGA学习之路--基于Verilog设计单总线8位ALU 定义 ALU(arithmetic and logic unit) 算术逻辑单元,简称ALU,是计算机的数学运算核心,也就是负责运算的组件, ...

  9. FPGA学习之路—接口(3)—SPI详解及Verilog源码分析

    FPGA学习之路--SPI详解及Verilog源码分析 概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线. 优点 支持全 ...

  10. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析

    FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...

最新文章

  1. qsort与sort()
  2. Docker源码分析(八):Docker Container网络(下)
  3. 低成本运行 Spark 数据计算
  4. golang实现聊天室(二)
  5. 苹果如何分屏_玩转mac—苹果电脑操作教程
  6. halcon例程讲解_halcon例程学习笔记(6)
  7. Spring 框架 执行SQL getJdbcTemplate().query update 用法
  8. java11下载_Java11 64位下载_Java SE Development Kit 11(JDK11)下载 11.0.0 官方版_当载软件站...
  9. vivo android 刷机教程,vivo刷机步骤盘点【图文教程】
  10. JavaScript中的表单验证
  11. 强化学习必知二要素:计算效率和样本效率
  12. PS--人物皮肤处理流程(一)
  13. SNMP实现网络状态监控
  14. Android调用uc播放器,在UC android浏览器中使用摄像头设备(WebRTC API)
  15. 微信小程序 --长按复制、点击复制实现
  16. 合数(数论基础概念)
  17. 两车相撞的力怎么计算_两车正面碰撞事故车辆行驶速度计算方法
  18. 矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法
  19. mor命令_MOR游戏的情况。
  20. 毫无疑问计算机犯罪是一个很严重的问题英语,英语四级作文高分句型

热门文章

  1. 关于IE无法打开站点XX已终止操作问题
  2. 如何改变hr标签的颜色
  3. specular BRDF
  4. 服务器中修改数据库配置,服务器修改数据库配置未生效
  5. 第九课堂-#零基础学服装设计# 服装立体裁剪体验课(第18期)
  6. Kafka同步发送与异步发送消息
  7. 欧美html真人游戏,推荐几个好玩场面大的,欧美3d史诗级rpg魔幻手游
  8. delphi与网页交互
  9. [附源码]计算机毕业设计springboot微信点餐系统
  10. john5(john5和曼森的关系)