手把手教你用Quartus II和74系列芯片搭建数字钟(附74190计数器配置技巧)
·
从零构建数字钟:Quartus II与74系列芯片实战指南
数字钟作为电子工程入门的经典项目,不仅能巩固数字电路基础知识,还能掌握EDA工具的使用技巧。本文将带你从零开始,使用Quartus II软件和74系列芯片搭建一个完整的数字钟系统,特别针对74190计数器的配置与调试提供详细解决方案。
1. 项目准备与环境搭建
在开始设计前,我们需要准备好软硬件环境。Quartus II作为Altera(现Intel PSG)推出的FPGA开发工具,同样适用于传统数字电路的仿真与验证。最新版本的Quartus Prime Lite Edition即可满足我们的需求,它完全免费且支持大多数基础功能。
硬件方面,除了FPGA开发板,我们还需要准备:
- 74系列芯片:74190(十进制可逆计数器)x4、7447(BCD-7段译码器)x4、7408(与门)x2
- 共阳极数码管x4
- 1Hz时钟信号源(可使用555定时器或晶振分频电路)
- 面包板及连接线若干
提示:初学者建议先使用Proteus等仿真软件验证电路设计,再实际搭建硬件电路,可节省大量调试时间。
安装Quartus II时,注意勾选以下组件:
□ Quartus Prime Programmer
□ ModelSim-Altera Starter Edition
□ Devices → Cyclone IV E (根据实际FPGA型号选择)
2. 核心电路设计与74190配置技巧
2.1 时钟分频模块设计
数字钟的核心是精确的1Hz时钟信号。假设我们使用50MHz的FPGA板载晶振,需要通过分频电路得到秒脉冲:
module clock_divider(
input clk_50M,
output reg clk_1Hz
);
reg [25:0] counter;
always @(posedge clk_50M) begin
if(counter == 50_000_000 - 1) begin
counter <= 0;
clk_1Hz <= ~clk_1Hz;
end else begin
counter <= counter + 1;
end
end
endmodule
若使用74系列芯片实现,可采用74LS90分频器级联方案:
50MHz → 74LS90(÷10) → 74LS90(÷10) → 74LS90(÷10) → 74LS90(÷5) → 1Hz
2.2 74190计数器电路设计
74190是可预置的十进制同步可逆计数器,其引脚功能如下:
| 引脚 | 名称 | 功能描述 |
|---|---|---|
| 1 | A | 预置数据输入位0 |
| 2 | B | 预置数据输入位1 |
| 3 | C | 预置数据输入位2 |
| 4 | D | 预置数据输入位3 |
| 5 | /LOAD | 异步并行加载控制(低有效) |
| 6 | /CTEN | 计数使能(低有效) |
| 7 | D/U | 加减计数控制(高为减) |
| 9 | CLK | 时钟输入 |
| 10 | QD | 计数输出位3 |
| 11 | QC | 计数输出位2 |
| 12 | QB | 计数输出位1 |
| 13 | QA | 计数输出位0 |
| 14 | /MAX/MIN | 极值输出(低有效) |
分钟计数单元连接示例:
+-----+
1Hz ----| CLK |----- QA→7447→数码管
| |
GND ----| D/U |----- QB→7447→数码管
| 74190|
GND ----| /CTEN|----- QC→7447→数码管
| |
VCC ----| /LOAD|----- QD→7447→数码管
+-----+
3. Quartus II原理图设计实战
3.1 创建新项目
- 启动Quartus II,选择"File"→"New Project Wizard"
- 设置项目路径和名称(如Digital_Clock)
- 选择目标设备型号(根据实际FPGA型号)
- 添加新的原理图文件(.bdf)
3.2 绘制数字钟原理图
在原理图编辑器中,按照模块化思路设计:
- 时钟模块:放置分频器或直接引入外部时钟
- 计数模块:
- 秒计数器(60进制):2片74190级联
- 分计数器(60进制):同上
- 时计数器(24进制):特殊设计
- 显示模块:7447译码器驱动数码管
24进制小时计数器的特殊连接方式:
74190(十位)的QD和74190(个位)的QC通过7408与门连接到两片的/LOAD
预置值:十位=0010(2),个位=0100(4)
3.3 功能仿真验证
创建波形仿真文件(.vwf),设置测试信号:
时钟周期:20ns(对应50MHz)
复位信号:初始100ns低电平
观察信号:所有计数器输出、数码管驱动信号
常见仿真问题排查:
- 计数器不工作:检查/CTEN是否接低电平
- 显示乱码:验证7447与数码管类型(共阳/共阴)是否匹配
- 进位异常:检查级联连接和反馈复位逻辑
4. 硬件实现与调试技巧
4.1 FPGA引脚分配
使用Pin Planner工具进行约束:
| 信号名称 | FPGA引脚 | 对应硬件 |
|---|---|---|
| clk_50M | PIN_G1 | 板载晶振 |
| seg[6:0] | PIN_xx~PIN_xx | 数码管段选 |
| dig[3:0] | PIN_xx~PIN_xx | 数码管位选 |
4.2 常见硬件问题解决
-
数码管显示暗淡:
- 检查限流电阻(通常220Ω)
- 确认扫描频率(建议100Hz以上)
-
计数器不递增:
# 使用SignalTap II逻辑分析仪抓取信号 $ quartus_stp -t debug_stp.stp -
显示闪烁或错位:
- 确保位选信号扫描间隔均匀
- 检查电源滤波电容(推荐0.1μF陶瓷电容并联10μF电解电容)
4.3 高级功能扩展
基础功能稳定后,可考虑添加:
- 闹钟功能:增加数值比较器(7485)
- 调整时间:使用消抖开关控制74190的/LOAD和CLK
- 整点报时:利用计数器状态触发555音频电路
实际项目中,我曾遇到一个棘手问题:24小时制切换时计数器无法正确归零。最终发现是反馈逻辑中的门电路延迟导致,通过在74190的/LOAD端添加一个小电容(10pF)解决了竞争冒险问题。这种实战经验在教科书上很少提及,却对项目成功至关重要。
更多推荐


所有评论(0)