
1. 组合逻辑电路基础入门第一次接触数字电路时我被老师那句组合电路的输出只取决于当前输入给绕晕了。直到后来用面包板搭建了第一个与门电路看到LED灯随着开关动作明灭的瞬间才真正理解了这句话的含义。组合逻辑电路就像个实诚的数学老师你给它什么输入它就立即给出对应的输出从不藏着掖着。逻辑门是构建组合电路的乐高积木。最常见的五种基本门电路是与门AND两个开关串联的电路只有所有输入都为1时输出才为1或门OR两个开关并联的电路只要有一个输入为1输出就是1非门NOT最简单的反相器输出总是与输入相反与非门NAND与门后面接非门先与后非或非门NOR或门后面接非门先或后非实际项目中我更喜欢用74系列的芯片来搭建电路。比如74HC08是四2输入与门芯片一个芝麻大小的封装里就藏着4个独立与门。记得有次用74HC32或门给智能家居做控制电路当两个红外传感器任意一个检测到人体时就会触发报警这种或的逻辑关系用硬件实现比软件判断更可靠。真值表是理解逻辑门最好的工具。以三输入与门为例ABC输出00000010010001101000101011001111这个表格清晰展示了全1出1有0出0的与门特性。建议初学者一定要亲手画几次真值表比死记硬背公式管用得多。2. 从逻辑门到功能模块2.1 编码器的实现艺术去年给工厂做自动化项目时需要把8个工位的状态信号编码成3位二进制码传给PLC。这个需求用8线-3线编码器正好解决。编码器就像个高效的信息压缩器能把多个输入信号转换成更紧凑的二进制代码。优先编码器74148是个经典芯片它有个很智能的特性当多个输入同时有效时只响应优先级最高的那个。这解决了产线上多个工位同时报警时的信号冲突问题。接线时要注意它的使能端EI必须接低电平才能工作我第一次调试时就忘了这个细节对着没反应的电路排查了半天。扩展编码器容量有个实用技巧把低位芯片的EO端接到高位芯片的EI端。这样当低位芯片有输入时会自动禁止高位芯片工作。用两片74148扩展成16线-4线编码器的接法如下高位芯片EI -- 低位芯片EO 高位芯片GS -- 与门 -- 输出端GS 各芯片A0-A2 -- 或门 -- 输出端D0-D22.2 译码器的魔法世界译码器是编码器的逆过程。我书桌上的数字管时钟就是用74HC138译码器驱动显示的。这个3线-8线译码器能把3位二进制码转换成8个输出信号每个输出对应一个数字管的段码。调试时发现个有趣现象当控制端G11且G2AG2B0时译码器才工作。这种设计可以实现片选功能——用同一组地址线控制多个译码器。在存储器扩展电路中就是用高位地址线通过译码器来选择不同的存储芯片。用译码器实现逻辑函数是个聪明做法。比如要实现FΣ(1,3,5,7)这个函数直接把138译码器的Y1、Y3、Y5、Y7输出接到或门就行。这比用逻辑门搭电路节省了不少芯片。3. 数据选择器与分配器3.1 数据选择器的灵活应用数据选择器就像个数据开关我常用74HC151这个8选1选择器来做信号路由。它的地址端A0-A2相当于拨码开关选择8个输入中的哪一个送到输出端。在物联网网关设计中就用它来轮询多个传感器的数据。用选择器实现逻辑函数时有个诀窍把函数变量分成地址变量和数据变量。比如用4选1选择器实现三变量函数时可以选两个变量接地址端第三个变量参与数据端的逻辑组合。这种方法比译码器方案更节省芯片。3.2 数据分配器的另类用法数据分配器DEMUX在总线系统中特别有用。有次做多机通信项目就是用74HC139双2-4译码器改造成数据分配器把主机的串口信号分配到4个从机。关键是把译码器的使能端作为数据输入端地址端作为通道选择。分配器和选择器就像邮局的收发室一个负责把一封来信分给不同信箱分配器一个负责从不同信箱取指定信件选择器。这对双胞胎经常在通信系统中配合使用。4. 加法器设计与优化4.1 从半加到全加的进化半加器就像个不会算账的小朋友只知道当前位的相加结果不管进位。用异或门实现和位与门实现进位位电路简单得令人发指module half_adder( input A, B, output S, C ); assign S A ^ B; // 异或门 assign C A B; // 与门 endmodule全加器则像精明的会计既算当前位也考虑低位进位。用两个半加器加一个或门就能搭建module full_adder( input A, B, Cin, output S, Cout ); wire S1, C1, C2; half_adder HA1(A, B, S1, C1); half_adder HA2(S1, Cin, S, C2); or(Cout, C1, C2); endmodule4.2 超前进位加法器的秘密串行进位加法器虽然简单但速度慢得像老牛拉车。4位超前进位加法器74HC283通过并行计算所有进位速度提升明显。它的核心是进位生成函数C1 G0 P0·C0 C2 G1 P1·G0 P1·P0·C0 C3 G2 P2·G1 P2·P1·G0 P2·P1·P0·C0其中GiAi·Bi生成进位PiAi⊕Bi传播进位。这种用空间换时间的思路在CPU的ALU设计中随处可见。5. 竞争冒险现象解析5.1 危险的信号毛刺在一次电机控制项目验收时设备偶尔会误动作。后来用示波器抓信号发现了恐怖的毛刺——由于逻辑门延迟差异在信号变化时产生了纳秒级的尖峰脉冲。这就是典型的竞争冒险现象。检查竞争冒险有两个实用方法代数法看函数能否化为YAA或YA·A的形式卡诺图法观察卡诺圈的相切情况5.2 消除毛刺的三大招增加冗余项在卡诺图相切处补圈。比如YABAC要补上BC项输出端加滤波电容适合低频电路但会降低边沿速度使用同步时钟这是最彻底的解决方案但需要用时序电路记得有次用与非门搭建抢答器电路就因为冒险现象导致误判。后来在输出端加了个20pF的小电容问题立即解决。这种实战经验教科书上可不会告诉你。