数电实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电路与逻辑设计综合实验
实验报告
课题名称:数字钟
班级:08211102班
学号:070062
班内序号:33
姓名:何慧芳
一.设计课题的任务要求
1.实验目的
1.熟练掌握VHDL 语言和QuartusII 软件的使用;
2.理解状态机的工作原理和设计方法;
3.掌握利用EDA 工具进行自顶向下的电子系统设计方法;
2.实验任务
A.基本任务:设计制作一个能显示时、分、秒的时钟
1. 可手动校对时间,能分别进行时和分的校正;
2. 12 小时(有上、下午显示)、24 小时计时制可选;
B.提高要求:
1. 整点报时功能;
2. 闹铃功能,当计时到预定时间时,蜂鸣器发出闹铃信号,闹铃时间为5 秒,可
提前终止闹铃;
3. 自拟其它功能。
3.实验器材
1.计算机;
2.示波器;
3.直流稳压电源;
4.万用表;
5.EDA 开发板及相应元器件。
二.系统设计(设计思路、总体框图、分块设计)
1.设计思路
数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23 时59 分59 秒;或者计时周期为12 小时并配有上下午指示,显示满刻度为12 时59 分59 秒;另外还应有校时功能和报时功能。
电路由晶体振荡器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。其中,时钟计数器、译码驱动电路及时间调整电路由CPLD 设计完成,晶体振荡器负责给CPLD 提供所需的高频时钟脉冲信号。
1、晶体振荡器
晶体振荡器的作用是产生时间标准信号。数字钟的精度,主要取决于时间标准信号的频率及其稳定度。因此,一般采用石英晶体振荡器经过分频得到这一信号。也可采用由门电路或555 定时器构成的多谐振荡器作为时间标准信号源。
2、计数器
有了时间标准“秒”信号后,就可以根据60 秒为1 分、60 分为1 小时、24 小时为1 天的计数周期,分别组成两个六十进制(秒、分)、一个二十四进制(时)的计数器。将这些计数器适当地连接,就可以构成秒、分、时的计数,实现计时的功能。
3、译码和数码显示电路
译码和数码显示电路是将数字钟和计时状态直观清晰地反映出来,被人们的视觉器官所接受。显示器件选用LED 七段数码管。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
4、校时电路
实际的数字钟表电路由于秒信号的精确性不可能做到完全(绝对)准确无误,加之电路中其它原因,数字钟总会产生走时误差的现象。因此,电路中就应该有校准时间功能的电路。
2.模块划分
采用自顶向下的设计方法,通过对数字钟实现功能的分析,决定将各个功能由一个个模块实现,核心模块就是秒计时器、分计时器和小时计时器。其他的功能主要围绕在计时器的周边添加,这样系统设计简单明了,并且功能容易扩展。
将模块分为:
分频模块:div50m,div500
计时模块:second,minute,hour
整点报时和闹铃模块:speaker,alarm,beep
译码和数码显示:seltime,display
3.总体框图
(1).设计的时钟的系统结构图(对外接口图)
(2).各模块连接图(逻辑划分方框图):
(3)设计的时钟的逻辑流程图
(4)逻辑图对应的MDS图
方框图
三.仿真波形及波形分析
1,秒计时器
仿真波形:
冲,同时秒从0开始继续计时;
波形分析:设置set设置时间有效时,使set-sec有效,则秒按照计时规律变化,在59秒的时候,不产生进位enmin。
2,分计时器仿真波形:
波形分析:可以看到在进位enmin为1的时候,分钟按照规律变为加1。当分钟变化到59的时候产生进位enhour。Enmin为0的时候,即秒还没有进位的时候,分钟保持不表。
3,小时计时器仿真波形:
波形分析:可以看到enhour为1的时候小时按照规律变化,到23时小时从0开始计数。Enhour 为0的时候小时不变化。
4,小时,分,秒总体仿真波形
波形分析:从图中可以看出置0信号置0,调时,调分信号为高电平分,时分别进1的情况。
5整点报时仿真波形:
6,12/24小时进制
波形分析:从图中可以看到每个24小时制对应的12小时制的数值和上下午显示。从仿真来看没有出现错误。
7,闹铃模块仿真波形:
波形分析:alarm_on为1的时候,当输入的时间和设置时间相等,则beep输出1,完成了闹铃的功能。
8,分时扫描模块仿真波形:
波形分析:可以看出在时钟周期下六个数码管分时输出有效,在大于300hz的频率下人眼会看到六个数码管持续稳定的点亮。
9,数码管显示
仿真波形:
10,轰鸣器仿真波形:
波形分析:可以看到a 和b 任一个为1,则输出bp 为1
四.源程序
1.分频模块
use ieee.std_logic_unsigned.all;
entity div50m is
port(clk_in : in std_logic; --时钟输入
clk_out : out std_logic); --时钟输出
end;
architecture a of div50m is
signal cnt : integer range 0 to 24999999;
signal clk_tmp : std_logic;
begin
process(clk_in)
begin
if (clk_in'event and clk_in='1') then
if cnt=24999999 then
cnt<=0;
clk_tmp<= not clk_tmp;
else
cnt<=cnt+1;
end if;
end if;
end process;
clk_out<=clk_tmp;
end;
--div500将50mhz的时钟分频到500hz,供分时扫描模块使用library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div500 is
port(clk_in : in std_logic;
clk_out : out std_logic);
end;
architecture b of div500 is
signal cnt : integer range 0 to 49999;
signal clk_tmp : std_logic;
begin
process(clk_in)
begin
if (clk_in'event and clk_in='1') then
if cnt=49999 then
cnt<=0;