您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > EDA课程设计——多功能数字钟
1哈尔滨工业大学(威海)电子学课程设计报告带有整点报时的数字钟设计与制作姓名:蒋栋栋班级:0802503学号:080250331指导教师:井岩2目录一、课程设计的性质、目的和任务………………………………3二、课程设计基本要求……………………………………………3三、设计课题要求…………………………………………………3四、课程设计所需要仪器…………………………………………4五、设计步骤………………………………………………………41、整体设计框图…………………………………………………42、各个模块的设计与仿真………………………………………42.1分频模块……………………………………………………………42.2计数器模块…………………………………………………………62.3控制模块…………………………………………………………102.4数码管分配………………………………………………………132.5显示模块…………………………………………………………142.6报时模块…………………………………………………………16六、调试中遇到的问题及解决的方法……………………………18七、心得体会………………………………………………………183一、课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。二、课程设计基本要求掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。三、设计课题要求(1)构造一个24小时制的数字钟。要求能显示时、分、秒。(2)要求时、分、秒能各自独立的进行调整。(3)能利用喇叭作整点报时。从59分50秒时开始报时,每隔一秒报时一秒,到达00分00秒时,整点报时。整点报时声的频率应与其它的报时声频有明显区别。#设计提示(仅供参考):(1)对频率输入的考虑数字钟内所需的时钟频率有:基准时钟应为周期一秒的标准信号。报时频率可选用1KHz和2KHz左右(两种频率相差八度音,即频率相差一倍)。另外,为防止按键反跳、抖动,微动开关输入应采用寄存器输入形式,其时钟应为几十赫兹。(2)计时部分计数器设计的考虑分、秒计数器均为模60计数器。小时计数为模24计数器,同理可建一个24进制计数器的模块。(3)校时设计的考虑数字钟校准有3个控制键:时校准、分校准和秒校准。微动开关不工作,计数器正常工作。按下微动开关后,计数器以8Hz频率连续计数(若只按一下,则计数器增加一位),可调用元件库中的逻辑门建一个控制按键的模块,即建立开关去抖动电路(见书70页)。(4)报时设计的考虑4可以将高频时钟分频得到约2KHz和1KHz的音频,作为数字钟的报时频率。当电子钟显示XX:59:50时,数字钟开始报时“DO,持续一秒,而且每隔一秒报一下,直至显示XX:00:00时报“DI,持续一秒后停止。最后输出至喇叭。应调用元件库中的逻辑门建一个控制报时的模块。(5)建一个七段译码的模块因在系统可编程器件实验箱上的数码管没有经过译码,故要用AHDL语言写一个七段译码的模块,且应考虑数码管为共阳极。数码管上的点(D2、D4、D6)应置Vcc。四、课程设计所需要仪器1、计算机一台2、quartusⅡ软件3、FPGA开发板五、设计步骤1、模块介绍(1)分频模块:产生1Hz、1KHz、2KHz频率(2)计数器模块:生成60进制、24进制计数器(3)控制模块:按键控制、按键消抖(4)显示模块:7段数码管显示器,分别显示小时、分钟、秒(5)报时模块:进行整点报时2、各个模块的设计与仿真2.1分频模块CLK晶振频率50MHZ,分成2KHZ,1KHZ,1HZ的信号。基准1HZ信号作为时钟计时的秒计数时钟信号;分频的1KHZ,2KHZ信号用于报时电路的不同声讯。程序代码:libraryieee;useieee.std_logic_1164.all;entityfreisport(clk,sel:instd_logic;clk1hz,clk1khz,clk2khz:outstd_logic);endfre;architecturebehoffreissignaldata1khz,data2khz,data1hz:std_logic:='0';beginclk1hz=data1hz;clk1khz=data1khz;5clk2khz=data2khz;clk1khz_pro:process(clk)--产生1khz信号variablecnt:integerrange0to24999;beginifclk'eventandclk='1'thenifcnt=24999thencnt:=0;data1khz=notdata1khz;elsecnt:=cnt+1;endif;endif;endprocessclk1khz_pro;clk2khz_pro:process(clk)--产生2khz信号variablecnt:integerrange0to12499;beginifclk'eventandclk='1'thenifcnt=12499thencnt:=0;data2khz=notdata2khz;elsecnt:=cnt+1;endif;endif;endprocessclk2khz_pro;clk1hz_pro:process(data1khz)--产生1hz信号variablecnt:integerrange0to499;beginifdata1khz'eventanddata1khz='1'thenifsel='0'thencnt:=0;elseifcnt=499thencnt:=0;data1hz=notdata1hz;elsecnt:=cnt+1;endif;endif;endif;endprocessclk1hz_pro;endbeh;输入模块电路图:6freinstclkclkselselclk1hzclk1hzclk1khzclk1khzclk2khzclk2khz2.2计数器模块由秒计数器,分计数器,时计数器组成了最基本的数字钟计时电路,两个六十进制计数器与二十四进制计数器组合构成。程序代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useIEEE.STD_LOGIC_ARITH.ALL;entityshuzizhongisport(clk_change:instd_logic;s_en,m_en,h_en:instd_logic;sel:instd_logic;secout,minout,hourout:outstd_logic;sl,sh,ml,mh,hl,hh:outstd_logic_vector(3downto0);a:outstd_logic_vector(15downto0));endshuzizhong;architecturebehavofshuzizhongissignallow_rega,high_rega,low_regb,high_regb,low_regc,high_regc:std_logic_vector(3downto0):=0000;signalsout,mout,hout:std_logic:='0';begin--秒的60进制进制counter_sec_l:process(clk_change,s_en)beginsl=low_rega;sh=high_rega;ml=low_regb;mh=high_regb;hl=low_regc;hh=high_regc;7ifclk_change'eventandclk_change='1'thenifs_en='1'theniflow_rega=1001thenlow_rega=0000;elselow_rega=low_rega+'1';endif;endif;endif;endprocesscounter_sec_l;counter_sec_h:process(clk_change,s_en,low_rega)beginifclk_change'eventandclk_change='1'thenifs_en='1'theniflow_rega=1001thenifhigh_rega=0101thenhigh_rega=0000;elsehigh_rega=high_rega+'1';endif;endif;endif;endif;endprocesscounter_sec_h;sout='1'whenlow_rega=1001andhigh_rega=0101else'0';----分钟的60进制设置counter_min_l:process(clk_change,m_en)beginifclk_change'eventandclk_change='1'thenifm_en='1'thenifsout='1'orsel='0'theniflow_regb=1001thenlow_regb=0000;elselow_regb=low_regb+'1';endif;endif;endif;endif;endprocesscounter_min_l;counter_min_h:process(clk_change,m_en,low_regb)beginifclk_change'eventandclk_change='1'then8ifsout='1'orsel='0'thenifm_en='1'theniflow_regb=1001thenifhigh_regb=0101thenhigh_regb=0000;elsehigh_regb=high_regb+'1';endif;endif;endif;endif;endif;endprocesscounter_min_h;mout='1'whenlow_regb=1001andhigh_regb=0101andsout='1'else'0';--小时的24进制设置counter_hour_l:process(clk_change,h_en)beginifclk_change'eventandclk_change='1'thenifh_en='1'thenifmout='1'orsel='0'theniflow_regc=1001orhout='1'thenlow_regc=0000;elselow_regc=low_regc+'1';endif;endif;endif;endif;endprocesscounter_hour_l;counter_hour_h:process(clk_change,h_en,hout)beginifclk_change'eventandclk_change='1'thenifmout='1'orsel='0'thenifh_en='1'thenifhout='1'thenhigh_regc=0000;elseiflow_regc=1001thenhigh_regc=high_regc+'1';endif;endif;endif;9endif;endif;endprocesscounter_hour_h;hout='1'whenlow_regc=0011andhigh_regc=0010else'0';secout=sout;minout=mout;hourout=hout;a=high_regb&low_regb&high_rega&low_rega;endbehav;输入模块电路图:shuziz
本文标题:EDA课程设计——多功能数字钟
链接地址:https://www.777doc.com/doc-6372412 .html