EDA课程设计 多功能数字钟设计报告 数字系统设计与verilog HDL_第1页
EDA课程设计 多功能数字钟设计报告 数字系统设计与verilog HDL_第2页
EDA课程设计 多功能数字钟设计报告 数字系统设计与verilog HDL_第3页
EDA课程设计 多功能数字钟设计报告 数字系统设计与verilog HDL_第4页
EDA课程设计 多功能数字钟设计报告 数字系统设计与verilog HDL_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——EDA课程设计多功能数字钟设计报告数字系统设计与verilogHDL(

EDA课程设计报告:

实用多功能数字钟

学院:

专业:

班级:

学号:姓名:指导老师:江伟

2023年12月25日

实用多功能数字钟

摘要

本EDA课程设计利用QuartusII软件VerilogVHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。

单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。

关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录

一.课程设计的目的及任务???????????????1

1.1课程设计的目的?????????????????11.2课程设计的任务与要求??????????????1

二.课程设计思路及其原理??????????????1三.QuartusII软件的应用??????????????2

3.1工程建立及存盘?????????????????23.2工程项目的编译?????????????????33.3时序仿真????????????????????3

四.分模块设计、调试、仿真与结果分析?????????4

4.1clk50mto1时钟分频模块????????????44.2adder加法器模块???????????????44.3hexcounter16进制计数器模块??????????54.4counter_time计时模块?????????????54.5alarm闹铃模块?????????????????64.6sound_ddd嘀嘀嘀闹铃声?????????????74.7sound_ddd_du嘀嘀嘀—嘟声音模块????????74.8alarm_time闹钟时间设定模块??????????84.9bitsel将输出解码成时分秒选择模块???????84.10switch去抖模块????????????????84.11led译码显示模块???????????????94.12clock顶层模块????????????????10

五.试验总结????????????????????????11

5.1调试中遇到的问题及解决的方法??????????115.2试验中积累的经验????????????????125.3心得体会????????????????????12

六.>〞,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际状况决定。然后单击屏幕右上脚的“OK〞。在出现的小屏幕上单击“OK〞。

设定仿真时间宽度。选择Edit→Endtime?选项,在Endtime选择窗中选择适当的仿真时间域,以便有足够长的观测时间。

波形文件存盘。选择File→Saveas选项,直接存盘即可。运行仿真器。在菜单中选择项,直到出现,仿真终止。

图3.4编辑过程的仿真波形

四.分模块设计、调试、仿真与结果分析

4.1clk50mto1时钟分频模块

试验中使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。在counter_1hz==50000000时,输出信号清零,若未达到则继续加一。

为试验观测便利,在单个模块的显示中,本处clock输入为1ps周期信号,得到clk50to1输出结果如图4.1所示,完全符合试验要求。

图4.1clk50mto1时钟分频模块

4.2adder加法器模块

本试验中adder采用8位全加器,out=in1+in2,带进位。

图4.2adder加法器模块

试验中数字钟时分秒最大计数为59,带进位8位全加器完全符合试验要求,如图4.2所示,77加62等于139,76加上93等于169.

4.3hexcounter16进制计数器模块

经过分频后,输出脉冲频率为1hz,即周期为1s,通过16进制计数器,将其转化为16进制数字。

16进制采用4位二进制,因此寄放器长度为四位。当set高电平有效时,将数据送给counter计数器,carrtbit清零,如若counter计数器达到16进制中max即15时,counter清零,而carrtbit置高电平有效。如若set一直处于低电平,则counter计数器自加一进行计数,carrtbit清零。

图4.3hexcounter16进制计数器模块

调试试验结果如图4.3所示,set一直处于低电平状态下,当datout计

数置3后再加一即清零,而carrybit置一,再来一个脉冲上升沿又回来置数,符合十六进制计数器。

4.4counter_time计时模块

时钟能够产生时间前提是对秒脉冲计数产生形成的,每个计时器的时钟,由前级进位和自增脉冲相加得到,为了形成时分秒,需要对秒进位信号进行计数从而产生分,对分进位信号进行计数产生时信号。秒和分均为60进制,时为24进制,所以需要有模60和模24计数器。计时示意如下:

秒个位秒十位分个位分十位时个位时十位1Hz

当秒计数中,秒个位逢9后,再来一个脉冲即向秒十位加一,秒个位清0,当秒十位达到5、秒个位9时,再自加一个脉冲后,向分个位加一,秒全班清零。同理,当分位达到59后,向时个位进一,分秒全部清零。而时为24进制,当时分秒为23:59:59时,当下一个脉冲上升沿到来时,全部清零。

图4.4counter_time计时模块

如图4.4所示,第一幅图为秒计数器计数至59后,向分计数器进位清零重新计数。其次个腾跃是分59向时进位。其次幅图中,最终一个腾跃是时分秒全部清零。根据时间轴的休止,可以观测到此现象。

4.5alarm闹铃模块

闹钟模式是否开启,需要外部信号输入,让数字钟进入闹铃界面,还要分别是整点报时还是闹铃功能,且要保证在设定闹铃时数字钟能够正常工作。这就要求在闹铃和数字钟的走时功能互不影响。本试验用alarmon作为闹钟设定使能键。00时,正常计时;01进入闹钟设定状态。

本闹铃模块另外含有简单计时功能,这样与计时模块不产生冲突,当时间达到整点时,开启整点报时闹铃模块,当达到闹钟时间,进入闹钟闹铃模块。其他全部置零,计时模块。

图4.5alarm闹铃模块

如图4.5所示,当alarmon选择00时,闹铃模块进入计数模块,没有闹铃输出。接着输入为01,闹钟铃声输出,进入闹钟闹铃模式;输入为10时,输出为嘀嘀嘀读,为整点报时铃声的输出。

4.6sound_ddd嘀嘀嘀闹铃声模块

由前面闹铃模块选择闹铃声后,直接跳入到此闹钟闹铃嘀嘀嘀模块,嘀嘀嘀铃声分位三段,且设置不同周期,当mscount等于第一声间距乘以3加上二声间距乘以2加上三声之后时间间距减1时,为闹铃的最大周期,清零。当时间周期处于第一声或二声间距或三声之后周期之间时,闹铃响,总共响三声。其他状况下,闹铃无输出。

图4.6sound_ddd嘀嘀嘀闹铃声模块

如图4.6所示,当进入闹钟闹铃时,闹钟发出ddd声音,两个滴声间距为20马上,连续三个低声之后间距为50ms,且以三声为周期。

4.7sound_ddd_du嘀嘀嘀—嘟声音模块

嘀嘀嘀嘟声音模块与嘀嘀嘀声音模块类似,只不过嘀嘀嘀声过后不是控制下一声滴的时间间距,而是控制嘟的到来。嘟的声音比滴的声音长。

当进入嘀嘀嘀嘟模块后,假使mscount小于于滴声长度加上滴滴之间的时间间距再乘3再加上嘟的声音加10时,mscount在脉冲到来时自加,当mscount大于零小于SOUNDSPACE、在SOUNDSPACE加上两滴间距到再加SOUNDSPACE时等(详见程序清单),嘀嘀嘀嘟响起。

图4.7sound_ddd_du嘀嘀嘀—嘟声音模块

如图4.7所示,在50ps周期的clk下,SOUNDSPACE为300ms,两滴时间间距为200ms,嘟的长度为600ms状况下,在整点报时开启时,在mscount0到220之间响起嘀嘀嘀嘟。

4.8alarm_time闹钟时间设定模块

闹钟设定时,需要外部信号输入,让数字钟进入闹钟界面,且要保证在设定闹铃时数字钟能够正常工作。这就要求在设定闹铃和数字钟的校时校分功能互不影响。本试验用enablel作为闹钟设定使能键。0时,正常计时;1进入闹钟设定状态。设定闹铃时间电路和计时电路中的校时校分的原理基本一致,不同之处在于,在闹铃设定完毕返回时间显示状态时获其他任何没有重新设定闹铃状态时,闹钟时间都不会改变。另外,在闹钟设定中,分位对时位没有进位。当sel为10时,对时进行设定;sel为01时,对分进行设定,当rest置一时,复位清零。。本模块采用基准时钟。

图4.8alarm_time闹钟时间设定模块

如图4.8所示,当rest为低电平,enable高电平日,sel为01时,在inc的作用下对十进制的分秒进行设定;当sel为10时,同样的对时位进行设定。

4.9bitsel将输出解码成时分秒选择模块

将输出解码成时分秒选择,并且分闹钟设置还是计时模式。为了不产生冲突,Alarmmode为是否设置闹钟模式,checkmode为是否设置调整时间模式,且相互之间不能同时有效。当reset有效时,对所有输出清零。

图4.9bitsel将输出解码成时分秒选择模块

如图4.9所示,当rest有效时,输出全部清零;当alarmmode高电平有效时,对闹钟时分位的十分位进行调整输出;checkmode高电平有效时,可以对调整时间的时分秒进行调整。

4.10switch去抖模块

为实现可靠调时,常采用防抖动开关战胜开关接通或断开过程中产生的一串脉冲式振动,一般由D触发器延时功能实现。这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的。

图4.10switch去抖模块

如图4.10所示,当clk下降沿到来时,counter进行计数自加;当clk_use下降到来时,输出电路输出输入数据。完成了因抖动带来的错误。

4.11led译码显示模块

此模块是用于数码管的动态显示,采用七段显示数码管,因此输入长度定义四位,输出定义八位,将四位输入译码成对应的七位扫描数值。

0:dataout

五.试验总结:

5.1调试中遇到的问题及解决的方法:1、编程时,最常见也是最头疼的就是在各个模块调试的时候显示句子无定义,导致程序无法编译,但整个模块的语法没有错误。

解决方法:将各个模块之间调试有先后顺序,且将所有模块调试放在一个文件夹存放,以致可以相互调用。2、经常导致语法错误,如:“;〞没有写上,变量类型没有预先标明,前后变量名字由于缺少一个或多一个字母而导致出错。

解决方法:对照错误,认真检查程序,看哪个地方的标点,变量没有写上或标明。

3、进行编译或波形仿真时,经常得到的不是预想中的结果。

解决方法:弄明白该模块实现什么功能,调整好输入变量进行调试,不能完全采用随机变量。在方面观测的状况下,可以采用高电平或低电平代替。将需要编译或进行仿真的实体文件置顶,经检错无误后,进行波形仿真,在仿真之前需要合理设置仿真终止时间和信号周期。

5.2试验中积累的经验:

1、系统设计进要行充分的方案论证,不可盲目就动手去做;

2、试验中对每一个细节部分都要全面思考,要对特别状况进行处理;3、对于数字系统,要考虑模块定义使用先后顺序问题;4、数字电路的理论分析要结合时序图;

5、遇到问题,要顺藤摸瓜,分析明白,不可胡乱改动,每做一次改变都要有充分的理由;

6、模块化设计方法的优点在于其简单性,但是在试验设计中也发现,在试验最终结果确定之前,要尽量减少模块

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论