数字时钟设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• USE IEEE.STD_LOGIC_ARITH.ALL;
• USE IEEE.STD_LOGIC_UNSIGNED.ALL;
• ENTITY COUNT601 IS

PORT(CLK,RESET,CLK1,SETHOUR:IN STD_LOGIC;

MIN0,MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
2.分计数器(COUNT601)
• 能够实现60进制循环计数,带有带有复位 端reset、手动调小时功能端sethour和向时 进位端CO ,受时钟上升沿信号控制。其文 本语言(文件名:COUNT601.vhd)为底 层文本,图2为分计数器的仿真波形图
• LIBRARY IEEE;
• USE IEEE.STD_LOGIC_1164.ALL;
1. 多功能数字电子钟功能
• 正常计时:秒(60)、分(60)、小时(24)计数; 秒计时的频率为1Hz,数码管用动态扫描实时显示 计时的小时、分、秒。
• 整点报时:逢整点蜂鸣器在“59”分钟的第51、53、 55、57秒发频率为512Hz的低音,在“59”分钟的 第59秒发频率为1024Hz的高音。
• IF SEC0_T="1001" AND SEC1_T="0101" THEN
• SEC0_T<="0000";SEC1_T<="0000"; E_1<='1';
• ELSE E_1<='0';
• END IF;
• END IF;
• END PROCESS;
• END ONE;
• 图1. 六十进制秒计数器的仿真波形
模60进
制计数器
CLK
60/24进制计数器(VHDL)
1S
CLK/60 CLK/3600
1分钟 1小时
8位数码管动态显示
g
f
e
d
c
b
a
¨¨
14
38
20
M8 M7 M6 M5 M4 M3 M2 M1 模8计数器→ 3-8译码器
8路脉冲分配器→ 产生选位M8 ~M1 信号; 8选一数据选择器→4位BCD码→ 产生选段码a~g信号;
• SEC0_T<="0000";SEC1_T<="0000";

ELSIF CLK'EVENT AND CLK='1' THEN

IF SEC0_T="1001" THEN

wk.baidu.com
SEC0_T<="0000"; SEC1_T<=SEC1_T+1;

ELSE

SEC0_T<=SEC0_T+1;

END IF;
• BEGIN
(“1111”)时
7段译码显器示(‘g=-1)’
d4[3..0]
b[3..0]
a~g
d5[3..0]
d6[3..0]
d7[3..0]
模8
3:8译码器
q[2..0]
M[8..1]
CPLD芯片
clk1k 模8计数器→3-8译码器→8路脉冲分配器
3. 报时、分频电路
系统时钟 1)秒计数时钟1Hz 2) 校时时钟4Hz 3) 动显扫描时钟1024Hz 4) 蜂鸣器时钟 1024Hz
信号源
clk1hz 模24
h[7..4] h[3..0]
模60
模60
m[7..4]
m[3..0] s[7..4] s[3..0]
8位数码管动态d显2[3示..0],d5[3..0]可
定义为特殊字
d0[3..0] d1[3..0] d2[3..0] d3[3..0]
8:1MUX (“1111”)
遇特殊字
蜂鸣器时钟 512Hz
报时:整点前59分 51,53,55,57秒输出512hz频率的时钟; 59秒输出1k 频率的时钟。
4. 系统框图
cht cmt cst
reset
clk1hz clk4hz
计时器
clk1k
显示 控制 电路
a~g 扫描显 示电路
M1~M8
clk1k
clk512
报时控 制电路
蜂鸣器

SEC0,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

C:OUT STD_LOGIC);
• END COUNT60;
• ARCHITECTURE ONE OF COUNT60 IS
• SIGNAL SEC0_T,SEC1_T:STD_LOGIC_VECTOR(3 DOWNTO 0);

CO:OUT STD_LOGIC);
• END COUNT601;
• ARCHITECTURE ONE OF COUNT601 IS
SIGNAL MIN0_T,MIN1_T:STD_LOGIC_VECTOR(3 DOWNTO 0);
• SIGNAL ENHOUR_1,ENHOUR_2:STD_LOGIC;
• SIGNAL E_1,E_2: STD_LOGIC;
• BEGIN
• SEC0<=SEC0_T; SEC1<=SEC1_T;
• E_2<=(SETMIN and CLK);
• C<=(E_1 or E_2);
• PROCESS(CLK,RESET,SETMIN)
• BEGIN
• IF RESET='0'THEN
模块说明
• 时钟的设计共化分为6个模块:秒计数器 (count60),分计数器(count601),小 时计数器(count24),报警电路(bs), 扫描电路(set),译码电路(led7)。下 面具体分析各个模块的原理、内容和功能。
1.秒计数器(count60)
• 能够实现60进制循环计数,带有复位端 reset、手动调分功能端setmin和向分进位 端c ,受时钟上升沿信号控制,其文本语言 (文件名:count60.vhd)为底层文本,图 1为秒计数器的仿真波形图。
• 校时: 1)校小时, 显示小时数码管以4Hz的频率递增计数; 2)校分, 显示分数码管以4Hz的频率递增计数; 3)校秒, 秒清0。
1.计时、显示电路
显示小时
显示分
显示秒
动显
十位 个位 - 十位 个位 - 十位 个位
计时
RESET CLK
小时计时
模24进 制计数器
分计时
模60进 制计数器
秒计时
• LIBRARY IEEE;
• USE IEEE.STD_LOGIC_1164.ALL;
• USE IEEE.STD_LOGIC_ARITH.ALL;
• USE IEEE.STD_LOGIC_UNSIGNED.ALL;
• ENTITY COUNT60 IS
• PORT(CLK,RESET,SETMIN:IN STD_LOGIC;
相关文档
最新文档