当前位置: 首页 > news >正文

基于74LS系列芯片的时序逻辑电路设计实验教程

从0到60秒:用74LS芯片搭一个会“记时间”的数字电路

你有没有想过,一块最简单的数字钟是怎么知道“现在是第几秒”的?它没有操作系统,也没有单片机,甚至连程序都没有。它的“大脑”其实是由几个小小的逻辑芯片组成的——而这些芯片的核心能力,就是记住自己之前的状态

这,正是时序逻辑电路的魔力所在。

在今天的实验教程中,我们不谈FPGA、不写高级代码,而是回到数字电路的起点:用经典的74LS系列TTL芯片,亲手搭建一个能准确计数0~59秒的“数字钟秒计数器”。你会看到,看似复杂的计时功能,是如何由一个个基础单元一步步构建起来的。


为什么还要学74LS?

可能你会问:现在都2025年了,谁还用手焊74LS芯片做实验?直接上Arduino不行吗?

当然可以。但问题是——如果你不知道D触发器怎么锁存数据、不了解同步与异步的区别、没被计数器的“毛刺”坑过一次,那你永远只能调库、烧程序,却看不懂示波器上的波形为何跳得乱七八糟。

74LS系列芯片就像电子工程里的“ABC”。它们虽然古老,却是理解现代数字系统底层运行机制的钥匙。尤其是下面这三个明星型号:

  • 74LS74:双D触发器 —— 数字记忆的基本单元
  • 74LS90:十进制异步计数器 —— 经典分频结构代表
  • 74LS161:四位同步计数器 —— 高速稳定计数的典范

我们不会孤立地讲参数手册,而是带着问题出发:如何让电路真正“记住”时间,并可靠地递增?


第一步:让信号“停留一下”——74LS74 D触发器实战解析

所有时序电路的灵魂,是一个字:

组合逻辑电路反应快,但它是“健忘”的——输入一变,输出立刻跟着变。而我们要做的计时器,需要的是“只在特定时刻更新状态”,这就必须引入边沿触发机制。

这就是74LS74的价值所在。

它到底干了啥?

简单说,74LS74就是一个“采样保持器”:
- 在时钟上升沿到来的那一瞬间,把D端的数据“抓”住;
- 然后不管D后面怎么变,Q输出都纹丝不动,直到下一个上升沿。

比如你在考试时抄答案,老师一喊“停笔”,你就立刻把手拿开——哪怕你知道正确答案就在旁边纸上。这个“听令行事”的行为,就是边沿触发的本质。

关键设计细节

特性说明
触发方式正边沿触发(抗干扰强)
异步控制SET和RESET优先级最高,低电平有效
延迟时间CLK→Q约25ns,适合30MHz以内系统
扇出能力可驱动10个标准TTL负载

别小看这颗8引脚的小芯片,它是构成寄存器、移位器甚至CPU内部寄存器阵列的基础模块。

Verilog模拟验证(仿真用)

为了对比硬件行为,我们可以先在软件里复现它的逻辑:

