
nandgame计算机组成原理
booksyhay
这个作者很懒,什么都没留下…
展开
-
在线练习使用最基本的与非门搭建计算机模型
今天发现了一个网站,可以在线做练习,使用“与非门”搭建CPU的基本元件。网址:http://nandgame.com/主界面是一个“画布”,可以拖放左边的基本元件到上面拼装出新的零件。 右边是任务清单,可以打怪升级。每进一关,会有任务提示,完成后任务旁边会有个“对勾”,可以进入到下一关,也可以直接跳到下一关去玩。 网页的左边和下面还有解释,适用入门者理解。...原创 2018-08-24 09:49:45 · 1885 阅读 · 0 评论 -
nandgame--Level 3.6: Memory: Switch
任务六:组建一个译码器输入:S(selector选择子)、D(data数据)输出:C0和C1.逻辑:数据D实际上为使能端。当D为0时,输出C0和C1都为0。当D为1时,芯片使能,然后再看S的输入。当S为0时,第一路输出C0为1(第二路输出为0);当S为1时,第二路输出C1为1(第一路输出为0)。相当于是把S的值翻译为第几路输出为1. 任务说明如下: 分析:...原创 2018-08-27 13:49:29 · 953 阅读 · 0 评论 -
nandgame--Level 3.3: Memory: Data flip-flop
上一个任务中的锁存器是高电平使能的,只有ST为高,就会一直更新数据D,容易产生竞争条件。实际应用中,需要将锁存条件由电平改为边沿(即边沿触发)。比如上升沿触发,即只有在ST由0变为1的那个时刻,才会更新数据D到锁存器中;平时不管ST是0,还是1,数据都会被锁在锁存器中,不会变化。任务三:边沿D触发器。看看任务背景介绍:任务说明:这是一个带使能端的上升测D触发器。 原材料...原创 2018-08-27 11:56:52 · 2758 阅读 · 0 评论 -
nandgame--Level 3.2: Memory: Latch
第二个任务是,创建一个锁存器Latch输入:存储使能端st(Store),数据端d输出:X逻辑:当ST=1时,X=D;当ST=0时,X不变。即,存储使能ST有效时,输入端D的信号会送到锁存器存起来,并输出。当存储使能端ST无效时,将不再接收输入,输出端仍然保持之前的输入。分析:首先要使用RS触发器。这是一种带反馈的组合电路。这种电路的特点:当ST为1,D为0时,输出...原创 2018-08-27 09:53:26 · 2513 阅读 · 0 评论 -
nandgame--Level 3.1: Memory:Selector
从Level3开始,就不再是简单的组合逻辑了。每一个任务都单独完成。第一个任务是:组建一个选择子(selector)输入:选择端S,数据端D0和D1输出:X逻辑:S=0时,X=D0;S=1时X=D1原材料:与,或,非,与非,异或分析:先看真值表:可以得知:X = ((S非)与(D0) ) 或 (S 与 D1)也就是说,S为0时,只关心D0;S为1时,只关心...原创 2018-08-27 08:58:16 · 1406 阅读 · 0 评论 -
nandgame--Level 3.7: Memory: RAM
有了前述的基础元件,就可以组建一个RAM了。任务目标:说明:就是通过一个地址位(AD)和一个switch开关(译码器),可以选择使用哪一片寄存器(register)。这样就可以扩展出更大容量的寄存器组。并且可以通过地址来确定访问哪一片寄存器。 RAM本意是:随机访问存储器。“随机”的意思是,只要知道地址,就可以直接访问,不需要像磁带机那样等半天去寻址。“访问”的含义包括“读...原创 2018-08-27 14:06:39 · 1071 阅读 · 0 评论 -
nandgame--Level 4.2: ALU: ALU
下面开始组建一个完整的算术逻辑单元。任务说明:输入:A,B控制端:ZX,NX,ZY,NY:控制X和Y的运算是清零还是取反;控制端F:是输出X与Y,还是输出X+Y;其中X和Y是前两个模块的运算结果,是个中间变量。控制端NO:输出取反。输出:Z分析:先搭建X和Y这两个中间变量。使用上一节的成果ALU mod。然后分别对X和Y进行“与运算”和“加运算”,再使用...原创 2018-08-27 15:33:48 · 1803 阅读 · 0 评论 -
nandgame--Level 4.3: ALU: Condition
本章任务三:对输入结果进行数学判断,是大于0,还是大于等于0,或者小于0,等等。任务描述:任务说明:三个标志组合成8种情况。当标志位为001时,代表“是否大于”。如果此时X>0,则输出为1.当标志位为010时,代表“是否等于”。如果此时X=0,则输出为1.其他情况类似。当标志位为000时,不管X是什么,输出都为0;当标志位为111时,不管X是什么,输出都为...原创 2018-08-27 16:06:51 · 1439 阅读 · 0 评论 -
nandgame--Level 5.1: CPU: Combined state
从5级开始,要组建CPU啦~~~ 任务描述:任务说明:1,当a标志有效时,将X的值写到地址寄存器A;2,当d标志有效时,将X的值写到数据寄存器D;3,当m标志有效时,将X的值写到存储器RAM中,存储器的地址为A。 分析:1,先实现前两个目标:2,再实现最后一个目标:...原创 2018-08-28 08:27:52 · 817 阅读 · 0 评论 -
nandgame--Level 4.1: ALU: ALU input modifier
ALU是算术逻辑单元,是执行最基本的算术运算和逻辑运算的单元。本任务目标:根据输入标志来执行不同的运算。输入:Z(清零)、N(取反)、X(16位数据)输出:Y(16位数据)逻辑:当Z标志为1时,输出结果为0;当N标志为1时,输出结果要对X按位取反。当Z标志和N标志都为1时,输出结果为对0按位取反。当Z和N标志都不为1时,输出结果Y=X。原材料:基本的门电路(与,...原创 2018-08-27 15:06:09 · 1649 阅读 · 2 评论 -
nandgame--Level 5.2: CPU: Instruction decoder
第五章第二个任务:指令译码器。指令是保存在存储器中,CPU运行时,先从存储器中取出指令,然后就需要对指令进行“译码”。就是翻译指令码,看它到底是要做什么操作和运算,译码后产生各种控制标志,作为控制器(Control Unit)的输入。输入:一条指令输出:各种标志和数据。先看看任务描述: 任务说明:这是一条16位的指令。最高位(bit15)代表该指令是“数据”...原创 2018-08-28 09:06:02 · 1218 阅读 · 0 评论 -
nandgame--Level 5.3: CPU: Control Unit
任务5.3:控制单元任务描述: 任务说明:输入:指令I和时钟CL输出:J标志:ALU模块输出的是否满足跳转条件的标志位。A:寄存器的当前值。CI:运算指令标志。需要存储的值是ALU的输出还是指令的X的值。如果是要保存指令I译码出来的X,则CI为0;如果是要保存ALU的计算结果,则CI为1。SM:源操作数存储器。送到ALU单元的Y数据来自哪里。如果是来自A寄存...原创 2018-08-28 09:46:08 · 1090 阅读 · 0 评论 -
nandgame--Level 5.4: CPU: Program engine
任务4:程序引擎 任务描述: 任务说明:这是一个“取指”模块,就是在时钟的驱动下,不断地从ROM中取出指令。正常情况下顺序执行时PC不断加一,取下一条指令。当需要跳转时,J标志位有效,就从A中加载新的地址。 设计结果:...原创 2018-08-28 09:51:42 · 848 阅读 · 0 评论 -
nandgame--Level 2: Arithmetics
现在来到了第二关第一个任务是,组建一个半加器。半加器的输入是两个位:A,B输出也是两个位:H,L低位L=A异或B,高位H=A与B任务二:组建全加器输入:三个位:A,B,C输出:还是两个位:高位H,低位L有了半加器,很方便是使用半加器组建全加器。可以先把A和B加起来,得到H1和L1.再将其结果与C相加H2和L2。L2即为L,H则为H1和H2的或。任...原创 2018-08-24 14:59:12 · 2336 阅读 · 0 评论 -
nandgame--Level 3.4: Memory: Register
任务四:组建寄存器。有了边沿触发的D寄存器,就可以组成多位的寄存器了。这个任务很简单,只需要做一个两位的寄存器。使用两个D触发器即可。...原创 2018-08-27 13:06:37 · 997 阅读 · 0 评论 -
nandgame--Level 1: logic gates
做一下这个网站上的练习:http://nandgame.com/练习的主要目标是,使用最基本的“与非门”一步一步地组建计算机。第一关,先使用与非门组建常用的逻辑门。Level 1: Logic gates第一个任务:使用与非门组建非门。这个最简单了,直接将二输入与非门的两个输入端连在一起即可。第二个任务:使用 与非门 和/或 非门 组建与门。这个也容易,“与...原创 2018-08-24 14:15:17 · 2818 阅读 · 0 评论 -
nandgame--Level 5.5: CPU: CPU
最后一关了,这个大boss太easy了。一边取指令,一边执行,紧密配合,天衣无缝。通关了,耶~~原创 2018-08-28 09:56:12 · 775 阅读 · 0 评论 -
nandgame--Level 3.5: Memory: Counter
任务五:带加载功能的计数器。逻辑:当加载使能端ST为1时,输出Y为输入X,即加载预定义值X。当加载使能端ST为0时,每个CL脉冲将使得输出Y加一。 分析:先不考虑加载功能,只实现一个计数器。使用一个寄存器(register)和一个自加器(inc 16)就可以了。每个时钟脉冲使得register读入自加器inc16之后的结果,再送到自加器。 考虑加载功能,只需...原创 2018-08-27 13:35:40 · 1268 阅读 · 0 评论