数电实验三:74LS151与74LS153的逻辑功能测试及应用实践
在数字电路的教学实践中,数据选择器(Multiplexer, MUX)不仅是组合逻辑设计中的基础模块,更是一种极具灵活性的“通用逻辑构建单元”。通过合理配置输入和地址线,它能够替代传统门电路实现复杂的布尔函数——这种“用选择实现逻辑”的思想,正是本实验的核心所在。
本次实验聚焦两款经典TTL芯片: 74LS151 (8选1数据选择器)和 74LS153 (双4选1数据选择器),从基本功能验证入手,逐步深入到全加器、多数表决电路等实际逻辑系统的搭建。整个过程不仅锻炼了学生对芯片引脚连接、使能控制、地址译码等操作技能,更重要的是建立起一种全新的逻辑设计思维方式: 将真值表映射为MUX的数据输入,把变量组合转化为地址选择 。
74LS151:三变量逻辑的直接实现者
74LS151作为单通道8选1数据选择器,其结构天然适配三个输入变量的所有状态组合(2³ = 8)。这意味着,任何三变量逻辑函数都可以不依赖额外门电路,仅通过设置D0~D7的高低电平来完成。
它的关键引脚包括:
- D0–D7 :8个数据输入端
- A2, A1, A0 :3位地址选择线
- (\overline{G}) :低电平有效的使能端
- Y / (\overline{Y}) :互补输出,方便差分或驱动需求
当 (\overline{G} = 0) 时,输出 Y = D_{A2A1A0};若使能无效,则输出被强制拉低。这一特性使得该芯片既可用于信号路由,也可作为可编程逻辑单元使用。
举个例子,若要实现一个奇偶校验函数(即三个输入中1的个数为奇数时输出1),我们只需根据真值表填写对应的数据输入:
| A2 | A1 | A0 | 输出 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
于是设置 D[7:0] = 8’b1001_1010 即可。无需任何与非门或异或门,逻辑功能就已固化在输入配置中。
Verilog行为级建模也直观反映了这一机制:
module mux_74ls151 (
input [7:0] D,
input [2:0] A,
input G_n,
output Y,
output Y_n
);
reg Y_reg;
always @(*) begin
if (G_n)
Y_reg = 1'b0;
else
case (A)
3'b000: Y_reg = D[0];
3'b001: Y_reg = D[1];
3'b010: Y_reg = D[2];
3'b011: Y_reg = D[3];
3'b100: Y_reg = D[4];
3'b101: Y_reg = D[5];
3'b110: Y_reg = D[6];
3'b111: Y_reg = D[7];
default: Y_reg = 1'bx;
endcase
end
assign Y = Y_reg;
assign Y_n = ~Y_reg;
endmodule
这段代码虽简单,却是硬件行为的精准抽象。仿真时可通过激励文件遍历所有地址组合,快速验证连接是否正确,极大提升调试效率。
74LS153:双通道架构带来的协同优势
如果说74LS151擅长处理单一复杂输出,那么 74LS153 则凭借其“双4选1”结构,在多输出系统中展现出独特价值。两个独立但共用地址线的MUX单元,允许我们在同一组控制信号下并行生成两个不同的逻辑结果。
典型参数如下:
- 每个MUX有4个数据输入(C0–C3)
- 共用2位地址线 A1、A0
- 独立使能端 (\overline{G}_1)、(\overline{G}_2)
- 输出 Y1、Y2 均为非反相形式
由于只需要两根地址线即可覆盖四种子状态,因此非常适合用于实现四个变量以下的逻辑函数,尤其是当其中一个变量被用作“动态输入”来决定输出路径时。
来看一个非常典型的工程应用场景: 全加器设计 。
全加器:如何用一个芯片搞定Sum与Cout?
全加器需要处理三个输入 A、B 和 Cin,产生两个输出:和(Sum)与进位(Cout)。如果采用传统门电路,至少需要多个异或门、与门和或门;而使用74LS153,我们可以将 A 和 B 作为地址线,Cin 作为数据源进行切换。
分析真值表后发现:
对于 Sum 输出:
- 当 AB = 00 → Sum = Cin
- AB = 01 或 10 → Sum = (\overline{Cin})
- AB = 11 → Sum = Cin
这说明第一个MUX的数据输入应设为:
C0 = Cin, C1 = (\overline{Cin}), C2 = (\overline{Cin}), C3 = Cin
对于 Cout 输出:
- AB = 00 → 0
- AB = 01 或 10 → Cin
- AB = 11 → 1
所以第二个MUX输入为:
C0 = 0, C1 = Cin, C2 = Cin, C3 = 1
这样一来,仅需一片74LS153,配合少量反相器(用于生成 (\overline{Cin})),就能完整实现全加器功能。地址线接A和B,数据输入按上述规则连接,两个输出分别对应Sum和Cout。
Verilog模型清晰体现了这种并行结构:
module mux_74ls153 (
input [3:0] C1, C2,
input [1:0] A,
input G1_n, G2_n,
output Y1, Y2
);
assign Y1 = G1_n ? 1'b0 :
(A == 2'b00) ? C1[0] :
(A == 2'b01) ? C1[1] :
(A == 2'b10) ? C1[2] :
(A == 2'b11) ? C1[3] : 1'bx;
assign Y2 = G2_n ? 1'b0 :
(A == 2'b00) ? C2[0] :
(A == 2'b01) ? C2[1] :
(A == 2'b10) ? C2[2] :
(A == 2'b11) ? C2[3] : 1'bx;
endmodule
这个模块不仅能用于功能仿真,还可作为顶层测试平台的一部分,帮助排查实际连线错误。
多数表决电路:极简设计的艺术
另一个体现MUX强大表达能力的例子是 三输入多数表决器 ——只要有两个或以上输入为高,输出即为高。
逻辑表达式为:
[ F = AB + BC + AC ]
常规实现方式需要三个两输入与门加一个三输入或门,布线繁琐且占用元件多。而使用74LS153,我们依然可以将其转换为地址选择问题。
令 A、B 为地址线,C 为数据输入源:
| A | B | 输出F |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | C |
| 1 | 0 | C |
| 1 | 1 | 1 |
显然,只需将数据输入设为:
C0 = 0, C1 = C, C2 = C, C3 = 1
然后将A接A1、B接A0、C接到C1/C2,输出Y自然就是表决结果。整个电路几乎不需要额外逻辑门,连线简洁,可靠性高。
这正是“以路由代逻辑”理念的最佳诠释:原本需要组合门电路完成的逻辑判断,现在变成了简单的查表操作。就像软件中的switch-case语句一样,硬件层面也能实现“条件跳转”。
实验中的常见问题与工程建议
尽管MUX方案具有高度集成的优势,但在实际搭建过程中仍需注意若干细节,否则极易导致功能异常。
使能端不可悬空!
这是初学者最容易犯的错误之一。(\overline{G}) 是低电平有效,若未明确接地或通过开关控制,引脚处于浮空状态,可能因干扰误触发,造成输出紊乱。强烈建议通过10kΩ下拉电阻确保默认关闭,或直接接地以常使能。
地址线顺序必须一致
很多同学在连接A1/A0时混淆高位与低位,导致地址译码错乱。建议在面包板上用标签明确标注“A=高位,B=低位”,并与真值表严格对照。一个小技巧是先固定A、B为00,观察输出是否对应C0,再依次递增验证。
数据输入避免短接冲突
例如在全加器中,同一个Cin信号既要接C1又要接C2,同时还要取反后接入其他位置。此时若未使用缓冲器或驱动电路,可能会因负载过重导致电平不稳定。对于长距离走线或多点分支,建议加入74LS04等反相器作为隔离缓冲。
注意扇出能力限制
LS系列器件的驱动能力有限(通常为10个LS负载)。若共用地址线连接多个芯片,务必评估总负载是否超标。必要时可插入缓冲器扩展驱动能力。
上电前务必检查电源极性
TTL芯片对电源反接极为敏感,一旦VCC与GND接反,极短时间内就会烧毁。建议使用带防反接保护的电源模块,并在通电前用万用表确认电压极性。
写在最后:从芯片到思维的跃迁
这次实验的意义远不止于学会怎么连几根线点亮LED。它真正教会我们的,是一种 抽象化设计思维 :将复杂的逻辑关系转化为可寻址的数据映射,把布尔代数的问题变成一张真值表的填写任务。
74LS151告诉我们,
任意三变量函数都是一次8选1的选择
;
74LS153则进一步展示,
多个输出可以共享控制流,实现并行决策
。
这种思想甚至延续到了现代FPGA的设计中——LUT(查找表)本质上就是一个高速的多路选择器阵列。今天的工程师虽然不再手动拨动开关配置D0-D7,但他们编写的HDL代码,最终仍然是在“填写这张表”。
所以说,这些看似古老的TTL芯片,其实承载着数字系统设计最本质的哲学: 用空间换逻辑,用预置换运算 。掌握这一点,才算真正迈入了组合逻辑的大门。

3938


被折叠的 条评论
为什么被折叠?



