数字钟verilog

发布时间 : 星期四 文章数字钟verilog更新完毕开始阅读

多功能数字钟verilog HDL设计

由图中可以看出,当使能端信号端EN变为1的时候,计数器开始计时,minute_data0计数规律为0—1—2—3—4—5—6—7—8—9—0—1···当计数到9的时候,minute_data1加1,minute_data1计数规则为0—1—2—3—4—5—0—1···当高位minute_data1计数到5的时候,进位信号EO变为1。秒计数器second_counter模块与分计数器完全一样,这里不再赘述。 3.2 分频部分

分频器的功能主要有三个:一是产生计时用的标准秒脉冲1HZ信号;二是提供仿电台用的1kHZ高音频信号和500HZ低音频信号;三是闹钟设置时用的200HZ闪烁信号和闹钟响铃用的500HZ音频信号。所用输入信号为1kHZ的高频信号。根据分析可知,1kHZ方波信号经过2分频可以得到500HZ方波,经过5分频得到200HZ信号,最后将分频得到的200HZ信号作为分频1HZ的时钟,经过200分频得到1HZ的信号。设计框图如下图5所示。

图5 分频信号框图

2分频 5分频 1kHZ信号(clk) 500HZ(f500hz) 200HZ(f200hz) 200分频 1HZ(f1hz) 在程序设计的过程中,在复位信号rst为高电平时分频器工作,输入信号为1kHZ的高频信号,分别经过2分频、5分频、200分频得到f500HZ的500HZ信号、f200HZ的200HZ信号和f1HZ的1HZ信号。仿真结果如下图6所示。

图6 分频信号结果仿真图

4

多功能数字钟verilog HDL设计

从仿真图中可以看到,在rst为高电平时分频过程开始,f500HZ、f200HZ和f1HZ也与预期的输出结果一样。 3.3 秒表模块

秒表模块实现秒表功能,在实现的过程中,通过改变自动工作模式下的时钟频率来实现秒表的功能。即按动start键闹钟开始工作,再次按动start键,闹钟便停止工作。由于秒表模块比较简单,流程图在此省略。

根据分析,在verilog HDL实现过程中,clk作为时钟正常工作时候的频率,f500hz为秒表工作时候的频率,仿真结果如下图7所示。

图7 秒表仿真模块

由图中可以看出,根据start高低电平的变化,时钟在正常工作与秒表之

间相互转换。 3.4 闹钟模块

闹钟模块实现的是闹钟的设置及闹钟所设定的时间到之后的响铃提示。闹钟模块的设置主要思想是由控制键来设置数字钟的闹钟响的时间,经过与当前数字钟实时时间的比较,来决定闹钟提醒的时间。设计框图如下图8所示。

hour1 0 闹钟不响 alarm=0 不相等 设置时间与当前时间的比较 相等 con_alarm 1 闹钟响 alarm=1 hour0 minute0 minute1 hour_set0 hour_set1 minute_set0 minute_set1 图8 闹钟模块设计框图

5

多功能数字钟verilog HDL设计

在verilog HDL实现的过程中,由SW1、SW2两个调整键来实现,其中SW1为移位控制键,即按SW1一次,将移位一次,闪烁显示当前设置为数字,SW2为当前位的闹钟数字设置,每按SW2一次,当前数字设置位数字增加1,每一位上数字变化范围由当前位循环上限决定,不会超出范围。EN为设置使能端,为1有效。Hour1、hour0、minute1和minute0分别为当前时间每个位上显示的数字,hour_set1、hour_set0、minute_set1和minute_set0为与当前时间所对应的每一位上设置的时间显示,f200hz为闹钟设置过程中显示闪烁的频率。Con_alarm为闹钟响铃的控制键,其值为1时,表示闹钟已设置,并且在闹钟响的时候,如果设置其值为0,则闹钟关闭。Alarm为闹钟响铃提示输出,即设定时间到时alarm值为1,否则为0。Alarmclock_disp_select为闹钟设置中位选信号,为4位reg型变量,其值采用独热编码,为1000、0100、0010和0001分别表示设置过程中hour1、hour0、minute1和minute0四个位。其仿真结果如下图9所示。

图9 闹钟模块仿真示意图

由于设置波形输入的时候如果调整过多,将不容易看出仿真结果的正确与否,所以图中输入比较简单,以便可以更好地分析仿真结果。由图中可以看出,经过SW1的两次调整,位选信号alarmclock_disp_select的值为0010,表示此时的设置位为hour_set0位,SW2键将其值设置为0001,其他位均为0000,然后在与当前时钟时间相等的情况下,并且在con_alarm值为1的时候闹钟响,即alarm值输出为1,在当前时间与闹钟时间仍然相等的情况下,将闹钟控制

6

多功能数字钟verilog HDL设计

键con_alarm值设置为0,闹钟停止,即alarm值为0。很好的完成了闹钟的功能。

3.5 时间设置模块

时间设置模块实现的功能为通过按键调节可以对当前时间进行手动控制。其主要是在时间设置使能端有效地情况下通过SW1和SW2两个按键对数字钟的小时和分钟数进行调节。Disp_drive为设置中的显示控制,即通过SW1对位的调整,Disp_drive随之变化。SW2为对每一位上的数字在其范围内进行加1调节,其调节过程与闹钟模块相同。Disp_drive取值000、001、010和011分别对应hour1、hour0、minute1和minute0的设置。Quartus下仿真结果如图10所示。

图10 时间设置模块仿真效果

图中,hour_set0、hour_set1、minute_set0和minute_set1为设置后的时间。可以看到,当前给的hour0为0010,hour1的值0001,在SW1经过一次高电平之后,disp_drive的值变为001,对hour0进行设置,加1之后hour_set0变为0001,SW1再按一下,变为0010,在SW2两次高电平之后,SW1的值变为1,此时对分的高位进行加1设置,依此类推。 3.6 报时模块

整点报时模块的主要功能为仿中央人民广播电台整点报时信号,即从59分50秒起每隔2秒发出一次低音“嘟”信号,将其定义为500HZ的低频信号,到达整点(00分00秒时),发一次高音“哒”信号,其响声为高频1kHZ信号。 由于整点报时程序比较简单,所以框图省略。为了程序简化又与其他模块有较好的兼容性,用minute、second分别表示minute1、minute0和second1,

7

联系合同范文客服:xxxxx#qq.com(#替换为@)