数字钟verilog.docx

上传人:b****3 文档编号:2596958 上传时间:2022-11-03 格式:DOCX 页数:22 大小:171.15KB
下载 相关 举报
数字钟verilog.docx_第1页
第1页 / 共22页
数字钟verilog.docx_第2页
第2页 / 共22页
数字钟verilog.docx_第3页
第3页 / 共22页
数字钟verilog.docx_第4页
第4页 / 共22页
数字钟verilog.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数字钟verilog.docx

《数字钟verilog.docx》由会员分享,可在线阅读,更多相关《数字钟verilog.docx(22页珍藏版)》请在冰豆网上搜索。

数字钟verilog.docx

目录

1设计任务及要求 1

2总体设计分析 1

3各模块设计 2

3.1数字钟主体部分 2

3.1.1小时计数器 2

3.1.2分、秒计数器 3

3.2分频部分 4

3.3秒表模块 5

3.4闹钟模块 5

3.5时间设置模块 7

3.6报时模块 7

3.7控制显示模块 8

3.8顶层模块 11

4总结 11

4.1本次作业遇到的问题 11

4.2建议和总结 12

附件 13

多功能数字钟verilogHDL设计

1设计任务及要求

本次大作业的要求为设计一个多功能数字钟,其具体要求如下:

1.有基础的实时数字钟显示功能,即时、分、秒的正常显示模式,并且在此基础上增加上,下午显示。

2.手动校准。

按动方式键,将电路置于校时状态,则计时电路可用手动方式校准,每按一下校时键,时计数器加1;按动方式键,将电路置于校分状态,以同样方式手动校分。

3.整点报时,仿中央人民广播电台整点报时信号,从59分50秒起每隔2秒发出一次低音“嘟”信号(信号鸣叫持续时间1S,间隙时间1S)连续5次,到达整点(00分00秒时),发一次高音“哒”信号(信号持续时间1S)。

4.闹时功能,按动方式键,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时,校分方式进行预置,预置后回到正常模式。

当计时计至预置的时间时,扬声器发出闹铃信号,时间为半分钟,闹铃信号可以用开关“止闹”,按下此开关后,闹铃声立刻中止,正常情况下应将此开关释放,否则无闹时作用。

5.秒表功能。

按start键开始计秒,按stop键停止计秒并保持显示数不变,直到复位信号加入。

2总体设计分析

设计的总体部分按照要求可以分为基本的数字时钟显示、手动校准、整点报时、闹钟功能和秒表功能5大部分。

其总体设计框图如下:

秒表

闹钟

手动校准

整点报时

图1总体设计框图

其中整点报时跟闹钟部分要求不同频率的声响,所以需要加入分频器模块将输入的1kHZ的分频产生500HZ及1HZ的方波信号,其中1HZ的信号对应1S的周期,可以用作时钟秒的显示及秒表部分。

3各模块设计

根据总体设计以及各分模块的需要,将分立模块分为7个部分运用verilogHDL编程来实现。

其分别为数字钟主体部分、手动设置、分频、整点报时、闹钟功能、秒表、控制显示和顶层8个模块。

下面将对各个模块的设计思想做一详细的介绍。

3.1数字钟主体部分

小时计数器

分计数器

秒计数器

24进制计数器

60进制

计数器

6进制

计数器

10进制

计数器

<12(早上)

>12(下午)

数字钟主体部分主要由三个计数器组成,包括1个24进制计数器,作为小时计数器,2个60进制计数器分别作为分计数器和秒计数器。

一个60进制计数器由一个6进制计数器和一个10进制计数器组成,由于都是比较简单的计数器,所以在用verilog设计时作为一个整体部分进行编程实现。

同理小时计数器也作为整体部分来编程实现。

设计的流程框图如下图2所示。

图2数字钟整体部分设计框图

3.1.1小时计数器

在verilog程序设计中,小时计数器为hour_counter模块,其中hour_data0为24进制计数器的低位,即4进制计数器,hour_data1则为高位,2进制计数器。

编程用always语句实现,并且用clk上升沿触发实现计数。

EN为使能端,高电平有效。

zox为显示早上、下午的标志位,其中小于12点之前为早上,zox为0,否则zox输出为1表示下午。

其QuartusⅡ仿真波形如下图3所示,由于verilogHDL程序显示不便,均附在附件上,下面各模块相同。

图3小时计数器仿真

从仿真图中可以看出,当使能信号信号为高电平且始终上升沿到来时计数器开始计时,hour_data0计数为0—1—2—3—0···的计数规律,即4进制计数器,同理hour_data1为2进制计数器,zox信号由图中看出当小于12小时的时候输出为0,大于12小时时输出为1,与预计效果相同。

3.1.2分、秒计数器

由于分、秒计数器均为60进制计数器,所以以分计数器作为示例说明其编程思想。

其中分计数器模块在程序中为minute_counter程序段,由上面分析得分计数器由一个十进制计数器与一个六进制计数器组成,程序中有minute_data0表示分计数器低位即10进制计数器,minute_data1表示分计数器的高位为一个六进制计数器(秒计数器的低位、高位分别由second_data0、second_data1表示,其余均与分计数器相同)。

其它信号定义与小时计数器相同,clk为时钟信号,时钟周期为1HZ,即1s,与小时计数器不同的是,EO为进位信号,即到60s后自动进位。

Minute_data0、minute_data1、second_data0、second_data1位宽均为4位reg型变量。

仿真示意图如下图4所示。

图4分计数器仿真结果

由图中可以看出,当使能端信号端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所示。

2分频

5分频

1kHZ信号(clk)

500HZ(f500hz)

200HZ(f200hz)

1HZ(f1hz)

200分频

图5分频信号框图

在程序设计的过程中,在复位信号rst为高电平时分频器工作,输入信号为1kHZ的高频信号,分别经过2分频、5分频、200分频得到f500HZ的500HZ信号、f200HZ的200HZ信号和f1HZ的1HZ信号。

仿真结果如下图6所示。

图6分频信号结果仿真图

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

3.3秒表模块

秒表模块实现秒表功能,在实现的过程中,通过改变自动工作模式下的时钟频率来实现秒表的功能。

即按动start键闹钟开始工作,再次按动start键,闹钟便停止工作。

由于秒表模块比较简单,流程图在此省略。

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

图7秒表仿真模块

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

3.4闹钟模块

闹钟模块实现的是闹钟的设置及闹钟所设定的时间到之后的响铃提示。

闹钟模块的设置主要思想是由控制键来设置数字钟的闹钟响的时间,经过与当前数字钟实时时间的比较,来决定闹钟提醒的时间。

设计框图如下图8所示。

hour0

hour1

minute0

minute1

hour_set0

hour_set1

minute_set0

minute_set1

设置时间与当前时间的比较

不相等

相等

con_alarm

0

1

闹钟不响

alarm=0

闹钟响

alarm=1

图8闹钟模块设计框图

在verilogHDL实现的过程中,由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,在当前时间与闹钟时间仍然相等的情况下,将闹钟控制键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再按一下,变为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1