您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>继电器>

继电器是如何成为cpu的 - 继电器是如何成为cpu的

2018年01月26日 10:05 网络整理 作者: 用户评论(0

  十四、传输门

  下图所示的传输门的作用是:当左边的“~1G”端输入为0时,左侧的1A4、1A3、1A2、1A1会直接传输到右侧对应的1Y*,就像一条线直接从1A*连接到1Y*一样;当左边的“~1G”端输入为1时,左侧的1A4、1A3、1A2、1A1都不能传输到右侧对应的1Y*,就像从1A*到1Y*的连线被剪断了一样。

  注:本文里我做的电路图片都是GIF格式的,你可以在浏览器里看到随着开关的开闭,输入和输出电路上的灯泡是如何变化的。每个图上都有(http://bitzhuwei.cnblogs.com)标识我的博客地址,不过每个GIF图的最后一帧都去掉了这个标识。这样,看到一帧没有标识的时候,就知道下一帧将是GIF图的第一帧了。

  继电器是如何成为cpu的

  传输门的原理很简单,就是在每个1A*到1Y*之间的连线上放个继电器而已,如下图所示。(取自《穿》)

  继电器是如何成为cpu的

  十五、寄存器

  在上一篇已经说明了寄存器的原理,这里仅仅是为了说明“74LS194”这个带有各种无聊管脚的四位寄存器的用法。将“~CLR”、“S1”和“S0”置为1,“SR”和“SL”置为0,然后,“74LS194”就是一个简单的四位寄存器了。(本人在multisim12.0里只找到了这个靠谱的四位寄存器,凑合用吧。)

  继电器是如何成为cpu的

  十六、数值显示器

  为了更直观地看到CPU的运算结果,我们将使用“DCD_HEX”这个东西。它能够把输入的“0101”显示为“5”,把“1010”显示为“A”。

  继电器是如何成为cpu的

  本文还要用一个四位的加法器,直接在下面这个简陋的CPU里看就好了,不再单独展示。

  十七、回到顶部(go to top)

  一个简陋的CPU现在一切就绪,可以开始设计CPU了!

  CPU包括运算器和控制器两部分。我们首先做出运算器,然后逐步实现控制器,最后感受一下用机器语言编程的过程。本文实现的CPU虽然功能及其简陋,但是能够传达出当前真实CPU的原理。

  十八、运算器和手动控制器

  现在我们要做的这个CPU,字长是4位,只能做两个数的加法。实现了运算器和手动版的控制器的CPU如下图所示。我们把这个版本称为version1的CPU。

  继电器是如何成为cpu的

  上图中,“Add”是加法器,能执行两个4位数的加法运算。“RA”和“TR”是寄存器,“GAA”和“GBA”是传输门。“4”“3”“2”“1”用来准备需要相加的数据(0到15),“KTR”“KRA”“KGA”“KGB”是用来控制传输门通断和寄存器脉冲的开关。

  在上图所示的GIF动画中,显示了“5+1+2+4”这个过程。这个过程可以分为4个步骤:①加载一个数值(Load);②加上一个数值(Add);③加上一个数值(Add);④加上一个数值(Add)。具体来说,每一个步骤要做的事情是:

  十九、指令内容

  加载一个数(Load)准备数据(0101); KGB↓, KGA↑; KRA↓↑

  加一个数(Add)准备数据(0001); KGB↓, KGA↑; KTR↓↑; KGA↓, KGB↑; KRA↓↑

  加一个数(Add)准备数据(0002); KGB↓, KGA↑; KTR↓↑; KGA↓, KGB↑; KRA↓↑

  加一个数(Add)准备数据(0004); KGB↓, KGA↑; KTR↓↑; KGA↓, KGB↑; KRA↓↑

  你可以看到,每次执行(Add)这一步,要做的事情(搬动开关)是一样的,规律性极强。这意味着可以用简化的方式控制“KTR”“KRA”“KGA”“KGB”这几个开关的状态。经过简化的CPU就有一定的自动化控制的性质了,如下图所示。我们把这个版本的CPU称为version2的CPU。

  继电器是如何成为cpu的

  Verison2要比刚才的verison1进化了一些。为便于理解,我们保留原来的“KTR”“KRA”“KGA”“KGB”这四个开关(把它们挪到了右上角,因为实在没地方放了),但让它们永远保持闭合的状态。这是想说明:version2里新增的电路只是实现了更加自动化地控制“KTR”“KRA”“KGA”“KGB”的开闭,它没有改变version1中电路的工作流程。

  Version2中的“KLoad”和“KAdd”开关分别代表了“Load”和“Add”这两个指令。当“KLoad”闭合时,表示CPU要进行加载操作,这会把“4”“3”“2”“1”上的数据存入寄存器“RA”;当“KAdd”闭合时,表示CPU要进行相加操作,这会把“4”“3”“2”“1”上的数据与“RA”当前的数据相加,然后相加的结果又存储到“RA”。

  Version2中的“K0”和“K1”两个开关会依次的开闭,即两者总有一个是断开且另一个是闭合的(若出现其它情况那就是电路设计错了)。所以实际上“K0”和“K1”可以用一个“2位循环移位寄存器”代替。(为便于理解,仍然保留“K0”和“K1”这两个开关,只不过让它们永远保持闭合的状态)

  Version2中,只需重复“准备指令,准备数据,执行指令(K↓↑↓↑)”这样的操作,就能完成version1中的控制功能。这需要一个从“KLoad”“KAdd”“K0”“K1”到“KTR”“KRA”“KGA”“KGB”的转换电路,即version2电路图中的上半部分,如下图所示。

  继电器是如何成为cpu的

  这需要一点点设计逻辑电路的知识,本文直接列出真值表,据此即可画出转换电路。(想知道如何推导的话,请查阅《穿》或者数字电路类书籍)

  KloadKaddK0K1KGAKRAKTRKGB

  10101100

  01101010

  01010101

  其中“KLoad”“KAdd”“K0”“K1”为输入,“KTR”“KRA”“KGA”“KGB”为输出。只有如上三种输入情况下,输出部分会有1;其它的输入情况下,输出全部为0,所以就不需要列出来了。

  举个例子,“KGA”=“KLoad”“~KAdd”“K0”“~K1” + “~KLoad”“KAdd”“K0”“~K1”=(“KLoad” ⊕“KAdd”)“K0”“~K1”,据此可以画出“KGA”的转换电路。

  在version2中,CPU要做的就是重复“准备指令,准备数据,执行指令(K↓↑↓↑)”这件事。其中执行指令这一步是完全重复完全自动化的(只要用振荡器替换K就可以),而准备指令和准备数据还需要手工操作。每次要执行哪个指令、要准备的数据是多少,这都是没有规律的,可改进的方法就是:把指令和数据按顺序保存到一些特别的寄存器里,需要的时候取出来用。这些特别的寄存器,就是内存。

非常好我支持^.^

(94) 98.9%

不好我反对

(1) 1.1%

( 发表人:陈翠 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!