您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数字电路课程设计-基于DE2的数字钟设计报告
题目:数字钟1设计要求该数字钟具有如下六种功能:(1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)的计时器(具有清零功能和设置起始时间功能);(2)具有手动校时、校分、校秒的功能,利用DE2Key键,分别对每一个数码管进行校时(校正模式下,时钟处于停滞状态),校时之后的时间可以通过开关赋给24小时计数器模块和倒计时模块;(3)定时与闹钟功能,能在设定的时间发出闹铃声(用开发板上红色的LED灯全亮来表示),程序中实现闹铃30秒;(4)能进行零点报时,要求发出仿中央人民广播电台的整点报时信号,即从23时59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到零点(用开发板上的绿色LED灯亮来表示);(5)设计一个秒表,显示1%秒、60秒、手动停止,手动清零;(6)设计一个倒计时,显示小时、分钟、秒、%1秒,可清零,可设置起始时间。2设计分析及系统方案设计系统总共有5个状态,分别对应设计要求中的(1)24小时计数器(2)时钟校准(3)闹铃(4)倒计时(5)秒表程序开始利用50MHz的时钟分别构造1Hz的时钟和100Hz的时钟。先用50MHz时钟构造模500000计数器,用作分频产生100HZ信号,然后用100HZ信号构造模100计数器,用作分频产生1HZ信号,从而构造出周期是1秒和0.01秒的时钟。(1)时间显示此部分是用1HZ的时钟驱动秒的个位,然后通过进位关系分别带动其余5位时间,从而完成时间显示功能。当清零位置‘0’时,时间一直显示为0。(2)手动校时此部分通过三个DE2的KEY按键来实现。第一个是状态转换按键,通过它来将状态转换到校时状态;第二个是校准位置选择按键,通过它来选择此时校准哪一位;第三个是对所选位置进行加一的按键。设置好时间之后可以通过两个开关分别将设置好的时间送到正常显示模块和倒计时模块。(3)闹铃功能此部分通过和手动校时部分相同的操作过程来设置闹铃,系统提供一个可以打开和关闭闹铃的开关。闹铃部分的信号是一个单独的信号,对该信号的设置并不影响时钟的正常运行。当闹铃的小时、分钟和秒的信号分别和时钟的小时、分钟和秒的信号对应相等时,闹铃启动,进行30秒的闹铃提醒。(4)零点报时在正常显示24小时的状态中,当时间信号运行到23:59:50时,开始零点报时,程序中以驱动绿色LED灯亮来代表。(5)秒表功能此部分由100HZ的时钟驱动%1秒位,通过进位关系分别带动其余7位时间完成计时功能。秒表的信号是一个单独的信号,使用秒表并不影响时钟的正常运行。对秒表可以进行清零和暂停操作,通过两个开关来实现。(6)倒计时功能此部分就是24小时正常显示模块的逆过程。用100HZ的时钟驱动%1秒的个位,然后通过退位关系分别带动其余7位完成倒计时功能。倒计时的信号为独立的信号,使用倒计时并不影响时钟的正常运行。倒计时设有清零位,用开关控制。数字钟原理框图如下:3系统以及模块硬件电路设计(1)输入信号clk0:系统时钟(50MHZ)state:状态转换按键positionselect:位置选择按键jiayi:校准、设闹钟时对所选的位进行加一的按键queding:校时之后的确定开关queding1:设置倒计时之后再确定开关kainaozhong:闹钟开关控制qingling:秒表清零开关zanting:秒表暂停开关qingling1:正常显示的清零开关qingling2:倒计时的清零开关(2)输出信号输出到数码管显示:bighour:outstd_logic_vector(6downto0);--时针十位smallhour:outstd_logic_vector(6downto0);--时针个位bigminute:outstd_logic_vector(6downto0);--分针十位smallminute:outstd_logic_vector(6downto0);--分针个位bigsecond:outstd_logic_vector(6downto0);--秒针十位smallsecond:outstd_logic_vector(6downto0);--秒针个位bigpercentsecond:outstd_logic_vector(6downto0);--%1秒十位smallpercentsecond:outstd_logic_vector(6downto0);--%1秒个位lednaozhong:LED代表闹铃输出baoshi:零点报时指示灯1baoshi1:零点报时指示灯2开发系统模式以及管脚定义如下:4系统的VHDL设计-----------------------------------------------------------------------------定义库---------------------------------------------------libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;-----------------------------------------------------------------------------定义实体---------------------------------------------------entityhomeworkisport(-----------------------------------------------------------------输入信号-----------------------------------------------1/系统时钟clk0:instd_logic;--2/状态转换按键state:instd_logic;--3/校准时进行位置选择的按键positionselect:instd_logic;--4/校准、设闹钟时对所选的位进行加一的按键jiayi:instd_logic;--5/校时之后确定开关(赋给正常显示模块)queding:instd_logic;--6/设置倒计时之后再确定开关queding1:instd_logic;--7/闹钟开关控制kainaozhong:instd_logic;--8/秒表清零开关qingling:instd_logic;--9/秒表暂停开关zanting:instd_logic;--10/正常显示的清零开关qingling1:instd_logic;--11/倒计时的清零开关qingling2:instd_logic;----------------------------------------------------------------------------------------------------------输出信号---------------------------------------------------------------------------------------------------------------------------------------------------------------------------输出到数码管显示-----------------------------------------------------------------bighour:outstd_logic_vector(6downto0);--时针十位smallhour:outstd_logic_vector(6downto0);--时针个位bigminute:outstd_logic_vector(6downto0);--分针十位smallminute:outstd_logic_vector(6downto0);--分针个位bigsecond:outstd_logic_vector(6downto0);--秒针十位smallsecond:outstd_logic_vector(6downto0);--秒针个位bigpercentsecond:outstd_logic_vector(6downto0);--%1秒十位smallpercentsecond:outstd_logic_vector(6downto0);--%1秒个位-------------------------------------------------------------------LED代表闹铃输出lednaozhong:outstd_logic_vector(17downto0);--零点报时指示灯1baoshi:outstd_logic_vector(7downto0);--零点报时指示灯2baoshi1:outstd_logic);end;----------------------------------------------------------------------------------------------------------定义结构体-----------------------------------------------------------------------architectureshuzizhongofhomeworkis-------------产生100HZ信号时的计数器signalcnt0:integerrange0to499999;-------------产生1HZ信号时的计数器signalcnt1:integerrange0to99;-------------100HZ信号signalclk1:std_logic;-------------1HZ信号signalclk2:std_logic;-------------------------------------------------------------------------------送数码管显示的时针,分针,秒针,%1秒信号-----------------------------------------------------------------------signalbh:std_logic_vector(3downto0);--时针十位signalsh:std_logic_vector(3downto0);--时针个位signalbm:std_logic_vector(3downto0);--分针十位signalsm:std_logic_vector(3downto0);--分针个位signalbs:std_logic_vector(3downto0);--秒针十位signalss:std_logic_vector(3downto0);--秒针个位signalbps:std_logic_vector(3downto0);--%1秒十位signalsps:std_logic_vector(3downto0);--%1秒个位--------------------------------------------------------------------------------------------状态为000时的时钟信号(正常显示)-----------------------------------------------------------------------signalbh0:std_logic_vector(3downto0);--时针十位signalsh0:std_logic_vector(3downto0);--时针个位signalbm0:std_logic_vector(3downto0);--分针十位signalsm0:std_logic_vector(3downto0);--分针个位signa
本文标题:数字电路课程设计-基于DE2的数字钟设计报告
链接地址:https://www.777doc.com/doc-7192691 .html