EDA课程设计数字时钟

发布 2022-09-30 21:58:28 阅读 7991

数字时钟的设计。

一实验目的。

1)掌握vhdl语言的基本运用。

2)掌握max+plusii的简单操作并会使用eda实验箱。

3)掌握一个基本eda实验的操作。

二功能设计。

1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制。

2)设置复位、清零等功能。

3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。

4)设置调试模式和计时两个模式,分别实现计时和调时功能,通过设置任意时间实现闹铃功能。

三系统设计方案概述及工作原理。

根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。

1)首先**程序进行复位清零操作,电子钟从00:00:00计时开始。md2[1]可以调整时钟的小时部分, md2[2]可以调整分钟,步进为1。

2)由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1hz,这里取100hz。clk端连接外部10hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。

3)用6位数码管分别显示“时”、“分”、“秒”,通过dout( 6 downto 0 )上的信号来点亮指定的led七段显示数码管。

4)通过对md1按键高低电平的控制可以进入时钟的另一个调时模式,调试模式和计时模式是分开互不影响的。然后再通过对md2[1]和md2[2]对时钟进行时间设定。等到计时到达设置时间时,实现打铃功能。

顶层设计分析:

对于电子钟的设计,这里将采用自顶向下的设计方法进行设计,因此首先需要进行电子钟的顶层设计。本节将首先介绍电子钟的系统结构和模块划分,然后设计出顶层vhdl设计程序。

根据电子钟的设计要求、工作原理和设计方案, 整个模块的接口如下:

1 时钟分频部分。

1) 复位开关信号reset:输入信号。

2) 外部时钟信号clk:输入信号。

3) 内部计时时钟信号clk1:输入信号。

2 计时部分。

1) 复位关信号reset:输入信号。

3) 小时十位信号hou2:输出信号。

4) 小时个位信号hou1:输出信号。

5) 分十位信号min2:输出信号。

6) 分个位信号min1:输出信号。

7) 秒十位信号sec2:输出信号。

8) 秒个位信号sec1:输出信号。

3 按键部分。

1) 复位开关信号reset:输入信号。

2) 时调整按键md2[1]:输入信号。

3) 分调整按键md2[2]:输入信号。

4) 小时十位信号hou2:输出信号。

5) 小时个位信号hou1:输出信号。

6) 分十位信号min2:输出信号。

7) 分个位信号min1:输出信号。

4 显示部分。

1) 外部时钟信号clk:输入信号。

2) 小时十位信号hou2:输入信号。

3) 小时个位信号hou1:输入信号。

4) 分十位信号min2:输入信号。

5) 分个位信号min1:输入信号。

6) 秒十位信号sec2:输入信号。

7) 秒个位信号sec1:输入信号。

8) led七段显示数码管的选通信号dout:输出信号。

5 调时部分。

1) 调时开关md1

2) 时调整按键md2[1]:输入信号。

3) 分调整按键md2[2]:输入信号。

四各部分功能分析。

1)计数部分由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计数。其vhdl源程序相差不大由于篇幅有限,这里我们以分计数的实现为例。程序如下:

分钟十位。m110:process(clk,min2,sec1,sec2,md1,md2)

beginif clk'event and clk='1' then

if (min1="0101" and min2="1001") and (sec1="0101" and sec2="1001") then

min1<="0000";

elsif min1="0101"and min2="1001"and (md1='0' and md2="00")then

min1<="0000";

elsif (min2="1001"and (sec1="0101" and sec2="1001"))or (min2="1001"and md1='0' and md2="00")then

min1<=min1+1;

end if;

end if;--end if;

end process m110;

分钟个位。m220:process(clk,sec1,sec2,md1,md2)

beginif clk'event and clk='1' then

if min2="1001"and (sec1="0101" and sec2="1001")then

min2<="0000";

elsif min2="1001"and (md1='0' and md2="00")then

min2<="0000";

else if (sec1="0101" and sec2="1001") or(md1='0' and md2="00")then

min2<=min2+1;

end if;

end if;end if;

end process m220;

2)多路选择控制。

多路选择控制模块中扫描控制电路产生扫描信号一方面控制6个七段显示器每次只点亮一个七段显示器;另一方面同时控制6×1多路选择器输出相应的显示数字。**见附录。

3)显示译码模块的设计。

