实验-组合电路设计1-全加器和加法器(数字逻辑)

目录

一、实验内容

二、实验步骤

2.1  全加器的设计

2.2 加法器的设计

三、调试过程

3.1 全加器调试过程

2.加法器的调试过程

四、实验使用环境

五、实验小结和思考

一、实验内容

a) 介绍

在这次实验中,你将熟悉 Logisim 的操作流程,并且学习如何通过画图的方法 设计出计算机当中的核心运算器件——ALU。 然后,我们将使用七段数码管进一 步地人性化地显示出 ALU 的计算结果。

b) 全加器设计

一个全加器具有三个输入(A, B, Cin)和两个输出(S, Cout)。如下图所示,输入 A B 各代表一个 1 比特二进制数,输出 S 表示 A B 之和:

Cin (进位输入) and Cout (进位输出)信号用于输入和输出多于一个比特的情况

c)设计一个 2 比特加法器

一个全加器只能够实现 1 比特的运算。要实现 N 比特的加法,可以采用多个全加器以行波进位的形式实现

二、实验步骤

2.1  全加器的设计

(1)真值表:

                     Inputs

Outputs

   Cin

     B

     A

    Cout

     S

   0

     0

    0

     0

     0

   0

     0

    1

     0

     1

   0

     1

    0

     0

     1

   0

     1

    1

     1

     0

   1

     0

    0

     0

     1

   1

     0

    1

     1

     0

   1

     1

    0

     1

     0

   1

     1

    1

     1

     1

(2)电路原理图

图1 全加器的电路原理图

图2 全加器的封装电路图

(3)步骤

①使用逻辑门等电子器件实现全加器的逻辑方程,推断出全加器的实验表达式:

          Cout=B*A+Cin*A+Cin*B

          S=(not)Cin*(not)B*A+(not)Cin*B*(not)A+Cin*(not)A*(not)B+Cin*B*A

②设置全加器电路输入位为A、B、Cin,输出位为S和Cout,S为和位,Cout为进位位

③将A、B、Cin分别连接到或门和与门的输入端,输出端为S、Cout

④经过结果运算,得到S,Cout

2.2 加法器的设计

(1)真值表

   A1

    A0

   B1

    B0

    S1

    S0

 溢出情况

   0

    0

   0

    0

    0

    0

   无

   0

    0

   0

    1

    0

    1

   无

   0

    0

   1

    0

    1

    0

   无

   0

    0

   1

    1

    1

    1

   无

   0

    1

   0

    0

    0

    1

   无

   0

    1

   0

    1

    1

    0

   无

   0

    1

   1

    0

    1

    1

   无

   0

    1

   1

    1

    0

    0

   有

   1

    0

   0

    0

    1

    0

   无

   1

    0

   0

    1

    1

    1

   无

   1

    0

   1

    0

    0

    0

   有

   1

    0

   1

    1

    0

    1

   有

   1

    1

   0

    0

    1

    1

   无

   1

    1

   0

    1

    0

    0

   有

1

    1

   1

    0

    0

    1

   有

   1

    1

   1

    1

    1

    0

   有

(2)电路原理图

图3 加法器封装电路图

(3)步骤

用上面方法创建一比特全加器。

②将两个一比特全加器级联起来,第一个全加器的输出进位连接到第二个全加器的输入进位,从而实现两个二进制数的相加。

③逻辑表达式:

S0 = ~Cin⋅~B0⋅A0+~Cin⋅B0⋅~A0+Cin⋅~B0⋅~A0+Cin⋅B0⋅A0

Cout = B1⋅A1+B0⋅A0⋅A1+B0⋅A0⋅B1+Cin⋅A0⋅A1+Cin⋅A0⋅B1+Cin⋅B0⋅A1+Cin⋅B0⋅B1

S1 = ~Cin⋅~B0⋅~B1⋅A1+~Cin⋅~B0⋅B1⋅~A1+~Cin⋅~A0⋅~B1⋅A1+~Cin⋅~A0⋅B1⋅~A1+B0⋅A0⋅~B1⋅~A1+B0⋅A0⋅B1⋅A1+~B0⋅~A0⋅~B1⋅A1+~B0⋅~A0⋅B1⋅~A1+Cin⋅A0⋅~B1⋅~A1+Cin⋅A0⋅B1⋅A1+Cin⋅B0⋅~B1⋅~A1+Cin⋅B0⋅B1⋅A1

④判断溢出:插入LED灯判断是否溢出(若LED亮灯则溢出,否则无溢出)

图4 判断是否溢出

三、调试过程

3.1 全加器调试过程

eg.1

图5 Cin=1 B=1 C=1得Cout=1,S=1

使用表达式进行检验:Cout=B·A+Cin·A+Cin·B=1*1+1*1+1*1=3

                                    S=~Cin·~B*A+~Cin·B·~A+Cin·~A·~B+Cin·B·A=0+0+0+1=1

经检验结果,设计成立

eg 2:

图6 Cin=0 B=1 A=1 得Cout=1,S=0

