《多功能数字钟》EDA实验报告Word文档格式.docx
- 文档编号:20257873
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:19
- 大小:51.95KB
《多功能数字钟》EDA实验报告Word文档格式.docx
《《多功能数字钟》EDA实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《《多功能数字钟》EDA实验报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
关键字:
EDA,数字钟,QUARTUSII,VHDL,PLD,模块化,分频,校时,仿真,
2.概括
多功能数字钟应该具有的功能有:
显示时-分-秒、整点报时、小时和分钟可调等基本功能。
首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。
在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位,用4位二进制码(BCD码)显示个位。
实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。
对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。
本验设计的是当进行整点的倒计时5秒时,让LED来闪烁进行整点报时的提示。
要求显示格式为小时-分钟-秒钟,整点报时,报时时间为5秒,即从整点前5秒钟开始进行报时提示,LED开始闪烁,过整点后,停止闪烁。
系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10,000次分频。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
另外用S12按键作为系统时钟复位,复位后全部显示00-00-00。
3.总体原理
3.1功能概括
本实验是通过编程实现多功能的数字时钟,其功能包含了基本的时间显示部分(由00—00—00至23—59—59)的基本显示部分;
同时期附带有清零(RES)按键功能(这里用F12表示),当按下F12是所有的数字清零(00—00—00);
此外还有整点报时功能模块,当时间还有5秒到达正点的时候通过指示灯的闪烁以及蜂鸣器的发生实现报时的功能;
此外,还具有小时,分钟的调节功能(这里用S1,S2分别表示小时和分钟的调节),当按下S1一次的时候小时显示的数字增加‘1’(直至23后清零00),当按下S2一次的时候分钟上面的数字增加‘1’(直至59后归零00);
3.2功能结构图
a.本实验是采用功能分块的模式,通过不同的功能模块的组合,最终实验本实验的功能要求。
1Hz
5HZ
图1数字钟的系统框图
b.图为基本功能结构图
c.七段数码管是电子开发过程中常用的输出显示设备。
在实验系统中使用的是两个四位一体、共阴极型七段数码管。
其单个静态数码管如下图所示。
静态七段数码管
由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。
反之则不亮。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
3.3设计的基本要求及基本参数
从而的到需要的1s的信号。
本实验中,所用到的秒,分,时的计时都是采用4位二进制的计数器进行设计计时的。
通过设置不同的范围实现对7段数码管的显示设定。
4具体功能分块实现及介绍
4.1分频功能模块(这里将所有用到的端口名在此同时给出)
实现该功能是通过对系统的自身的1kHZ的信号的采用10000次的分频从而获得1s的所需要的信号。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLGIS
PORT(Clk:
INSTD_LOGIC;
--时钟输入
S12:
--复位输入
S1,S2:
--时间调节输入
spk:
OUTSTD_LOGIC;
led:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
--整点输报时输出
Display:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
--七段码管显示输出
SEG_SEL:
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)--七段码管扫描动
);
ENDLG;
ARCHITECTUREARTOFLGIS
SIGNALDisp_Temp:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALDisp_Decode:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALSEC1,MIN1,:
SIGNALSEC10,MIN10:
SIGNALHOUR10HOUR1:
SIGNALMusic_Count:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALClk_Count1:
STD_LOGIC_VECTOR(13DOWNTO0);
--产生1Hz时钟的分频计数器
SIGNALClk1Hz:
STD_LOGIC;
SIGNALled_count:
SIGNALled_display:
SIGNALT:
INTEGERRANGE0TO15;
BEGIN
PROCESS(Clk)
BEGIN
IF(Clk'
EVENTANDClk='
1'
)THEN
IF(Clk_Count1<
10000)THEN
Clk_Count1<
=Clk_Count1+1;
ELSE
="
00000000000001"
;
ENDIF;
ENDPROCESS;
4.2整点报时功能
Clk1Hz<
=Clk_Count1(13);
PROCESS(Clk1Hz,S12)
IF(S12='
0'
)THEN--系统复位
SEC1<
0000"
SEC10<
MIN1<
MIN10<
HOUR1<
HOUR10<
ELSIF(Clk1Hz'
EVENTANDClk1Hz='
)THEN--正常运行
IF(S1='
)THEN--调节小时
IF(HOUR1="
1001"
=HOUR10+1;
ELSIF(HOUR10="
0010"
ANDHOUR1="
0011"
=HOUR1+1;
ELSIF(S2='
)THEN--调节分钟
IF(MIN1="
IF(MIN10="
0101"
=MIN10+1;
=MIN1+1;
ELSIF(SEC1="
IF(SEC10="
=SEC10+1;
=SEC1+1;
ENDPROCESS;
----------------------------------------------------------------------
PROCESS(SEC1,T)
CASESEC1IS
WHEN"
=>
T<
=0;
0001"
=1;
=2;
=3;
0100"
=4;
=5;
0110"
=6;
0111"
=7;
1000"
=8;
=9;
WHENOTHERS=>
ENDCASE;
---------------------------------------------------------------------
PROCESS(Clk,T)
Music_Count<
=Music_Count+1;
ANDMIN1="
ANDSEC10="
)THEN--在59分50秒开始提示
IF((TMOD2)=0)THEN--在偶数秒开始发声
SPK<
=Music_Count
(2);
--嘀
='
ELSIF(MIN10="
ANDSEC1="
=Music_Count
(1);
--嗒
PROCESS(Clk)
IF(Clk1hz'
EVENTANDClk1hz='
)THEN
ANDsec1="
)THEN--在59分55秒开始提示
led_Count<
=led_Count+1;
led_count<
000"
4.3复位和时间调节功能
4.4时间显示功能
PROCESS(led_count)
CASE(led_count)IS
led_display<
001"
1111"
010"
011"
100"
101"
ENDCASE;
led<
=led_display;
--------------------------------------------------------------------------
PROCESS(SEG_SEL)
CASE(SEG_SEL+1)IS
Disp_Temp<
=HOUR10;
=HOUR1;
1010"
=MIN10;
=MIN1;
110"
=SEC10;
=SEC1;
-------------------------------------------------------------------------扫描累加
SEG_SEL<
=SEG_SEL+1;
Display<
=Disp_Decode;
--------------------------------------------------------------------------显示转换
PROCESS(Disp_Temp)
CASEDisp_TempIS
Disp_Decode<
00111111"
--0
00000110"
--1
01011011"
--2
01001111"
--3
01100110"
--4
01101101"
--5
01111101"
--6
00000111"
--7
01111111"
--8
01101111"
--9
01000000"
---
00000000"
--全灭
ENDART;
5.实验总结及心得
通过这次实验是我学习到了许多知识,首先是对EDA课程设计的基本要求以及对实验过程的具体实现方法,其次是对VHDL编程语言的语法掌握和认识有了更加深刻的理解和认识,再次是对QUARTUSII软件的基本操作和工作有了一定的了解和认识,还有就是对实验的过程收获了许多,受益了许多。
经过两周EDA课程设计,使我受益匪浅。
这不仅增强了我对EDA设计的兴趣,更巩固了基本的电路设计流程、方法以及技巧。
具备了这些基本知识,为今后的自主学习奠定了良好的基础。
在编写时可以相互借鉴,这样可以节省一定的时间,但在一个问题上纠结了很久,现还未明白,为什么一个变量在进程中只能被一个边沿信号触发进行修改,无奈之下选择了另一种方法,通过一个控制端来进行选频,以实现快速调时,在闹钟的处理上使用了数据选择,设置闹铃时数码管显示闹钟时间。
在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的;
在编写程序的过程中,信号与变量的使用是一个特需要注意的,进程中一个信号不应有多个复制源,信号的复值是在进程结束之时,而变量的复值是立即的,在书写时容易出错的地方是,信号的赋值与变量的赋值符号,信号作为全局的联络线,信号往往不允许在多个进程中被赋值,因为进程之间是并行的。
通过实验也彻底的认识到了自己的不足,以及许多自己有待加强和努力的地方,比如说相关语法的具体实验过程,不同设计的优点分析等。
还有就是对自己以后应该学习掌握的知识还有许多,自己懂得的还知识皮毛而已,如果真的要用于实际工程及设计中要走的路还是很长的。
最后在这里要感谢我的指导老师,感谢您的耐心指导和教诲,是您的耐心指导才使得我收获了这么多,学会了很多不懂得知识,掌握了这么多的专业知识,以及这么多有用的专业技巧和处理问题的方法和能力,正式由于您的努力才能帮助我的课程设计顺利的进行并能够最终完成自己的课程设计。
在这里要表达我的感激之情以及感恩之意,是您让我又一次的成长了许多,此致敬礼!
6.源程序
--------------------------------------------------------------------
BUFFERSTD_LOGIC_VECTOR(2DOWNTO0)--七段码管扫描驱动
);
--产生1Hz时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能数字钟 多功能 数字 EDA 实验 报告