1、陈文河 0858210103 南京理工大学 2011 03 061目 录摘要及关键字2ABSTRACT2一. 设计要求2二. 总体方案设计3 三.各子模块设计原理 31.计秒模块32.计分模块53.计时模块64.校准模块75.显示模陈文河 0858210103 南京理工大学 2011 03 062块96.报时模块127.分频模块138.去抖动模块15四. 硬件下载与测试161.硬件下载162.测试173.功能扩展17五.结论17参考文献18陈文河 0858210103 南京理工大学 2011 03 063数字电子钟的设计摘要及关键字: 数字电子钟是生活中最常用的电子设备之一,其主要功能是能够显
2、示时、分、秒实时信息,并能够方便地进行时、分、秒的初始值设置,以便时间校准。实现数字电子钟有很多方法,本课程是采用 VHDL 硬件语言的强大描述能力和 EDA工具的结合在电子设计领域来设计一个具有多功能的数字电子钟。关键字 : 数字电子钟 VHDL 硬件语言 EDA 工具ABSTRACT:Digital electric clock in life are the most commonly used one of the electronic equipment. Its main function is to display, minutes and seconds real-time i
3、nformation and can be easily when carried out, minutes and seconds, so that the initial value is set time calibration. There are many methods of design digital electric clock.This course is a powerful by VHDL hardware language describe ability and EDA tools in electronic design field with versatile
4、to design a digital electric clock .Key work: Digital electric clock VHDL hardware language EDA tools一 设计要求:1. 设计一个电子钟能够显示时,分,秒;24 小时循环显示。2. 电子钟有校时,校分,清零,保持和整点报时的功能,具体如下:(1) 数字钟最大计时显示 23:59:59 。(2) 在数字钟正常工作时可以对数字钟进行快速校时、校分,即拨动开关K1 可以对小时进行校正,拨动开关 K2 可以对分进行校正。陈文河 0858210103 南京理工大学 2011 03 064(3) 在数字中正
5、常工作情况下可以对其进行不断地复位,即拨动开关 K3 可以是时,分,秒显示回零。(4) 在数字钟正常工作时拨动开关 K4 可以使数字钟保持原有显示,停止计时。(5) 整点报时是要求数字钟在每小时整点到来前进行鸣叫,鸣叫频率是在59:53, 59:55, 59:57 为 1kHz,59:59 为 2kHz。3. 要求所有开关具有去抖动功能。利用开发工具 Quartus II 7.0 并结合硬件描述语言 VHDL,采用层次化的方法进行设计,要求设计层次清晰,合理;构成整个设计的功能可以采用原理图输入或文本输入法实现。4. 通过开发工具 Quartus II 7.0 对设计电路进行功能仿真。5. 将
6、仿真通过的逻辑电路下载到 EDA 试验系统,对其功能进行验证。二 总体方案设计:从设计要求可以对其进行层次化设计,将所要设计的多功能数字钟分层 6 个模块:(1)计时模块: 包括两个模 60 的计数器(计秒与计分)和一个模 24 的计数器(计时)。(2)清零,保持模块: 此模块功能是可以在计时模块直接嵌入即利用计数器的清零、保持 功能就可以实现。 (3)校准模块: 其对时、分进行校正。(4)显示模块: 将数字钟在数码管上显示。(5)整点报时模块: 由两部分组成,一部分选择报时时间(59:53, 59:55, 59:57,59:59),一部分选择报时频率(1kHz,2kHz)。(6)分频模块:
7、电子钟的激励源要求的是稳定 1Hz,而试验台提供 48MHz 的时钟,所以要设计一个分频器将 48MHz 进行分频得到 1Hz。(7) 防抖动模块:因为设计中有使用到开关,而对机械开关而言出现抖动现象 会导致系统误差甚至不能正常工作。所以在设计中要求有去抖动电路。将数字钟的各功能模块级联,生成顶层电路,实现总体设计要求,设计框图如下图所示:计时模块显示模块报时模块清零保持校时校分分频模块陈文河 0858210103 南京理工大学 2011 03 065三 各子模块设计原理:1. 计秒模块: 是一个模 60 的计数器,具有计时、保持、清零的功能。采用 VHDL硬件语言编写,程序代码如下:LIBR
8、ARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY second ISPORT( clk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);qout2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END second;ARCHITECTURE beha
9、v OF second ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tem2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF(en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=“0000“;tem2=“0000“;ELSIF(clkevent AND clk=1)THENIF tem1=“1001“ THENtem1=“0000“;IF tem2=“0101“ THENtem2=“0000“;co=1;ELSEtem2
10、=tem2+1;co=0;END IF;ELSEtem1=tem1+1;END IF;陈文河 0858210103 南京理工大学 2011 03 066END IF;qout1=tem1;qout2=tem2;END PROCESS;END behav;其仿真波形图如下:封装图为:clkrstenqout13.0qout23.0cosecondinst2. 计分模块:本质上是跟计秒模块一样,也是模 60 的计数器,具有计数、保持、清零功能。程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.AL
11、L;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY minute ISPORT( clk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);qout2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END minute;ARCHITECTURE behav OF minute ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tem2
12、: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGIN陈文河 0858210103 南京理工大学 2011 03 067IF (en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=“0000“;tem2=“0000“;ELSIF(clkevent AND clk=1)THENIF tem1=“1001“ THENtem1=“0000“;IF tem2=“0101“ THENtem2=“0000“;co=1;ELSEtem2=tem2+1;co=0;END IF;ELSEtem1=tem1
13、+1;END IF;END IF;qout1=tem1;qout2=tem2;END PROCESS;END behav;仿真波形图如下:封装图为:clkrstenqout13.0qout23.0cominuteinst3. 计时模块:是一个模 24 的计数器,VHDL 的程序代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;陈文河 0858210103 南京理工大学 2011 03 068USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY hour ISPORT( c
14、lk: IN STD_LOGIC;rst: IN STD_LOGIC;en: IN STD_LOGIC;qout1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);qout2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC);END hour;ARCHITECTURE behav OF hour ISSIGNAL tem1: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL tem2: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINI
15、F (en=1)THENtem1=tem1;tem2=tem2;ELSIF(rst=0)THENtem1=“0000“;tem2=“0000“;ELSIF(clkevent AND clk=1)THENIF (tem2=“0010“ AND tem1=“0011“) THENtem1=“0000“;tem2=“0000“;co=1;ELSEco=0;IF(tem1=“1001“)THEN tem1=“0000“;tem2=tem2+1;ELSEtem1=tem1+1;END IF;END IF;END IF;qout1=tem1;qout2=tem2;END PROCESS;END behav
16、;仿真波形图如下:陈文河 0858210103 南京理工大学 2011 03 069封装图为:clkrstenqout13.0qout23.0cohourinst4. 校准模块:在正常情况下,分的输入时钟 clk 信号是由秒的进位输出给的,而时的输入时钟 clk 信号由分进位输出信号给的。当要进行校准时可以直接将2Hz 的时钟信号(从分频器直接分出来)送到分或时的输入时钟 clk 端上,这样就可以快速的进行对电子钟的分或时校准。因此采用 VHDL 语言实现,程序代码如下:(1)校时:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LO
17、GIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jiaoshi ISPORT( clk: IN STD_LOGIC;clk_2H: IN STD_LOGIC;key: IN STD_LOGIC;en: OUT STD_LOGIC;co: OUT STD_LOGIC);END jiaoshi;ARCHITECTURE behav OF jiaoshi ISSIGNAL tem: STD_LOGIC;SIGNAL x: STD_LOGIC;BEGINPROCESS(key)BEGINIF(key=0) THENx=0;tem=clk;陈文河
18、 0858210103 南京理工大学 2011 03 0610ELSEx=1;tem=clk_2H;END IF;co=tem;en=x;END PROCESS;END behav;其封装图为:clkclk_2Hkeyencojiaoshiinst1(2)校分:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY jiaofen ISPORT( clk: IN STD_LOGIC;clk_2H: IN STD_LOGIC;key: IN STD_LOGIC;co: OUT STD_LOGIC);END jiaofen;ARCHITECTURE behav OF jiaofen ISSIGNAL tem: STD_LOGIC;BEGINPROCESS(key)BEGINIF(key=0) THENtem=clk;ELSEtem=clk_2H;END IF;co=tem;END PROCESS;END behav;其封装图为:clkclk_2Hkeycojiaofeninst2