进位器

经前面的分解, 问题再一次简化, 只有两个输入一个输出. 对于一个进位器, 需要满足的约束如下:

输入 --> 输出
0+0 –> 0
0+1 –> 0
1+0 –> 0
1+1 –> 1

请注意, 以上的加号请不狭义地去理解, 这里用"+"这个符号仅是想表达进位器它接受两个输入(参数), 同时, 没有使用等于号"=", 而是用一个"箭头" -->, 表示这里其实是一种函数(映射)关系.

可以像之前那样引入一个符号 C 来表达进位器所代表的运算, 那么"0 C 1 = 0", "1 C 1 = 1"等.

把 C 想像成一个两个参数的函数: C=f(A, B), 那么 C(1, 1)=1;

前面说了, 其实加法也可以写"+(1, 1)=2", 只是我们可能觉得不习惯.

想要更好的可读性, 那么可写成 Carry(1, 1)=1. 总之, 这些不过是表达形式上的差异.

根据上表, 进位器它要满足以下几种情况:

数字进位器逻辑 carryer logic in number

注: 上述的 ? 表示暂时还不清楚 进位器 内部的电路要怎么去实现.

跟之前类似, 令"关=0, 开=1", 那么:

开关进位器逻辑 carryer logic by on and off

用一句话来概括就是: "两个都是开, 结果才是开, 任意一个没开, 结果就是关. "

你还记得有什么电路有如此的性质呢?

串联电路

还记得串联电路不?

串联电路 series circuit

那么, 当以串联的方式连接两个继电器时:

继电器与门全部状态组合 and gate by relay all case

这样一种连接方式就满足了进位器的逻辑, 用这样组合的电路替代电路中的进位器模块, 就得到完成一半的半加器电路, 在模拟器中的实现如下所示:

完成一半的半加器 half adder in half

然后, 尽管另一个模块还没有完成, 但已经可以单独对进位器进行测试了, 不难发现, 它是可以满足要求的:

完成一半的半加器 测试结果

results matching ""

    No results matching ""