module d_ff ( input clk, input rst_n, // 低电平复位 input d, output reg q ); always @(posedge clk or negedge rst_n) begin if (!rst_n) q <= 1'b0; else q <= d; end endmodule

这段代码不是用来下载到FPGA的,而是帮助你在仿真环境中观察波形是否符合预期。比如你会发现:只有当时钟上升沿+复位释放时,Q才会跟随D变化。


第二步:数数的艺术——74LS90如何实现十进制计数

我们现在有了“记忆单元”,下一步是让它开始“计数”。

74LS90是个有趣的芯片:它内部其实有两个独立计数器——一个模2、一个模5。通过外部连线,能把它们串起来变成一个完整的十进制计数器(0~9循环)

怎么接线才能数到10?

经典接法如下:

外部时钟 → CLK_A QA → CLK_B ← 把个位的输出接到十位的时钟 R01/R02 → 接地 ← 清零脚拉低,正常工作 S91/S92 → 悬空或接地 输出:QA QB QC QD(BCD码)

这样,每来10个脉冲,输出就完成一次0→9→0的循环,正好对应数码管显示的一位数字。

它的优点与局限

优点
- 不需要额外门电路就能实现十进制计数
- 结构清晰,适合教学演示
- 成本极低,易于获取

缺点
-异步结构:各级触发器不是同时翻转,会产生短暂的中间状态(俗称“毛刺”)
- 进位延迟累积:高位响应慢于低位,在高速场合不可靠

举个例子:当计数从7(0111)→8(1000)时,四个触发器要同时翻转。但由于是异步级联,可能会先出现像0110、0001这样的过渡态,哪怕只存在几纳秒,也可能被下游电路误读。

所以,如果你要做高精度仪器或者通信系统,这种“抖动”就不能容忍。


第三步:更稳定的计数方案——74LS161登场

这时候就得请出升级版选手:74LS161

同样是4位计数器,但它最大的不同在于——同步计数。也就是说,所有的触发器都在同一个时钟上升沿下统一动作,彻底避免了异步带来的毛刺问题。

它有哪些“超能力”?

功能作用
并行预置(LOAD)可设置初始值,实现任意起点计数
同步清零(CLR)在下一个时钟沿归零,保证系统同步
双使能控制(ENP/ENT)精确控制何时允许计数或传递进位
进位输出(RCO)当计数值为15且ENT=1时输出高电平,便于级联

更重要的是,它支持模N计数设计。比如你想做一个MOD-10计数器(0~9),只需要检测当前值是否等于9,然后在下一个时钟到来前拉低LOAD,同时送入0000即可。

Verilog建模参考

module counter_74ls161 ( input clk, input clr, input load, input enp, ent, input [3:0] d, output reg [3:0] q, output rco ); always @(posedge clk) begin if (!clr) q <= 4'b0000; else if (!load) q <= d; else if (enp && ent) q <= q + 1; end assign rco = (q == 4'd15) && ent; endmodule

注意这里的always @(posedge clk)块包含了所有操作,体现了真正的“同步”特性。这也正是我们在硬件中追求的行为一致性。


实战项目:搭建0~59秒计数器

现在,让我们把这些知识整合起来,做一个真正的“秒计数器”。

目标:使用两片74LS161分别作为个位和十位,配合555定时器提供1Hz时钟,驱动两个七段数码管显示00~59秒。

系统结构图(文字版)

[555定时器] → 1Hz方波 → 个位74LS161的CLK ↓ [个位输出 Q0~Q3] → 74LS47译码 → 数码管1(个位) ↓ [个位RCO] → 十位ENT(使能十位计数) ↓ [十位CLK接同一时钟] ← 必须同步! ↓ [十位输出 Q0~Q3] → 74LS47译码 → 数码管2(十位)

如何实现“逢十进一”?

关键点在于进位控制
- 个位计数到9时,其RCO将在下一个时钟到来前变为高电平;
- 该信号连接至十位的ENT引脚,使得十位“被允许”进行一次计数;
- 因为十位也接有时钟,所以它会在下一个上升沿+使能有效的条件下加1。

这就是所谓的“同步进位”——既保证了时序对齐,又实现了精确传递。

如何做到59秒归零?

我们需要加入反馈逻辑:
- 当十位为5(即QB=1, QD=1)、个位为9(即QD=1, QC=1)时,产生一个清零信号;
- 使用与非门(如74LS20)检测QB_ten & QD_ten & QC_unit & QD_unit
- 输出连接至两片74LS161的CLR端(注意:若为同步清零,则需确保该信号持续到下一个时钟沿);

这样一来,一旦达到59,下一拍就会整体归零,形成60秒周期。


调试经验分享:那些课本不说的“坑”

即使原理正确,实际搭建时仍可能失败。以下是我在实验室带学生常遇到的问题及解决方法:

❌ 问题1:数码管乱闪、跳数不准

原因:电源噪声大,导致芯片误触发
对策:给每片IC的VCC-GND之间并联一个0.1μF陶瓷电容,越靠近芯片越好!

❌ 问题2:计数卡在某个数值不动

