ARTICLE DETAIL
日记详情
真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。
真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。
python# 模拟继电器:一个简单的电磁开关class Relay: def __init__(self): self.coil_energized = False # 线圈是否通电 self.contact_closed = False # 触点是否闭合 def energize(self, voltage): # 电压达到阈值则吸合,否则释放 self.coil_energized = voltage >= 5 # 5V为吸合阈值 self.contact_closed = self.coil_energized return self.contact_closed# 用两个继电器构造“与门”def AND_gate(input_a, input_b): relay_a = Relay() relay_b = Relay() # 两个继电器的触点串联:只有都闭合,输出才有电 contact_a = relay_a.energize(input_a) contact_b = relay_b.energize(input_b) # 串联:两个都闭合才输出1 return contact_a and contact_b# 测试与门print("AND(0,0)=", AND_gate(0,0)) # Falseprint("AND(1,1)=", AND_gate(1,1)) # True这段代码里,每个继电器有独立的线圈和触点。串联连接就是“与”逻辑——电流必须流过两个触点,只要有一个断开,输出就是0。这就是继电器构建逻辑门的最基本思想。### 从逻辑门到加法器:继电器如何算加法?有了与门、或门、非门,下一步就是构建半加器。半加器能计算两个二进制位的和,并产生进位。这看似简单,却是CPU算术运算的核心起点。你可能好奇:为什么加法器这么重要?因为CPU里大量运算(减法、乘法、地址计算)最后都能归结为加法。而加法器正是由继电器搭建的。### 第二个代码示例:用继电器构建半加器我们继续用Python模拟,这次把继电器组合成半加器。半加器有两个输入(A和B),两个输出(和S,进位C)。pythonclass RelayLogic: def __init__(self): self.relays = [Relay() for _ in range(6)] # 准备6个继电器 def half_adder(self, a, b): # 和S = A XOR B(异或) # 进位C = A AND B # 实现异或:用两个与门和一个或门,但这里简化用继电器逻辑 # 先计算 A AND B(进位) carry = a and b # 计算 A XOR B(和) # 异或 = (A AND NOT B) OR (NOT A AND B) not_a = not a not_b = not b sum_1 = a and not_b # A AND NOT B sum_2 = not_a and b # NOT A AND B sum_result = sum_1 or sum_2 return sum_result, carry# 测试半加器logic = RelayLogic()for a, b in [(0,0), (0,1), (1,0), (1,1)]: s, c = logic.half_adder(a, b) print(f"半加器({a},{b}) => 和={s}, 进位={c}")运行这段代码,你会看到半加器正确计算了二进制加法。虽然这里用Python的布尔运算模拟了继电器组合,但真实硬件中,继电器通过物理线路连接,实现完全相同的逻辑。### 为什么继电器能组成CPU?——层次化构建现在你已经看到了从“开关”到“逻辑门”再到“加法器”的路径。CPU正是沿着这条路径,不断向上构建更复杂的模块:-寄存器:用继电器锁存状态,保存数据-译码器:用继电器组合将指令翻译成控制信号-状态机:用继电器时序逻辑控制执行步骤每一层都建立在前一层之上,就像搭积木。继电器虽然慢(毫秒级),但数量足够多时,就能完成复杂计算。早期的Z3计算机(1941年)就是用继电器做成的,虽然每秒只能算几次加法,但已经是划时代的成就。### 总结这篇文章我们从最基础的继电器开关原理出发,用Python模拟了继电器的逻辑行为,并成功构建了“与门”和“半加器”。你看到了继电器如何通过物理连接实现布尔逻辑,而逻辑门又是如何组合成更高级的算术单元。关键收获:1. 继电器的“通/断”对应二进制的“1/0”2. 多个继电器的串联、并联实现与门、或门3. 逻辑门组合可以构建加法器,这是CPU运算的核心4. CPU的复杂功能,是通过一层层抽象和组合实现的下一篇文章,我们将继续深入:如何用继电器构建“触发器”来存储一位数据,以及如何把多个加法器连接成多位的算术逻辑单元(ALU)。敬请期待。