使用表达式进行检验:Cout=B*A+Cin*A+Cin*B=1+0+0=1

                                    S=(not)Cin*(not)B*A+(not)Cin*B*(not)A+Cin*(not)A*(not)B+Cin*B*A=0+0+0+0=0

2.加法器的调试过程

图7 A0=1、B0=0、B1=1、A1=0得S0=1、Cout=0、S1=1

进行检验:LED灯不亮  A1A0+B1B0=01+10=11   S1=1  S0=1  无溢出

图9 A0=1、B0=1、B1=1、A1=1得S0=0、Cout=1、S1=1

进行检验:LED灯发亮  A1A0+B1B0=11+11=6   S1S0=10=2  有溢出

有溢出的真值表:

   A1

    A0

   B1

    B0

    S1

    S0

 溢出情况

   0

    1

   1

    1

    0

    0

   有

   1

    0

   1

    0

    0

    0

   有

   1

    0

   1

    1

    0

    1

   有

   1

    1

   0

    1

    0

    0

   有

1

    1

   1

    0

    0

    1

   有

   1

    1

   1

    1

    1

    0

   有

四、实验使用环境

        本实验采用 Logisim 电路仿真平台。在使用 Logisim 设计本实验要求的数字电路的时候,

必须使用基本的逻辑门完成设计,而不允许使用 Logisim 提供的运算器(如封装好的加法

器、复用器或带译码器的七段数码管)

五、实验小结和思考

1. 遇到的问题
  • 二进制表示混淆:起初不清楚如何区分高低位,导致2bit补码范围理解错误(实际范围:-2到1)。

  • 减法器设计困惑:不确定1bit减法是否可行(实际可通过补码实现:A - B = A + (~B + 1))。

2. 解决过程
  • 确定高低位定义和补码范围,明确2bit补码最小值为10(-2),最大值为01(1)。

3. 实验收获
  • 从真值表推导逻辑表达式(如S = A⊕B⊕Cin)。

  • 独立设计加法器、减法器(基于补码)和复用器电路。

  • 二进制数的位权概念(低位为2^0,高位为2^1)。
  • 减法器本质是“加补码”,统一了加减法硬件设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux进程控制与替换详解

进程创建 fork函数初识 在linux中fork函数是非常重要的函数,它从已存在进程中创建⼀个新进程。新进程为子进程,而原进程为父进程。 进程调用fork,当控制转移到内核中的fork代码后,内核做: • 分配新的内存块和内核数据结构给子进程 • 将父进程部分数据结构内容拷贝至…

Vue3学习笔记2——路由守卫

路由守卫 全局 router.beforeEach((to, from, next) > {})router.afterEach((to, from, next) > {}) 组件内守卫 beforeRouteEnter((to, from, next) > {})beforeRouteUpdate((to, from, next) > {})beforeRouteLeave((to, from, next) > {}) 路由独享 be…

AI与无人零售:如何通过智能化技术提升消费者体验和运营效率?

引言:无人零售不只是无人值守 你走进一家无人便利店,没有迎宾、没有收银员,甚至没有一个人在场,但你刚拿起商品,货架旁的摄像头就悄悄“看懂”了你的动作,系统已经在后台为你记账。你以为只是没人管&#x…

如何在3dMax中使用UVW展开修改器?

UVW展开(Unwrap UVW)修改器是3dmax中的一个强大工具,允许对纹理如何应用于3D模型进行精确控制。 与更简单的UVW Map修改器不同,Unwrap UVW修改器提供了高级选项,用于手动编辑纹理映射,对于详细和复杂的模型来说是必不可少的。 在本文中,我们将探讨增强您对Unwrap UVW修…

【Linux】进程优先级与进程切换理解

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、进程优先级 1. 什么是进程优先级 2. 为什么有进程优先级 3. 进程优先级的作用 4. Linux进程优先级的本质 5. 修改进程优先级 二、进…

【Hive入门】Hive高级特性:事务表与ACID特性详解

目录 1 Hive事务概述 2 ACID特性详解 3 Hive事务表的配置与启用 3.1 启用Hive事务支持 3.2 创建事务表 4 Hive事务操作流程 5 并发控制与隔离级别 5.1 Hive的锁机制 5.2 隔离级别 6 Hive事务的限制与优化 6.1 主要限制 6.2 性能优化建议 7 事务表操作示例 7.1 基本…

二叉树算法精解(Java 实现):从遍历到高阶应用

引言 二叉树(Binary Tree)作为算法领域的核心数据结构,在搜索、排序、数据库索引、编译器语法树构建等众多场景中都有着广泛应用。无论是初学者夯实算法基础,还是求职者备战技术面试,掌握二叉树相关算法都是不可或缺的…

ES6入门---第二单元 模块二:关于数组新增

一、扩展运算符。。。 1、可以把ul li转变为数组 <script>window.onloadfunction (){let aLi document.querySelectorAll(ul li);let arrLi [...aLi];arrLi.pop();arrLi.push(asfasdf);console.log(arrLi);};</script> </head> <body><ul><…

