eda课程设计多功能数字钟.docx
- 文档编号:24738609
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:17
- 大小:21.96KB
eda课程设计多功能数字钟.docx
《eda课程设计多功能数字钟.docx》由会员分享,可在线阅读,更多相关《eda课程设计多功能数字钟.docx(17页珍藏版)》请在冰豆网上搜索。
eda课程设计多功能数字钟
封面
作者:
PanHongliang
仅供个人学习
河南科技大学
课程设计说明书
课程名称EDA课程设计
题目多功能数字钟
学院___电信学院______
班级___***071班_____
学生姓名___***______
指导教师王勇
日期2010年9月22日
课程设计任务书
课程设计名称电子设计自动化课程设计学生姓名***专业班级电信科071
设计题目多功能数字钟设计
一、课程设计目的
1、综合运用EDA技术,独立完成一个课题的设计,考察运用所学知识,解决实际问题的能力;
2、结合理论知识,考察阅读参考资料、文献、手册的能力;
3、进一步熟悉EDA技术的开发流程,掌握文件编辑、编译、仿真、下载验证等环节的实现方法和应用技巧;
4、锻炼撰写研究报告、研究论文的能力;
5、通过本实践环节,培养科学和严谨的工作作风。
二、设计内容、技术条件和要求
l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。
2、能利用实验系统上的按钮实现“校时”、“校分”功能;
(1)按下“SA”键时,计时器迅速递增,并按24小时循环;
(2)按下“SB”键时,计时器迅速递增,并按59分钟循环,并向“时”进位;
(3)按下“SC”键时,秒清零;抖动的,必须对其消抖处理。
3、能利用扬声器做整点报时:
(1)当计时到达59’50”时开始报时,频率可为500Hz;
计满23小时后回零;计满59分钟后回零。
(2)到达59’59”时为最后一声整点报时,整点报时的频率可定为lKHz。
4定时闹钟功能
5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。
6、报时功能。
报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确。
三、时间进度安排
1周:
(1)完成设计准备,确定实施方案;
(2)完成电路文件的输入和编译;(4)完成功能仿真。
2周:
(1)完成文件至器件的下载,并进行硬件验证;
(2)撰写设计说明书。
四、主要参考文献
(1)谭会生、瞿遂春,《EDA技术综合应用实例与分析》,西安电子科技大学出版社,2004
(2)曹昕燕、周凤臣等,《EDA技术实验与课程设计》,清华大学出版社,2006
指导教师签字:
2010年9月5日
引言:
人类社会已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教案和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
实验原理:
用层次化设计的方法以VHDL语言编程实现以下功能:
【1】具有“时”、“分”、“秒”计时功能;时为24进制,分和秒都为60进制。
【2】具有消抖功能:
手工按下键盘到是否这个过程大概50ms左右,在按下开始到弹簧片稳,定接触这段时间为5-10ms,从释放到弹片完全分开也是5-10ms,在达到稳定接触和完全分开的微观过程中,电平是时高时低的,因此如果在首次检测到键盘按下时延时10ms再检测就不会检测到抖动的毛刺电平了。
64Hz的信号周期为15.6ms,正适合做消抖信号。
【3】具有校时和清零功能,能够用4Hz脉冲对“小时”和“分”进行调整,并可进行秒清零;
【4】具有整点报时功能。
在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。
【5】具有一键设定闹铃及正常计时与闹铃时间的显示转换。
闹时时间为一分钟。
程序流程:
秒计数器模块设计:
模块图如图1。
六十进制带进位计数器,可清零,clk输入信号为1Hz脉冲,当q0计满9后q1增加1,当q0满9且q1记满5,q1、q0同时归零,co输出为高电平。
q1为十位q0为个位。
图1
程序如下:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
useieee.std_logic_arith.all。
entitysecondIS
port(clk,clr:
instd_logic。
co:
outstd_logic。
cq0:
outstd_logic_vector(3downto0)。
cq1:
outstd_logic_vector(3downto0))。
ENDsecond。
ARCHITECTUREbehaveofsecondis
SIGNALd:
std_logic_vector(3downto0)。
SIGNALg:
std_logic_vector(3downto0)。
BEGIN
process(clk,clr,d,g)
BEGIN
if(clr='1')then
d<="0000"。
g<="0000"。
elsif(clk'EVENTandclk='1')then
if(d=9andg=5)then
co<='1'。
else
co<='0'。
endif。
if(d=9)then
d<="0000"。
if(g=5)then
g<="0000"。
else
g<=g+1。
endif。
else
d<=d+1。
endif。
endif。
endprocess。
cq0<=d。
cq1<=g。
endbehave。
仿真结果如下图2:
图2
分计数器同上。
注:
不同之处为分的clk输入信号为秒的进位信号。
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
useieee.std_logic_arith.all。
entityminuteIS
port(clk,clr:
instd_logic。
co:
outstd_logic。
cq0:
outstd_logic_vector(3downto0)。
cq1:
outstd_logic_vector(3downto0))。
ENDminute。
ARCHITECTUREbehaveofminuteis
SIGNALd:
std_logic_vector(3downto0)。
SIGNALg:
std_logic_vector(3downto0)。
BEGIN
process(clk,clr,d,g)
BEGIN
if(clr='1')then
d<="0000"。
g<="0000"。
elsif(clk'EVENTandclk='1')then
if(d=9andg=5)then
co<='1'。
else
co<='0'。
endif。
if(d=9)then
d<="0000"。
if(g=5)then
g<="0000"。
else
g<=g+1。
endif。
else
d<=d+1。
endif。
endif。
endprocess。
cq0<=d。
cq1<=g。
endbehave。
时计数器:
模块图如图3。
24进制无进位计数器,当计数信号计到23后再检测到计数信号时会自动归零。
带清零,clk输入为分秒进位相与的结果。
q1为十位,q0为个位。
图3
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entityhourIS
port(clk3,rst3,m:
instd_logic。
cq4:
outstd_logic_vector(3downto0)。
cq5:
outstd_logic_vector(3downto0))。
ENDhour。
ARCHITECTUREbehaveofhouris
SIGNALd:
std_logic_vector(3downto0)。
SIGNALg:
std_logic_vector(3downto0)。
BEGIN
process(clk3,rst3,m,d,g)
BEGIN
if(rst3='1')then
d<="0000"。
g<="0000"。
elsif(clk3'EVENTandclk3='1')then
if(m='0')then
if(d=9or(d=1andg=1))then
d<="0000"。
if(g=1)then
g<="0000"。
else
g<=g+1。
endif。
else
d<=d+1。
endif。
else
if(d=9or(d=3andg=2))then
d<="0000"。
if(g=2)then
g<="0000"。
else
g<=g+1。
endif。
else
d<=d+1。
endif。
endif。
endif。
endprocess。
cq4<=d。
cq5<=g。
endbehave。
当m=0时,实现模12计数,当m=1时实现模24计数,cout2作为clk3时钟信号,rst3是复位信号,cq4,cq5输出信号最后接在动态译管码芯片上。
得出实验要求的小时计时器:
仿真波形如下图4:
图4
分频器:
模块图如图5。
由四个分频器构成,输入信号in_clk为1024Hz脉冲信号。
把输入的1024Hz信号分频为四个脉冲信号,即1Hz的秒脉冲,4Hz的校时、校分脉冲,64Hz的消抖脉冲,以及512Hz的蜂鸣器低音输入。
图5
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entitydivis
port(in_clk:
instd_logic。
clk_1,clk_4,clk_64,clk_512:
outstd_logic)。
enddiv。
architectureoneofdivis
signalq512,a,b,c:
std_logic。
signalc1,c4,c64:
integerrange512downto0。
begin
process(in_clk)
begin
ifin_clk'eventandin_clk='1'then
q512<=notq512。
ifc64>=7thenc64<=0。
c<=notc。
elsec64<=c64+1。
endif。
ifc4>=127thenc4<=0。
b<=notb。
elsec4<=c4+1。
endif。
ifc1>=511thenc1<=0。
a<=nota。
elsec1<=c1+1。
endif。
endif。
endprocess。
clk_512<=q512。
clk_1<=a。
clk_4<=b。
clk_64<=c。
endone。
仿真波形如下图6:
图6
消抖:
模块图如图7。
分频出的用64Hz信号对sa校时信号、sb校分信号、sc秒清零信号、sd闹时设置信号进行防抖动处理。
是由四个两级d触发器构成的,分别对输入的sa、sb、sc、sd信号的相邻两个上升沿进行比较以确定按键的按下,从而达到消抖的目的。
图7
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entityxdis
port(clk_64,sa,sb,sc,sd:
instd_logic。
hj,mj,sclr,sdo:
outstd_logic)。
endxd。
architectureoneofxdis
begin
process(clk_64)
variablesa_n,sa_p,sb_n,sd_n,sb_p,sc_n,sc_p,sd_p:
std_logic。
begin
ifclk_64'eventandclk_64='1'then
sa_p:
=sa_n。
sa_n:
=sa。
sb_p:
=sb_n。
sb_n:
=sb。
sc_p:
=sc_n。
sc_n:
=sc。
sd_p:
=sd_n。
sd_n:
=sd。
ifsa_p=sa_nthenhj<=sa。
endif。
ifsb_p=sb_nthenmj<=sb。
endif。
ifsc_p=sc_nthensclr<=sc。
endif。
ifsd_p=sd_nthensdo<=sd。
endif。
endif。
endprocess。
endone。
仿真波形如下图8:
图8
闹钟时间的设定:
模块图如图9。
一键设定闹铃时间,内部由四个d触发器构成。
当确定sd键按下时,将当前时间的小时和分的个位十位分别存入四个d触发器内,作为闹时时间。
图9
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entitynzis
port(sd,hh,hl,mh,ml:
instd_logic。
hh_o,hl_o,mh_o,ml_o:
outstd_logic)。
endnz。
architectureoneofnzis
begin
process(sd,hh,hl,mh,ml)
begin
ifsd='1'then
hh_o<=hh。
hl_o<=hl。
mh_o<=mh。
ml_o<=ml。
endif。
endprocess。
endone。
仿真波形如下图10:
图10
二选一电路
一位二选一:
模块图如图11。
用以进行正常计时和校时/分的选择。
alarm为经过消抖的校时/分信号。
当按键未曾按下时,即校时/分信号没有到来时,二选一选择器会选择输出a(正常计时输入)信号,否则当alarm按键按下时输出y为校时/分输入信号——4Hz。
图11
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entityx21is
port(alarm,a,b:
instd_logic。
y:
outstd_logic)。
endx21。
architectureoneofx21is
begin
process(alarm,a,b)
begin
ifalarm='0'theny<=a。
elsey<=b。
endif。
endprocess。
endone。
仿真波形如下图12:
图12
三位二选一:
模块图如图13。
用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。
当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。
图13
architectureoneofx213is
begin
process(alarm,a,b)
begin
ifalarm='0'theny<=a。
elsey<=b。
endif。
endprocess。
endone。
仿真结果如下图14:
图14
整点报时及闹时:
模块图如图15。
在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。
当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。
闹时时间为一分钟。
图15
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
USEIEEE.STD_LOGIC_ARITH.ALL。
entityvoiceis
port(min1,min0,sec1,sec0,hh,hl,mh,ml,hou0,hou1:
instd_logic_vector(3downto0)。
in_500,in_1000:
instd_logic。
q:
outstd_logic)。
endvoice。
architectureoneofvoiceis
begin
process(min1,min0,sec1,sec0)
begin
--整点报时部分
ifmin1="0101"andmin0="1001"andsec1="0101"then
ifsec0="0001"orsec0="0011"orsec0="0101"orsec0="0111"thenq<=in_500。
elsifsec1="0101"andsec0="1001"thenq<=in_1000。
elseq<='0'。
endif。
elseq<='0'。
endif。
--闹时部分
ifmin1=mhandmin0=mlandhou1=hhandhou0=hlthenq<=in_1000。
endif。
endprocess。
endone。
仿真波形如下图16:
图16
顶层原理图见附图。
感想
通过这次设计,既复习了以前所学的知识,也进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。
特别是当每一个子模块编写调试成功时,心里特别的开心。
但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的VHD文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。
在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:
在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。
后来,在数十次的调试和老师的指点之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。
还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。
真是细节决定成败啊!
总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
参考资料:
1、潘松,王国栋,VHDL实用教程〔M〕.成都:
电子科技大学出版社,2000.
(1)
2、崔建明主编,电工电子EDA仿真技术北京:
高等教育出版社,2004
3、李衍编著,EDA技术入门与提高王行西安:
西安电子科技大学出版社,2005
4、侯继红,李向东主编,EDA实用技术教程北京:
中国电力出版社,2004
5、沈明山编著,EDA技术及可编程器件应用实训北京:
科学出版社,2004
6、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安:
西安电子科技大学出版社,1997
7、辛春艳编著,VHDL硬件描述语言北京:
国防工业出版社,2002
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproductionorquotationofthecontentofthisarticlemustbereasonableandgood-faithcitationfortheuseofnewsorinformativepublicfreeinformation.Itshallnotmisinterpretormodifytheoriginalintentionofthecontentofthisartic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 课程设计 多功能 数字