数字电路课程设计--数字钟的设计与实现.doc_第1页
数字电路课程设计--数字钟的设计与实现.doc_第2页
数字电路课程设计--数字钟的设计与实现.doc_第3页
数字电路课程设计--数字钟的设计与实现.doc_第4页
数字电路课程设计--数字钟的设计与实现.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学 号 数字电路课程设计设计说明书数字钟的设计与实现起止日期: 2013年 6 月 25日 至 2013 年 6 月 28日学生姓名班级成绩指导教师(签字) 计算机与信息工程学院 2013年6月28 日目录一、引言. . . . 2二、实验要求. . .2三、实验目的. . .2四、实验内容. . . 2五、实验原理. . . 2六、实验连线. . . 3七、数字钟VHDL文本. . . 3八、总结. . .111、 引言 数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站,码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、校时自动打铃、时间程序自动控制、定是广播、自动启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用有着非常现实的意义。 二、实验要求1具有时,分,秒,计数显示功能,以24小时循环计时。2具有清零,调节小时、分钟功能。3. 具有整点报时功能,整点报时的同时LED灯花样显示。三、实验目的1掌握多位计数器相连的设计方法。2掌握十进制、六进制、二十四进制计数器的设计方法。3巩固多位共阴极扫描显示数码管的驱动及编码。4掌握扬声器的驱动。5LED灯的花样显示。6. 掌握CPLD技术的层次化设计方法。四 、实验内容1.根据电路持点,可在教师指导下用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,让几个学生分做和调试其中之一,然后再将各模块合起来联试,以培养学生之间的合作精神,同时加深层次化设计概念。 2.了解软件的元件管理深层含义,以及模块元件之间的连接概念。了解如何融合不同目录下的统一设计。模块说明:各种进制的计数及时钟控制模块(10进制、6进制、24进制);扫描分时显示,译码模块;彩灯,扬声器编码模块; 各模块都是由VHDL语言编写。数字钟各模块连接示意图五、实验原理 1时钟计数:秒60进制BCD码计数;分60进制BCDD码计数;时24进制BCDD码计数;整个计数器有清零,调分,调时功能,在接近整数时间能提供报时信号。2具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出,编码和扫描部分可参照前面实验。3扬声器在整点时有报时驱动信号产生。4. LED灯在整点时有花样显示信号产生。六、 实验连线输入接口:1 代表清零,调时,调分信号RESET,SETHOUR,SETMIN的管脚分别已经连接按键开关。2 代表计数时钟信号CLK和扫描时钟信号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板上的RESETCLKDSP对应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上; IO5接到蜂鸣器的BUZZER控制端口。 按下PB0、PB1(有些CPU板对应的标识是SW1、SW2)可以调整时钟,分钟。七、数字钟VHDL文本 本设计全部采用VHDL文本描述,所有文本存放在同一个工作文件夹中。可先录入底层文件,把某个底层文件设为当时的顶层,保存、编译、仿真、退出;再录入另一个底层文件;这样把所有底层文件一一录入;最后录入顶层文件,并保存、编译、仿真,再下载顶层文件到器件实现硬件功能。 7.1、顶层文本(clock_top.vhd)library ieee;use ieee.std_logic_1164.all;entity clock_top is port(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 second PORT( clk,reset,setmin:IN STD_LOGIC; daout:out std_logic_vector(6 downto 0); enmin:OUT STD_LOGIC);END COMPONENT;COMPONENT minute PORT( clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:out std_logic_vector(6 downto 0);END COMPONENT;COMPONENT hour port( clk,reset:IN STD_LOGIC; daout:out std_logic_vector(5 downto 0);END COMPONENT;COMPONENT alert PORT( clk:IN 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 seltime PORT( clk1,reset:IN STD_LOGIC; sec,min:in std_logic_vector(6 downto 0); hour:in std_logic_vector(5 downto 0); dp:out std_logic; daout:out std_logic_vector(3 downto 0); sel:OUT STD_LOGIC_vector(2 downto 0);END COMPONENT;COMPONENT deled PORT( 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 0);signal seltime_daout:std_logic_vector(3 downto 0);signal ledout:std_logic_vector(6 downto 0);begina=ledout(6);b=ledout(5);c=ledout(4);d=ledout(3);e=ledout(2);f=ledout(1);greset, 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_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);u6:deled port map(num=seltime_daout, led=ledout);end a;7.2、秒计数器(second.vhd) 为底层文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second IS PORT( 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 IS SIGNAL count:STD_LOGIC_VECTOR(6 downto 0); SIGNAL enmin_1,enmin_2:STD_LOGIC;BEGIN daout=count; enmin_2=(enmin_1 or enmin_2); enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)begin if(reset=0)then count =0000000; elsif(clkevent and clk=1)then if(count(3 downto 0)=1001)then if(count=16#60#)then if(count=1011001)then enmin_1=1;count=0000000; else count=count+7; end if; else count=0000000; end if; elsif(count16#60#)then count=count+1; enmin_1=1after 100 ns; else count=0000000; end if; end if;end process;END fun;7.3分计数器(minute.vhd) 为底层文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute IS PORT( clk,clk1,reset,sethour:IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:out std_logic_vector (6 downto 0);END entity minute;ARCHITECTURE fun OF minute IS SIGNAL count:STD_LOGIC_VECTOR (6 downto 0); SIGNAL enhour_1,enhour_2:STD_LOGIC;BEGIN daout=count; enhour_2=(sethour and clk1); enhour=(enhour_1 and enhour_2);process(clk,reset,sethour) begin if(reset=0)then count=0000000; elsif(clk event and clk=1)then if(count(3 downto 0)=1001)then if(count16#16#)then if(count=1011001)then enhour_1=1; count=0000000;ELSE count=count+7; end if; else count=0000000; end if; elsif(count16#16#)then count=count+1; enhour_1=0after 100 ns; else count=0000000; end if; end if; end process; END fun; 7.4小时文本(hour.vhd) 为底层文本HOURLIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset: INSTD_LOGIC;daout: out std_logic_vector (5 downto 0);END entity hour;ARCHITECTURE fun OF hour ISSIGNAL count: STD_LOGIC_VECTOR( 5 downto 0);BEGIN daout = count; process ( clk,reset) begin if (reset=0) then count = 000000; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#23#) then count=count + 7; else count=000000; end if; elsif(count 16#23#) then count = count + 1; else count=000000; end if; end if; end process;END fun;7.5时间数据扫描分时选择模块文本(seltime.vhd) 为底层文本LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY seltime ISPORT(clk1, reset: INSTD_LOGIC;sec,min : INSTD_LOGIC_VECTOR(6 downto 0);hour : in std_logic_vector (5 downto 0);daout: OUTSTD_LOGIC_vector (3 downto 0);sel : out std_logic_vector ( 2 downto 0);END seltime;ARCHITECTURE fun OF seltime ISSIGNAL count: STD_LOGIC_vector ( 2 downto 0);BEGIN sel = count; process ( clk1,reset) begin if (reset =0) then count = 101) then count = 000; else count daout daout(3) = 0; daout(2 downto 0) daout da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论