第一:晶体管充当开关放大器。Base获得令牌电量 - 发射器开始发射与放入收集器一样多的电量。
连接两个晶体管 - (1)的集电极,(1)的发射极到(2)的集电极。(2)的发射器是“输出”。向两者的基极施加电压,并通过电流,产生“1”。但删除任何,它是“0”。这是一个AND门。
现在改为并行连接它们。两个收集器供电,两个发射器一起输出。其中任何一个都会将电流输出到输出线。您必须禁用它们才能生成“0”。那是OR。
现在在电源和地之间连接一个电阻和一个晶体管。点击晶体管和电阻之间的点作为“输出”。如果向基极施加电压,晶体管将“输出”上的所有电流和电压降至零,通过开路晶体管接地。无论通过电阻器传递什么,都会通过阻力最小的路径逃逸。正输入时输出为零。现在去掉基极电压和晶体管的电阻猛增。现在,电阻器从电源线驱动足够的电流,以在输出端产生清晰的“1”。那不是。
您现在可以将这些连接输出与输入相结合,组合成一大堆其他输出。NAND =不是A而不是B. XOR:A而不是B,或B而不是A. XNOR:(A和B)或(不是A而不是B)。等等。
在X中连接两个XNOR门:每个门的一个输入引脚作为输入,另一个连接到另一个的输出。
在那里,这是一点记忆。写作相当繁琐(S = 1:设置为1,R = 1:设置为0,S = 0,R = 0 - 保持值,S = 1,R = 1 - 火焰爆发,或者至少产生无意义的噪音)但是在输入和输出上有几个其他门可以使它变得更加明智。在输入上连接NAND和AND,每个输入来自'in',另一个输入来自'write'。在输出上连接一个3态缓冲器,第三个状态(高阻抗)输入标记为“读”。现在你可以按需写入或读取它,没有“读取”它不会触及你连接它的总线,没有“写入”它不会改变状态,无论“输入”出现什么。您可以将“in”和“out”连接到同一行。如果'write'处于活动状态,它将读取并记住该行上的内容。如果'read'处于活动状态,
那是一个完全可用的内存。
连续8个,每个输出到一行。8条线是数据总线。你有一个字节的数据。
获取其他8行(从现在开始称为地址总线)并将它们连接到多路分解器。这是大量的AND和NAND门的构造,它将8条线的状态的每种可能组合转换成256条不同的输出线。
现在将重复8位的行重复256次,每行在专用于它的多路分解器的一条专用输入线与单个全局“写入”之间得到一个AND,并在同一个多路复用器和“读”之间得到一个AND。 。而且你有一个8KB的内存。在地址总线上设置正确的8位组合,表明您的意图:'read = 1'或'write = 1',您将以给定字节存储数据总线的状态,或将其输出到数据总线上从那个字节。
在所有输入和输出上添加三态缓冲器(到目前为止有18个,8个数据,8个地址,1个读取,1个写入),并通过第19个输入激活它们:芯片使能。将其打包到集成电路中,您就拥有8KB RAM芯片。
想要更多内存?控制多个芯片的“芯片启用”的解复用器将允许您在多个芯片之间切换。
然后,在CPU中,当内部序列移动到“READ COMMAND”时,一个名为Program Counter的寄存器(只是一个字节,8个RS触发器,专用于特殊用途)连接到地址线。读取已激活。通过数据线,与新命令对应的位集返回CPU。它转到'命令解码器' - 这只是另一个解复用器。并且该解复用器激活一条线路,该线路激活CPU的子系统的整个动物园的特定子系统 - 负责该特定指令。
说,指令是JMP。跳转到程序中的其他位置,在命令后立即用内存中的值标记。通过命令解码器激活的门组将按顺序激活以下操作:首先,使程序计数器前进。然后将其输出到地址总线上。激活“读取”,然后将数据总线的输出填充到程序计数器中。命令完成。控制返回读取下一个命令 - 除了刚刚被修改的程序计数器指出'next'。这就是JMP命令的工作原理。