EDA数字钟研讨.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA数字钟研讨

《EDA技术》 课程设计报告 题 目: FPGA数字钟设计 班 级: 学 号: 姓 名: 同组人员: 指导教师: 2016年3月29日 目 录 1. 绪论 1 2. 功能要求 1 3.设计原理 1 3.1 基本原理 1 3.2 总体结构框图 2 4.模块设计 2 4.1 分频模块 2 4.2 秒计数模块 4 4.3 分计数器模块 5 4.4 时计数器模块 7 4.5显示模块 8 4.6 报时模块 9 4.7顶层文件的设计 11 5. 硬件调试 11 6. 总结 13 参考文献 13 FPGA数字钟设计 绪论 EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,最终形成集成电子系统或专用集成芯片的一门新技术。全定制和定制专用集成电路正成为新的发展热点,专用集成电路的设计与应用必须依靠专门的EDA工具, 21世纪将是EDA技术的高速发展期。现在随着科学技术的迅猛发展,我们已不在需要用传统的方法去设计数字钟,基于FPGA最小系统板,在QuartusII平台上可以更加简单的设计一个数字钟。 功能要求 1)具有时,分,秒,计数显示功能,以24小时循环计时。 2)具有清零,调节小时、分钟功能。 3)具有整点报时功能。 3.设计原理 3.1 基本原理 数字时钟主要由:分频器、扫描显示译码器、(秒计数器、分计数器、时计数器)或(六十进制计数器、、十二进制计数器电路)、报时电路组成。 FPGA最小系统板中的时钟脉冲提供 20MHz 的脉冲信号,用于分频器的输入信号和扫描显示译码器的扫描。分频器的功能是将 20MHz 的脉冲信号转换为 200Hz的扫描显示信号或1Hz 的时钟信号,用于秒的计数。秒为 60 进制计数器,当 1Hz 的脉冲信号来临时,开始计数。计数到 59 时,会输出enfen高电平,用于分的计数。setfen 为手动进位端,置入高电平时也 会使enfen产生高电平。分计数器为 60 进制计数器,当enfen高电平来临时,分计数器会开始计数,计数到 59 时,会产生 enshi 的高电平。setshi 为手动置 数端,当 setshi 高定平时,也会使 enshi 为高电平。enshi 为时计数器的计数脉冲输入,enshi 高电平时,时计数器开始计数。时计数器为 24 进制计数器,计数到 24 时会自动清零。reset 为异步清零端,高定平时,所有时钟显示数码管均为 0。selout 为数码管扫描地址,接入数码管地址的低三位。segout 为数码管的输入端,分别接入数码管的 a,b,c,d,e,f,g 端口。output 为整点报时输出端。 当分为 59,秒为 58 时, output1 点亮第一个 LED 灯,当分为 59,秒为 59 时,output2 点亮地二个 LED 灯,当分为 00,秒为00 时,output1、output2 同时点亮两个LED。其他情况时,LED 均处于灭等状态这样完成报时功能。 3.2 总体结构框图 图3-1总体结构框图 4.模块设计 4.1 分频模块 分频程序产生1Hz和200Hz的脉冲。1Hz的计时脉冲,用于时分秒计数,200Hz的脉冲用于8位八段数码管的扫描显示。代码文件如下,仿真波形如下图4-1所示。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is port( clk_20M:in std_logic; clk_1HZ:out std_logic; clk_200HZ:out std_logic ); end fenpin; architecture fun of fenpin is signal count:std_logic_vector(24 downto 0); signal count1:std_logic_vector(7 downto 0); begin process(clk_20M) begin if (clk_20Mevent and clk_20

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档