原因:未使用的输入引脚悬空,拾取干扰信号
对策:所有不用的输入端(如未用的D输入、LOAD脚等)必须通过10kΩ上拉电阻接VCC或直接接地

❌ 问题3:手动清零按钮按下后无法恢复

原因:机械按键抖动造成多次触发
对策:加入RC滤波(10kΩ + 100nF)或使用施密特触发器整形(如74LS14)

❌ 问题4:长导线导致时钟失真

原因:面包板走线过长,引入分布电感和电容
对策:缩短时钟线,必要时加一级缓冲器(如74LS04反相器作驱动)


写在最后:老芯片的新意义

也许有人觉得,用74LS搭电路是“复古表演”。但我始终相信,真正的工程师,应该既能写出优雅的Verilog代码,也能读懂示波器上的每一个毛刺

当你亲手连接每一根线、调试每一个信号、看着数码管从00走到59再归零时,你会对“时钟同步”、“状态转移”、“反馈控制”这些抽象概念产生前所未有的具象理解。

而这,正是74LS系列芯片至今仍在高校实验课中占据一席之地的原因。

未来你要学FPGA?很好。但请记得,那些HDL代码最终综合出来的,依然是由成千上万个类似74LS74这样的触发器构成的物理电路。底层不变,高层才不会迷失。


如果你正在准备相关实验,不妨动手试试这个0~59秒计数器。过程中有任何问题,欢迎留言交流。下次我们可以聊聊:如何用同样的思路扩展成“时-分-秒”完整时钟,甚至加上暂停/启动功能。

http://www.jsqmd.com/news/201749/

相关文章:

  • 从开源模型到生产级应用:我们提供的GLM-4.6V-Flash-WEB全栈支持
  • 环保监测摄像头画面理解:GLM-4.6V-Flash-WEB发现违规排污行为
  • 食品营养标签读取:GLM-4.6V-Flash-WEB生成饮食建议
  • GLM-4.6V-Flash-WEB对模糊、低清图像的容忍度测试结果
  • 品牌舆情监控:GLM-4.6V-Flash-WEB发现负面图像传播源头
  • YARN vs 传统调度器:效率对比分析
  • 5分钟快速搭建TOMCAT开发环境原型
  • HEIDISQL在企业级数据库管理中的5个实战案例
  • YOLO26 vs 传统CV:效率提升对比实测
  • 播客节目配图生成:GLM-4.6V-Flash-WEB根据音频内容建议插画
  • Elasticsearch零基础入门:从安装到第一个查询
  • 自动售货机界面适老化改造:GLM-4.6V-Flash-WEB语音引导操作
  • 零基础教程:用快马制作你的第一个HTML圣诞树
  • 升级 .NET 10 前,先看看这几个你一定会用上的新能力
  • 外卖平台菜品图片审核:GLM-4.6V-Flash-WEB过滤虚假宣传内容
  • Yocto定制Linux内核:从配置到编译完整指南
  • USB3.0终端阻抗匹配设计:手把手教程(零基础适用)
  • 机场值机柜台辅助:GLM-4.6V-Flash-WEB识别护照与行李标签
  • 零基础理解排列组合:CN和AN公式图解教程
  • 用ZABBIX快速搭建物联网设备监控原型
  • 工业控制中vivado安装教程2018的深度剖析
  • 【2025年终盘点】.NET 10 封神之年:从后台大叔到AI先锋的华丽转身,2026年你还等什么?
  • 对比传统方法:AI导入LXMUSIC音源效率提升10倍
  • 基于GLM-4.6V-Flash-WEB的图像问答系统搭建全攻略
  • HBuilderX安装教程:深度剖析安装失败原因
  • 竞技游戏开发效率革命:AI如何缩短德州扑克上线周期
  • 大模型也能「千人千面」?UIUC团队提出个性化LLM路由新框架
  • 基于工业控制的vivado安装教程深度剖析
  • 1小时打造Instagram下载MVP产品
  • 树莓派4b安装系统常见显卡驱动缺失问题快速理解