制作一个能做加法运算的计算机
Last updated
Last updated
上一节我们制作的计算机只能通过指令来控制“十六进制数码管”的显示。本节,我们来把电路稍稍改造成如下图所示的样子,增加一个加法器,并在“加法器”和“十六进制数码管”的输入端串联一个“触发器”用来缓存数据。同时我们增加了一根竖直的导线,把各种元件统一连接在一起,起到汇总的作用,所以它还有个名字,叫做“总线”。另外,由于加法器的输出和ROM数据的输出同时连接到总线上,所以我们使用了“断路控制器”通过信号控制来防止它们同时起作用而造成短路现象。
现在我们开始编写指令来实现2+3运算,并把结果显示在“十六进制数码管”上。在编写指令之前,我们先来看下“只读存储器”多出来的输出端都是做什么的。
D3~D0和前一节相同,输出下一条指令的地址
D7~D4和前一节相同,输出指令中携带的数据
D8控制D7~D4是否连接到总线上
D9控制总线数据是否传输到“十六进制数码管”的寄存器中。
D10控制加法器的输出端是否连接到总线上
D11控制总线数据是否传输到加法器的输入端1
D12控制总线数据是否传输到加法器的输入端2
这次“只读存储器”多出来的输出端D12~D8全部都是控制信号,主要负责各个元件的输入输出端何时连接到总线,用以完成各种复杂功能。我把编写好的用以实现2+3运算的指令列在如下的表格中。
0000
0001
0010
1
0
0
0
0
0x121
0001
0010
0010
1
0
0
1
0
0x922
0010
0011
0011
1
0
0
0
0
0x133
0011
0100
0011
1
0
0
0
1
0x1134
0100
0101
0000
0
0
1
0
0
0x405
0101
0000
0000
0
1
1
0
0
0x600
我们来逐条分析下这些指令是如何工作的:
最终它的演示动画如下图所示。