数字钟VHDL程序

上传人:m**** 文档编号:497830669 上传时间:2023-03-30 格式:DOC 页数:13 大小:698KB
返回 下载 相关 举报
数字钟VHDL程序_第1页
第1页 / 共13页
数字钟VHDL程序_第2页
第2页 / 共13页
数字钟VHDL程序_第3页
第3页 / 共13页
数字钟VHDL程序_第4页
第4页 / 共13页
数字钟VHDL程序_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《数字钟VHDL程序》由会员分享,可在线阅读,更多相关《数字钟VHDL程序(13页珍藏版)》请在金锄头文库上搜索。

1、大连理工大学本科实验报告题目:数字钟的VHDL设计课程名称: 数字电路课程设计 学院(系): 电子信息与电气工程学部 专 业: 电子信息工程 班 级: 学生姓名: 学 号: 完成日期: 成 绩: 2013 年 12 月 15 日请预览后下载!数字钟的VHDL设计1. 设计任务及要求:设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下:(1)设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。(2)在整点进行提示,可通过LED闪烁实现,闪烁频率及花型可自己设计。(3)能够调整小时和分钟的时间,调整的形式为通过按键进行累

2、加。(4)具有闹钟功能,闹钟时间可以任意设定(设定的形式同样为通过按键累加),并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现设计要求:(1) 编写设计报告,要求包括方案选择、程序代码清单、调试过程、测试结果及心得体会。2. 设计原理时显示器秒显示器分显示器时译码器秒译码器分译码器报时时计数器分计数器秒计数器校时电路 1HZ分频器振荡器图1 数字钟的系统框图该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“

3、分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。 请预览后下载!3. 设计过程3.1. 设计思路时钟脉冲信号作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统自动复位重新开始计数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行校时

4、。整点报时电路在每小时的最后50秒开始报时间隔一秒报一次时直至下一小时开始。3.2. 数字钟的设计方案数字钟的设计包括编码模块、分频模块、秒计时模块、分计时模块、小时计时模块、闹钟模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能、闹铃和设置时间功能。3.2.1. 编码模块编码模块主要是对时、分、秒的设置输入。3.2.2. 分频模块在数字钟的设计中,外部输入时钟信号clk1的频率为50Mhz,其分频后的频率为clk,使其分频结果为1hz,用来提供给秒计时模块、分计时模块、小时计时模块。3.2.3. 秒计时模块将“秒计时脉冲”clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到

5、59,然后回到00,重新计时。在秒位进行计时的过程中。秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中reset为置数信号,当reset为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec2、sec1为秒计时器的高位和低位输出。3.2.4. 分计时模块分计时电路:将“分计时脉冲”clk接信号源单元的c1脉冲信号,此时分显示将从00计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rese为置数信号,当reset为1时,分计时器置数。fen4、fen3为分计时器的高位和低位输出。3.2.5. 小时计时模

6、块将“小时计时脉冲”clk接信号源单元的c2脉冲信号,此时小时显示将从00计时到23,然后回到00,重新计时。时计时器是由一个24进制的计数器构成的,具有置数和计数功能。其中的reset为置数信号,当reset为1时,时计时器置数。shi6、shi5为时计时器的高位和低位输出。3.2.6. 报时模块当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位加1。3.2.7.VHDL 引脚分配图请预览后下载!4. 源程序4.1. 数字钟整体程序整个程序分为六个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分和报时部分。4.2. VHDL程序及波形分析4.2.1.

7、 VHDL程序library ieee;-count60use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count60 isport(clk:in std_logic; reset:in std_logic; set:in std_logic; inc:in std_logic; out1:out std_logic_vector(3 downto 0);请预览后下载! out2:out std_logic_vector(3 downto 0); c:out std_logic; alight:out std

8、_logic); end;architecture run2 of count60 issignal ts1,ts2,as1,as2:std_logic_vector( 3 downto 0):=0000;signal tclk,aclk: std_logic;beginprocess(inc,clk,set)-根据设置模式,处理inc上的脉冲信号beginif set=0 then -时间调整模式aclk=0;if clk=1 and inc=1 then -clk=1则tclk=0,通过挖洞方式添加一个脉冲tclk=0;elsif clk=0 and inc=1 then -clk=0,则

9、tclk=1,产生一个高电平,添加一脉冲tclk=1;elsetclk=clk;end if;elsif set=1 then -闹铃调整模式tclk=clk;aclk=inc; -inc上的脉冲直接修改闹铃定时值end if;end process;process(tclk,reset) beginif(reset=0)then ts1=0000;ts2=0000; elsif(tclkevent and tclk=1)then if ts1=1001 then ts1=0000; if ts2=0101 then ts2=0000; else ts2=ts2+1; end if; else

10、 ts1=ts1+1;-计数过程 end if;end if;end process;-结束进程process(aclk,reset) beginif(reset=0)then as1=0000;as2=0000; elsif(aclkevent and aclk=1)then if as1=1001 then as1=0000; if as2=0101 then as2=0000; else as2=as2+1;请预览后下载! end if; else as1=as1+1;-计数过程 end if;end if;end process;-结束进程process(ts1,ts2,as1,as2

11、)- 显示时间或闹铃定时值begin if set=0 then - 显示时间out1=ts1;out2=ts2;else - 显示定时值out1=as1;out2=as2;end if;end process;process(ts1,ts2,as1,as2) -判断定时值与时间值相等,输出闹铃触发信号begin if (ts1=1001 and ts2=0101) then c=1; else c=0; end if;if ts1=as1 and ts2=as2 thenalight=1;elsealight=0;end if;end process;end run2;library iee

12、e;-count24use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count24 isport(clk:in std_logic; reset:in std_logic; set:in std_logic; inc:in std_logic; out1:out std_logic_vector(3 downto 0); out2:out std_logic_vector(3 downto 0); c:out std_logic;alight:out std_logic); end; architecture

13、 run1 of count24 issignal ts1,ts2,as1,as2:std_logic_vector( 3 downto 0):=0000;signal tclk,aclk: std_logic;请预览后下载!beginprocess(inc,clk,set)-根据设置模式,处理inc上的脉冲信号beginif set=0 then -时间调整模式aclk=0;if clk=1 and inc=1 then -clk=1则tclk=0,通过挖洞方式添加一个脉冲tclk=0;elsif clk=0 and inc=1 then -clk=0,则tclk=1,产生一个高电平,添加一脉冲tclk=1;elsetclk=clk;end if;elsif set=1 then -闹铃调整模式tclk=clk;aclk=inc; -inc上的脉冲直接修改闹铃定时值end if;end process;process(tclk,reset) beginif(reset=0)then ts1=0000;ts2=0000; elsif(tcl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号