《数字电路课程设计--数字钟的设计与实现》由会员分享,可在线阅读,更多相关《数字电路课程设计--数字钟的设计与实现(13页珍藏版)》请在金锄头文库上搜索。
1、学 号 数字电路课程设计设 计 说 明 书数字钟的设计与实现起止日期: 2013 年 6 月 25 日 至 2013 年 6 月 28 日学 生 姓 名班 级成 绩指 导 教 师 (签 字 )计算机与信息工程学院2013 年 6 月 28 日1目录一、引言. . . . 2二、实验要求. . .2三、实验目的. . .2四、实验内容. . . 2五、实验原理. . . 2六、实验连线. . . 3七、数字钟 VHDL文本. . . 3八、总结. . .1121、引言数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站,码头、办公室等公共场所,成为人们日常生活中不可少
2、的必需品,由于数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、校时自动打铃、时间程序自动控制、定是广播、自动启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用有着非常现实的意义。二、实验要求1具有时,分,秒,计数显示功能,以24小时循环计时。2具有清零,调节小时、分钟功能。3. 具有整点报时功能,整点报时的同时 LED灯花样显示。三、实验目的1掌握多位计数器相连的设计方法。2掌握十进制、六
3、进制、二十四进制计数器的设计方法。3巩固多位共阴极扫描显示数码管的驱动及编码。4掌握扬声器的驱动。5LED 灯的花样显示。6. 掌握 CPLD技术的层次化设计方法。四 、实验内容1.根据电路持点,可在教师指导下用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,让几个学生分做和调试其中之一,然后再将各模块合起来联试,以培养学生之间的合作精神,同时加深层次化设计概念。2.了解软件的元件管理深层含义,以及模块元件之间的连接概念。了解如何融合不同目录下的统一设计。模块说明:各种进制的计数及时钟控制模块(10 进制、6 进制、24 进制);扫描分时显示,译码模块;3彩灯,扬
4、声器编码模块;各模块都是由 VHDL 语言编写。数字钟各模块连接示意图五、实验原理1时钟计数: 秒60 进制 BCD 码计数;分60 进制 BCDD 码计数;时24 进制 BCDD 码计数;整个计数器有清零,调分,调时功能,在接近整数时间能提供报时信号。2具有驱动 8 位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出,编码和扫描部分可参照前面实验。3扬声器在整点时有报时驱动信号产生。4. LED 灯在整点时有花样显示信号产生。4六、 实验连线输入接口:1 代表清零,调时,调分信号 RESET,SETHOUR ,SETMIN 的管脚分别已经连接按键开关。2 代表计数时钟信号 CLK 和扫
5、描时钟信号 CKDSP 的管脚分别已经同 1HZ 时钟源和 32HZ(或更高)时钟源相连。3 Reset 键为低电平复位,已经接上。输出接口:1 代表扫描显示的驱动信号管脚 SCAN2,SCAN1,SCAN0 已经接到实验箱上的SCAN0SCAN2,AG 接八位数码管显示模块的 AG。2 代表花样 LED 灯显示的信号管脚 LAMP0LAMP2 已经同 3 个 LED 灯相连。代表到时 LED 灯闪烁提示的 ENHOUR 接 LED 灯。SETHOUR、SETMIN 分别对应 CPU 板上的 PB0、PB1 (有些 CPU 板对应的标识是 SW1、SW2)RESET 对应 CPU 板上的 RE
6、SETCLKDSP 对应 CPU 板上的 50MHz 固定晶振输入。LAMP 对应 IO9-IO11。CLK,对应 IO3。功能选择位 M3.0状态为 0010,左端 8 个数码管,低 8 位为 7 位段加小数点选取位,高 8 位为 8 个数码管 com 端选取,即如果要选取数码管 0,则发送总线值为:1111 1110 1111 1111,如要选取数码管 1,则发送总线值为:1111 1101 1111 1111,此时所选数码管7 段和 DP 位将全部亮。实验接线:用导线连接 IO3 与 ADJ_CLK,调整 SW17-SW20,使输出频率为 1Hz;IO9-IO11 接到 L1-L3 上;
7、 IO5 接到蜂鸣器的 BUZZER 控制端口。按下 PB0、PB1 (有些 CPU 板对应的标识是 SW1、SW2)可以调整时钟,分钟。七、数字钟 VHDL文本 本设计全部采用 VHDL文本描述,所有文本存放在同一个工作文件夹中。5可先录入底层文件,把某个底层文件设为当时的顶层,保存、编译、仿真、退出;再录入另一个底层文件;这样把所有底层文件一一录入;最后录入顶层文件,并保存、编译、仿真,再下载顶层文件到器件实现硬件功能。7.1、顶层文本(clock_top.vhd)library ieee;use ieee.std_logic_1164.all;entity clock_top ispor
8、t(clk,reset,setmin,sethour,clkdsp:in std_logic;speaker:out std_logic;lamp:out std_logic_vector(2 downto 0);sel:out std_logic_vector(2 downto 0);a,b,c,d,e,f,g,dpout:out std_logic);end clock_top;architecture a of clock_top isCOMPONENT secondPORT(clk,reset,setmin:IN STD_LOGIC;daout:out std_logic_vector
9、(6 downto 0);enmin:OUT STD_LOGIC);END COMPONENT;COMPONENT minutePORT(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END COMPONENT;COMPONENT hourport(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END COMPONENT;COMPONENT alertPORT(clk:IN
10、 STD_LOGIC;dain:in std_logic_vector(6 downto 0);lamp:out std_logic_vector(2 downto 0);speak:OUT STD_LOGIC);END COMPONENT;COMPONENT seltimePORT(clk1,reset:IN STD_LOGIC;sec,min:in std_logic_vector(6 downto 0);hour:in std_logic_vector(5 downto 0);6dp:out std_logic;daout:out std_logic_vector(3 downto 0)
11、;sel:OUT STD_LOGIC_vector(2 downto 0);END COMPONENT;COMPONENT deledPORT(num:IN STD_LOGIC_vector(3 downto 0);led:out std_logic_vector(6 downto 0);END COMPONENT;signal enmin_re,enhour_re:std_logic;signal second_daout,minute_daout:std_logic_vector(6 downto 0);signal hour_daout:std_logic_vector(5 downto
12、 0);signal seltime_daout:std_logic_vector(3 downto 0);signal ledout:std_logic_vector(6 downto 0);beginareset,clk=clk,setmin=setmin,enmin=enmin_re,daout=second_daout);u2:minute port map(clk=enmin_re,clk1=clk,reset=reset,sethour=sethour,enhour=enhour_re,daout=minute_daout);u3:hour port map(clk=enhour_
13、re,reset=reset,daout=hour_daout);u4:alert port map(clk=clk,dain=minute_daout,speak=speaker,lamp=lamp);u5:seltime port map(clk=clkdsp,reset=reset,sec=second_daout,min=minute_daout,hour=hour_daout,daout=seltime_daout,dp=dpout,sel=sel);7u6:deled port map(num=seltime_daout,led=ledout);end a;7.2、秒计数器(sec
14、ond.vhd) 为底层文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;BEGINdaout= 101) thencount daout daout(3) daout daout(3) daout daout(3 downto 2) = 00;11daout(1 downto 0) = hour(5 downto 4);end case;end process;end fun;八、总结 在同学帮助下,我终于把数字钟做出来,能够成功地实现计数和校时校分的功能。通过此次课程设计让我明白了理论是实践的基础,实践让自己更好地去掌握理论。让我懂得了做事