顶层原理图如图所示:
在这里插入图片描述

主要有以下元件模块构成:
时钟生成器(CLK):
时钟信号用于触发时序元件(如触发器和计数器)的状态变化。
触发器(FF):
电路中包含多个触发器(如 D 触发器和 JK 触发器),用于存储和传递状态。
触发器根据时钟信号的上升沿或下降沿更新其输出状态。
计数器(CNT):
计数器模块可用于累加或递减计数,根据输入的时钟信号增加或减少计数值,并输出结果。
大多数计数器在达到特定值后会产生一个进位信号(COUT),以指示计数完成。
多路复用器(MUX):
该电路中有多个多路复用器,用于选择多个输入信号中的一个输出。
通过选择信号决定输出来源,能有效管理多个输入通道。
逻辑运算:
一些模块执行逻辑运算,如与、或、非等,组合各个信号以生成所需的输出。
通过按键来控制最终的显示效果。
Key0控制时钟的暂停与继续;
Key1在暂停之后对分进行调整;
key2在暂停之后对时进行调整;
Key3切换最终小时的12进制/24进制的显示部分;
sw0选择功能显示计时还是时钟;
Sw1控制计时功能的暂停与继续;
sw2控制计时功能的重置归零;
在这里插入图片描述
在这里插入图片描述

数字电子钟的时钟功能由三个计数器实现,其中分、秒计时分别为60进制计数,小时计时为24进制计数器,且采用进位级联方式连接。
通过 KEY0 和 JK触发器 JKFF2 的状态控制,将计数器的使能信号 (EN) 开启或关闭,当 EN=0 时计数器停止计数,保持当前状态;当 EN=1 时计数器继续工作。
MUX16 实现输入选择功能,通过控制信号将多个源头连接到输出设备24位与12位的切换功能,通过 JK触发器状态影响 MUX16。
数字电子钟的校时功能由两个按键实现,暂停时通过按键对分校时和时校时进行调整。
按下 KEY0 激活暂停模式(通过 JK 触发器切换状态)。
按下 KEY1 开始分计数,计数器开始在时钟信号触发下累加。按下KEY2时计数。
数字电子钟的校时功能由两个按键实现,暂停时通过按键对分校时和时校时进行调整。

在这里插入图片描述

计时部分:
CLK 100k:提供100kHz的时钟信号。
CLK 2k:提供2kHz的时钟信号。
当复位信号(RST_N)为低时,计数器 CNT100和 CNT60清零,QH 和 QL 输出均为 0000,COUT 信号无效(保持低电平)一级计数器(CNT100)实现 0-99的低位计数并通过 COUT 进行进位;二级计数器(CNT60)实现高位计数。通过时钟选择开关(SW1 和 SW2),用户可以控制计数器的暂停与清零。
在这里插入图片描述

数字电子钟的定时功能需要检测时间是否一致,一致时亮灯。时间设定使用四位码进行。比较器(COMP)持续检测两个输入信号(A23 和 B23):如果相等,输出 EQ 信号为高电平,这可以作为后续逻辑的触发信号。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/2312b23c53704680a7809ac3cac449f1.png

各种模块如下:
1HZ频率计模块:
在这里插入图片描述
在这里插入图片描述

生成低频时钟信号 (clk_lhz)。系统使用一个主时钟信号 (clk) 作为输入
通过 RST 信号复位计数器 CNT,确保计数器在复位时为零。
在检测到 clk 的上升沿时,如果计数器 CNT 达到特定值,则输出低频时钟信号 CLK_OUT。

60 进制可预置计数器模块:
在这里插入图片描述
在这里插入图片描述

这是一个计数器模块,包括输入端口 CLK(时钟)、RST(复位)、EN(使能),以及输出端口 QH 和 COUT
QH 代表计数器的当前计数值,以二进制形式输出。
COUT 表示计数器的进位信号,用于指示计数器已满或需要重置。

Jk触发器模块:
在这里插入图片描述

系统自带的模块,作用是作为寄存器
24 进制可预置计数器模块;
在这里插入图片描述
在这里插入图片描述

转换为12进制模块;
在这里插入图片描述
在这里插入图片描述

VHDL代码使用了条件语句(WHEN…ELSE)来对输入二进制数进行编码转换。
模块的主要目的是将4位二进制输入转换为相应的BCD 输出。
12 进制和 24 进制计数器多路选择模块;
在这里插入图片描述
在这里插入图片描述

这是一个16:1多路复用器,控制信号用来选择输入数据的高位或低位,功能是选择输入信号并输出选定的信号。
LED 译码模块;
在这里插入图片描述
在这里插入图片描述

这个模块的主要用途是将输入的4位开关信号转换为控制7段显示器实际显示的内容。通过选择正确的编码,能够显示数字 0 到 9 以及一些其他状态。
键盘处理模块:
在这里插入图片描述
在这里插入图片描述

小时调试
在这里插入图片描述

分钟调时模块
在这里插入图片描述

选择多个输入中的一个输出。
秒表与时钟切换模块:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

根据输入 A 的值,决定输出的内容当选择信号 A 为 ‘0’ 时:
输出 Y 将从输入向量 INP 的最低24位(INP(23 DOWNTO 0))赋值。
当选择信号 A 为 ‘1’ 时:
输出 Y 将从输入向量 INP 的次高24位(INP(47 DOWNTO 24))赋值。
100 进制可预置计数器模块:
在这里插入图片描述
在这里插入图片描述

时钟与定时时间比较模块:
在这里插入图片描述

在这里插入图片描述

条件表达式为 EQ <= ‘1’ WHEN A = B ELSE ‘0’;:
如果 A 等于 B,则 EQ 输出为高(‘1’),表示两个输入相等。
如果 A 不等于 B,则 EQ 输出为低(‘0’),表示两个输入不相等。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