数电设计数字钟基于QUARTUS完整版

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数电设计数字钟基于

Q U A R T U S

HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

大连理工大学本科实验报告

题目:数电课设——多功能数字钟

课程名称:数字电路课程设计

学院(系):电信学部

专业:电子与通信工程

班级:

学生姓名: ***************

学号:***************

完成日期:

成绩:

2010 年 12 月 17 日

题目:多功能数字时钟

一.设计要求

1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)

2)具有手动校时校分功能

3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次

4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零

5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟

6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键

清零

二.设计分析及系统方案设计

1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。

进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码

从59分50秒开始,数字钟进入整点报时功能。每隔两秒提示一次。(本设计中以两个LED灯代替蜂鸣器,进行报时)

2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。

将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。

3.多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED灯连续提示一分钟。

4. 多功能数字钟的倒计时功能部分,可通过按键(LOAD7调秒,LOAD8调分,LOAD9调时)设定倒计时开始时刻。倒计时的时钟与数字钟的时钟相同,每迎到一个时钟上升沿,则计数器减一。计数器减至00时,分钟位、秒钟位恢复至59,时钟位恢复至23。倒计时结束时(即00时00分00秒),控制LED灯亮,表示倒计时结束。

本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。当LOAD4为高电平,则对秒表信号进行译码,数码管显示秒表数据;当LOAD4为低电平,LOAD5为高电平,则对闹钟信号进行译码,数码管显示闹钟数据;当LOAD4,LOAD5为低电平,LOAD6为高电平,则对倒计时信号进行译码,数码管显示倒计时信号数据;当LOAD4,LOAD5,LOAD6全为低电平,则对正常时钟信号进行译码,数码管显示时钟信号数据。

附图1:系统总体结构框图

附图2系统硬件电路设计

下载时选择的开发系统模式以及管脚定义

四系统的VHDL设计

源程序:

--代码共372行

library ieee;

use clock is

port( load9,load8,load7,load6,load5,load4,load3,load2,load1:in std_logic;

clk,rst1,rst2,en1,en2,key1,key2,key3:in std_logic;

q1,q2,q3,q4,q5,q6:out std_logic_vector(6 downto 0);

led1,led2,led3,led4,led5:out std_logic

);

end;

architecture a of clock is

signal qq1,qq2,qq3,qq4,qq5,qq6:std_logic_vector(3 downto 0);--数字钟计数器信号

signal vis1,vis2,vis3,vis4,vis5,vis6:std_logic_vector(3 downto 0);

signal cp1,cp2,cp3,cp4,cp5:std_logic;

signal p1:integer range 0 to 49;

signal p2:integer range 0 to 999;

signal p3:integer range 0 to 999;

signal clfsa:integer range 0 to 499;

signal a,b,c,d,e,f,g: std_logic_vector(3 downto 0);--秒表计数器信号signal r1,r2,r3,r4,r5,r6:std_logic_vector(3 downto 0);--闹钟信号signal z1,z2,z3,z4,z5,z6:std_logic_vector(3 downto 0);--倒计时计数器信号

signal alz1,alz2,alz3,alz4,alz5:std_logic;

Begin

--------------------------------------------------------

---------------分频模块-----------------------------

--------------------------------------------------------

process(clk) --分频1

begin

if rising_edge(clk) then

if p1=49 then

p1<=0;cp1<='1';

else

p1<=p1+1;cp1<='0';

end if;

end if;

end process;

process(cp1) --分频2

begin

if rising_edge(cp1) then

if p2=999 then

p2<=0;cp2<='1';

else

p2<=p2+1;cp2<='0';

end if;

end if;

end process;

process(cp2) --得到周期为1秒的信号

begin

if rising_edge(cp2) then

if p3=999 then

p3<=0;cp3<='1';

else

p3<=p3+1;cp3<='0';

end if;

end if;

end process;

process(cp2) --得到周期为百分之一秒的信号

begin

if rising_edge(cp2) then

if a="1001" then a<="0000";a1<='1';

else a<=a+1;a1<='0';

end if;

end if;

相关文档
最新文档