用VHDL语言实现数字钟的设计方案_第1页
用VHDL语言实现数字钟的设计方案_第2页
用VHDL语言实现数字钟的设计方案_第3页
用VHDL语言实现数字钟的设计方案_第4页
用VHDL语言实现数字钟的设计方案_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1 用 言实现数字钟的设计方案 课程设计目的 ( 1) 入 在 台上用 ( 2) 逻辑综合 将源程序编译后,为设计系统选择一个电路实现方案,按照这个方案进行逻辑综合和优化,生成 1个电路网表文件 ( 3) 功能仿真 检查自己的设计是否达到和完成要求的逻辑功能 ( 4) 设计实现 布局、布线及配置,最后生成可以写到芯片中的目标文件 ( 5)时序仿真 是适配到选定的芯片后进行的仿真,它模拟芯片的实际动作,仿真时间模型严格将门级延时计算在内,可以分析出竞争与冒险,时序仿真验证过的 电路与实际电路基本上已致。 2 、课程设计内容及要求 计任务 设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。用6 个数码管显示时分秒, 钮产生第一个脉冲时,显示切换年月日,第 2 个脉冲到来时可预置年份,第 3 个脉冲到来时可预置月份,依次第 4、 5、 6、 7 个脉冲到来时分别可预置日期、时、分、秒,第 8 个脉冲到来后预置结束,正常工作,显示的是时分秒。 高电平时, 脉冲到达时,预置位加 。 ( 1)可以采用与教材上不同的设计方法完成以上基 本内容。 ( 2)可以在基本内容的基础上增加其它功能。 2 3、 序设计 个设计方法各有其优缺点。 一, 采用一个结构体,多个进程的设计方法。其优点是速度快,但是一个结构体,各个进程的逻辑关系比较复杂,而且代码的可读性,可移植性较差。 二, 状态机的设计方法,状态机结构简单,当各个状态之间的转换不易处理。 三, 元件例化的设计方法,元件例化使各个模块之间分得更加有层次,易于 读,缺点有可能使各个模块之间存在逻辑关系的冲突。 本课程设计,主要采用了元件例化的设 计方法实现。 频模块 直接将实验箱的频率用于数字钟的计数,可能会导致错误,实验箱直接给出的 1需要将 1000分频。本模块直接采用单进程实现设计,本模块还包括一个置数脉冲的设置 下一次 1, 000 时显示时分秒,为 001 时显示年月日,为 010 对年进行置数,为 011对月进行置数,为 100对日进行置数,为 101对时进行置数,为 110对分进行置数,为 111对秒进行置数, 连接着后面四个计数,置数,模块的 以进行模块显示的选择。 置的周期为 5 000分频, 1000 分频后的 月日计数模块的计数时钟,置数时钟则直接输入,连接两个置数模块。 以下程序是实体部分 is : : : ) 3 ); 分秒计数模块 时分秒可选用多进程或者单进程的方法,多进程速度快,但是结构复杂。故本设计选用单进程方法。当秒计数到 59 时向分进位,分计到 59 且秒为 59 时向时进位,当计到 23 时 59 分 59 秒时向天进位,同时对时分秒进行清零。程序中主要使用了 语句。最后验证表明此设计方法可实现题目要求的功能。以下是程序的实体部分 is ); s0, ); m0, ); h0, ); ); : : ); 4 分秒置数模块 时分秒置数模块不同于计数模块,置数模块我选用了另一个置数时钟,也可以说是置数脉冲。时分秒置数有使能端口 有效),置数使能端口 过 时置数是减 1 模式 , 时是加 1 模式)判定是加 1 还是减 1。当输入长度为三位的 101时对时进行置数,当 10时对分进行置数,当 11时对秒进行置数。 时分秒的置数实现方式可有多种方法,可用状态机,多进程和单进程等方法实现,相比于别的设计方法,单进程的设计方法易于实现,没有复杂的对应关系,而且本功能的实现不许过于复杂的逻辑关系。本设计使用了单进程 内部使用嵌套的 if 句实现预期的功能。以下是该功能的输入输出端口: is : ); s0, : ); m0, : ); 5 h0, : ); : 预置数加 1, 预置数减 1 : ; 月日计数模块 年月日的计数模块与时分秒的计数模块稍有不同,年月日需要考虑闰年 2月份的情况,闰年到来时 2月份为 29天,其他情况 2月份为 28天。考虑闰年相对应的闰月的情况,就会出现不同的年份对应的 2月的天数的不同,其他的可将1, 3, 5, 7, 8, 10, 12 归成一类,这几个月每 个月的天数是 31天,而 4, 6, 9,11这几个月又归为一类,每个月有 30天,二月分为特殊的一类,闰年有 29天,非闰年为 28天。对瑞年的判断,由于数码管只能显示年的十位和个位,前两位默认为 20,故只要后两位能被 4整除即是闰年。这样我们就可以把所有的闰年的情况列出来: 00,04,08,20,24,28,40,44,48,60,64,68,80,84,88,12,14,32,34,52,54,72,74,92,94。用 (0000OR 0010OR 0100OR 0110 OR 01000)0000 OR 0100OR 01000)0001 OR 0011 OR 0101OR 0111 OR 1001)0010OR 0110)。 同时模块内部设计了进位脉冲,当计满 12 个月时向年产生进位,年数加 1。以下是实体部分: 6 is : : ); : ); : ); : : ) ); 月日置数模块 年月日置数模块不同于时分秒的置数模块,在年月日的置数模块中我们需要考虑闰年相对应的闰月的情况,具体和上一模块年月日计数模块原理一样。 有效。 置数模式的选择控制端, 时置数处于加 1模式, 置数处于减 1模式, 10时对年进行置数, 11时对月进行置数, 00 时对天进行置数。 本设计对于本模块使用了单进程,内部使用了 if 语句实现 7 预期的功能。以下是该置数模块的实体部分: is : : ); : ); : ); : : ) ); 择器模块 为了使时分秒计数模块、时分秒置数模块、年月日计数模块、年月日置数模块能够更好与时间显示切换模块相连接,需要增加两个选择器进行 辅助,不然24 个端口会引起资源不够的警告。两个选择器先分别对时分秒计数模块和时分秒置数模块、年月日计数模块和年月日置数模块进行选择,再与时间显示切换模块相连接。端口如下: is : 8 : ); : ); : ); : ); : ); : ); : ); : ); : ); : ); : ); : ); : );s0, : ); m0, : ); h0, : ) ); 9 间显示模块 时间显示模块连接于上一模块两个选择器,选择器模块已经通过 不同值进行选择了一次,在这一模块再次通过 不同值,对要显示的模块进行选择。当 000 , 101 , 110 , 111,显示模块显示选择器 1上的内容,当其他情况下,显示模块显示选择器 2上的内容。各部分端口 如下: : : );: ); : ); : ); 10 : ); : ); : ); : ); : ); : ); : ); : ); : ); : ); ); : ); : ); : ); : ) ); 11 点报时模块 整点报时模块,相连与上一模块是时分秒计数模块,每当分计数到 59 时,输出一个高电平,进行报时,持续时间为 60S。各部分端口如下: in 元件例化模块 该模块将分立的所有模块连接起来,运用端口映射的方式,将各个模块通过相应的信号线相连,这也是一个容易出现问题的地方,很容易造成连接失败。 实验箱频率输入, 接与各个两个置数端口的 连, 输入脉冲,直接与分频模块的 同时分频模块的 以下是实体部分: S 12 ( : : 冲 1000分频 产生 1 高时 预置 +1 为低时 -1 : : ); ); : ); : ); : ); : ); : 分钟 ); 内部具体结构如下: 13 14 4、仿真与分析 频模块仿真波形 000分频后输出, 分秒计数模块仿真波形 分钟对小时进位。 15 分秒置数模块 仿真波形 对时置数。以加置数为例,下同。 对分置数。 对秒置数。 月日计数模块仿真波形 年月日计数模块。闰年, 2月 29天。 非闰年, 2月 28天。 16 月日置数模块 仿真波形 10,对年进行置数,可以置数到 99。 11,对月进行置数,满 12时,返回 1月份。 00,对日进行置数。 非闰年, 2月份置数 28天。 闰年, 2月份置数 29天。 17 点 报时 模块的仿真波形 每给该模块一个高电平,输出一个高电平,持续 60s。 5、 器件编程下载及设计结果 由于实验室的设备有限,因此器件下载的步骤未进行。 6、课程设计 总结 ,包括 会和建议 这次数字钟的课程设计在实验室进行了整整两天,前期也进行了大量的准备,查阅一些相关书籍和一些以前的成功设计的数字钟文档,并且也事先动手编写了几个模块的程序,感觉用 言编写程序设计一些系统还是十分有意思,真正自己动手实现一些功能要比单纯的学习一些语法的理论知识来的更加的有意义,在实验中我们可以学习到课本上学不到 的知识,同时也更加的有趣味性,不是那么的乏味,加深了对 门课程的理解与应用。 当然在数字钟的编写与仿真中也遇到了许多的问题,但也正是这些问题给我带来了很大的收获。先说说我采用的是模块化的设计方法,这种方法为我带来了很大的便利,使我的设计思路十分的清晰,当程序在仿真的过程中出现了什么问题可以很快的找到出现的问题的源程序,方便进行查错和修改,使大的系统大的程序的编写,编译变得非常的有条理化,我想这个方法会在我以后的学习工作中发挥相当大的作用。 再一个就是编写程序时遇到的问题,最明显的一个问题就是未给一些变 量赋初值,这个问题困扰了很长时间,程序的逻辑和语法都没有问题,但是在仿真时就是不能出现自己想要的仿真波形,最后赋予了初值才解决了这个问题。还有就是一些细节的问题,可能是由于在自己编写的时候不是很认真还有一些打错字符的现象,在程序编译的时候不能够通过,当程序多了的时候找起来就不是很容 18 易了,我想我以后应该尽量的减少这种错误,以免造成不必要的麻烦,浪费时间;还有个问题就是当你分别测试过各个分模块都没有问题的时候,把他们整合到一起还是有时候会出现一些小问题,这种问题找起来就不是很容易了,你必须重新理清各个模块之间的 连线关系仔细的查找,才能把问题找到并把它解决,不过还是得益于模块化这种设计方法,使你很清楚的知道整个系统的构成以及各个模块之间的联系,大大的增加了效率;再有个问题就是我们在编写程序的时候很容易忽视掉硬件的平台和一些硬件的电路, 术最大的好处就是把硬件的设计转换成软件的编程设计实现,但同时我们也不能忽视掉硬件,应该把软件的编程和硬件平台都联系起来,要不然很容易编的程序不能够很好的适用到硬件平台,出现一些你根本就想不到的问题,为我们带来了很大的麻烦。还有一些警告,就是总是产生一些不必要的锁存器,这个问题困 扰了我很久,经过我大量的查阅资料,终于弄清原因,这主要是 者 句不完整造成的。以后在使用这两个语句时,一定要保证语句的完整,防止不必要的锁存器产生。 通过这几天的 数字钟课程设计真的使我收获很多,我想我以后还会加强这方面的实践经历,多多的积累经验,但这次实验也有一些小小的缺憾,就是没能够自己动手进行程序向器件中的下载,希望实验室能够尽快更新一些实验设备。 7、 参考文献 1 刘皖 ,何道君 ,谭明编著 M. 清华大学出版社 , 2006 2 黄智伟主编 计与实践 M. 电子工业出版社 , 2005 3 潘松 ,王国栋编著 M. 电子科技大学出版社 , 2000 4 侯伯亨 ,顾新编著 M. 西安电子科技大学出版社 , 1999 5 夏宇闻编著 M. 北京航空航天大学出版社 , 1998 6 卢毅 ,赖杰编著 M. 科学出版社 , 2001 7 王晓峰 . 基于 言的可置数十位计数器的设计 J. 长 春大学学报 . 2010(12) 分频模块 1000 分频 19 21:27:02 01/13/2014 - - - to - is : : : ) ); of is : ):=0

温馨提示

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

评论

0/150

提交评论