北航计算机组成原理课程设计-2020秋 PreProject-Logisim-入门指南与Logisim门电路

article/2025/10/16 11:11:11

北航计算机学院-计算机组成原理课程设计-2020秋

PreProject-Logisim-入门指南与Logisim门电路


本系列所有博客,知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除。


从本节开始,课程组给出的教程中增添了很多视频讲解。为了避免侵权,本系列博客将不会搬运课程组的视频讲解,而对于文字讲解也会相应地加以调整,重点在于根据笔者自己的理解给出习题的解析。因此带来的讲解不到位敬请见谅。


为什么要学习LOGISIM?

我们对CPU的认识可以有多个视角,商品上的、实体上的、功能上的等等。如果回想本课程教学目标,就知道我们希望大家能够最终具备开发CPU的能力。因此,我们需要以一个开发者的视角去观察CPU。

对于开发者来说,这个视角必须能够展现出CPU的内部结构,而不是把一切打包在一块代码或者芯片里。并且,它也不能像Minecraft那样繁复地展示所有细节,让人只见树木不见森林。因此,我们还需要能够展现出CPU的层次结构。

为此,我们选择了Logisim。Logisim就是一款非常优秀的用于模拟数字电路的教育软件。它提供了丰富的电路库与元件的抽象表示,生成的电路图也比较美观,提供了时序的模拟功能,能够让我们直观“看到“CPU的运行,理解CPU的架构,并且在开发一些小电路时还有一些其他辅助功能。

所以明确一点,我们使用Logisim是作为开发的辅助工具,一个漂亮的草稿本,是我们观察CPU的好帮手!

我们能从这里学到什么?

整个教程的内容分为5块

  • Logisim门电路
  • Logisim组合电路
  • Logisim时序电路
  • Logisim仿真与调试
  • 应用与挑战

这五块内容循序渐进,目的是让大家能够体会这种从零构建(Build from Scratch)的思路。这种思路与本课程规划是一脉相承的,即从最小的部件开始自底向上开发,从而了解整个复杂系统的结构(注意:这是在各类工程项目实际开发中是常见的模式之一)。我们希望在整个教程结束后,你能够在Logisim中开发一个单周期CPU。虽然这个CPU非常简单,但会使得你具备对CPU架构的基础性认识,并且能把你变成一个观察更敏锐的开发者

关于各章节的内容,Logisim门电路主要是讲解逻辑门等最基础元件在Logisim中的使用;Logisim组合电路进一步讲授那些较复杂部件的功能与设计,并希望大家能够掌握组合逻辑电路设计的方法;Logisim时序电路讲解时序逻辑有关的部分,其中状态机的设计与思想将贯穿整个课程。Logisim仿真与调试则主要讲解如何使用Logisim进行仿真和调试,其中包含有仿真与调试的基本方法与技巧。至于走向应用与挑战,这个部分主要讲解了一些课程应用相关的元件和一些Logisim的实用技巧与减轻工作量的黑魔法。


Logisim 工具介绍

Logisim使用图形用户接口,设计并仿真数字电路,包含基础库(基础门电路,存储器,多路选择器等简单器件)

Logisim具有的特点:

  • 开源
  • 在任意支持Java5及以上版本的机器上可运行;
  • 画图接口基于直观的工具栏;
  • 电路可以存为文件,也可以GIF文件格式导出/打印输出;
  • 允许层次化的电路设计——子电路调用;
  • 包含众多内置电路器件;
  • 内置组合逻辑分析模块,支持在电路、真值表以及表达式之间转换

补充资料

Logisim 2.7.1 jar文件下载地址:Logisim 2.7.1

Logisim官网:Logisim官方网站

由于launch4j版本问题,推荐大家在官网下载时下载jar包版本

Logisim 官方文档:

  • Beginner’s tutorial:新手教程
  • The Guide to Being a Logisim User:User Guide
  • Library Reference:Logisim指南

参考书目:

  • 《DIGITAL DESIGN Principles and Practices》 高等教育出版社 《数字设计——原理与实践》 John F. Wakrly 第1,2,3,4,6,7,8章
  • 《数字设计和计算机体系结构》 机械工业出版社 《Digital Design and Computer Architecture》 David Money Harris, Sara L. Harris 第1,2,3,5章

