大连理工大学本科实验报告题目:多功能数字钟
课程名称:《数字电路课程设计》
学院(系):电子信息与电气工程学部
专业:自动化
班级:电自0801
学生姓名:
学号:200881142
完成日期:2011年7月20日
成绩:
2011 年7 月20 日
题目:多功能数字钟
1 设计要求
(1)一个具有“时”,“分”,“秒”的十进制数字显示(小时从00~23)
计时器。
(2)具有手动校时,校分的功能。
(3)定时与闹钟功能,能在设定的时间发出闹铃声
(4)能整点报时。要求从59分54秒起报时,每隔2秒发出低音,,连续
3次,在整点要求是高音。
2 设计分析及系统方案设计
系统总体结果
系统设计要求说明:
(1)该秒表用模24、模60计数器实现24小时计时
(2)在调节闹钟时不影响数字钟的正常走表;
(3)在调节闹钟时要通过数码管显示出;
3系统以及模块硬件电路设计
根据上述给出的系统总体结构框图,给出系统硬件电路设计,并作必要的说明和理论计算。由于“数字电路课程设计”课程采用实验箱完成,没有学时涉
及有关FPGA芯片的使用,因此有关FPGA芯片的部分可以用“FPGA最小系统”模块框代替。其余接口部分(按键,LED以及数码管,各种接口等需要设计电路以及参数)。
下载时选择的开发系统模式以及管脚定义
表1 GW48-CK开发系统工作模式:模式0
接口名称
类型
(输入/输
出)
结构图上
的信号名引脚号说明
en 输入PIO7 16 手动校时(1-调时,0-
走表)
th 输入PIO6 11 调时按键(en=1,或
en1=1调时)
en1 输入PIO5 10 闹钟设定(1-调时,0-
不走)
tm 输入PIO4 9 调分按键(en=1或
en1=1,才可调分)alarmstop 输入PIO3 8 闹铃控制端
clk 输入CLOCK1 42 系统走表时钟(f=1Hz)clk1 输入CLOCK0 2 闹钟与整点报时时钟
(f=256Hz)
clk2 输入CLOCK5 83 整点报时时钟时钟
(f=1024Hz)
qhh 输出PIO47-PIO44 79、78、73、72 输出小时的高位
qlh 输出PIO43-PIO40 71、70、67、66 输出小时的低位
qhm 输出PIO39-PIO36 65、64、62、61 输出分钟的高位
qlm 输出PIO35-PIO32 60、59、58、54 输出分钟的低位
qhs 输出PIO31-PIO28 53、52、51、50 输出秒的高位
qls 输出PIO27-PIO24 49、48、47、39 输出秒的低位
speaker 输出SPEAKER 3 输出蜂鸣器的时钟
4 系统的VHDL设计
系统的各个部分如何用VHDL设计出来的应该有说明,包括论述以及真值表或者状态图等。
要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;
1)用原理图实现的,需包含以下内容:
(1)系统原理图
(2)主要模块或符号说明;
主要模块:模60计数器,模24计数器,
2)用VHDL语言实现的
(1) 秒计数器(模60计数器)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
port(clk: in std_logic;
clk_1: out std_logic; --clk_1表进位
qh,ql:out std_logic_vector(3 downto 0) –qh,ql表示十位与个位
);
end;
architecture a of m_601 is
signal qqh,qql: std_logic_vector(3 downto 0);
signal tmp: std_logic;
begin
process(clk)
begin
if clk'event and clk='1' then
if qql=9 then
qql<="0000";
if qqh=5 then
qqh<="0000";tmp<='1';
else
qqh<=qqh+1;
end if;
else
qql<=qql+1;
tmp<='0';
end if;
end if;
end process;
qh<=qqh;
ql<=qql;
clk_1<=tmp;
end;
秒计数器仿真图
(2)分计数器(模60计数器)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity m_60 is
port(clk,en,t: in std_logic; --在en=1控制的情况下,手动t校时clk_1: out std_logic; --clk_1表进位
qh,ql:out std_logic_vector(3 downto 0) –qh,ql表十位与个位
);
end;
architecture a of m_60 is
signal qqh,qql: std_logic_vector(3 downto 0);
signal tmp,tmp_1: std_logic;
begin
process(tmp_1)
begin
if tmp_1'event and tmp_1='1' then
if qql=9 then
qql<="0000";
if qqh=5 then
qqh<="0000";tmp<='1';
else