安阳工学院电子信息与电气工程学院。
eda技术》课程大作业。
题目: 数字时钟的设计。
班级: 13级电气自动化技术一班。
评分标准:1、 设计和结论正确,分析清晰合理40%
2、 大作业报告阐述清晰,格式规范30%
3、 陈述清晰,回答问题正确30%
大作业成绩。
总成绩=t+j*40%+(j+j*(x-1/n))*30%
t为回答问题成绩,j为教师成绩,x为学生自评分值,n为小组人数。
数字时钟的设计。
1. 设计任务。
设计一款数字电子时钟,具体要求如下:
1:输入条件:50mhz时钟,2个输入按键;
2:功能实现:具有显示时、分、秒功能;采用led数码管显示;具有对时功能,对时精确到分,对时采用按键作为输入信号。
2. 设计方案。
要实现一个数字时钟小系统,整个系统由主要模块电路模块和外部输入输出以及显示模块组成。首先分别实现单个模块的功能,然后再通过级联组合的方式实现对整个系统的设计。
其中,主要模块有六个。它包括脉冲信号产生模块、时间计数模块(计数模块又分为分计数模块、秒计数模块、时计数模块)、译码显示模块、复位模块、调节模块。各个模块先用eda技术中的vhdl语言编程**,再生成各个小模块的模拟元件,再元件例化,根据设计连接电路实现数字电子钟小系统。
通过分频,产生1hz的时钟信号;分别设计秒计时,分计时,时计时,秒计时用上面的时钟信号1hz产生,分计时也是60一清零,分计时的时钟用的是秒计时的进位信号,时计时用的是24一清零,clk是分的进位,显示模块用的是7段共阳数码管,用来显示数字。
具体的思想如下图1所示。
3. 方案实施。
1分频器模块。
1:模块说明:输入一个频率为50mhz的clk,利用计数器分出。
1khz的q1khz,500hz的q500hz,2hz的q2hz和1hz的q1hz。
2:源程序:
library ieee;
use use
entity fdiv is
port (clk: in std_logic
q1khz: buffer std_logic;
q500hz: buffer std_logic;
q2hz: buffer std_logic;
q1hz: out std_logic);
end fdiv ;
architecture bhv of fdiv is
begin
p1khz:process(clk)
variable cout:integer:=0;
begin
if clk'event and clk='1' then
cout:=cout+1
if cout<=25000 then q1khz<='0';
elsif cout<50000 then q1khz<='1';
else cout:=0
end if;
end process;
p500hz:process(q1khz
variable cout:integer:=0;
beginif q1khz'event 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;
beginif q500hz'event and q500hz='1' then
cout:=cout+1;
if cout<=125 then q2hz<='0';
elsif cout<250 then q2hz<='1';
else cout:=0;
end if;
end if;
end process;
p1hz:process(q2hz)
variable cout:integer:=0;
beginif q2hz'event and q2hz='1' then
cout:=cout+1;
if cout=1 then q1hz<='0';
elsif cout=2 then cout:=0;q1hz<='1';
end if;
end if;
end process;
end bhv;
2秒计时模块。
1:模块说明:通过分频获得的时钟信号,便是1s,秒的低位到达9是向高位进1,高位到达6是向上进1,并清零。
2:源程序。
library ieee;
use use
entity second is
port(clk,reset:in std_logic;
sec1,sec2:out std_logic_vector(3 downto 0);
carry:out std_logic);
end second;
architecture rt1 of second is
signal sec1_t,sec2_t:std_logic_vector(3 downto 0);
beginprocess(clk,reset)
beginif reset='1'then
sec1_t<="0000";
sec2_t<="0000";
elsif clk'event and clk='1'then
if sec1_t="1001"then
sec1_t<="0000";
if sec2_t="0101"then
sec2_t<="0000";
elsesec2_t<=sec2_t+1;
end if;
elsesec1_t<=sec1_t+1;
end if;
if sec1_t="1001" and sec2_t="0101"then
carry<='1';
elsecarry<='0';
end if;
end if;
end process;
sec1<=sec1_t;
sec2<=sec2_t;
end rt1;
3分计时模块。
1:模块说明:这里用的时钟信号的来自秒的进位,即进一位就是1min,分的低位到达9是向高位进1并清零,高位到达6时向上进1,到达5时等待进位后清零。.
2:源程序。
library ieee;
use use
entity minute is
port(clk,reset:in std_logic;
min1,min2:out std_logic_vector(3 downto 0);
carry:out std_logic);
end second;
architecture rt1 of minute is
signal min1_t,min2_t:std_logic_vector(3 downto 0);
beginprocess(clk,reset)
beginif reset='1'then
min1_t<="0000";
min2_t<="0000";
elsif clk'event and clk='1'then
if min1_t="1001"then
min1_t<="0000";
if min2_t="0101"then
min2_t<="0000";
elsemin2_t<=min2_t+1;
end if;
elsemin1_t<=min1_t+1;
end if;
if min1_t="1001" and min2_t="0101"then
carry<='1';
elsecarry<='0';
end if;
end if;
end process;
min1<=min1_t;
min2<=min2_t;
end rt1;
4时计时模块。
1:模块说明:这里的时钟信号时来自上面的分的进位,上面进一位便表示1h,时的低位到达9是向高位进1并清零,高位到达2等待进位后清零,这里当高位到达2时,低位为3即将到4时开始进位。
2:源程序。
library ieee;
use use
entity hour is
port (clk,reset:in std_logic;
hour1,hour2:out std_logic_vector(3 downto 0));
end hour;
architecture rt1 of hour is
signal hour1_t,hour2_t:std_logic_vector(3 downto 0);
EDA数字时钟课程设计
一 课程设计的背景与目的。全面熟悉 掌握vhdl语言基本知识,掌握利用vhdl语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。1 ed...
EDA课程设计 数字时钟
hefei university eda课程综述。题目 eda课程综述 专业 09通信 2 班 姓名唐吉祥。学号 0905072035 指导老师查长军。前言。随着基于pld的eda技术的发展和应用领域的扩大和深入,eda技术在电子信息 通信 自动控制及计算机应用领域的重要性日益提高。作为现在的大学生...
EDA课程设计数字时钟
数字时钟的设计。一实验目的。1 掌握vhdl语言的基本运用。2 掌握max plusii的简单操作并会使用eda实验箱。3 掌握一个基本eda实验的操作。二功能设计。1 有时 分 秒计数显示功能,小时为24进制,分钟和秒为60进制。2 设置复位 清零等功能。3 有校时功能,可以分别对时及分进行单独校...