....理工大学本科实验报告题目:多功能数字时钟设计课程名称:数字电路与系统课程设计学院(系):信息与通信工程学院专业:电子信息工程班级:学生:学号:完成日期:2014年7月16日....2014年7月16日题目:多功能数字时钟设计1设计要求1)具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;2)具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);3)具有整点报时功能,从00分00秒起,亮灯十秒钟;4)具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;5)具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;6)具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。2设计分析及系统方案设计2.1模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。2.2数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。2.3多功能数字钟的秒表功能部分:计时围从00分00.00秒至59分59.99秒。可由复位键0异步清零,并由开关1控制计时开始与停止。将DE2硬件中的50MHZ晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示2.4多功能数字钟的闹钟功能部分:进入闹钟功能模式后,通过按键2(设定小时)和按键1(设定分钟)设定闹钟时间,当按下按键一秒未松手时,可进行快速设定时间。当时钟进入闹钟设定的时间(判断时钟的时信号时针,分针分别与闹钟设定的时信号时针、分针是否相等),则以LED灯连续亮10秒钟进行提示,并由开关0控制闹钟的开和关。2.5多功能数字钟的倒计时功能部分:可通过按键3(设定分针)和按键2(设定秒针)....设定倒计时开始,当按下按键一秒未松手时,可进行快速设定时间。当没有手动时间设定时,系统默认为60秒倒计时。倒计时的时钟与数字钟的时钟相同,每迎到一个1s时钟上升沿,则计数器减一。计数器减至00时,分钟位、秒钟位保持为00。倒计时结束时(即00分00秒),倒计时信号灯亮10秒钟进行提示,并由开关2控制倒计时的开始于停止。本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。当mode=“000”时,时钟功能,则对时钟信号进行译码,数码管显示时钟数据;当mode=“001”时,时间校准功能,则对时钟信号进行译码,数码管显示闹钟数据;当mode=“”时,闹钟功能,则对闹钟信号进行译码,数码管显示闹钟信号数据;当mode=“011”时,秒表功能,则对秒表信号进行译码,数码管显示秒表信号数据。当mode=“100”时,则倒计时功能,对倒计时钟信号进行译码,数码管显示倒计时信号数据。系统总体结构框图如下所示:3系统以及模块硬件电路设计3.1分频电路参数计算:666150100010001501015010001000.150101501000100.015010TsTsTs分频模块分频(周期1s)分频(周期0.1s)分频(周期0.01s)时钟计数器报时LED提醒闹钟秒表计数器倒计时计数器数据选择器译码器数码管显示LED提醒....3.2系统硬件电路设计系统硬件模拟图:....3.3系统与引脚分配接口名称类型(输入/输出)引脚号说明clkINPIN_N2晶振50MHz时钟输入selectmodeINPIN_W26模式选择按键rstINPIN_G26复位按键addINPIN_P23高位设置键decINPIN_N23地位设置键startnzINPIN_N25闹钟开关startmbINPIN_N26秒表开关startdjsINPIN_P25倒计时开关lednzOUTPIN_AE23闹钟提示灯leddjsOUTPIN_AE22倒计时提示灯ledbsOUTPIN_Y18整点报时提示灯qss[6]OUTPIN_N9时针高位数码管显示qss[5]OUTPIN_P9qss[4]OUTPIN_L7qss[3]OUTPIN_L6qss[2]OUTPIN_L9qss[1]OUTPIN_L2qss[0]OUTPIN_L3qsg[6]OUTPIN_M4时针低位数码管显示qsg[5]OUTPIN_M550MHZKEY[0]KEY[1]KEY[2]KEY[3]Sw[0]Sw[1]Sw[0]LED[djs]LED[nz]分别与数码管相连Sw[2]LED[bs]....qsg[4]OUTPIN_M3qsg[3]OUTPIN_M2qsg[2]OUTPIN_P3qsg[1]OUTPIN_P4qsg[0]OUTPIN_R2qms[6]OUTPIN_W24秒针高位数码管显示qms[5]OUTPIN_U22qms[4]OUTPIN_Y25qms[3]OUTPIN_Y26qms[2]OUTPIN_AA26qms[1]OUTPIN_AA25qms[0]OUTPIN_Y23qmg[6]OUTPIN_Y24秒针低位数码管显示qmg[5]OUTPIN_AB25qmg[4]OUTPIN_AB26qmg[3]OUTPIN_AC26qmg[2]OUTPIN_AC25qmg[1]OUTPIN_V22qmg[0]OUTPIN_AB23qgs[6]OUTPIN_AB24模式显示高位(默认全灭)qgs[5]OUTPIN_AA23qgs[4]OUTPIN_AA24qgs[3]OUTPIN_Y22qgs[2]OUTPIN_W21qgs[1]OUTPIN_V21qgs[0]OUTPIN_V20模式显示低位qgg[6]OUTPIN_V13qgg[5]OUTPIN_V14qgg[4]OUTPIN_AE11qgg[3]OUTPIN_AD11qgg[2]OUTPIN_AC12qgg[1]OUTPIN_AB12qgg[0]OUTPIN_AF10qfs[6]OUTPIN_R3分针高位数码管显示qfs[5]OUTPIN_R4qfs[4]OUTPIN_R5qfs[3]OUTPIN_T9qfs[2]OUTPIN_P7qfs[1]OUTPIN_P6qfs[0]OUTPIN_T2qfg[6]OUTPIN_T3分针低位数码管显示qfg[5]OUTPIN_R6qfg[4]OUTPIN_R7....qfg[3]OUTPIN_T4qfg[2]OUTPIN_U2qfg[1]OUTPIN_U1qfg[0]OUTPIN_U94系统的VHDL设计4.1顶层设计libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityliyabinis--实体声明,及系统输入与输出port(clk,rst,add,dec,selectmode,startmb,startnz,startdjs:instd_logic;qgs,qgg,qss,qsg,qfs,qfg,qms,qmg:bufferstd_logic_vector(6downto0);ledbs,lednz,leddjs:outstd_logic);end;architecturedataofliyabiniscomponentmode--模式循环模块元件例化port(selectmode:instd_logic;mode:bufferstd_logic_vector(2downto0));endcomponent;componentgnxz--功能选择模块元件例化port(zt:instd_logic_vector(2downto0);sz1,sz2,sz3,sz4,sz5,sz6:instd_logic_vector(3downto0);--时钟显示信号mb1,mb2,mb3,mb4,mb5,mb6:instd_logic_vector(3downto0);--秒表显示信号nz3,nz4,nz5,nz6:instd_logic_vector(3downto0);--闹钟显示信号djs1,djs2,djs3,djs4,djs5,djs6:instd_logic_vector(3downto0);--倒计时显示信号s1,s2,s3,s4,s5,s6,s7,s8:outstd_logic_vector(3downto0)--输出,送入显示模块用数码管进行显示);endcomponent;componentfp--分频模块元件例化port(clk,rst:instd_logic;clk10ms,clk100ms,clk1s:outstd_logic);endcomponent;componentsz--时钟模块元件例化....port(zt:instd_logic_vector(2downto0);clk,clk100ms,rst,add,dec:instd_logic;sz1,sz2,sz3,sz4,sz5,sz6:bufferstd_logic_vector(3downto0);ledbs:outstd_logic);endcomponent;componentnz--闹钟模块元件例化port(startnz,add,dec,rst,clk,clk100ms:instd_logic;zt:instd_logic_vector(2downto0);sz2,sz3,sz4,sz5,sz6:instd_logic_vector(3downto0);--时钟显示信号nz3,nz4,nz5,nz6:bufferstd_logic_vector(3downto0);--闹钟显示信号]lednz:outstd_logic--闹钟提示灯输出);endcomponent;componentmb--秒表模块元件例化port(zt:instd_logic_vector(2downto0);clk,rst,startmb:instd_logic;mb1,mb2,mb3,mb4,mb5,mb6:bufferstd_logic_vector(3downto0));endcomponent;componentdjs--倒计时模块元件例化port(rst,startdjs,add,dec,clk,clk100ms:instd_logic;zt:instd_logic_vector(2downto0);djs1,djs2,djs3,djs4,djs5,djs6:bufferstd_logic_vector(3downto0);leddjs:outstd_logic);endcomponent;componentxs--显示模块元件例化port(xsin:instd_logic_vector(3downto0);--xsout:outstd_logic_vector(6downto0));endcomponent;signalclk10ms,clk100ms,clk1s,clk1m,clk1h:std_logic;--分频脉冲信号级进位脉冲信号signalsz1,sz2,sz