数电设计数字钟基于QUARTUS完整版
数电设计数字钟基于QUARTUS
大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):电信学部专业:电子与通信工程班级:学生姓名: ***************学号:***************完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2)具有手动校时校分功能3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码管显示。
从59分50秒开始,数字钟进入整点报时功能。
每隔两秒提示一次。
(本设计中以两个LED灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。
可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。
将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。
3.多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED灯连续提示一分钟。
基于QuartusⅡ可校时电子钟的设计
工 业 技 术114科技资讯 SCIENCE & TECHNOLOGY INFORMATIONDOI:10.16661/ki.1672-3791.2018.09.114基于QuartusⅡ可校时电子钟的设计孙浩程(衡水市第十三中学 河北衡水 053000)摘 要:本文介绍了基于Altera公司开发的QuartusⅡEDA软件,该软件功能强大且界面友好,在此基础上利用原理图和VHDL语言设计可校时的电子钟 。
QuartusⅡ软件具有极其丰富的功能单元,可搭接的灵活性能够满足具有复杂性和创造性的理想开发平台, 本文利用QuartusⅡEDA软件设计可校时的电子钟,达到了预期的开发设计效果。
该电子钟具有计时、清零、校时、报时等基本功能。
关键词:QuartusⅡ EDA 可校时 电子钟 中图分类号:TN70 文献标识码:A 文章编号:1672-3791(2018)03(c)-0114-02QuartusⅡ是Altera公司的综合性PLD /FPGA开发软件,界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
支持原理图、VHDL、Verilog HDL以及AHDL(A1tera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
对于CPLD、FPGA、SOC和HardCopy ASIC设计,Altera Quartus Ⅱ软件在性能和效能上是业界首屈一指的软件[1-2]。
本文采用Quartus Ⅱ来设计可校时的电子钟。
1 设计原理本多功能数字钟具有的功能有:显示时—分—秒、整点报时,可校准。
根据钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1s,当秒从59s跳转到00s时,分钟增加1分,分钟在59分跳转到00分时,小时增加1小时,小时的范围是从0~23时。
基于-Quartus多功能数字钟设计
基于Quartus的多功能数字钟设计该实验是利用QuartusII软件设计一个数字钟,进展试验设计和仿真调试,实现了计时,校时,校分,清零,保持和整点报时等多种根本功能,并下载到SmartSOPC实验系统中进展调试和验证。
此外还添加了显示星期,闹钟设定,秒表和彩铃等附加功能,使得设计的数字钟的功能更加完善。
一、设计要求1.设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等根本功能。
2.具体要求如下:1)能进展正常的时、分、秒计时功能,最大计时显示23小时59分59秒。
2)分别由六个数码管显示时分秒的计时。
3)K1是系统的使能开关,K1=0正常工作,K1=1时钟保持不变。
4)K2是系统的清零开关,K2=0正常工作,K2=1时钟的分、秒全清零。
5)在数字钟正常工作时可以对数字钟进展快速校时和校分。
K3是系统的校分开关,K3=0正常工作K3=1时可以快速校分;K4是系统的校时开关,K4=0正常工作,K4=1时可以快速校时。
3.设计提高局部要求1)时钟具有整点报时功能,当时钟计到59’51〞时开场报时,在59’51〞,59’53〞, 59’55〞,59’57〞时报时频率为512Hz,59’59〞时报时频率为1KHz。
2)星期显示:星期显示功能是在数字钟界面显示星期,到计时到24小时时,星期上显示的数据进一位。
3)闹表设定:通过开关切换显示至闹钟界面,利用闹钟校时和校分开关对闹钟时间进展设定,且不影响数字钟计时。
当计时到闹钟设定时间蜂鸣器鸣叫,并响起彩铃。
4)秒表计时:通过开关切换显示至秒表界面,分秒局部是100进制的,即当值为99时向秒位进位。
4.仿真与验证用Quartus软件对设计电路进展功能仿真,并下载到实验板上对其功能进展验证。
二、工作原理数字计时器是由计时电路、译码显示电路、脉冲发生电路和控制电路等几局部组成的,控制电路按要求可由校分校时电路、清零电路和保持电路组成。
中石油大学数电实验3基于QUARTUSII图形输入电路的设计
数字电子技术实验报告学院名称新能源学院专业班级学号姓名项目名称基于QUARTUSII图形输入电路的设计实验日期 2020年11月11日实验三基于QUARTUSII图形输入电路的设计一、实验目的1、通过一个简单的 3—8 译码器的设计,掌握组合逻辑电路的设计方法。
2、初步了解 QUARTUSII 原理图输入设计的全过程。
3、掌握组合逻辑电路的静态测试方法。
二、实验内容本次实验通过使用QUARTUSII软件模拟3-8译码器的工作,实验项目包括建立工程文件、建立图形设计文件、编译、管脚分配以及时序仿真。
1、列写真值表3-8 译码器三输入,八输出。
当输入信号按二进制方式的表示值为N 时,输出端标号为N 的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。
其真值表如表二-1所示2、建立工程文件(1)双击运行程序(2)选择软件中的菜单 File>New Project Wizard,新建一个工程(3)点击NEXT 进入工作目录,设定工程名。
第一个输入框为工程目录输入框,用户可以输入如 f:/eda 等工作路径来设定工程的目录(4)点击 NEXT,进入下一个设定对话框,按默认选项直接点击 NEXT 进行器件选择对话框。
这里我们以选用 CycloneⅡ系列芯片 EP2C35F484C8。
(5)按默认选项,点击 NEXT 出现新建工程以前所有的设定信息,点击 FINISH 完成新建工程的建立。
3、建立图形设计文件(1)在创建好设计工程后,选择File>NEW…菜单,出现下图所示的新建设计文件类型选择窗口。
(2)New对话框中选择Device Design Files 页下的Block Diagram/Schematic File,点击OK 按钮。
(3)设计3-8译码器,将要选择的器件符号放置在图形编辑器的工件区域,用正交节点工具将原件边接起来,定义三个输入为 A、B、C,定义八个输出为D0、D1、D2、D3、D4、D5、D6、D7。
Quartus II 电子钟设计
Quartus II 电子钟设计大连海事大学电子信息专业(3)班cdk 2220102568顶层文件原理图:秒钟模块源程序:SECONDlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity SECOND isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位co:out std_logic);-------输出/进位信号end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数beginif clr='1' then----当ckr为1时,高低位均为0cnt1:="0000";cnt0:="0000";elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9时cnt0:=cnt0+1;----计数elseif cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;生成模块:波形仿真:分钟模块程序:MINUTElibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MINUTE isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位co:out std_logic);-------输出/进位信号end MINUTE;architecture SEC of MINUTE isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数beginif clr='1' then----当ckr为1时,高低位均为0cnt0:="0000";elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9时cnt0:=cnt0+1;----计数elsecnt0:="0000";if cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;生成模块:波形仿真:小时模块源程序:hourlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(reset,clk : in std_logic;daout : out std_logic_vector(7 downto 0)); end hour;architecture behav of hour issignal count : std_logic_vector(3 downto 0); signal counter : std_logic_vector(3 downto 0); beginp1: process(reset,clk)beginif reset='0' thencount<="0000";counter<="0000";elsif(clk'event and clk='1') thenif (counter<2) thenif (count=9) thencount<="0000";counter<=counter + 1;elsecount<=count+1;end if;elseif (count=3) thencount<="0000";counter<="0000";elsecount<=count+1;end if;end if;end if;end process;daout(7 downto 4)<=counter;daout(3 downto 0)<=count;end behav;生成模块:波形仿真:报警源程序:alertlibrary ieee; --alert模块程序use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert isport(clk1Hz:in std_logic;a,b,c :in std_logic_vector(3 downto 0);speak:out std_logic);end alert;architecture art of alert isbeginprocess(clk1Hz,a,b,c)beginif a = "1000" and b = "0101" and c ="0101" then speak <='Z';end if;end process;end art;生成模块:。
基于Quartus II的数字钟实现.
学校代码学号00918128分类号密级本科学年论文基于Quartus II的数字钟设计院(系)名称:电子信息工程学院专业名称:通信工程年级:2010级学生姓名:包胡斯楞指导教师:白凤山2012年9月28日基于Quartus II的数字钟设计摘要数字钟是一种用数字电路技术实现时、分、秒计时的钟表。
与机械钟相比具有更高的准确性和直观性,具有更长的使用,已得到广泛的使用。
数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以用Quartus II 软件结合VHDL语言编程实现数字钟的设计。
这些方法都各有其特点,我的设计采用Quartus II软件结合VHDL语言编程实现数字钟。
Quartus II是Altera公司推出的CPLD/FPGA开发工具,Quartus II提供了与结构五官的设计环境,设计者无需精通器件内部的复杂结构。
本设计由分频模块,时钟产生模块,数码管驱动模块等三个部分组成。
在Quartus II中以文本输入的方式将每个模块的源代码输入进行波形仿真,以验证设计的正确性。
关键词:数字钟 Quartus II VHDL语言波形仿真绪论 (1)1数字钟设计概述 (2)2分频模块 (3)2.1分频模块原理图 (3)2.2分频模块实现原理及程序 (3)2.3仿真波形及分析验证 (3)3时钟产生模块 (5)3.1时钟产生模块原理图 (5)3.2时钟产生模块实现原理及程序 (5)3.3仿真波形及分析验证 (5)4数码管驱动模块 (7)4.1数码管驱动模块原理图 (7)4.2数码管驱动模块实现原理及程序 (7)4.3仿真波形及仿真验证 (7)5总系统 (8)5.1总系统电路图 (8)5.2仿真波形及分析验证 (8)结论 (10)致谢 (11)参考文献 (12)附录A (13)附录B (14)附录C (16)在人们日常生活中,钟表是一个随处可见的小东西。
数电设计_数字钟(基于QUARTUS).
大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):专业:电子与通信工程班级:学生姓名: *************** 学号:完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1 具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2 具有手动校时校分功能3 具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4 具有秒表显示、计时功能(精确至百分之一秒),可一键清零5 具有手动定时,及闹钟功能,LED 灯持续提醒一分钟6 具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ 晶振,经过分频得到周期为1s 的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用0.5s 的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码管显示。
从59分50秒开始,数字钟进入整点报时功能。
每隔两秒提示一次。
(本设计中以两个LED 灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分00.00秒至59分59.99秒。
可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。
将DE2硬件中的50MHZ 晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。
3. 多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED 灯连续提示一分钟。
基于QuartusII软件的数字时钟设计
实验名称:数字时钟设计姓名:杨龙成班级:电子与通信工程学号: 3120302012 成绩:一、实验目的1.掌握各类计数器及它们相连的设计方法;2.掌握多个数码管显示的原理与方法;3.掌握模块化设计方式;4.掌握用VHDL语言的设计思想以及整个数字系统的设计。
二、实验内容1. 设计要求1)具有时、分、秒计数显示功能,在数码管显示00:00:00~23:59:59,以24小时循环计时。
2)完成可以计时的数字时钟时钟计数显示时有LED灯的花样显示。
3)具有调节小时、分钟及清零的功能。
4)具有整点报时功能。
2. 性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分60进制计数,时钟—24进制计数,并且在数码管上显示数值。
2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间。
可以通过实验板上的键7和键4进行任意的调整,因为时钟信号均是1HZ的,所以LED灯每变化一次就来一个脉冲,即计数一次。
3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。
4)蜂鸣器在整点时有报时信号产生,产生“滴答.滴答”的报警声音。
5)根据进位情况,LED灯在时钟显示时有花样显示信号产生。
3. 系统方框图三、设计原理和过程3.1 硬件设计本设计使用VHDL硬件开发板,可编程逻辑器件EMP1270T144C5系列。
设计过程中用到的外围电路的设计有电源部分,可编程器件EMP1270T144C5,CPLD –JTAG接口,晶振和蜂鸣器,LED数码管显示,DIP开关与按键输入(具体电路见附录)3.2 软件设计3.2..1 程序包my_pkg的设计说明为了简化程序设计增加可读性,系统采用模块化的设计方法,重复使用的组件以元件(component)的形式存在,以便相关块的调用。
下面列出my_pkg组件包的代码。
library ieee;use ieee.std_logic_1164.all;package my_pkg iscomponent div40M------------------------------------------------------------------元器件1 Port( clk: in std_logic;f1hz : out std_logic);end component;component count60-----------------------------------------------------------------元器件2 Port(clr,clk:in std_logic;one :buffer std_logic_vector(3 downto 0);ten :buffer std_logic_vector(3 downto 0);full:out std_logic;dout:buffer std_logic_vector(7 downto 0));end component;component count24-----------------------------------------------------------------元器件3 Port(clr,clk:in std_logic;one :buffer std_logic_vector(3 downto 0);ten :buffer std_logic_vector(3 downto 0);full:out std_logic);end component;component scan6----------------------------------------------------------------元器件4 port (clr,clk : in STD_LOGIC;h_ten,h_one,m_ten,m_one,s_ten,s_one: in STD_LOGIC_vector(3 downto 0);cs: out STD_LOGIC_vector(5 downto 0);mux_out: out STD_LOGIC_vector(3 downto 0));end component;component bin2led---------------------------------------------------------------元器件5 port (bin : in std_logic_vector (3 downto 0);led : out std_logic_vector (7 downto 0) );end component;component sh1k ----------------------------------------------------------------------元器件6 Port( clk: in std_logic;--from system clock(40MHz)f1hz : out std_logic);-- 1Hz output signalend component;component alarm_set------------------------------------------------------------------元器件7 Port(rst,hz1: in std_logic;--system clock 1Hzalarm,ok: in std_logic;--keep pushing to declare alarm setsec_tune: in std_logic;sec_one,sec_ten:out std_logic_vector(3 downto 0));end component;end my_pkg;3.2.2 count60组件由此提供分(秒)计数值,当分计数器计数到59再来一个脉冲信号秒计数器清零从新开始计数,而进位则作为小时计数器的计数脉冲,使小时计数器计数加1,同时分计数器在分设置时钟信号的响应下设置分计数器的数值。
使用Quartus进行多功能数字钟设计
.EDA设计使用Quartus II进行多功能数字钟设计院系:机械工程专业:车辆工程姓名:张小辉学号:115101000151指导老师:蒋立平、花汉兵时间:2016年5月25日摘要本实验是电类综合实验课程作业,需要使用到QuartusⅡ软件,(Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程)。
本实验需要完成一个数字钟的设计,进行试验设计和仿真调试,实验目标是实现计时、校时、校分、清零、保持和整点报时等多种基本功能,并下载到SmartSOPC实验系统中进行调试和验证。
关键字:电类综合实验QuartusⅡ数字钟设计仿真AbstractThis experiment is electric comprehensive experimental course work and need to use the Quartus II software, Quartus II is Altera integrated PLD / FPGA development software, schematic and VHDL, Verilog HDL and AHDL (Altera hardware description language support) etc. a variety of design input form, embedded in its own synthesizer and simulator can complete hardware configuration complete PLD design process from design entry to). The need to complete the design of a digital clock, and debug the design of experiment and simulation, the experimental goal is to achieve timing, school, reset, keep and the whole point timekeeping and other basic functions, and then download to the smartsopc experimental system debugging and validation.Key words: Electric power integrated experiment Quartus II Digital clock design Simulation目录EDA设计 (1)摘要 (2)目录 (4)一、设计要求[1] (5)二、工作原理[2] (6)三、各模块说明[3] (7)1、分频模块 (7)2、计时模块 (9)3、动态显示模块[3] (11)4、校分与校时模块 (11)5、清零模块 (13)6、保持模块 (13)7、报时模块 (13)四、总电路的形成 (15)五、调试、编程下载 (16)六、试验中出现的问题及解决办法 (17)七、实验收获与感受 (18)八、参考文献 (19)一、设计要求[1]1.设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等基本功能。
基于QuartusII的数字时钟的设计
基于QuartusII的数字时钟的设计摘要QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII使用户可以充分利用成熟的模块,简化了设计的复杂性,加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
数字钟是一种用数字电路实现时、分、秒计时的装置,与机械实施中相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到了广泛的使用。
在对EDA的课程有了初步的了解并掌握Quartus II软件的初步应用之后,我们决定将课题设置为应用Quartus II软件,设计出一个时间可调,并可以通过LED七段共阴极数码管来显示时、分、秒的简易数字钟。
关键词:QuartusII;VHDL;EDA;数字钟SummaryQuartusII is Altera company comprehensive PLD/FPGA development software, support principle diagram, VHDL, VerilogHDL and AHDL design input in the form of embedded own comprehensive device simulators, and can be done from the design input to the hardware configuration of the complete PLD design process.QuartusII allow users to take full advantage of mature modules, simplifies the design complexity, speed up the design.Good support for third-party EDA tools also allow users to use in the different stages of the design process is familiar withthird-party EDA tools.Digital clock is a kind of when using a digital circuit implementation, minutes and seconds timing device, a higher accuracy compared with the implementation of the mechanical and intuitive, and no mechanical device, has a longer service life, has been widely used.In the course of EDA have a preliminary understanding and mastering the Quartus II software after the initial application, we decided to set the topic for the application of the Quartus II software, design a time is adjustable, and can be through the 7 common cathode LED digital tube display hours, minutes and seconds of simple digital clock.Keywords:QuartusII;VHDL;EDA;digital clock目录摘要 (1)绪论 (5)1.课程设计的目的与作用 (7)2.设计任务 (7)3.QuartusII软件介绍 (7)4.相关理论 (8)4.1 理论 (8)4.2 器件 (8)5. 系统设计 (8)5.1 总体 (8)5.2 各模块 (9)5.2.1 顶层模块 (9)5.2.2 十进制计数器模块 (9)5.2.3 六进制计数器模块 (10)5.2.4 二十四进制计数器模块 (10)5.2.5 7段LED显示驱动模块 (11)6. 硬件设计 (11)6.1 顶层实体图 (11)6.2 各模块实体图 (12)6.2.1 十进制计数器模块 (12)6.2.2 六进制计数器模块 (12)6.2.3 二十四进制计数器模块 (13)6.2.4 7段LED显示驱动模块 (13)6.3 总体实体图 (14)7. 流程图设计 (15)8.模块设计实现 (16)8.1建立顶层模块 (16)8.1.1新建dianzizhong.工程 (16)8.1.2建立VHDL源程序 (16)8.2建立十进制计数器模块 (18)8.2.1新建CNT10.工程 (18)8.2.2建立VHDL源程序 (18)8.3建立六进制计数器模块 (19)8.3.1新建CNT6.工程 (19)8.3.2建立VHDL源程序 (19)8.4建立二十四进制计数器模块 (20)8.4.1新建CNT24.工程 (20)8.4.2建立VHDL源程序 (20)8.5建立7段LED显示驱动模块 (21)8.5.1新建LED_DRIV.工程 (21)8.5.2建立VHDL源程序 (22)9.仿真调试结果分析 (22)9.1顶层模块的编译与波形仿真 (22)9.2十进制计数器模块的编译与波形仿真 (23)9.3六进制计数器模块的编译与波形仿真 (24)9.4二十四进制计数器模块的编译与波形仿真 (25)9.5 7段LED显示驱动模块的编译与波形仿真 (26)10. 结论 (27)11.设计总结和体会 (27)12. 致谢 (28)13. 参考文献 (29)绪论1.研究的意义在快速发展的年代,时间对于人们来说越来越宝贵,在快节奏的生活中,人们往往会忘记了时间,一旦在一些重要的场合忘记了时间,将会带来重大的损失。
数电课程设计报告完整版——数字钟
数字电子钟设计摘要所谓数字钟,是指利用电子电路构成的计时器。
相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。
在此基础上,还能够实现整点报时,定时报闹等功能。
设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。
本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。
详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计,最后将设计好的模块组合调试,并最终在protues下仿真通过。
关键词:数字电子钟校时报时子系统ﻬ1前言由于现代社会的数字电子技术高速发展,电子钟应运而生,又由于电子技术的不断改进,采用中规模的逻辑器件可以使电子钟的体积变得很少,实用更加方便,应用更加广泛。
作为电气工程及其自动化专业的学生,我们都应该能够运用学到的数电和抹点知识,去解决和分析一些逻辑电路的问题,继而学会设计具有一定逻辑功能的逻辑器件,这次电子工艺实习给我们一个能力全面提升的契机。
我们设计的电子钟,严格按照设计要求,具有整点报时,调时,调分等功能,而且增加了停止计时,秒信号灯等功能。
特别是,我们的调时调分开关,都加上了消抖电路,使用了硬件消抖的方法消抖,这些都是我们组,区别于其他组的地方。
ﻬ 2 设计任务2.1 设计思路能按时钟功能进行小时、分钟、秒计时,能调时调分,能整点报时,使用3个2位数码管显示。
总体设计本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。
该方案的优点是模块内部简单,基本不需要额外的电路,该方案结构简单,模块间关系较明确,模块外不需使用较多门电路,但不利于功能扩充。
2.2 设计方案2.2.1设计方案一、采用同步电路,总线结构时钟信号分别加到各个模块,各个模块功能相对独立,框图如下:控制总线设计方案12.2.2设计方案二、采用异步电路,数据选择器将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,但设计难度大,门电路数量也比较多。
基于FPGA和Quartus II的多功能数字钟设计与实现
基于FPGA和Quartus II的多功能数字钟设计与实
现
现场可编程门阵列(Field Programmable Gate Arrays,FPGA)是一种可编程使用的信号处理器件。
通过改变配置信息,用户可对其功能进行定义,以满足设计需求。
通过开发,FPGA能够实现任何数字器件的功能。
与传统
数字电路相比,FPGA具有可编程、高集成度、高可靠性和高速等优点。
1 数字钟总体设计
本文以FPGA平台为基础,在QuartusⅡ开发环境下设计开发多功能数字钟。
数字钟实现的功能如下:
1)计时功能:进行正常的时、分、秒计时,并由6只8段数码管分别显示时、分、秒时间。
2)校时功能:当时校时按键按下时,计时器时位迅速增加,并按24小时循环;当分校时按键按下时,计时器分位迅速增加,并按60分循环。
电子时钟 QuartusII
EDA设计(Ⅱ)实验报告——数字钟班级:08042402学号:08042402**姓名:****院系:电光工程与光电技术学院指导老师:谭雪琴评语:2011年04月1摘要本次EDA设计先利用QuartusII7.0软件设计一个数字钟,软件模拟仿真后,下载到SmartSOPC实验系统中。
通过开关的开合来控制数字钟来完成保持、清零、校分、校时、整点报时等功能。
使用软件设计时先设计分频电路,对试验系统的时钟信号进行分频,分出1HZ的时钟信号,然后再设计计时和控制电路,使数字钟可以完成设计所需功能要求。
软件设计完成,模拟仿真没有错误后,再下载到SmartSOPC试验系统中,实际验证设计是否正确。
关键字:数字钟;SmartSOPC;QuartusII;分频;计时2Title EDA(Ⅱ)Design Experiment ReportAbstractWe use QuartusII7.0 to design a dgital cock first,after smulation,download to SmartSOPC experiment system.Control the digital clock to achieve keeping, clearing, correction minute, correction hour and ring when the whole hours.we first use software to design frequency dividing circuit to frequency demultiplicate thee xperiment system’s clock signal and generated signal of 1HZ,then design timing circuit and control circuit,makes the digital clock complete the requiredfunction .After designing and smulation,download to the experiment system and checking if there any errors.Keywords digital clock;frequency dividing;SmartSOPC;QuartusII;timing3目录一设计要求 (5)二方案论证 (5)三子模块设计 (6)3.1 脉冲发生电路 (6)3.1.1 48分频电路 (6)3.1.2 500分频电路 (8)3.1.3 2分频电路 (9)3.2 计时电路 (10)3.2.1 模60计数器 (11)3.2.2 模24计数器 (13)3.2.3 计时电路 (14)3.3 校分电路 (16)3.4 校时电路 (18)3.5 清零电路 (18)3.6 报时电路 (18)3.7 显示电路 (20)四调试 (22)五下载 (23)六结论 (24)七实验感想 (24)八参考文献 (26)41 设计要求①能进行正常的时、分、秒计时功能;②分别由六个数码管显示时分秒的计时;③K1是系统的使能开关,K1=0正常工作,K1=1时钟保持不变;④K2是系统的清零开关,K2=0正常工作,K2=1时钟的分、秒全清零;⑤K3是系统的校分开关,K3=0正常工作,K3=1时可以快速校分;⑥K4是系统的校时开关,K4=0正常工作,K4=1时可以快速校时;⑦使时钟具有整点报时功能当时钟计到59′5’’时开始报时,在59′53″, 59′55’’,59′57’’时报时频率为512Hz,59′59’’时报时频率为1KHz;⑧设计完成后并且模拟仿真捂错后,下载到试验系统中,检验是否符合以上设计要求。
基于quartus的电子钟
电子线路设计Ⅱ——基于QuartusII软件的数字钟姓名:范征东5指导老师:黄建宇郝磊多功能数字钟设计一、设计内容简介电子数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,因此得到了广泛的使用。
电子数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,此次设计与制做电子数字钟就是可以了解电子数字钟的原理,学会制作电子数字钟。
通过电子数字钟的制作能进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
这次电子数字钟的设计主要是利用74LS90的计数功能来实现电子钟时、分、秒的跳变,整个设计主要分为六个模块:时模块、分模块、秒模块、分频模块、校时校分模块、整点报时模块。
时、分、秒模块分别用两块74LS90实现,并且分别将它们设置为60进制,60进制,24进制。
秒信号的产生用石英晶体振荡器加分频器来实现,将秒信号送入秒模块,每累计60秒发出一个分脉冲信号,分模块每累计60分钟,发出一个时脉冲信号,时模块实现对24小时的累计,通过六个七段数码管显示出来。
整点报时电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到蜂鸣器实现报时。
校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。
本数字钟以计时为基本功能,可以完成00:00:00到23:59:59,以及星期一至星期日的计时功能,并在控制电路的作用下具有保持、快速校时、快速校分的功能。
在具有基本功能的基础上,增加了下列扩展功能:闹钟、整点报时功能。
数字计时器是由分频电路、计时电路、控制电路、译码显示电路等几部分组成的。
其中,分频电路将试验箱提供的48Mhz 的频率分成各模块电路所需要的频率;计时电路完成计时功能,并与动态显示电路相连,将时间、日期、星期等信息显示在七段数码管上;秒表电路启动后可完成最小单位为0.01秒的计时;以上各部分电路均与译码显示电路连接,将以上数据分别显示,通过按钮切换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数电设计数字钟基于Q U A R T U SHEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):电信学部专业:电子与通信工程班级:学生姓名: ***************学号:***************完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2)具有手动校时校分功能3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码从59分50秒开始,数字钟进入整点报时功能。
每隔两秒提示一次。
(本设计中以两个LED灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。
可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。
将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。
3.多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED灯连续提示一分钟。
4. 多功能数字钟的倒计时功能部分,可通过按键(LOAD7调秒,LOAD8调分,LOAD9调时)设定倒计时开始时刻。
倒计时的时钟与数字钟的时钟相同,每迎到一个时钟上升沿,则计数器减一。
计数器减至00时,分钟位、秒钟位恢复至59,时钟位恢复至23。
倒计时结束时(即00时00分00秒),控制LED灯亮,表示倒计时结束。
本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。
当LOAD4为高电平,则对秒表信号进行译码,数码管显示秒表数据;当LOAD4为低电平,LOAD5为高电平,则对闹钟信号进行译码,数码管显示闹钟数据;当LOAD4,LOAD5为低电平,LOAD6为高电平,则对倒计时信号进行译码,数码管显示倒计时信号数据;当LOAD4,LOAD5,LOAD6全为低电平,则对正常时钟信号进行译码,数码管显示时钟信号数据。
附图1:系统总体结构框图附图2系统硬件电路设计下载时选择的开发系统模式以及管脚定义四系统的VHDL设计源程序:--代码共372行library ieee;use clock isport( load9,load8,load7,load6,load5,load4,load3,load2,load1:in std_logic;clk,rst1,rst2,en1,en2,key1,key2,key3:in std_logic;q1,q2,q3,q4,q5,q6:out std_logic_vector(6 downto 0);led1,led2,led3,led4,led5:out std_logic);end;architecture a of clock issignal qq1,qq2,qq3,qq4,qq5,qq6:std_logic_vector(3 downto 0);--数字钟计数器信号signal vis1,vis2,vis3,vis4,vis5,vis6:std_logic_vector(3 downto 0);signal cp1,cp2,cp3,cp4,cp5:std_logic;signal p1:integer range 0 to 49;signal p2:integer range 0 to 999;signal p3:integer range 0 to 999;signal clfsa:integer range 0 to 499;signal a,b,c,d,e,f,g: std_logic_vector(3 downto 0);--秒表计数器信号signal r1,r2,r3,r4,r5,r6:std_logic_vector(3 downto 0);--闹钟信号signal z1,z2,z3,z4,z5,z6:std_logic_vector(3 downto 0);--倒计时计数器信号signal alz1,alz2,alz3,alz4,alz5:std_logic;Begin-----------------------------------------------------------------------分频模块-------------------------------------------------------------------------------------process(clk) --分频1beginif rising_edge(clk) thenif p1=49 thenp1<=0;cp1<='1';elsep1<=p1+1;cp1<='0';end if;end if;end process;process(cp1) --分频2beginif rising_edge(cp1) thenif p2=999 thenp2<=0;cp2<='1';elsep2<=p2+1;cp2<='0';end if;end if;end process;process(cp2) --得到周期为1秒的信号beginif rising_edge(cp2) thenif p3=999 thenp3<=0;cp3<='1';elsep3<=p3+1;cp3<='0';end if;end if;end process;process(cp2) --得到周期为百分之一秒的信号beginif rising_edge(cp2) thenif a="1001" then a<="0000";a1<='1';else a<=a+1;a1<='0';end if;end if;process(cp2) --得到周期为秒的信号beginif rising_edge(cp2) thenif clfsa=499 thenclfsa<=0;hlfs<='1';elseclfsa<=clfsa+1;hlfs<='0';end if;end if;end process;-----------------------------------------------------------------------数字钟模块----------------------------------------------------------------------------------process(cp3,load1,key1) --数字钟秒钟计数器beginif rising_edge(cp3) thenif load1='1' thenif key1='0' then --秒钟手动调节if qq2="0101" and qq1="1001"then qq1<="0000"; qq2<="0000";elsif qq1="1001" thenqq1<="0000";qq2<=qq2+1;else qq1<=qq1+1;end if;end if;else if load1='0' thenif qq2="0101" and qq1="1001"then qq1<="0000"; qq2<="0000";cp4<='1';elsif qq1="1001" thenqq1<="0000";qq2<=qq2+1;cp4<='0';else qq1<=qq1+1;cp4<='0';end if;if qq2="0101" and en='1' then --整点报时case qq1 iswhen "0001"=>led2<='1';when "0011"=>led2<='1';when "0101"=>led2<='1';when "0111"=>led2<='1';when "1001"=>led3<='1';when others =>led2<='0';led3<='0';end case;else led2<='0';led3<='0';end if;end if;end if;end if;process(hlfs,cp4,load2) --数字钟分钟计数器beginif load2='1' then clkx<=hlfs;else clkx<=cp4;end if; --当load2为高电平时,进行分调节if rising_edge(clkx)thenif qq4="0101" and qq3="1001"then qq3<="0000"; qq4<="0000";cp5<='1';elsif qq3="1001" thenqq3<="0000";qq4<=qq4+1;cp5<='0';else qq3<=qq3+1;cp5<='0';end if;end if;if qq3="1001" and qq4="0101" then en<='1';else en<='0';end if; end process;process(hlfs,cp5,load1) --数字钟时钟计数器beginif load3='1' then clkx1<=hlfs;else clkx1<=cp5;end if; --当load3为高电平时,进行小时调节if rising_edge(clkx1) thenif qq5="0011" and qq6="0010" thenqq5<="0000"; qq6<="0000";elsif qq5="1001" thenqq5<="0000";qq6<=qq6+1;else qq5<=qq5+1;end if;end if;end process;-----------------------------------------------------------------------闹钟模块-------------------------------------------------------------------------------------process(hlfs,load5,key1) --闹钟秒计数器beginif rising_edge(hlfs) thenif load5='1' thenif key1='0' then --手动进行闹钟秒设定 if r2="0101" and r1="1001"then r1<="0000"; r2<="0000";elsif r1="1001" thenr1<="0000";r2<=r2+1;else r1<=r1+1;end if;end if;end if;end if;end process;process(hlfs,load5,key2) --闹钟分计数器beginif rising_edge(hlfs) thenif key2='0' then --手动进行闹钟分设定 if r4="0101" and r3="1001"then r3<="0000"; r4<="0000";elsif r3="1001" thenr3<="0000";r4<=r4+1;else r3<=r3+1;end if;end if;end if;end if;end process;process(hlfs,load5,key3) --闹钟小时计数器beginif rising_edge(hlfs) thenif load5='1' thenif key3='0' then --手动进行闹钟小时设定if r6="0010" and r5="0011"then r5<="0000"; r6<="0000";elsif r5="1001" thenr5<="0000";r6<=r6+1;else r5<=r5+1;end if;end if;end if;end if;end process;process(cp3,qq1,qq2,qq3,qq4,qq5,qq6,r1,r2,r3,r4,r5,r6) --数字钟与闹钟相符,以LED灯进行提示beginif rising_edge(cp3) thenif qq3=r3 and qq4=r4 and qq5=r5 and qq6=r6then led1<='1';else led1<='0';end if;end if;end process;-----------------------------------------------------------------------秒表模块-------------------------------------------------------------------------------------process(a1,rst1,en1) --秒表计数器beginif rst1='1' then b<="0000";c<="0000"; --秒表异步清零elsif rising_edge(a1) thenif en1='1' thenif b="1001" and c="1001"then b<="0000";c<="0000";c1<='1';elsif b="1001" thenb<="0000";c<=c+1;c1<='0';else b<=b+1;c1<='0';。