常见门电路

识别逻辑门元件

数字电路中最基础的内容就是逻辑电路门。在我们学习计算机组成原理的相关章节和使用Logisim中,需要攻克的第一个难关就是认识逻辑电路门的功能。

普通的电路门比如与门、或门、非门想必大家已经熟悉了。

但还有一些电路门,也许大家在之前见的不是太多,可是在我们之后的学习中也会发挥重大作用,也有必要进行熟悉。

下图是某种电路门的Logisim中的图示,请你查阅相关资料后,写出它的真值表。

在这里插入图片描述

ABY
00答案:0
01答案:1
10答案:1
11答案:0

这一元件是Logisim中的XOR,两个输入相异则结果为真,相同则结果为假。

完成加法器

在数字电路中,加法器是一种用于执行加法运算的数字电路部件,是构成电子计算机核心微处理器(CPU)中算术逻辑单元(ALU)的基础。在这些数字电路系统中,加法器主要负责计算地址、索引等数据。除此之外,加法器也是其他一些硬件,例如二进制数乘法器的重要组成部分。

尽管可以为不同计数系统设计专门的加法器,但是由于数字电路通常以二进制为基础,因此二进制加法器在实际应用中最为普遍。在数字电路中,二进制数的减法可以通过加一个负数来间接完成。为了使负数的计算能够直接用加法器来完成,计算中的负数可以使用二补数/补码( 2’s complement )来表示,具体的细节可以参考数字电路相关的书籍(《数字设计和计算机体系结构》1.4,《深入理解计算机系统》2.2-2.3等)。

今天,我们先来完成二进制加法器中最简单的一位全加器,请你选择正确的元件,填入下图中电路中的空缺部分。

在这里插入图片描述

全加器的表达式为: S=A^B^Cin; Cout=A&B | Cin&(A^B); (^为异或、&为与、|为或)

(其中A,B为要相加的数,Cin为进位输入;S为和,Cout是进位输出)

G1中应该填入的元件为

在这里插入图片描述

答案:A

G2中应该填入的元件为

在这里插入图片描述

答案:A

G3中应该填入的元件为

在这里插入图片描述

答案:B

G4中应该填入的元件为

在这里插入图片描述

答案:B

G5中应该填入的元件为

在这里插入图片描述

答案:C

根据表达式S=A^B^Cin; Cout=A&B | Cin&(A^B),结合已经给出的框架图,不难分析出各个位置应填的元件。首先观察S,从末端向前观察,G2处是Cin信号和G1末端信号的关系,而G1末端是A、B两信号的关系,也就是S = (A ? B) ? Cin,对照给出的关系式容易看出这两个?都是^异或关系,因此都填入XOR元件;再观察Cout,G3完成的是(A^B)与Cin的关系,G4完成的是A和B的关系,而G5完成的是G3、G4结果的关系,对照表达式也很容易发现,Cout是两项 | 或关系,而前一项是A和B的&与关系,后一项是Cin和(A^B)的&与关系,对号入座即可知道G3完成的是Cin和(A^B)的&与关系,G4完成的是A和B的&与关系,G5则是两项的 | 或关系。因此G3、G4都填入AND元件,G5填入OR元件。


Logisim库的探索

识别常用元器件

回答本题前,请先阅读 Logisim 的 Library Reference 参考文档,并可以借助之后的教程属性栏相关含义介绍中的部分内容,熟悉 Wiring 和 Gates 两个内置库中的器件,然后根据以下各小题的描述,选出对应的器件。

1.除了wire外,下列哪种元器件与wire行为一致,能够将点之间绑定并连接在一起?

在这里插入图片描述

答案:Tunnel

Tunnel 的实际效果同普通的 wire 一样,Label 相同的两个 Tunnel 会自动连接在一起,连线不会显示,非常适合用来简化复杂电路。

常用元器件的使用

下图所示电路中,Probe 元件显示的内容应该为?

在这里插入图片描述

答案:010

