当前位置:文档之家› EDA课程设计报告

EDA课程设计报告

课 程 设 计课程名称 EDA 技术 课题名称 电子时钟的设计 专 业 电子技术 班 级 学 号 姓 名指导教师 陈意军2012 年 6 月 23 日湖南工程学院课程设计任务书课程名称:eda技术题目:多功能电子钟的设计专业班级:电子科学与技术学生姓名:指导老师:陈意军审批:任务书下达期2012年6 月10 日设计完成日期2012年6 月23 日目录一引言 (1)二设计目的及总体方框图 (1)三电子时钟功能 (1)四电子时钟设计 (2)4.1设计思路 (2)4.2电子时钟各个模块的设计 (2)4.2.1秒计时器的设计 (2)4.2.2分计时器的设计 (4)4.2.3时计时器的设计 (5)4.2.4 7段译码器的设计 (8)4.2.5 整点报时器的设计 (9)五电子时钟顶层电路图 (11)六系统仿真波形 (11)七硬件测试及引脚的锁定 (12)八设计心得与体会 (13)一引言EDA技术在电子设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字时钟,它的计时周期为24小时,显示的最大时间为23时59分59秒,另外还具有校时功能和整点报时功能。

总的程序由5个模块组成,分别为秒计时器、分计时器、时计时器、7段显示译码器和整点报时器。

二设计目的及总体方框图此次设计的主要目的是学会使用quartus软件,掌握用VHDL语言设计编写源程序,并要求下载到实验箱实现所实现电子时钟的各项功能。

通过这次设计,让我们加深对理论知识的理解,培养理论联系实际的能力,提高分析问题和解决问题的能力总体方框图三电子时钟功能(1)计时功能:这是电子时钟的基本功能,每隔一秒钟计时一次,并在显示屏上显示当时时间。

(2)校时功能:能设置实时时间作为数字钟的当前时间,具有小时、分钟、秒钟的校准时间功能。

(3)整点报时功能:每逢整点,整点报时器自动报时。

四电子时钟设计4.1 设计思路该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时、重置时间。

其中计时模块由3部分构成:秒计时器、分计时器和时计时器。

秒计时器和分计时器都是由60进制的计数器构成的,具有清0、置数和计数功能。

当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。

co为计时器的进位信号,作为下一级的输入信号。

时计时器是由一个24进制的计数器构成的,具有清0、置数和计数功能。

当清0信号为低电平时,计时器清0;当置数信号为高电平时,计时器置数;clk为脉冲信号,ci为输入信号。

7段数码显示模块的功能是在显示屏上显示当时时间。

1对应的显示代码为0110000,2对应的显示代码为1101101,3对应的显示代码为1111001,4对应的显示代码为0110011,5对应的显示代码为1011011,6对应的显示代码为1011111,7对应的显示代码为1110000,8对应的显示代码为1111111,9对应的显示代码为1111011,0对应的显示代码为1111110。

报时模块的功能是当整点时,报时器输出高电平,并且持续1分钟。

4.2 电子时钟各模块的设计4.2.1 秒计时器的设计(1)秒计时器源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport(clk,ci,nreset,load:in std_logic;d:in std_logic_vector(7 downto 0);co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end second;architecture behave of second isbeginco<='1'when(qh="0101"and ql="1001"and ci='1')else'0'; process(clk,nreset)beginif(nreset='0')thenqh<="0000";ql<="0000";elsif(clk'event and clk='1')thenif(load='1')thenqh<=d(7 downto 4);ql<=d(3 downto 0);elsif(ci='1')thenif(ql=9)thenql<="0000";if(qh=5)thenqh<="0000";elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;end if;end process;end behave;(2)秒计时器仿真波形在秒计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,秒重置端(d)置数值为56秒,进行仿真,产生如下波形:图1 秒计时器仿真波形图由上述波形可以清楚的看到:当清0信号(reset)无效时,秒计时器置数,从50秒开始计数,到59秒时回到0,并且从ensec输出一个高电平。

(3)秒计时器原理图图2 秒计时器原理图4.2.2 分计时器的设计(1)分计时器源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,ci,nreset,load:in std_logic;d:in std_logic_vector(7 downto 0);co:out std_logic;qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0));end minute;architecture behave of minute isbeginco<='1'when(qh="0101"and ql="1001"and ci='1')else'0'; process(clk,nreset)beginif(nreset='0')thenqh<="0000";ql<="0000";elsif(clk'event and clk='1')thenif(load='1')thenqh<=d(7 downto 4);ql<=d(3 downto 0);elsif(ci='1')thenif(ql=9)thenql<="0000";if(qh=5)thenqh<="0000";elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;end if;end process;end behave;(2)分计时器仿真波形在分计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,分重置端(d)置数值为56分,进行仿真,产生如下波形:图3 分计时器仿真波形图(3)分计时器原理图图4 分计时器原理图4.2.3 时计时器的设计(1)时计时器源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hours isport(clk,ci,nreset,load:in std_logic;d:in std_logic_vector(7 downto 0);qh:buffer std_logic_vector(3 downto 0);ql:buffer std_logic_vector(3 downto 0)); end hours;architecture behave of hours isbeginprocess(clk,nreset)beginif(nreset='0')thenqh<="0000";ql<="0000";elsif(clk'event and clk='1')thenif(load='1')thenqh<=d(7 downto 4);ql<=d(3 downto 0);elsif(ci='1')thenif(qh="0010"and ql="0011")thenqh<="0000";ql<="0000";elsif(ql=9)thenql<="0000";if(qh=2)thenqh<="0000";elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;end if;end process;end behave;(2)时计时器仿真波形在时计时器的(clk)输入一个周期为(2us)的时钟信号;清0端(nreset)前面一小段为低电平,后面均为高电平;置数端(load)中间一段为高电平,其余均为低电平;将(ci)端置高电平,时重置端(d)置数值为21时,进行仿真,产生如下波形:图5 时计时器仿真波形图(3)时计时器原理图图6 时计时器原理图4.2.4 7段显示译码器的设计(1)7段显示译码器源程序library ieee;use ieee.std_logic_1164.all;entity decl7 isport(d:in std_logic_vector(3 downto 0);x:out std_logic_vector(6 downto 0));end decl7;architecture a of decl7 isbeginwith d selectx<="1111110"when"0000","0110000"when"0001","1101101"when"0010","1111001"when"0011","0110011"when"0100","1011011"when"0101","1011111"when"0110","1110000"when"0111","1111111"when"1000","1111011"when"1001","0000000"when others;end a;(2)7段显示译码器仿真波形设置d的值,使其分别为1、2、3……9,保存波形,进行仿真,其仿真波形如下:图7 7段显示译码器仿真波形图(3)7段显示译码器原理图图8 7段显示译码器原理图4.2.5 整点报时器的设计(1)整点报时器源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alarm isport(nreset:in std_logic;minh:in std_logic_vector(3 downto 0);minl:in std_logic_vector(3 downto 0);alarm:out std_logic);end;architecture behave of alarm isbeginalarm<='1' when (minh="0000" and minl="0000" and nreset='1')else'0';end behave;(2)整点报时器仿真波形清0端(reset)前面一小段为低电平,后面均为高电平;设置min的值,保存波形图,进行仿真,产生如下波形:图9 整点报时器仿真波形图(3)整点报时器原理图图10 整点报时器原理图五电子时钟顶层电路图图11 电子时钟顶层电路图六系统仿真波形图12 系统仿真波形图七硬件测试及引脚锁定将所设计的原理图进行引脚锁定,锁定后下载到实验箱检测。

相关主题