该模块描述了一个共阴极数码管显示驱动电路,其输入为选择控制模块的输出,输出信号分别接在数码管的的7个段。例如当输入为‘0’时,输出就为“”,数码管显示0。**见附录。

4)各模块的编译、**。

各模块设计完成后,就要对其进行功能**。选择实验箱上对应的芯片。打开max+plusii,选择菜单file/new命令,进入出现对话框选择中选择“text editor file”选项,即进入文本编辑方式新建一个工程。

在编译之前要此工程设置为当前工程。若没有错误则编译通过。新建**文件,输入保存。

这里以秒模块,在编译完之后生成一个模块,把各符号文件按照逻辑功能连接起来。

5)程序**至芯片。

1)点击主菜单assign/pin/location/chip进行芯片脚位设置。将实体定义的端口名字和**芯片的管脚进行具体对应。最后再进行一次编译,这时系统将产生可以向epfiokio**的文件。

将带芯片的实验板通过**电缆与计算机并口相连,然后给实验板通电。打开**窗口选择**方式、**器件型号最后点击configure按钮将程序写入芯片中。连接外围器件即可工作。

五时钟创新点。

这次eda通过md1控制计时和调时两个模式之间的转换。所加**如下:

sethour2:process(clk,md1,md2,seth1小时部分**。

beginif clk'event and clk='1' then

if (seth1="0010"and seth2="0011")or seth2="1001"then

seth2<="0000";

elsif md1='1' and md2="00" then

seth2<=seth2+1;

end if;

end if;

end process sethour2;

setmin2:process(clk,md1,md2分钟部分**。

beginif clk'event and clk='1'then

if setm2="1001"then

setm2<="0000";

elsif md1='1' and md2="01"then

setm2<=setm2+1;

end if;

end if;

end process setmin2;

if md1='0' then计时时间显示和设置模式。

h1<=hou1;h2<=hou2;

m1<=min1;m2<=min2;

s1<=sec1;s2<=sec2;

else闹铃时间现实和设置模式。

h1<=seth1;h2<=seth2;

m1<=setm1;m2<=setm2;

s1<="1111";s2<="1111";

end if;

end process disp;

通过md1的高低电平控制实现计时模式和调时模式的转换。高电平为调试模式,低电平为正常计时模式。

附录:数字时钟的vhdl**。

library ieee;

use use

entity szz is

port(clk:in std_logic;

clk1:in std_logic;

md1:in std_logic;

md2:in std_logic_vector(1 downto 0);

speak:out std_logic;

dout:out std_logic_vector(6 downto 0);

selout:out std_logic_vector(2 downto 0));

end szz;

architecture one of szz is

signal sel:std_logic_vector(2 downto 0);

signal hou1:std_logic_vector(3 downto 0);

signal hou2:std_logic_vector(3 downto 0);

signal min1:std_logic_vector(3 downto 0);

signal min2:std_logic_vector(3 downto 0);

signal seth1:std_logic_vector(3 downto 0);

signal seth2:std_logic_vector(3 downto 0);

signal setm1:std_logic_vector(3 downto 0);

signal setm2:std_logic_vector(3 downto 0);

signal sec1:std_logic_vector(3 downto 0);

signal sec2:std_logic_vector(3 downto 0);

signal h1:std_logic_vector(3 downto 0);

signal h2:std_logic_vector(3 downto 0);

signal m1:std_logic_vector(3 downto 0);

signal m2:std_logic_vector(3 downto 0);

EDA数字时钟课程设计

一 课程设计的背景与目的。全面熟悉 掌握vhdl语言基本知识,掌握利用vhdl语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。1 ed...

EDA课程设计 数字时钟

hefei university eda课程综述。题目 eda课程综述 专业 09通信 2 班 姓名唐吉祥。学号 0905072035 指导老师查长军。前言。随着基于pld的eda技术的发展和应用领域的扩大和深入,eda技术在电子信息 通信 自动控制及计算机应用领域的重要性日益提高。作为现在的大学生...

EDA课程设计数字秒表

课程设计。题目数字秒表设计 院系信息工程学院 班级 姓名 指导教师。系统设计要求。课程设计。第1章 系统设计要求3 第2章 实验目的3 第3章 实验原理3 第4章 系统设计方案3 第5章 主要vhdl源程序4 1 十进制计数器的vhdl源程序4 2 六进制计数器的vhdl源程序5 3 蜂鸣器的vhd...