根据VHDL的多功能数字钟设计报告.docx

根据VHDL的多功能数字钟设计报告.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.- .- 基于 VHDL 的多功能数字钟设计报告 021215 班 卫时章一、设计要求 1、具有以二十四小时制计时、显示、整点报时、时间设置和闹钟的功能。 2、设计精度要求为 1 秒。 二、设计环境:Quartus II 三、系统功能描述 1、系统输入:时钟信号 clk 采用 50MHz;系统状态及较时、定时转换的控制 信号为 k、set,校时复位信号为 reset,均由按键信号产生。2、系统输出:LED 显示输出;蜂鸣器声音信号输出。 3、多功能数字电子钟系统功能的具体描述如下: (一)计时:正常工作状态下,每日按24h 计时制计时并显示,蜂鸣器无声,逢整点报时。 (二)校时:在计时显示状态下,按下“k”键,进入“小时”待校准状态,若此时按下“set”键,小时开始校准;之后按下“k”键则进入“分”待校准状态; 继续按下“k”键则进入“秒”待复零状态;再次按下“k”键数码管显示闹钟时间,并进入闹钟“小时”待校准状态;再次按下“k”键则进入闹钟“分”待校准状态;若再按下“k”键恢复到正常计时显示状态。若校时过程中按下“reset” 键,则系统恢复到正常计数状态。 “小时”校准状态:在“小时”校准状态下,显示“小时”的数码管以2Hz闪烁,并按下“set”键时以 2Hz 的频率递增计数。 “分”校准状态:在“分”校准状态下,显示“分”的数码管以 2Hz 闪烁,并按下“set”键时以 2Hz 的频率递增计数。 “秒”校准状态:在“秒复零”状态下,显示“秒”的数码管以 2Hz 闪烁,并以 1Hz 的频率递增计数。 闹钟“小时”校准状态:在闹钟“小时”校准状态下,显示“小时”的数码管以 2Hz 闪烁,并按下“set”键时以 2Hz 的频率递增计数。 闹钟“分”校准状态:在闹钟“分”校准状态下,显示“分”的数码管以 2Hz 闪烁,并按下“set”键时以 2Hz 的频率递增计数。 (三)整点报时:蜂鸣器在“59”分钟的第“51”、“53”、“55”、“57”秒发频率为 500Hz 的低音,在“59”分钟的第“59”秒发频率为 1000Hz 的高音,结束时为整点。 (四)显示:采用扫描显示方式驱动 4 个 LED 数码管显示小时、分,秒由两组 led 灯以 4 位 BCD 码显示。 (五)闹钟:闹钟定时时间到,蜂鸣器发出频率为 1000Hz 的高音,持续时间为 60 秒。 四、各个模块分析说明 1、分频器模块(freq.vhd) 模块说明:输入一个频率为 50MHz 的 CLK,利用计数器分出1KHz 的 q1KHz,500Hz 的 q500Hz,2Hz 的 q2Hz 和 1Hz 的 q1Hz。 源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity freq is port (CLK: in std_logic ; --输入时钟信号q1KHz: buffer std_logic; q500Hz: buffer std_logic; q2Hz: buffer std_logic; q1Hz: out std_logic); end freq; architecture bhv of freq is begin P1KHZ:process(CLK) variable cout:integer:=0; begin if CLKevent and CLK=1 then cout:=cout+1; --每来个时钟上升沿时 cout 开始计数if cout=25000 then q1KHz=0; --当 cout=25000 时,q1KHz 输出“0” elsif cout50000 then q1KHz=1; --当 25000cout=50000 时,q1KHz else cout:=0; --输出“1”,完成 1KHz 频率输出 end if; end if; end process; P500HZ:process(q1KHz) --q1KHz 作为输入信号,分出 q500Hz variable cout:integer:=0; begin if q1KHzevent and q1KHz=1 then cout:=cout+1; if cout=1 then q500Hz=0; --二分频 elsif cout=2 then cout:=0;q500Hz=1; end if; end if; end process; P2HZ:process(q500Hz) variable cout:integer:=0; begin if q500Hzevent and q500Hz=1 then cout:=c

文档评论(0)

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

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

1亿VIP精品文档

相关文档