1、数字电路课程设计数字钟的设计与实现学 号 数字电路课程设计设计说明书数字钟的设计与实现起止日期: 2013年 6 月 25日 至 2013 年 6 月 28日学生姓名班级成绩指导教师(签字) 计算机与信息工程学院 2013年6月28 日一、引言. . . . 2二、实验要求. . .2三、实验目的. . .2四、实验内容. . . 2五、实验原理. . . 2六、实验连线. . . 3七、数字钟VHDL文本. . . 3八、总结. . .11一、引言 数字钟是采用数字电路实现对时、分、秒,数字显示的计时装置,广泛用于个人家庭,车站,码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于
2、数字集成电路的发展和石英振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,钟表的数字化给人们生产生活带来了极大地方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、校时自动打铃、时间程序自动控制、定是广播、自动启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用有着非常现实的意义。 二、实验要求1具有时,分,秒,计数显示功能,以24小时循环计时。2具有清零,调节小时、分钟功能。3. 具有整点报时功能,整点报时的同时LED灯花样显示。三、实验目的1掌握多位计数器相连的设计方法。2掌握十进制、六进制、二十四进
3、制计数器的设计方法。3巩固多位共阴极扫描显示数码管的驱动及编码。4掌握扬声器的驱动。5LED灯的花样显示。6. 掌握CPLD技术的层次化设计方法。四 、实验内容1.根据电路持点,可在教师指导下用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,让几个学生分做和调试其中之一,然后再将各模块合起来联试,以培养学生之间的合作精神,同时加深层次化设计概念。 2.了解软件的元件管理深层含义,以及模块元件之间的连接概念。了解如何融合不同目录下的统一设计。模块说明: 各种进制的计数及时钟控制模块(10进制、6进制、24进制); 扫描分时显示,译码模块; 彩灯,扬声器编码模块; 各
4、模块都是由VHDL语言编写。数字钟各模块连接示意图五、实验原理 1时钟计数: 秒60进制BCD码计数; 分60进制BCDD码计数; 时24进制BCDD码计数;整个计数器有清零,调分,调时功能,在接近整数时间能提供报时信号。2具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出,编码和扫描部分可参照前面实验。3扬声器在整点时有报时驱动信号产生。4. LED灯在整点时有花样显示信号产生。六、 实验连线 输入接口:1代表清零,调时,调分信号RESET,SETHOUR,SETMIN的管脚分别已经连接按键开关。2代表计数时钟信号CLK和扫描时钟信号CKDSP的管脚分别已经同1HZ时钟源和3
5、2HZ(或更高)时钟源相连。3Reset键为低电平复位,已经接上。 输出接口: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板上的RESET CLKDSP对应CPU板上的50MHz固定晶振输入。LAMP对应IO9-IO11。CLK,对应IO3。 功能选择位M
6、3.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、存放在同一个工作文件夹中。可先录入底层文件,把某个底层文件设为当时的顶层,保存、编译、仿真、退出;再录入另一个底层文件;这样把所有底层文件一一录入;最后录入顶层文件,并保存、编译、仿真,再下载顶层文件到器件实现硬件功能。 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 dow
8、nto 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:
9、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
10、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( nu
11、m: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_l
12、ogic_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
13、=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
14、);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
15、 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;co
16、unt=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
17、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
18、 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; e
19、nhour_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 IS PORT( clk,reset: IN STD_LOGIC; daout: out std_logic_vector (5 downto 0);END entity hour;ARCHITECTURE fun
20、 OF hour IS SIGNAL 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 coun
21、t = 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 IS PORT( clk1, reset: IN STD_LOGIC; sec,min : IN STD_LOGIC_VECTOR(6 downto 0)
22、; hour : in std_logic_vector (5 downto 0); daout : OUT STD_LOGIC_vector (3 downto 0); sel : out std_logic_vector ( 2 downto 0);END seltime;ARCHITECTURE fun OF seltime IS SIGNAL count: STD_LOGIC_vector ( 2 downto 0);BEGIN sel = count; process ( clk1,reset) begin if (reset =0) then count = 101) then c
23、ount = 000; else count daout daout(3) = 0; daout(2 downto 0) daout daout(3) = 0; daout(2 downto 0) daout daout(3 downto 2) = 00; daout(1 downto 0) = hour(5 downto 4); end case; end process;end fun;八、总结 在同学帮助下,我终于把数字钟做出来,能够成功地实现计数和校时校分的功能。通过此次课程设计让我明白了理论是实践的基础,实践让自己更好地去掌握理论。让我懂得了做事要有锲而不舍的精神,朝着自己的目标奋斗
24、,坚持不懈 ,以后我要脚踏实地一步一个脚印的去学习理论与实践,多动手,多思考,多反思。计算机与信息工程学院课程设计成绩单课程名称: 指导教师: 姓名性别学号班级综合成绩成绩等级程序运行情况(占总成绩20%)能正确运行 基本能正确运行 能运行但结果不完善(20分) (15分) (10分)程序功能的完善程度(占总成绩10%)完善 基本完善 不完善(10分) (8分) (5分)程序结构的合理性(占总成绩10%)合理 基本合理 不太合理(10分) (8分) (5分)对问题的答辩情况(占总成绩40%)概念正确有创新 能正确回答所有问题 基本能正确回答(40分) (35分) (30分)部分问题回答概念不清晰(20分)学生的工作态度与独立工作能力(占总成绩10%)工作态度认真能独立完成任务 工作态度认真但独立性较差(10分) (8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性(占总成绩10%)符合规范 基本符合规范 规范性较差(10分) (8分) (5分)优秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 计算机与信息工程学院计算机与信息技术实验中心制表
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1