图示的电路中,输入6位先经过了一个分线器Splitter,将其划分为0-2三位和3-5三位,两个三位信号,这两个三位信号又通过了一个XNOR元件,该元件是异或再取反,即输入各位相同则输出为真,相异则输出为假,那么输出的信号应当是~((011)^(110))=010。(第0位1和第3位0相异,输出0;第1位1和第4位1相同,输出1;第2位0和第5位1相异,输出0)


搭建swap电路

现在需要你使用基础的门电路搭建这样一个电路,当输入S=0时,输出O1等于输入I1,输出O2等于输入I2。当输入S=1时,则交换两输出,即输出O2等于输入I1,输出O1等于输入I2。我们给它取名叫做swap电路。

用Logisim完成swap电路并提交

使用Logisim搭建一个swap。

  • 文件内模块名: swap
  • 输入: I1(1bit), I2(1bit), S(1bit)
  • 输出: O1(1bit), O2(1bit)
  • 注意:请从门级电路开始搭建,切勿使用Plexers类元件。

答案:(不唯一)如下图,仅表现一个输入状态

在这里插入图片描述

观察题目要求的输入输出并没有明显的直接逻辑关系,那么我们通过真值表来观察其规律:

I1I2SO1O2
00000
01001
10010
11011
00100
01110
10101
11111

可以看出,O1 = (I1 & ~I2 & ~S) | (I1 & I2 & ~S) | (~I1 & I2 & S) | (I1 & I2 & S),而该关系可以进行化简以节省元件:O1 = (I1 & ~S) | (I2 & S);根据同样的方式可以得到O2 = (I1 & S) | (I2 & ~S),根据关系式就可以很容易地选取元件完成电路。

上述解析展示了一个通用的解决方法,即根据真值表得到与或非表达式,对表达式进行化简得到电路,而这种通用解决方法是完全可以自动化进行的,事实上Logisim内置了真值表转化为电路的功能,可以自动生成真值表对应的电路,这在后面的章节会有专门的介绍。


http://chatgpt.dhexx.cn/article/AxvgDCc6.shtml

相关文章

计算机组成原理课程设计——简单CISC模型机设计

根据《计算机组成原理课程设计》的设计要求设计能够执行一定机器指令完成指定任务的CISC模型机。 1、课程设计的题目和内容 1.1 课程设计的题目 本次课程设计中本人选题为:输入包含10个整数(有符号数)的数组M,将其分成正整数数组…

计算机组成原理74299,计算机组成原理课程设计(模型机)

计算机组成原理课程设计 模型机详细介绍 1. 模型机的结构 模型机主要由运算器、控制器、存储器、数据总线、输入输出和时序产生器组成,模型机的结构图如图1所示。 图1 模型机结构图 (1) 运算器。运算器又由运算逻辑单元、数据暂存器、通用寄存器组成。在图 1模型机的…

山东大学软件学院计算机组成原理课程设计实验四

文章目录 一、实验时间二、实验内容1.实验目的2.设计要求3.结构框架图4. 实验要求和基本思路5. 微程序设计 三、电路图1. 启动电路2. MBR寄存器3.总图 四、补充说明 一、实验时间 第四次实验:2021年4月15日星期四,第7周 第二次部件级实验,算…

NEFU计算机组成原理课程设计之乘法器

乘法器 只需要根据学习通中给出的视频,进行操作即可下面为logisim截图 原码一位乘 补码一位乘 这个也不难就不说费话了直接上图

山东大学软件学院计算机组成原理课程设计实验一

文章目录 一、实验时间二、实验内容1、熟悉Quartus II 开发环境及实验台2、设计16位寄存器3、设计二选一(每路数据宽度8位)多路选择器 一、实验时间 2021年3月18日星期四,第三周 二、实验内容 1、熟悉Quartus II 开发环境及实验台 &#…

山东大学软件学院计算机组成原理课程设计实验三

文章目录 一、实验时间二、实验内容1. 实验目的2. 设计要求3. 实验基本思路 三、电路图1. 可预置初值的模256异步计数器2. 8位ALU电路3. 总图 四、补充 一、实验时间 第三次实验:2021年4月8日星期四,第六周 第一次部件级实验,开始算分 二、…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim组合逻辑电路

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim组合逻辑电路 本系列所有博客,知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除。 从本节开始&#xff0…

