基于VHDL数字钟的设计.docx
《基于VHDL数字钟的设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL数字钟的设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于VHDL数字钟的设计
安徽工业经济职业技术学院
毕业论文(设计)
题目:
基于EDA数字钟的设计
系别:
电子信息技术系
专业:
电子信息工程
学号:
201054444
班级:
51044
学生姓名:
王忠正
指导教师:
王俊
二〇一二年四月八日
【摘要】
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑和时序电路。
因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.
数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。
这些方法都各有其特点。
我们是使用VHDL来设计的,并且用仿真器对其进行仿真。
【关键词】
EDAMAXplusⅡ软件数字电子钟VHDL
目录
绪论...............................................................................................................................1
第1章设计要求说明.................................................................................................2
1.1简述EDA极其必要性.....................................................................................4
1.1.1简述EDA...................................................................................................4
1.1.2应用EDA的必要性..................................................................................4
1.2设计要求............................................................................................................4
第2章方案论证.........................................................................................................4
第3章各模块设计.....................................................................................................5
3.1秒分计时器........................................................................................................5
3.2时计时器............................................................................................................5
3.3星期计时器........................................................................................................5
3.4报时模块............................................................................................................5
第4章系统设计.........................................................................................................5
第5章调试过程.........................................................................................................5
5.1秒计时器............................................................................................................5
5.2分计时器...........................................................................................................5
5.3时计时器............................................................................................................5
5.4星期计时器........................................................................................................5
5.5报时模块............................................................................................................5
第6章结论.................................................................................................................5
第7章参考文献.........................................................................................................5
绪论
随着计算机在国内的逐渐普及,计算机已经深入到每一个行业,计算机与每个工作领域紧密地联系在了一起。
使用计算机可以大大提高工作效率。
电子技术作为信息化社会的重要基石,已经成为20世纪下半叶乃至21世纪发展最迅速、最活跃、最具有渗透力的技术。
实现信息化得网络及关键部件不管是计算机还是通讯电子设备,它们的基础都是集成电路。
集成电路技术发展至今,全世界数以万亿美元的设备和科研投入,已使电子技术形成非常强大的产业能力。
电子技术水平发展如此迅速,在于它具有极大的市场应用需求。
科学水平发展到今天,衡量许多电子产品技术含量高低在很大程度上取决于电子技术的引入水平。
然而,孤立的发展电子技术是没有出路的,他必须同各种生产实践相结合,以社会需求为动力。
随着计算机新技术的发展以及电子系统设计新需求的上升,技术竞争需要的时对新器件应用的需求,集成电路专业设计人员需要的是贯穿电子设计过程中的最小花销、最强的自动化设计手段。
正是在这种强烈的技术要求推动下,产生了电子设计自动化EDA(ElectronicDesignAutomation)技术,EDA是新崛起的现代化电子设计手段。
EDA技术的关键之一是EDA工具,EDA工具是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术最新成果而研制成的电子设计通用工具软件。
1设计要求说明
1.1简述EDA极其必要性
1.1.1简述EDA
电子产品随着技术的进步,更新换代速度可谓是日新月异。
不同行业层出不穷的技术需求,是的对配套电子系统或部件的功能、可靠性、集成度、成本、设计周期的要求日益提高。
随着时间的推移,科学研究与技术开发行为日益市场化,而袁飞纯粹的学术行为,这要求设计工作必须在较短的时间内出色完成,技术人员敢带工作压力越来越大。
显然,采用传统的电子设计手段完成复杂电子系统设计越来越力不从心了,传统的电子设计与现实手段受到极大的挑战。
如果在激烈的技术产品竞争中仍然沿用老的办法,很有可能在激烈的中处于被动落后的境地。
例如,当设计比较复杂的电子系统时,要等到做完完全硬件实验才开始设计印制电路板,这样,设计周期必然会相应拉长,即使设计出印制电路板来,也很难保证它的电器起来全部正确,各种元件参数合理以及完善的电磁兼容性能,如果需要设计实现的数字电路部分规模较大,仍习惯的利用中、小规模数字集成芯片实现,电路的集成度和可靠性在许多应用场合会受到很大的限制,甚至根本无法满足需求。
作为电路主体的器件,特别是集成电路器件功能越来越强大,集成度越来越高,传统设计方式已难以胜任。
EDA技术是以计算机科学和微电子技术发展为先导,汇集了计算机图形学、拓扑逻辑学、微电子工艺与结构等多种学科的现先进技术,他是在计算机工作平台产生的电子系统设计应用技术。
EDA技术随着计算机、集成电路和电子系统设计的发展,经历了计算机辅助设计CAD、计算机辅助工程设计CAE和电子设计自动化EDA3个阶段。
EDA技术融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动化设计。
EDA软件在电子行业的应用也越来越广泛,但和发达国家相比,我国的电子设计水平仍然存在着相当大的差距,随着经济全球化,中国已走入WTO,随着加入WTO,电子行业将会受到较大的冲击。
但我国许多从事电子设计工作的人员对EDA软件并不熟悉,因此需要提高电子设计在电脑方面应用的水平。
1.1.2应用EDA的必要性
数字电路课程设计是数字设计型试验中的重要组成部分,它要求运用电子技术课程中有关知识和实验方法,完成一些综合性较强的设计课题。
由于目前在数字电路实验教学中,大部分院校仍然用中小规模的通用集成电路来实现设计功能,当设计的数字电子钟系统比较复杂,需要多个集成芯片和大量连线时。
就增加了设计电路板的难度和故障调式难度,延长了设计周期,降低了学生的学习兴趣;同时,常用中小规模集成芯片的大量重复使用也大大增加了设计成本。
因此,在数字电路课程设计中引入EDA技术,再用当前国际先进的设计方和理念,改革传统的课程设计方法,已经成为一种趋势。
在学校电子技术实验的课程中,最让实验老师感到头痛的有两个问题:
一是由于电路的连接、点走元件的损坏或仪表毛病,为了查找这些问题,使得一个试验在相对短暂的时间内难以完成;二是仪表坏了要修理,元件坏了要拆换,连接导线、电缆线损坏也要调换等。
这些不仅大大增加了实验的开支,同时实验室的管理也非常困难。
应用EDA虚拟的电子实验平台,让学生坐在计算机旁进行各种电子线路的仿真实验与在实验室用真实的一起、惊醒电子线路实验,具有同样的感受和更具有真实的实验效果。
而且还不会损坏元件,同样达到了实验的目的。
可见,用EDA软件惊醒仿真电子实验的却可以达到事半功倍的效果。
1.2设计要求
设计并实现具有一定功能的数字小系统(数字钟)要求:
1、对所有设计的小系统能够正确分析;
2、基于VHDL语言描述系统的功能;
3、在maxplusII环境中编译通过;
4、仿真通过并得到正确的波形;
5、给出相应的设计报告。
2方案论证
该数字钟可以实现3个功能:
计时功能、整点报时功能和重置时间功能,因此有3个子模块:
计时、报时(alarm1)、重置时间(s1、m1、h1、d1)。
其中计时模块有4部分构成:
秒计时器(second1)、分计时器(minute1)、时计时器(hour1)和星期计时器(day1)。
秒计时器(second1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,秒计时器清0;set为置数信号,当set为0时,秒计时器置数,置s1的值。
clk为驱动秒计时器的时钟,sec为秒计时器的输出,ensec为秒计时器的进位信号,作为下一级的时钟输入信号。
分计时器(minute1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,分计时器清0;set为置数信号,当set为0时,分计时器置数,置m1的值。
clkm为驱动分计时器工作的时钟,与ensec相连接;min为分计时器的输出;enmin为分计时器的进位信号,作为下一级的时钟输入信号。
时计时器(hour1)是由一个24进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,时计时器清0;set为置数信号,当set为0时,时计时器置数,置h1的值。
clkh为驱动时计时器工作的时钟,与enmin相连接;hour为时计时器的输出;enhour为时计时器的进位信号,作为下一级的时钟输入信号。
星期计时器(day1)是由一个7进制的计数器构成的,具有清0、置数和计数功能。
其中reset为清0信号,当reset为0时,星期计时器清0;set为置数信号,当set为0时,星期计时器置数,置d1的值。
clkd为驱动星期计时器工作的时钟,与enhour相连接;day为星期计时器的输出。
报时模块(alarm1)的功能是当整点(将min作为该模块的输入信号,min=00)时,alarm输出高电平,并且持续1分钟。
数字钟的工作原理图如下所示:
图1数字钟工作原理
3各模块设计
3.1秒计时器(second1)
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entitysecond1is
Port(clk,set,reset:
instd_logic;
S1:
instd_logic_vector(7downto0); ――置数端(秒)
Sec:
bufferstd_logic_vector(7downto0); ――秒输出端
Ensec:
outstd_logic); ―秒计时器的进位,用来驱动分计时器
End;
Architectureaofsecond1is
Begin
Process(clk,reset,set,s1)
Begin
Ifreset='0'thensec<="00000000"; ――对秒计时器清0
Elsifset='0'thensec<=s1; ――对秒计时器置s1的数
Elsifclk'eventandclk='1'then
ifsec=59thensec<="00000000";ensec<='1'; ――重复计数并产生进位 elsesec<=sec+1;ensec<='0'; 以驱动下一级
endif;
endif;
Endprocess;
End;
3.2分计时器(minute1)(同上)
3.3时计时器(hour1)
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entityhour1is
Port(clkh,set,reset:
instd_logic;
h1:
instd_logic_vector(7downto0); ――置数端(时)
hour:
bufferstd_logic_vector(7downto0); ――时输出端
Enhour:
outstd_logic); ――时计时器的进位,用来驱动星期计时器
End;
Architectureaofhour1is
Begin
Process(clkh,reset,set,h1)
Begin
Ifreset='0'thenhour<="00000000"; ――对时计时器清0
Elsifset='0'thenhour<=h1; ――对时计时器置h1的数
Elsifclkh'eventandclkh='1'then
ifhour=23thenhour<="00000000";enhour<='1';――重复计数
elsehour<=hour+1;enhour<='0'; 并产生进位以驱动下一级
endif;
endif;
Endprocess;
End;
3.4星期计时器(day1)
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entityday1is
Port(clkd,set,reset:
instd_logic;
d1:
instd_logic_vector(2downto0); ――置数端(星期)
day:
bufferstd_logic_vector(2downto0)); ――星期输出端
end;
Architectureaofday1is
Begin
Process(clkd,reset,set,d1)
Begin
Ifreset='0'thenday<="000"; ――对星期计时器清0
Elsifset='0'thenday<=d1; ――对星期计时器置d1的数
Elsifclkd'eventandclkd='1'then
Ifday=6thenday<="000"; ――重复计数
Elseday<=day+1;
Endif;
Endif;
Endprocess;
End;
3.5报时模块(alarm1)
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entityalarm1is
Port(reset:
instd_logic;
Min:
instd_logic_vector(7downto0);
Alarm:
outstd_logic); ――输出的报时信号
End;
Architectureaofalarm1is
Begin
Alarm<='1'whenmin="00000000"andreset='1'else ――当分为0且清0
'0'; -----信号无效时,输出高电平并持续至分不为0
end;
4系统设计
将上述5个程序作为底层文件,存放在同一个文件夹中,然后按下面的图将这几个文件连接起来,并用元件例化语句编写顶层文件的程序,如下:
图2元件连接顺序
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_arith.all;
Useieee.std_logic_unsigned.all;
Entitytopclockis
Port(clk,reset,set:
instd_logic;
S1,m1,h1:
instd_logic_vector(7downto0);
D1:
instd_logic_vector(2downto0);
Alarm:
outstd_logic;
Sec,min,hour:
bufferstd_logic_vector(7downto0);
Day:
outstd_logic_vector(2downto0));
End;
Architectureoneoftopclockis
Componentsecond1 ――秒元件的例化
Port(clk,reset,set:
instd_logic;
S1:
instd_logic_vector(7downto0);
Sec:
bufferstd_logic_vector(7downto0);
Ensec:
outstd_logic);
EndComponent;
Componentminute1 ――分元件的例化
Port(clkm,reset,set:
instd_logic;
m1:
instd_logic_vector(7downto0);
min:
bufferstd_logic_vector(7downto0);
Enmin:
outstd_logic);
EndComponent;
Componenthour1 ――时元件的例化
Port(clkh,reset,set:
instd_logic;
h1:
instd_logic_vector(7downto0);
hour:
bufferstd_logic_vector(7