数字时钟EDA.docx
- 文档编号:8441696
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:16
- 大小:229.34KB
数字时钟EDA.docx
《数字时钟EDA.docx》由会员分享,可在线阅读,更多相关《数字时钟EDA.docx(16页珍藏版)》请在冰豆网上搜索。
数字时钟EDA
设计报告
课程名称在系统编程技术
任课教师
设计题目数字时钟
班级
姓名
学号
日期
目录
一、题目分析-1-
二、选择方案-1-
三、细化框图-1-
四、应用程序并仿真-2-
4.1秒模块-2-
4.2分模块-3-
4.3时模块-4-
4.5报时模块-6-
五、全系统联调,整机电路,波形图-7-
六、硬件测试及说明-8-
七、结论-9-
八、课程总结-9-
九、参考文献目录-10-
十、附录(源程序)-10-
一、题目分析
用Verilog设计一个多功能的数字钟,具体功能为:
(1)、计时功能:
时、分、秒的计时;
(2)、校时功能:
对时、分、秒进行手动调整以校准时间;
(3)、整点报时功能:
每逢整点,由蜂鸣器产生2秒的“滴滴”的报时音。
二、选择方案
多功能数字钟电路的设计总体方案,时钟脉冲为CLK和CLK1,CLK=1Hz,对秒进行计数,当秒计数为60时,产生脉冲控制分,当分计数为60时对,产生脉冲控制时,当时计数为23,分为59,秒为59时,下一脉冲来临时则重新计时恢复为00时00分00秒,并且报时,时间为两秒,报时频率由CLK1控制。
按键部分:
复位键:
高低平有效;设定时间键:
高电平有效;时间控制键:
高电平控制对分的设定,低电平控制对时的设定;键(IO49,IO42,IO48,IO43)四个控制时分的高四位,键(IO47,IO44,IO46,IO45)四个控制时分的低四位。
当设定时间时,使定时间键为高电平,当时间控制键为高电平时,使用键(IO49,IO42,IO48,IO43)和(IO47,IO44,IO46,IO45)可以对分进行设定;使定时间键为高电平,当时间控制键为低电平时;使用键(IO49,IO42,IO48,IO43)和(IO47,IO44,IO46,IO45)可以对时进行设定。
当时间为整点时,蜂鸣器报时,时间持续2秒。
三、细化框图
ENMIN
ENSEC
RESET
图1
四、应用程序并仿真
4.1秒模块
图2
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSECONDIS--秒实体
PORT(CLK,RESET:
INSTD_LOGIC;
SEC:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENSEC:
OUTSTD_LOGIC);--驱动分计时信号
END;
ARCHITECTUREAOFSECONDIS--秒结构体
BEGIN
PROCESS(CLK,RESET)
BEGIN
IFRESET='1'THENSEC<="00000000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFSEC="01011001"THENSEC<="00000000";ENSEC<='1';--清零,驱动分模块
ELSIF--进位语句
SEC(3DOWNTO0)>="1001"THEN
SEC(7DOWNTO4)<=sec(7DOWNTO4)+1;
SEC(3DOWNTO0)<="0000";
ELSESEC(3DOWNTO0)<=sec(3DOWNTO0)+1;ensec<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
图3
4.2分模块
图4
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYMINUTEIS--分实体
PORT(CLKM,SET,RESET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
MIN:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENMIN:
OUTSTD_LOGIC);--驱动时计时信
END;
ARCHITECTUREAOFMINUTEIS--分结构体
BEGIN
PROCESS(CLKM,RESET,SET,MINH)
BEGIN
IFRESET='1'THENMIN<="00000000";
ELSIFSET='1'ANDMINH='1'THENMIN<=SET1;
ELSIFCLKM'EVENTANDCLKM='1'THEN
IFMIN="01011001"THENMIN<="00000000";ENMIN<='1';--清零,驱动时模块
ELSIFMIN(3DOWNTO0)>="1001"THEN--进位语句
MIN(7DOWNTO4)<=MIN(7DOWNTO4)+1;
MIN(3DOWNTO0)<="0000";
ELSEMIN(3DOWNTO0)<=MIN(3DOWNTO0)+1;ENMIN<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
图5
4.3时模块
图6
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYHOUR1IS--时实体
PORT(CLKH,SET,RESET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
HOUR:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREAOFHOUR1IS--时结构体体
BEGIN
PROCESS(CLKH,RESET,SET,MINH)
BEGIN
IFRESET='1'THENHOUR<="00000000";
ELSIFSET='1'ANDMINH='0'THENHOUR<=SET1;
ELSIFCLKH'EVENTANDCLKH='1'THEN
IFHOUR="00100011"THENHOUR<="00000000";--清零
ELSIFHOUR(3DOWNTO0)>="1001"THEN--进位
HOUR(7DOWNTO4)<=HOUR(7DOWNTO4)+1;
HOUR(3DOWNTO0)<="0000";
ELSEHOUR(3DOWNTO0)<=HOUR(3DOWNTO0)+1;
ENDIF;
ENDIF;
ENDPROCESS;
END;
图7
4.5报时模块
图8
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALARM1IS--报时实体
PORT(RESET,CLK1:
INSTD_LOGIC;
SEC,MIN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
ALARM:
OUTSTD_LOGIC);
END;
ARCHITECTUREAOFALARM1IS--报时结构体
BEGIN
PROCESS(CLK1,SEC,MIN,RESET)
BEGIN
IFMIN="00000000"ANDRESET='0'AND(SEC="00000000"ORSEC="00000001")THENALARM<=CLK1;--报时语句,持续两秒
ELSEALARM<='0';
ENDIF;
ENDPROCESS;
END;
图9
5、全系统联调,整机电路,波形图
图10
图11
图12
六、硬件测试及说明
本项目实验包括四个模块,分别为秒计时模块(SECOND),分计时模块(MINTUE),时计时模块(HOUR)以及整点报时模块(ALARM1)。
项目原理:
实验中时钟脉冲为CLK和CLK1,CLK=1Hz,对秒进行计数,当秒计数为60时,产生脉冲控制分,当分计数为60时对,产生脉冲控制时,当时计数为23,分为59,秒为50时,下一脉冲来临时则重新计时恢复为000000,并且报时,时间为两秒,报时频率由CLK1控制。
操作说明:
键8为复位键,高低平有效;键7为设定时间键,高电平有效;键6为控制键,高电平控制对分的设定,低电平控制对时的设定;键(IO49,IO42,IO48,IO43)四个控制时分的高四位,键(IO47,IO44,IO46,IO45)四个控制时分的低四位。
当设定时间时,使键7为高电平,当键6为高电平时,使用键(IO49,IO42,IO48,IO43)和(IO47,IO44,IO46,IO45)可以对分进行设定;使键7为高电平,当键6为低电平时;使用键(IO49,IO42,IO48,IO43)和(IO47,IO44,IO46,IO45)可以对时进行设定。
当时间为整点时,蜂鸣器报时,时间持续2秒。
七、结论
在本次课程设计中,通过自己的努力初步完成了数字时钟设计的基本功能,在提交课程设计时,与老师的探讨让我茅塞顿开,比如在按键调整时,分时间时,应该控制调整数字的范围,调整分钟范围为0到59,调整时范围为0到23;在整点报时方面也可以更一步优化,实现几点响几次的方式。
八、课程总结
随着电子设计自动化技术的普及,利用EDA技术进行数字电路课程设计,不仅可以很好地锻炼学生的综合设计开发能力和动手能力,从而激发学生的学习兴趣,还可以大大节约数字电路课程设计实验的成本,提高设计效率。
因此,将EDA技术应用于数字电路课程设计必将成为今后数字电路实验课程改革的新动向。
EDA软件,可方便地在计算机上进行电路设计、仿真,其电路结构及设计观念可以很容易地被修正;也可方便地更换所需要的元件。
通过模拟可快速地反映出所设计电路的性能。
若能利用计算机辅助设计进行电路模拟与分析,则可有效地节约资源、缩短产品研发的成本与时间。
我能顺利的完成课程设计,写完课程设计论文。
我必需感谢同学和老师们无私的帮助,因为是你们让我感受到团结的力量,更让我学会了更多的知识,在这里真诚的感谢你们!
回顾总结,通过此次课程设计论文,让我学到了许多,不止是一些新的理论知识和具体的动手实践。
更重要的是一种思想,大问提可以转换成小问题解决。
相信这将会对我今后的学习工作带来帮助。
这次课程设计论文,让我认识到我缺少的很多。
理论与实践都匮乏,不仅是专业知识,其它方面的知识了解的也少。
在今后,需要不断的学习。
不断的充实自身。
在本次课程论文中,曾遇到过不少问题,如果单靠我个人的努力,很难按时完成的,在此,我衷心感谢我的指导老师,我学到了很多东西。
知道老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我获益非浅。
九、参考文献目录
潘松,黄继业.EDA技术实用教程——VerilogHDL版【M】.5版。
北京:
科学出版社,2013.
十、附录(源程序)
TOPCLOCK(主程序)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTOPCLOCKIS
PORT(CLK,RESET,SETT,MINHH,CLK1:
INSTD_LOGIC;
SET11:
INSTD_LOGIC_VECTOR(7DOWNTO0);
ALARM:
OUTSTD_LOGIC;
SEC,MIN,HOUR:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREONEOFTOPCLOCKIS
COMPONENSECOND--秒元件的例化
PORT(CLK,RESET:
INSTD_LOGIC;
SEC:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENSEC:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTMINUTE--分元件的例化
PORT(CLKM,RESET,SET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
MIN:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENMIN:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTHOUR1--时元件的例化
PORT(CLKH,RESET,SET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
HOUR:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCOMPONENT;
COMPONENTALARM1--报时元件的例化
PORT(RESET,CLK1:
INSTD_LOGIC;
MIN,SEC:
INSTD_LOGIC_VECTOR(7DOWNTO0);
ALARM:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALENM,ENH:
STD_LOGIC;--秒分、分时、时之间的连接信号
SIGNALENA:
STD_LOGIC_VECTOR(7DOWNTO0);--分与报时之间的连接信号
BEGIN
u1:
SECONDPORTMAP(RESET=>RESET,SEC=>SEC,CLK=>CLK,ENSEC=>ENM);
u2:
MINUTE
PORTMAP(RESET=>RESET,SET=>SETT,SET1=>SET11,MINH=>MINHH,MIN=>MIN,CLKM=>ENM,ENMIN=>ENH);
u3:
HOUR1
PORTMAP(RESET=>RESET,SET=>SETT,SET1=>SET11,MINH=>MINHH,HOUR=>HOUR,CLKH=>ENH);
u4:
ALARM1
PORTMAP(RESET=>RESET,MIN=>MIN,SEC=>SEC,CLK1=>CLK1,ALARM=>ALARM);
END;
秒模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSECONDIS--秒实体
PORT(CLK,RESET:
INSTD_LOGIC;
SEC:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENSEC:
OUTSTD_LOGIC);--驱动分计时信号
END;
ARCHITECTUREAOFSECONDIS--秒结构体
BEGIN
PROCESS(CLK,RESET)
BEGIN
IFRESET='1'THENSEC<="00000000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFSEC="01011001"THENSEC<="00000000";ENSEC<='1';--清零,驱动分模块
ELSIF--进位语句
SEC(3DOWNTO0)>="1001"THEN
SEC(7DOWNTO4)<=sec(7DOWNTO4)+1;
SEC(3DOWNTO0)<="0000";
ELSESEC(3DOWNTO0)<=sec(3DOWNTO0)+1;ensec<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
分模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYMINUTEIS--分实体
PORT(CLKM,SET,RESET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
MIN:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0);
ENMIN:
OUTSTD_LOGIC);--驱动时计时信
END;
ARCHITECTUREAOFMINUTEIS--分结构体
BEGIN
PROCESS(CLKM,RESET,SET,MINH)
BEGIN
IFRESET='1'THENMIN<="00000000";
ELSIFSET='1'ANDMINH='1'THENMIN<=SET1;
ELSIFCLKM'EVENTANDCLKM='1'THEN
IFMIN="01011001"THENMIN<="00000000";ENMIN<='1';--清零,驱动时模块
ELSIFMIN(3DOWNTO0)>="1001"THEN--进位语句
MIN(7DOWNTO4)<=MIN(7DOWNTO4)+1;
MIN(3DOWNTO0)<="0000";
ELSEMIN(3DOWNTO0)<=MIN(3DOWNTO0)+1;ENMIN<='0';
ENDIF;
ENDIF;
ENDPROCESS;
END;
时模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYHOUR1IS--时实体
PORT(CLKH,SET,RESET,MINH:
INSTD_LOGIC;
SET1:
INSTD_LOGIC_VECTOR(7DOWNTO0);
HOUR:
BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));
END;
ARCHITECTUREAOFHOUR1IS--时结构体体
BEGIN
PROCESS(CLKH,RESET,SET,MINH)
BEGIN
IFRESET='1'THENHOUR<="00000000";
ELSIFSET='1'ANDMINH='0'THENHOUR<=SET1;
ELSIFCLKH'EVENTANDCLKH='1'THEN
IFHOUR="00100011"THENHOUR<="00000000";--清零
ELSIFHOUR(3DOWNTO0)>="1001"THEN--进位
HOUR(7DOWNTO4)<=HOUR(7DOWNTO4)+1;
HOUR(3DOWNTO0)<="0000";
ELSEHOUR(3DOWNTO0)<=HOUR(3DOWNTO0)+1;
ENDIF;
ENDIF;
ENDPROCESS;
END;
报警模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALARM1IS--报时实体
PORT(RESET,CLK1:
INSTD_LOGIC;
SEC,MIN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
ALARM:
OUTSTD_LOGIC);
END;
ARCHITECTUREAOFALARM1IS--报时结构体
BEGIN
PROCESS(CLK1,SEC,MIN,RESET)
BEGIN
IFMIN="00000000"ANDRESET='0'AND(SEC="00000000"ORSEC="00000001")THENALARM<=CLK1;--报时语句,持续两秒
ELSEALARM<='0';
ENDIF;
ENDPROCESS;
END;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟 EDA