山东大学软件学院计算机组成原理课程设计整机实验(1)

文章目录 一、实验时间二、实验要求三、整机实验基本思路3.1 前序知识3.2 关于机器指令和微指令的存放,读取和跳转 四、电路图4.1 启动电路4.2 模8计数器4.3 24和38译码器4.4 总图 五、实验中遇到的问题和注意事项5.1 脉冲问题5.2 微指令问题5.3 取指周期不断循环的…

计算机组成原理课程设计基于cop2000

目 录 1总体设计方案 - 1 - 1.1 课程设计的目的 - 1 - 1.2利用COP2000实验平台上设计指令微指令(微程序)系统并验证,掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系; - 1 - 1.3 课程设计的任务 - 1 - 1.4 详细了解并掌握COP2000模型机的微程序控制原理…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-时序逻辑电路

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim时序逻辑电路 本系列所有博客,知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作,解析部分由笔者创作,如有侵权联系删除。 从本节开始&#xff0…

计算机组成原理课程设计报告总结

实验0 ROM仿真 1、实验目的 (1)掌握ROM的工作原理; (2)画出逻辑电路图及布出美观整齐的接线图; (3)掌握ROM读出原理。 2、实验原理 存储元由有否二极管组成,若有&#x…

计算机组成原理论文5000字,计算机组成原理课程设计论文

计算机组成原理课程设计论文 (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 计算机组成原理庁果程设计扌艮告设计题目:设计八位全加器院系:计算机科学与信息工程学院专…

计算机组成原理 中断综合设计实验,模型机中断实验计算机组成原理课程设计报告...

模型机中断实验计算机组成原理课程设计报告 计算机组成原理课程设计报告2014 计算机组成原理课程设计报告 班级:计科 1202组号 2-3北京化工大学计算机科学与技术专业计算机组成原理课程设计报告院 系: 信息科学与技术学院 专 业: 计算机科学…

计算机组成原理课程设计——CPU与简单模型机设计

一、设计目的 1、掌握一个简单CPU的组成原理。 2、在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。 3、掌握微程序控制器设计。 二、设计任务与要求 设计任务: 用所学知识,设计并构造一台简单模型机。验证指导书…

计算机组成原理——课程设计

《计算机组成原理》 课程设计 一、目的和要求 深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调试。…

计算机组成原理课程设计:复杂模型机

课程设计报告 课程名称: 计算机组成原理 设计题目: 复杂模型机 目 录 1、课程设计任务书 3 1.1设计任务 3 1.2性能指标和设计要求 3 2、本设计的模型机体系结构及功能 4 2.1 模型机的体系结构 5 2.2 模型机所具有的基本功能 5 3、 模型机硬件设计 5 3…

用excel、matlab、python绘制正态分布图

用excel、matlab、python绘制正态分布图 excel绘图matlab绘图python绘图 为加深对统计知识的理解,老师要求用excel和matlab绘图,在这想介绍3个常见的绘图软件来绘制正态分布密度函数曲线和正态分布分布函数曲线。 excel: matlab: excel绘图…

统计信号处理基础 习题解答1-2

题目: 一个未知参数θ影响一个随机变量实验的结果,这个随机实验可以看成随机变量x。x的PDF为 进行一系列的实验,发现x总是在区间[97,103]内。结果我们得出结论:θ肯定是100,这种推测正确么? 解答&#xf…

数学建模(NO.9斯皮尔曼相关系数)

斯皮尔曼相关系数 一. 定义方法一:计算公式法三.方法二:利用皮尔逊相关系数法四.Matlab计算五.斯皮尔曼和皮尔逊对比六.斯皮尔曼相关系数的假设检验1.小样本(查表)2.大样本(计算统计量) 七.两个比较八.相关…

【FinE】统计与计量指标计算(Matlab)

导航 CDF函数(normal distribution)CDF函数(t-location-scale distribution)CAPM模型 β \beta β计算误差项 ε i \varepsilon_i εi​计算correlation and covariance t t t分布拟合序列Generalized Hyperbolic Distributionapproximation method 1approximation method 2 Go…