Nature正刊:新型折纸启发手性超材料,实现多模式独立驱动,变形超50%!

机械超材料是一种结构化的宏观结构&#xff0c;其几何排列方式具有独特的几何结构&#xff0c;从而具有独特的力学性能和变形模式。超材料的宏观特性取决于中观尺度晶胞的具体形状、尺寸和几何取向。经典的结构化晶胞&#xff0c;例如以拉伸为主的八面体桁架单元和以弯曲为主的…

Servlet(二)

软件架构 1. C/S 客户端/服务器端 2. B/S 浏览器/服务器端&#xff1a; 客户端零维护&#xff0c;开发快 资源分类 1. 静态资源 所有用户看到相同的部分&#xff0c;如&#xff1a;html,css,js 2. 动态资源 用户访问相同资源后得到的结果可能不一致&#xff0c;如&#xff1a;s…

循环缓冲区

# 循环缓冲区 说明 所谓消费&#xff0c;就是数据读取并删除。 循环缓冲区这个数据结构与生产者-消费者问题高度适配。 生产者-产生数据&#xff0c;消费者-处理数据&#xff0c;二者速度不一致&#xff0c;因此需要循环缓冲区。 显然&#xff0c;产生的数据要追加到循环缓…

嵌入式硬件篇---STM32 系列单片机型号命名规则

文章目录 前言一、STM32 型号命名规则二、具体型号解析1. STM32F103C8T6F103:C:8:T6:典型应用2. STM32F103RCT6F103:R:C:T6:典型应用三、命名规则扩展1. 引脚数与封装代码2. Flash 容量代码3. 温度范围代码四、快速识别技巧性能定位:F1/F4后缀差异硬件设计参考:引脚数…

MySQL 中日期相减的完整指南

MySQL 中日期相减的完整指南 在 MySQL 中&#xff0c;日期相减有几种不同的方法&#xff0c;具体取决于你想要得到的结果类型&#xff08;天数差、时间差等&#xff09;。 1. 使用 DATEDIFF() 函数&#xff08;返回天数差&#xff09; SELECT DATEDIFF(2023-05-15, 2023-05-…

传奇各版本迭代时间及内容变化,屠龙/嗜魂法杖/逍遥扇第一次出现的时间和版本

​【早期经典版本】 1.10 三英雄传说&#xff1a;2001 年 9 月 28 日热血传奇正式开启公测&#xff0c;这是传奇的第一个版本。游戏中白天与黑夜和现实同步&#xff0c;升级慢&#xff0c;怪物爆率低&#xff0c;玩家需要靠捡垃圾卖金币维持游戏开销&#xff0c;遇到高级别法师…

重塑数学边界:人工智能如何引领数学研究的新纪元

目录 一、人工智能如何重新定义数学研究的边界 &#xff08;一&#xff09;数学与AI的关系&#xff1a;从基础理论到创新思维的回馈 &#xff08;二&#xff09;AI的创造力&#xff1a;突破传统推理的局限 &#xff08;三&#xff09;AI对数学研究的潜在贡献&#xff1a;创…

IP伪装、代理池与分布式爬虫

一、动态代理IP应用&#xff1a;代理池的获取、选择与使用 代理池技术的核心是通过动态切换IP地址&#xff0c;让爬虫看起来像不同用户在访问网站&#xff0c;从而规避封禁。 &#xff08;一&#xff09;代理池的获取途径 1. 免费代理&#xff1a;低成本但高风险 免费代理可…

自然语言处理实战:用CRF打造高精度命名实体识别系统

## 一、从标签游戏到智能系统:命名实体识别的前世今生 在信息爆炸的互联网时代,我们每天面对的海量文本中隐藏着无数有价值的信息。想象一下,当你在浏览新闻时,系统能自动标红所有人名、地点和机构名称——这就是命名实体识别(NER)技术的魔力。从早期的规则匹配到如今的…

Space Engineers 太空工程师 [DLC 解锁] [Steam] [Windows]

Space Engineers 太空工程师 [DLC 解锁] [Steam] [Windows] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章&#xff0c;具体最新版本见下载文件说明 DLC 解锁列表&…

JVM——JVM 是如何执行方法调用的?

JVM 是如何执行方法调用的&#xff1f; 在 Java 世界的底层运作中&#xff0c;方法调用机制是理解 Java 虚拟机&#xff08;JVM&#xff09;行为的关键之一。JVM 作为 Java 程序运行的核心&#xff0c;承担着执行字节码、管理内存、调度线程等多项职责。而方法调用作为程序逻辑…

MySQL 数据类型详解:字符串、数字、日期

MySQL 数据类型详解&#xff1a;字符串、数字、日期 在 MySQL 中&#xff0c;选择合适的数据类型对于数据库的存储效率和查询性能至关重要。MySQL 提供了**字符串&#xff08;String&#xff09;、数字&#xff08;Numeric&#xff09;和日期&#xff08;Date & Time&…