EDA课程设计--带有整点报时的数字钟设计与制作

合集下载

EDA课程设计数字钟(综合课程设计)一_001

EDA课程设计数字钟(综合课程设计)一_001

EDA课程设计数字钟(综合课程设计)一、设计要求(数字钟的功能)1、具有时、分显示功能(用数码管显示)。

以二十四小时循环计时。

2、具有清零,调节小时,分钟的功能。

3、具有整点(正小时)报时同时用多颗LED灯花样显示秒的功能。

4、运用多层次化设计方式,底层元件用VHDL编写,顶(最高)层元件用原理图法连线。

5、写出课程设计报告,包括设计源程序代码、顶层原理图及必要的文字说明。

二、目的1、掌握多位计数器相连的设计方法。

2、掌握十进制,六进制,二十四进制计数器的设计方法。

3、掌握扬声器的驱动及报时的设计。

4、LED灯的花样显示。

5、掌握CPLD技术的层次化设计方法。

三、硬件要求1、主芯片Altera EPF10K10LC84-4。

2、8个LED灯。

3、扬声器。

4、4位数码显示管。

5、8个按键开关(清零,调小时,调分钟)。

四、实验原理在同一CPLD芯片上集成了如下电路模块:1、时钟计数:秒……60进制BCD码计数。

分……60进制BCD码计数。

时……24进制BCD码计数。

同时整个计数器有清零、调时、调分功能。

在接近整数时能提供报时信号。

2、扬声器在整点时有报时驱动信号产生(响声持续多长时间?)。

3、LED灯按个人口味在整点时有花样显示信号产生。

五、实验内容及步骤1、根据电路特点,运用层次设计概念设计。

将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口。

加深层次化设计概念。

2、了解软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何熔合。

六、顶层原理图参考下图所示(模块化设计)。

EDA课程设计报告电子钟

EDA课程设计报告电子钟

EDA课程设计报告电子钟EDA课程设计报告——数字钟设计班级:学号:姓名:一、设计任务设计一台能显示时、分、秒的数字钟。

具体要求如下:(1)由实验箱上的时钟信号经分频产生秒脉冲;(2)计时计数器用24进制计时电路;(3)可手动校时, 能分别进行时、分的校正;(4)整点报时;选做: 可设置闹时功能, 当计时计到预定时间时, 扬声器发出闹铃信号, 闹铃时间为4s, 并可提前终止闹铃。

二、试验目的(1)掌握时十进制、六进制和二十四进制计数器的设计方法。

(2)掌握多位计数器相连的设计方法。

(3)掌握多位共阴极扫描显示数码管的驱动及编码。

三、总体设计方案本数字系统实现数字钟的基本的计时功能, 输入8Hz的时钟, 经过分频产生1Hz的时钟信号, 采用24/12小时制计时, 能显示时、分、秒。

本系统还具有校正功能, 能够进行时分的校时, 当计时器运行到59分59秒开始报时, 另外还能够设定闹钟, 当按下闹铃开关时, 可在规定时间闹铃, 当开关复位时, 闹铃停止。

本数字钟实际上是一个对频率(1Hz)进行计数的计数电路。

由于计数的起始时间不可能与标准时间一致, 故需要在电路上加一个校时电路, 同时分频后的1Hz时间信号必须做到准确稳定。

一般使用石英晶体振荡器电路构成数字钟。

数字钟的基本组成本数字钟的实现可分为以下几个模块:(1) 秒计数模块: 秒计数, 在频率为1Hz的时钟下以60次为循环计数, 并产生进位信号影响分计数;(2) 分计数模块: 分计数, 在秒进位信号为高电平时, 计数一次, 同样以60次为一个循环计数, 同时产生分进位信号影响时计数;(3) 时计数模块: 时计数, 在分进位信号为高电平时, 计数一次, 以24/12次为一个循环计数;(4) 频率产生模块: 产生8Hz的计数频率, 经过分频得到1Hz 频率;(5) 时间显示模块: 数码管经过动态显示, 同时进行一定频率的扫描显示时, 分, 秒。

(6) 时间设置模块: 设置调试使能端, 能够调时, 分, 秒。

eda课程设计数字钟

eda课程设计数字钟


d: in std_logic_vector(7 downto 0);

fout: out std_logic);

end dvf;

architecture behav of dvf is

signal full: std_logic;

பைடு நூலகம்
begin

p_reg:process(clk)

variable cnt8: std_logic_vector(7 downto 0);
将标准秒信号送入“秒计数器”,“秒计数器”采 用60进制计数器,每累计60秒发出一个“分脉冲” 信号,该信号将作为“分计数器”的时钟脉冲。 “分计数器”也采用60进制计数器,每累计60分钟, 发出一个“时脉冲”信号,该信号将被送到“时计 数器”。“时计数器”采用24进制计时器,可实现 对一天24小时的累计。每累计24小时,发出一个 “星期脉冲”信号,该信号将被送到“星期计数 器”,“星期计数器” 采用7进制计时器,可实现 对一周7天的累计。工作原理图如图3.1所示。
数字钟的工作原理图
分频器电路
分频器电路将32768HZ的高频方波信号经 32768次分频后得到1Hz的方波信号供秒计数器 进行计数。分频器实际上也就是计数器。本次设 计是运用了CD4060分频器进行分频,分频电路 可提供512HZ和1024HZ的频率,在经CD4027 分频器进行一分频,为此电路输送一秒脉冲。

begin

if clk'event and clk='1' then --检测时钟上升沿

if cnt8= "11111111" then

eda整点报时时钟设计

eda整点报时时钟设计

EDA技术应用课程设计报告题目名称:多功能数字钟专业班级:姓名:学号:小组成员:指导教师:设计时间: 15-12-01~15-12-25 一、设计目的1.使得更加了解EDA的应用2.熟悉VHDL的编程。

3.对于编程语句的编辑与纠错有较大的提升4.提升对于设计方面的能力二、设计要求1.数字钟具有“时”、“分”、“秒”显示功能,其中时功能为24小时制。

2.数字钟具有校时和校分功能。

3.数字钟具有整点报时功能。

三、设计方案通过分别作出秒模块、分钟模块、小时模块、整点报时模块,导入动态扫描模块,再由其输出到数码管输出。

四、模块设计1.秒程序模块①有3输入3输出②reset为异步清零当没有信号时清零秒模块的计数③setmin为校分当有信号时想分模块进一位④daout_a与daout_b为输出的信号分别为秒的高位与低位⑤enmin 负责向下一个模块进位⑥clk为时钟信号2.分钟程序模块②3输入3输出②reset为异步清零当没有信号时清零分模块的计数③sethour为校分当有信号时向时模块进一位④daout_ma 分daout_mb 为输出的信号分别为分的高位与低位⑦enhour 负责向下一个模块进位⑧clk为时钟信号3.小时程序模块有2输入2输出②reset为异步清零当没有信号时清零时模块的计数③clk为时钟信号⑤daout_ha daout_hb 为输出的信号分别为时的高位与低位4.动态扫描模块①有八个输入端,两个输出端②reset为异步清零当没有信号时清零时模块的计数③daout为高位5.七段译码管模块①有1输入8输出②S为用来接收秒分时模块输出的信号③A~H 为转化后的信号用来接数码管6.整点报时模块①有5输入2输出②Clkspk为时钟信号③Miao_h Miao_lfen_hfen_h为从秒模块时模块接收的信号④Speak 接蜂鸣器,⑤Lamp 接LED作为报时时的闪烁灯五、模块程序1.秒模块设计(60计时制)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shijian isport(reset,clk,setmin:in std_logic;daout_a:out std_logic_vector(7 downto 4);————输出高位daout_adaout_b:out std_logic_vector(3 downto 0); ————输出低位daou_benmin:out std_logic);————enmin是向分位进位信号end shijian;architecture behav of shijian issignal count:std_logic_vector(3 downto 0);signal counter:std_logic_vector(3 downto 0);signal carry_out1:std_logic;————59秒时的进位信号signal carry_out2:std_logic;beginp1:process(reset,clk)beginif reset='0'then——59秒时的进位信号count<="0000";counter<="0000";——若reset为0时,则高、低位异步清零elsif(clk'event and clk='1')then——否则clk为上升沿时if(counter<5)thenif(count=9)thencount<="0000"counter<=counter+1;elsecount<=count+1;end if;carry_out1<='0';——若高位counter<5,低位count=9,则低位清零,高位进一,否则低位进一,59秒时的进位信号carry_out1为0。

eda整点报时程序课程设计

eda整点报时程序课程设计

eda整点报时程序课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握整点报时程序的设计原理;2. 学生能够运用所学知识,设计并实现一个简单的整点报时程序;3. 学生了解时钟信号的产生与处理方法,理解程序中的时间计算方法。

技能目标:1. 学生能够运用EDA软件进行电路设计和程序编写,具备实际操作能力;2. 学生通过课程实践,提高问题分析、程序调试和优化能力;3. 学生能够运用所学技能,解决实际生活中的时间显示问题。

情感态度价值观目标:1. 学生培养对电子设计自动化技术的兴趣,激发创新意识;2. 学生在课程实践中,培养团队合作精神和沟通能力,增强自信心;3. 学生认识到科技对生活的改变,增强社会责任感和使命感。

课程性质:本课程为电子信息类课程,旨在让学生掌握EDA技术的基本原理和应用,培养实际操作能力。

学生特点:学生具备一定的电子技术基础知识,对编程和设计有一定了解,但可能缺乏实际操作经验。

教学要求:结合学生特点,课程注重实践操作,让学生在动手过程中掌握知识,提高技能,培养正确的情感态度价值观。

通过分解课程目标为具体学习成果,为教学设计和评估提供依据。

二、教学内容1. EDA技术概述:介绍EDA技术的定义、发展历程和应用领域,使学生了解EDA技术的重要性。

教材章节:第一章 电子设计自动化概述内容列举:EDA技术定义、发展历程、应用领域2. 整点报时程序设计原理:讲解时钟信号产生、处理方法,以及程序中的时间计算方法。

教材章节:第三章 时序逻辑电路设计内容列举:时钟信号产生、处理方法;时间计算方法;整点报时程序设计原理3. EDA软件操作:教授EDA软件的使用方法,包括电路设计、程序编写和仿真调试。

教材章节:第二章 EDA软件及其操作内容列举:EDA软件安装与界面;电路设计;程序编写与仿真调试4. 实践操作:指导学生进行整点报时程序的电路设计和程序编写,进行实际操作。

EDA技术课程设计数码管显示数字钟设计

EDA技术课程设计数码管显示数字钟设计

课程设计任务书设计题目1:数码管显示数字钟设计院(系)分管领导:教研室主任:指导教师:2017年6月23日目录第1章引言 0第2章电路原理 0第3章程序设计 (1)顶层模块设计 (2)时钟分频模块设计 (2)按键驱动模块设计 (2)时钟计数模块设计 (3)整点报时模块 (4)LED灯花腔显示模块 (5)数码管显示模块设计 (6)第4章调试、测试分析及结果 (7)调试 (7)测试分析 (8)结果 (9)第5章小结 (10)参考文献 (11)附录电路图及程序 (12)第1章引言EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从运算机辅助设计(CAD)、运算机辅助制造(CAM)、运算机辅助测试(CAT)和运算机辅助工程(CAE)的概念进展而来的。

EDA技术确实是以运算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL或Verilog HDL完成设计文件,然后由运算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直相当于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

EDA技术的显现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

Verilog HDL是一种描述语言,以来描述硬件的结构和行为的语言,用它能够表示逻辑电路图、,还能够表示数字逻辑系统所完成的逻辑功能。

这次课程设计咱们运用QuartusⅡ那个软件,利用Verilog HDL语言进行编程。

数字钟是一种用数字电路技术实现时、分、秒计时的钟表。

与机械钟相较具有更高的准确性和直观性,具有更长的利用寿命,已取得普遍的利用。

数字钟的设计方式有许多种,例如可用中小规模集成电路组成电子钟,也能够利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还能够利用单片机来实现电子钟等等。

这些方式都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。

EDA整点报时课程设计

EDA整点报时课程设计

EDA整点报时课程设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握整点报时的原理。

2. 学生能运用所学知识,设计并实现一个简单的整点报时电路。

3. 学生了解时钟信号的基本特性,理解晶振在时钟电路中的作用。

技能目标:1. 学生通过本课程的学习,具备使用EDA软件进行电路设计和仿真的能力。

2. 学生能够运用电子元件搭建整点报时电路,并解决实际操作过程中遇到的问题。

3. 学生能够进行简单的电路调试和优化,提高电路的稳定性和准确性。

情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发他们探索未知、勇于创新的科学精神。

2. 学生通过团队协作完成课程任务,培养合作意识,提高沟通能力。

3. 学生在课程实践中,体验到学以致用的成就感,增强自信心。

课程性质:本课程为实践性较强的课程,结合理论教学和实际操作,旨在培养学生运用EDA技术解决实际问题的能力。

学生特点:学生具备一定的电子基础知识,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:教师需注重理论与实践相结合,引导学生主动参与,关注学生的个体差异,提供有针对性的指导。

通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。

二、教学内容本课程以《电子技术》教材中关于EDA技术和时钟电路的相关章节为基础,结合以下教学内容:1. EDA技术简介:介绍EDA技术的发展、基本概念及其在电子设计中的应用。

2. 时钟信号原理:讲解时钟信号的基本特性、晶振的工作原理及其在时钟电路中的作用。

3. 整点报时电路设计:分析整点报时电路的原理,介绍常见电路元件的选用和连接方法。

4. EDA软件操作:教授EDA软件的基本操作,包括原理图绘制、电路仿真和PCB布线等。

5. 电路搭建与调试:指导学生使用电子元件搭建整点报时电路,并进行调试和优化。

教学内容安排和进度如下:1. 第1课时:介绍EDA技术及其在电子设计中的应用。

2. 第2课时:学习时钟信号原理,了解晶振的作用。

EDA课程设计报告数字电子钟

EDA课程设计报告数字电子钟

数字钟一、【课题要求】1.设计一个能显示1/10秒、秒、分、时的12小时数字钟。

2.熟练掌握各种计数器的使用。

3.能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。

4.能用低位的进位输出构成高位的计数脉冲。

<注意>1、时钟源使用频率为0.1HZ的连续脉冲。

2、设置两个按钮,一个供“开始”及“停止”使用,一个供系统“复位”用。

3、时钟显示使用数码管显示。

4、“时显示”部分注意12点后显示1点。

5、注意各部分的关系,由低位到高位逐级设计、调试。

二、【分析与设计】数字钟是计数器的综合应用,数字钟由十分之一秒、秒钟、分钟、时钟组成,十分之一秒由十进制计数器74160组成,秒钟由六十进制计数器构成,分钟由六十进制计数器,时钟由十二进制计数器构成。

该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL文本设计及原理图设计。

输入端clk是连续脉冲,clrn是高电平系统复位,en是高电平使能端,输出端是十分之一秒位、秒钟个位、秒钟十位、分钟个位、分钟十位、时钟个位、时钟十位,最后由7个数码管显示各位的值。

该数字钟程序的底层文件主要有六进制计数器模块、六十进制计数器模块和十二进制模块,对各模块进行封装,供顶层文件调用,各模块有VHDL 文本设计及原理图设计。

程序框图:十分之一秒 秒钟 分钟 小时三、【程序代码及原理图】 1、六进制计数器VHDL 代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cout6 ISPORT(clk,en,clrn,load:IN STD_LOGIC;date:IN STD_LOGIC_VECTOR(2 DOWNTO 0); cnt:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); co:OUT STD_LOGIC ); END cout6;ARCHITECTURE behave OF cout6 ISSIGNAL q:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINco<='1' WHEN((q="101")AND(en='1'))ELSE'0'; PROCESS(en,clk) BEGINIF clrn='0' THEN q<="000";ELSIF(clk'event and clk='1') THENIF load='0' THEN q<=date;ELSIF en='1' THEN q<=q+1;IF(q="101")THEN q<="000";END IF;END IF;END IF;END PROCESS;cnt<=q;END behave;波形仿真:2、六十进制计数器原理图:波形仿真:3、十二进制计数器VHDL代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cout12 ISPORT(clk,clrn,ldn,en:IN STD_LOGIC;ha:IN STD_LOGIC_VECTOR(3 DOWNTO 0); hb:IN STD_LOGIC;qa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); qb:out STD_LOGIC);END cout12;ARCHITECTURE behav OF cout12 ISSIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL b:STD_LOGIC;SIGNAL a:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(en,clk)BEGINIF clrn='0' THENq<="0000";ELSIF(clk'event and clk='1') THEN IF ldn='0' THENb<=hb;a<=ha;ELSIF en='1' THENq<=q+1;IF(q="1011")THENq<="0000"; END IF;END IF;END IF;CASE q ISWHEN"0000"=>b<='1';a<="0010"; WHEN"0001"=>b<='0';a<="0001"; WHEN"0010"=>b<='0';a<="0010"; WHEN"0011"=>b<='0';a<="0011"; WHEN"0100"=>b<='0';a<="0100"; WHEN"0101"=>b<='0';a<="0101"; WHEN"0110"=>b<='0';a<="0110"; WHEN"0111"=>b<='0';a<="0111"; WHEN"1000"=>b<='0';a<="1000"; WHEN"1001"=>b<='0';a<="1001"; WHEN"1010"=>b<='1';a<="0000"; WHEN"1011"=>b<='1';a<="0001"; WHEN OTHERS =>NULL;END CASE;END PROCESS;qa<=a;qb<=b;END ARCHITECTURE behav;波形仿真:4、数字钟原理图:波形仿真:四、【结果与测试】根据六进制的波形图判断出六进制的设计正确,实现了0~5的计数,并且在5处产生进位,将六进制进行封装与十进制74160根据原理图设计成六十进制计数器,然后将它进行封装,根据六十进的波仿真图可以看出实现了0~59的计数,并且在59处产生进位,然后将它进行封装。

EDA电子钟多功能数字时钟课程设计(含代码)[优秀]

EDA电子钟多功能数字时钟课程设计(含代码)[优秀]

多功能数字时钟设计说明:1.系统顶层框图:各模块电路功能如下:1.秒计数器、分计数器、时计数器组成最基本的数字钟,其计数输出送7段译码电路由数码管显示.2.基准频率分频器可分频出标准的1HZ频率信号,用于秒计数的时钟信号;分频出4HZ频率信号,用于校时、校分的快速递增信号;分频出64HZ频率信号,用于对按动“校时”,“校分”按键的消除抖动.2.多功能数字钟结构框图:一、系统功能概述已完成功能1.完成时/分/秒的依次显示并正确计数,利用六位数码管显示;2.时/分/秒各段个位满10正确进位,秒/分能做到满60向前进位,有系统时间清零功能;3.定时器:实现整点报时,通过扬声器发出高低报时声音;4.时间设置,也就是手动调时功能:当认为时钟不准确时,可以分别对分/时钟进行调整;5.闹钟:实现分/时闹钟设置,在时钟到达设定时间时通过扬声器响铃.有静音模式.待改进功能:1. 系统没有万年历功能,正在思考设计方法.2. 应添加秒表功能.二、系统组成以及系统各部分的设计1.时计数模块时计数模块就是一个2位10进制计数器,记数到23清零.VHDL的RTL描述如下:----cnt_h.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_h isport(en,clk,clr:in std_logic;dout:out std_logic_vector(7 downto 0);c:out std_logic);end cnt_h;architecture rtl of cnt_h issignal t:std_logic_vector(7 downto 0);beginprocess(en,clk,clr)variable t:std_logic_vector(7 downto 0);beginif en='1' then --异步使能if clk 'event and clk='1' thent:=t+1;if t(3 downto 0)=X"A" then --个位等于10则十位加1t(7 downto 4):=t(7 downto 4)+1;t(3 downto 0):=X"0"; --个位清零end if;if t>X"23" then --大于23清零t:=X"00";end if;end if;if clr='1' then --异步清零t:=X"00";end if;end if;dout<=t;end process;end rtl;时计数器模块仿真波形如下从仿真波形可知,当计数到23时,下一个时钟上升沿到来时就清零了,符合设计要求.时计数模块框图如下2.分及秒计数模块分及秒计数模块也是一个2位10进制计数器,记数到59清零.VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end cnt_s;architecture rtl of cnt_s isbeginprocess(en,clk,clr)beginif en='1' thenif clr='1' then --异步清零dout<=X"00";elsif clk 'event and clk='1' thenif dout(3 downto 0)<9 thendout(3 downto 0)<=dout(3 downto 0)+1;c<='0';elsif dout(7 downto 4)<5 thendout(3 downto 0)<=X"0";dout(7 downto 4)<=dout(7 downto 4)+1;elsedout<=X"00";c<='1';end if;end if;else dout<="ZZZZZZZZ";end if;end process;end rtl;分和秒计数器模块仿真波形如下从仿真波形可知,当计数到59时,下一个时钟上升沿到来时就清零了,并且产生进位信号,符合设计要求.分和秒计数模块框图如下3.按键消抖动模块按键消抖动有很多方案,这里选择的是计数消抖,即只当有效电平到来后开始计数,当计数值大于一定值后再输出该有效电平,否则不输出,从而达到消抖目的. VHDL的RTL描述如下:library ieee;use ieee.std_logic_1164.all;entity haoin isport(din,clk:in std_logic;dout:out std_logic); end haoin;architecture rtl of haoin isbeginprocess(din)variable t: integer range 0 to 63:=0;beginif din='1' thenif clk 'event and clk='1'thent:=t+1;if t>10 thendout<='1';t:=t-1;else dout<='0';end if;end if;else dout<='0';t:=0;end if;end process;end rtl;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ring isport(clk: in std_logic;clk500: in std_logic;clk1k:in std_logic;beep:out std_logic);end ring;architecture rtl of ring isbeginprocess(clk)variable t: std_logic;variable n: integer range 0 to 15:=0;beginif clk 'event and clk='1' thent:=not t;n:=n+1;end if;if t='1' and n<11 thenbeep<=clk500;elsif n=11 thenbeep<=clk1k;else beep<='Z';end if;end process;end rtl;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity clock isport(SA: in std_logic;SB: in std_logic;SC: in std_logic;SD: in std_logic;clk1: in std_logic;dout: buffer std_logic_vector(23 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0);beep: out std_logic--led:out std_logic_vector(3 downto 0));end entity clock;architecture rtl of clock isco米ponent cnt_s isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0);c:out std_logic);end co米ponent;co米ponent cnt_h isport(en,clk,clr:in std_logic;dout:buffer std_logic_vector(7 downto 0));end co米ponent;--co米ponent seg米ain is--port(clk,reset_n:in std_logic;--datain:in std_logic_vector(15 downto 0);--seg_data:out std_logic_vector(7 downto 0);--seg_co米:out std_logic_vector(3 downto 0));--end co米ponent;--co米ponent ring is--port( en: in std_logic;-- clk: in std_logic;--clk500: in std_logic;--clk1k:in std_logic;--beep:out std_logic);--end co米ponent;co米ponent haoin isport(din,clk:in std_logic;dout:out std_logic);end co米ponent;co米ponent naoling isport (h,米:in std_logic_vector(7 downto 0);clk4hzh,clk4hz米:in std_logic;sys_en,sys_rst:in std_logic;h_o,米_o: out std_logic_vector(7 downto 0);beep:out std_logic);end co米ponent;signal reg_h:std_logic_vector(7 downto 0);signal reg_米:std_logic_vector(7 downto 0);signal reg_s:std_logic_vector(7 downto 0);signal reg_米_s:std_logic_vector(7 downto 0):=X"59"; signal reg_米_米:std_logic_vector(7 downto 0):=X"59";signal reg_米_h:std_logic_vector(7 downto 0):=X"59";signal clk_h:std_logic;signal clk_米:std_logic;signal clk_s:std_logic;signal c_s :std_logic;signal c_米:std_logic;signal c_h :std_logic;signal sys_clk1:std_logic;signal sys_clk4:std_logic;signal sys_clk64:std_logic;signal sys_clk500:std_logic;signal sys_clk1k:std_logic;signal clki:integer:=750000;signal sys_rst:std_logic:='0';signal sys_en:std_logic:='1';signal clk_ring,米h:std_logic;signal SAc,SBc,SCc,SDc:std_logic;signal en_r:std_logic;signal NL_reg_h,NL_reg_米:std_logic_vector(7 downto 0);signal NL_ring:std_logic;signal sys_clk4_NL_h,sys_clk4_NL_米:std_logic;beginh:cnt_h port 米ap(en=>sys_en,clk=>clk_h,clr=>sys_rst,dout=>reg_h);米:cnt_s port 米ap(en=>sys_en,clk=>clk_米,clr=>sys_rst,dout=>reg_米,c=>c_米);s:cnt_s port 米ap(en=>sys_en,clk=>sys_clk1,clr=>SCc,dout=>reg_s,c=>c_s);--sled:seg米ain port 米ap(clk=>clk1,reset_n=>SCc,seg_data=>seg_data,seg_co 米=>seg_co米,datain=>dout(15 downto 0));--ring0:ring port 米ap(en=>en_r,clk=>clk_ring,clk500=>sys_clk500,clk1k=>sys_clk1k,beep=>beep); haoin1:haoin port 米ap( SA,sys_clk64,SAc);haoin2:haoin port 米ap( SB,sys_clk64,SBc);haoin3:haoin port 米ap( SC,sys_clk64,SCc);haoin4:haoin port 米ap( SD,sys_clk64,SDc);NL:naoling port 米ap(beep=>NL_ring,h=>reg_h,米=>reg_米,clk4hzh=>sys_clk4_NL_h,clk4hz米=>sys_clk4_NL_米,sys_en=>sys_en,sys_rst=>sys_rst,h_o=>NL_reg_h,米_o=>NL_reg_米);beep<=clk_ring and 米h;--led<=reg_s(3 downto 0);p_sys_clk:process(clk1)variable t1,t4,t64,t500,t1k:integer range 0 to 50000000;beginif clk1 'event and clk1='1' thent1:=t1+1;t4:=t4+1;t64:=t64+1;t500:=t500+1;t1k:=t1k+1;if t1=clki/2 thent1:=0;sys_clk1<=not sys_clk1;end if;if t4=clki/8 thent4:=0;sys_clk4<=not sys_clk4;end if;if t64=clki/128 thent64:=0;sys_clk64<=not sys_clk64;end if;if t500=clki/1000 thent500:=0;sys_clk500<=not sys_clk500;end if;if t1k=clki/2000 thent1k:=0;sys_clk1k<=not sys_clk1k;end if;end if;end process p_sys_clk;p_c:process(SAc,SBc,SCc,SDc)beginif SAc='1' and SDc='0' thenclk_h<=sys_clk4;elseclk_h<=c_米;end if;if SAc='1' and SDc='1' thensys_clk4_NL_h<=sys_clk4;elsesys_clk4_NL_h<='0';end if;if SBc='1' and SDc='0'thenclk_米<=sys_clk4;elseclk_米<=c_s;end if;if SBc='1' and SDc='1'thensys_clk4_NL_米<=sys_clk4;elsesys_clk4_NL_米<='0';end if;if SDc='0' thendout(7 downto 0)<=reg_s;dout(15 downto 8)<=reg_米;dout(23 downto 16)<=reg_h;elsedout(7 downto 0)<="ZZZZZZZZ";dout(15 downto 8)<=NL_reg_米;dout(23 downto 16)<=NL_reg_h;end if;end process p_c;P_ring:process(reg_米,reg_s,sys_clk1k)variable clk_ring_t:std_logic;variable t:std_logic_vector(3 downto 0);beginif reg_米=X"59" and (reg_s=X"50" or reg_s=X"52" or reg_s=X"54" or reg_s=X"56" or reg_s=X"58") thenclk_ring_t:=sys_clk500;elsif reg_米=X"00" and reg_s=X"00" thenclk_ring_t:=sys_clk1k;else clk_ring_t:='Z';end if;if NL_ring='1' thenclk_ring_t:=sys_clk1k;end if;if sys_clk1k 'event and sys_clk1k='1' thent:=t+1;end if;if t>1 then 米h<='1';end if;clk_ring<=clk_ring_t;end process p_ring;end rtl;。

eda整点报时程序课程设计

eda整点报时程序课程设计

eda整点报时程序课程设计一、课程目标知识目标:1. 让学生掌握EDA(电子设计自动化)软件的使用,理解整点报时程序的原理;2. 使学生了解数字时钟的工作机制,掌握时、分、秒的计时方法;3. 帮助学生理解程序设计的基本思路,学会编写简单的Verilog代码。

技能目标:1. 培养学生运用EDA软件进行数字电路设计和仿真实验的能力;2. 培养学生具备分析问题、解决问题的能力,能够根据实际需求编写合适的程序;3. 提高学生的团队协作和沟通能力,通过合作完成课程设计任务。

情感态度价值观目标:1. 培养学生热爱科学,对电子技术产生浓厚的兴趣;2. 培养学生具备创新意识,敢于挑战新问题,勇于尝试;3. 培养学生严谨、务实的学术态度,注重实践操作,养成良好的学习习惯。

分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在让学生通过本章节的学习,掌握EDA整点报时程序的设计方法,培养其编程能力和实际操作技能。

同时,注重学生的团队协作和情感态度的培养,使他们在学习过程中形成积极向上的学习氛围,为未来的电子技术学习打下坚实基础。

二、教学内容本章节教学内容依据课程目标,结合课本相关章节,组织以下内容:1. EDA软件介绍与操作:使学生熟悉EDA软件的基本功能,掌握软件的操作方法,包括新建项目、添加文件、编译和仿真等。

参考教材章节:第一章 电子设计自动化概述2. 数字时钟原理:讲解数字时钟的基本原理,分析时、分、秒的计数规律,为编写整点报时程序打下基础。

参考教材章节:第二章 数字电路基础3. Verilog编程语言:介绍Verilog的基本语法,通过实例讲解,使学生掌握编写简单程序的方法。

参考教材章节:第三章 Verilog硬件描述语言4. 整点报时程序设计:分析整点报时程序的需求,指导学生编写、调试和优化程序。

参考教材章节:第四章 数字系统设计实例5. 仿真实验与验证:指导学生进行仿真实验,验证整点报时程序的准确性,并对程序进行优化。

EDA课程数字钟设计报告(1)

EDA课程数字钟设计报告(1)

EDA课程数字钟设计报告(1)EDA课程数字钟设计报告一、设计目标:本次设计要求设计一款数字钟,要求具有如下功能:1.计时功能:能够以时、分、秒的形式显示时间,每经过一秒钟就自动更新时间。

2.报时功能:能够在每个整点或半个小时时报时,并具有报时器关闭功能。

3.闹钟功能:设定闹钟时间后,在设定时间到达时自动响铃。

4.指示功能:能够以数字形式指示时间,并能在背景板上对时间进行显示。

二、方案设计:1.硬件设计:本次设计所需器材包括Cyclone IV E FPGA,七段数码管以及电路底板。

Cyclone IV E是英特尔公司推出的第四代Cyclone系列FPGA器件,具有可编程的逻辑元件、存储器单元和DSP功能单元等特点,足以满足本项目所需的复杂性。

七段数码管是一种显示器件,可以用来显示数字和一些字母。

本设计采用了常见的共阳极七段数码管。

电路底板是一个电路板,用于连接各种测试设备并测试控制电路。

2.软件设计:本设计的软件应该被分为以下几个部分来实现:1.时钟模块:该模块负责自动更新钟表,更新范围应该包括时、分、秒的更新。

2.闹钟模块:该模块负责实现闹钟功能,比较当前时间和设定时间,如果相同,则自动响铃。

3.报时模块:该模块负责在每个整点或半个小时时报时,并可自动关闭报时器。

4.数字显示模块:该模块主要用于以数字形式指示时间,并能在背景板上显示时间。

5.用户交互模块:该模块负责接受用户输入,开关闹钟、报时器,并显示设置的时间和状态信息。

三、实现:1. 外部电路该设计采用七段数码管显示时间,其中每个数码管都有8个引脚,分别对应7条段和一个共阳极。

在数字显示时,需要依次将每个数码管复位,并发送相应的数据信号,以显示所需的数字。

数字与LED的亮度控制采用PWM宽度调制技术,可实现手动调节亮暗。

2. 操作流程本设计操作流程为:用户首先输入设定的闹钟时间、关闭报时器的时间间隔及报时器、闹钟等的开启与关闭状态。

系统开始计时并根据所设定的时间执行相应操作。

EDA课程设计数字钟

EDA课程设计数字钟

EDA课程设计论文-----数字钟一、设计要求说明设计并实现具有一定功能的数字小系统(数字钟)要求:1、对所有设计的小系统能够正确分析;2、基于VHDL语言描述系统的功能;3、在max+plus2环境中编译通过;4、仿真通过并得到正确的波形;5、给出相应的设计报告。

6;要求数字钟能够设置初始时间难度要求:至少有2层电路,底层电路至少有4中元件。

二、方案论证该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个子模块:计时、报时(alarm1)、重置时间(s1、m1、h1、d1)。

其中计时模块有4部分构成:秒计时器(second1)、分计时器(minute1)、时计时器(hour1)和星期计时器(day1)。

秒计时器(second1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。

其中reset 为清0信号,当reset为0时,秒计时器清0;set 为置数信号,当set为0时,秒计时器置数,置s1的值。

clk为驱动秒计时器的时钟,sec为秒计时器的输出,ensec为秒计时器的进位信号,作为下一级的时钟输入信号。

分计时器(minute1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。

其中reset 为清0信号,当reset为0时,分计时器清0;set 为置数信号,当set为0时,分计时器置数,置m1的值。

clkm为驱动分计时器工作的时钟,与ensec相连接;min为分计时器的输出;enmin为分计时器的进位信号,作为下一级的时钟输入信号。

时计时器(hour1)是由一个24进制的计数器构成的,具有清0、置数和计数功能。

其中reset 为清0信号,当reset为0时,时计时器清0;set 为置数信号,当set为0时,时计时器置数,置h1的值。

clkh为驱动时计时器工作的时钟,与enmin相连接;hour为时计时器的输出;enhour为时计时器的进位信号,作为下一级的时钟输入信号。

EDA技术--数字电子钟的设计.

EDA技术--数字电子钟的设计.

电子信息工程专业项目化课程《EDA技术》项目二总结报告数字电子钟的设计班级姓名指导老师完成时间 2010 年 10 月 4 日项目二数字电子钟的设计一、概述设计一个具有校时、校分功能的能进行正常时、分、秒计时,分别有六个数码管显示时、分、秒的数字电子钟电路。

并具有整点报时功能。

二、项目要求1.实现60 进制分、秒和24进制时的计时功能。

2.由六个数码管动态显示时、分、秒。

3.通过按键实现校时、校分功能。

4.能利用蜂鸣器实现整点报时,59分50秒开始报时,整点结束。

5.用层次化(模块化)设计方法设计总电路,用VHDL语言编写各个功能模块。

6.用EDA实训系统下载验证三、数字时钟总电路设计四、VHDL语言编程设计4.1、 60进制设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jinzhi60 isport (ctp,nreset,clk1s:in std_logic;co:out std_logic;qhh:out std_logic_vector(3 downto 0); qll:out std_logic_vector(3 downto 0)); end jinzhi60;architecture behave of jinzhi60 issignal ql,qh:std_logic_vector(3 downto 0); beginco<='1' when (qh="0101" and ql="1001" and ctp='1') else'0'; process(clk1s,nreset,ctp) beginif(nreset='0')thenqh<="0000";ql<="0000";elsif(clk1s' event and clk1s='1')thenif(ctp='1')thenif (qh="0101" and ql="1001")thenqh<="0000";ql<="0000";elsif(ql<9)thenql<=ql+1;elseql<="0000";qh<=qh+1;end if;end if;end if;qhh<=qh; qll<=ql;end process;end behave;4.2、24进制设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jinzhi24 isport (ctp,nreset,clk1s:in std_logic;co:out std_logic;qhh:out std_logic_vector(3 downto 0);qll:out std_logic_vector(3 downto 0));end jinzhi24;architecture behave of jinzhi24 issignal ql,qh:std_logic_vector(3 downto 0);beginco<='1' when (qh="0101" and ql="1001" and ctp='1') else'0'; process(clk1s,nreset,ctp)beginif(nreset='0')thenqh<="0000";ql<="0000";elsif(clk1s' event and clk1s='1')thenif(ctp='1')thenif (qh="0101" and ql="1001")thenqh<="0000";ql<="0000";elsif(ql<9)thenql<=ql+1;elseql<="0000";qh<=qh+1;end if;end if;end if;qhh<=qh; qll<=ql;end process;end behave;4.3、动态扫描library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity datm isport(clk:in bit;a,b,c,d,e,f:in std_logic_vector(3 downto 0); w:out std_logic_vector(2 downto 0); q:out std_logic_vector(6 downto 0)); end datm;architecture wei of datm issignal qq:std_logic_vector(3 downto 0); signal cntt:std_logic_vector(2 downto 0); begin process(clk)variable cnt:std_logic_vector(2 downto 0); 6beginif clk'event and clk='1' then if cnt<5 then cnt:=cnt+1; else cnt:="000"; end if;cntt <=cnt;case cnt iswhen "000"=>qq<=a; when "001"=>qq<=b; when "010"=>qq<=c; when "011"=>qq<=d; when "100"=>qq<=e; when "101"=>qq<=f; when others=>null; end case;end if;end process;process(qq)beginw<=cntt;case qq iswhen "0000"=>q<="1111110"; when "0001"=>q<="0110000"; when "0010"=>q<="1101101"; when "0011"=>q<="1111001"; when"0100"=>q<="0110011"; when "0101"=>q<="1011011"; when"0110"=>q<="1011111"; when "0111"=>q<="1011111"; when"1000"=>q<="1110000"; 7when "1001"=>q<="1111111"; when "1010"=>q<="1111011"; when "1011"=>q<="1110111"; when "1100"=>q<="0011111"; when"1101"=>q<="1001110"; when "1110"=>q<="1001111"; when"1111"=>q<="1000111"; when others=>q<="0000000"; end case;end process;end wei;4.5、1000分频设计library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity datm1000 is port(clk:in std_logic;co:out std_logic);end datm1000;architecture behave of datm1000 is beginprocess(clk)variable cn:integer:=0;beginif (clk'event and clk='1') then if (cn<999) thencn:=cn+1;co<='0';elsecn:=0;co<='1';End if;end if;End process;end behave;4.6、校时、校分电路 library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity xuanz isport (b,n,m:in std_logic; qo:out std_logic);end xuanz;architecture beha of xuanz is beginprocess(b,n,m)beginif (m='1') thenqo<=b;elseqo<=n;end if;end process;end beha;4.7、报时电路library ieee;use ieee.std_logic_1164.all; 9use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity baoshi isport (m1,m0,s1,s0: in std_logic_vector(3 downto 0);clk:in std_logic;q: out std_logic);end baoshi;architecture rtl of baoshi isbeginprocess(clk)variable c0 :std_logic_vector(2 downto 0);beginif clk'event and clk='1' thenif m1="0101"and m0="1010" and s1="0101" thenc0:=c0+1;if s0="0000"or s0="0010"or s0="0100" or s0="0110" or s0="1000"then q<='0'; elseq<='1';end if;elseq<='1';end if;end if;end process;end rtl;五、总电路框图5.1 引脚设置首先使用软件选择对应的实验箱芯片:Assign>>Device 选择FLEX10K>>EPF10K10LC84-3,然后OK。

简易数字钟的EDA设计

简易数字钟的EDA设计

序号:学号:课程名称: FPGA设计及应用论文题目:简易数字钟的EDA设计学生姓名:学院(系):专业班级:简易数字钟的EDA设计一、产品设计需求说明本产品实现的功能:1、数字钟功能:数字钟时间为24小时一个周期:数字钟须显示时、分、秒。

2、校时功能:可以分别对时、分、秒进行单独校时,使其调整到标准时间。

3、扩展功能:整点报时系统。

设计整点报时电路,每当数字钟达到整点时开始报时,并发出鸣叫声,十秒后鸣叫结束。

设计参数:使用的芯片/硬件平台GW48实验系统软件平台WindowsXP + MuxplusII10.1二、方案设计及实现1、系统实现原理和总体框图数字式电子钟实际上是一个对标准1Hz进行计数的计数电路,秒计数器满60秒后向分计数器进位,分计数器满60秒后向时计数器进位,时计数器按24翻1规律计数,计数输出经译码器送LED显示器,由于计数的起始时间不可能与标准时间(北京时间)一致,故需要在电路上加上一个校时电路,该数字式电子钟除用于计时外,还能整点报时,如图(1-1)所示为多功能数字式电子钟的构成框图。

除校时功能外,电子钟处于其他功能状态时并不影响数字钟的运行,该电子钟利用GW48 EDA实验平台的扬声器进行整点报时。

图(1-1)多功能数字式电子钟的系统框图2、主要模块之计数器模块的设计计数器模块说明:时分秒计数器模块由秒个位、十位计数器,分个位、十位计数器以及时个位、十位计数电路组成。

其中,秒个位和秒十位计数器、分个位和分十位计数为六十进制计数器,而根据设计要求,时个位和时十位构成的为二十四进制计数器。

因此时分秒计数器模块可划分为时计数、分计数和秒计数3个子模块,根据设计要求,时计数子模块为一个二十四进制可预置的BCD码计数器模块;分计数和秒计数子模块均为六十进制可预置的BCD码计数器模块。

算法原理如图(1-2)、图(1-4)、图(1-6)所示源代码:1)、六进制计数器:--File:counter6.vhd--Designer:AAA--Module:decimal counter--Description: It is a decimal counter with a carry.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; 图(1-2)六进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter6 ISPORT(clk:IN STD_LOGIC;reset:IN STD_LOGIC;din:IN STD_LOGIC_VECTOR(2 DOWNTO 0);dout:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);c:OUT STD_LOGIC);END counter6;ARCHITECTURE dianzizhong OF counter6 ISSIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THEN --计数器复位count<=din;c<='0';ELSIF rising_edge(clk) THENIF count="101" THEN --到5后,计数器清零count<="000";c<='1';ELSEcount<=count+1;c<='0';END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-3) 六进制计数器功能仿真图2)、十进制计数器:--File:counter10.vhd--Designer:AAA--Module:decimal counter--Description: It is a decimal counter with a carry.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; 图(1-4)十进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter10 ISPORT(clk :IN STD_LOGIC;reset: IN STD_LOGIC;din: IN STD_LOGIC_VECTOR(3 DOWNTO 0);dout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);c: OUT STD_LOGIC);END counter10;ARCHITECTURE dianzizhong OF counter10 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THEN --计数器复位count<=din;c<='0';ELSIF rising_edge(clk) THENIF count="1001" THEN --到9后,计数器清零count<="0000";c<='1';ELSEcount<=count+1;c<='0';END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-5) 十进制计数器功能仿真图3)、二十四进制计数器:--File:counter24.vhd--Designer:沙桂珍--Module:counter base-24--Description: It is a counter base-24.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;图(1-6)二十四进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter24 ISPORT(clk:IN STD_LOGIC;reset:IN STD_LOGIC;din:IN STD_LOGIC_VECTOR(5 DOWNTO 0);dout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END counter24;ARCHITECTURE dianzizhong OF counter24 ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THENcount<=din;ELSIF rising_edge(clk) THENIF count="100011" THEN --达到23时下一次归0count<="000000";ELSIF count(3 DOWNTO 0)="1001" THENcount(3 DOWNTO 0)<="0000"; --低位到9后,计数器清零count(5 DOWNTO 4)<=count(5 DOWNTO 4)+1; --高位加1ELSEcount(3 DOWNTO 0)<=count(3 DOWNTO 0)+1;END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-7) 二十四进制计数器功能仿真图3、主要模块之校时模块的设计校时模块说明:当刚接通电源或走时出现误差时都需要对时间进行校正,对时间的校正是通过对时间的重置来实现,当功能键reset为1、load为0时即进入校时模式,此模式下可通过对sel键的选择来给时,分,秒中的一个进行置数,当sel为“01”时是校时状态,为“10”时是校分状态,为“11”时是校秒状态,在对其中一个置数时不会影响其他两个计数。

eda数字钟课程设计

eda数字钟课程设计

课程设计题目:VHDL数字时钟设计系部:机电工程系班级:08电信(3)班姓名:学号:指导老师:VHDL数字时钟设计一、设计分析1、功能介绍(1)具有时、分、秒计数显示功能,以24小时循环计时。

(2)时钟计数显示时有LED灯的花样显示。

(3)具有调节小时、分钟及清零的功能。

(4)具有整点报时功能。

2、总体方框图3、性能指标及功能设计1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。

我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

可以根据我们自己任意时间的复位。

4)蜂鸣器在整点时有报时信号产生,蜂鸣器报警。

产生“滴答.滴答”的报警声音。

5)LED灯在时钟显示时有花样显示信号产生。

即根据进位情况,LED不停的闪烁,从而产生“花样”信号。

二、选择方案1、方案选择根据总体方框图及各部分分配的功能可知,本系统可以由秒计数器、分钟计数器、小时计数器、整点报时、分的调整以及小时的调整和一个顶层文件构成。

采用自顶向下的设计方法,子模块利用VHDL语言设计,顶层文件用原理图的设计方法。

显示:小时采用24进制,而分钟和秒均60进制。

三、细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:四、编写程序、仿真和分析1、秒计数器1)VHDL 语言描述程序见附录 2)秒计数器的仿真波形图3)波形分析利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset 作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。

EDA数字时钟课程设计

EDA数字时钟课程设计

课程设计报告学生姓名学号班级专业电子信息工程题目数字时钟设计指导教师2014 年 5 月一、任务和设计要求1. 熟悉集成电路的引脚安排。

2. 掌握各芯片的逻辑功能及使用方法。

3. 了解数字钟的组成及工作原理。

4. 熟悉数字钟的设计与制作。

1.设计指标(1)时间以24 小时为一个周期;(2)显示时、分、秒;(3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;(4)计时过程具有报时功能,当时间到达整点前 5 秒进行蜂鸣报时。

2.设计要求(1)画出电路原理图(或仿真电路图);(2)元器件及参数选择;(3)电路仿真与调试二、设计原理设计思路根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。

这些模块都放在一个顶层文件中。

1)时钟计数:首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。

sethour可以调整时钟的小时部分, setmin可以调整分钟,步进为1。

由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。

CLK端连接外部10Hz的时钟输入信号clk。

对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。

用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。

2)时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。

我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。

可以根据我们自己任意时间的复位。

总体结构图三、系统设计1)时、分、秒计时器时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。

eda数字闹钟课程设计

eda数字闹钟课程设计

eda数字闹钟课程设计一、课程目标知识目标:1. 学生能够理解数字闹钟的基本原理,掌握EDA(电子设计自动化)软件的使用方法;2. 学生能够运用所学的数字电路知识,设计并实现一个具有基本功能的数字闹钟;3. 学生了解数字闹钟中各个模块的功能和相互关系,如时钟模块、闹钟设置模块、显示模块等。

技能目标:1. 学生能够运用EDA软件进行电路设计,提高动手实践能力;2. 学生能够通过小组合作,培养团队协作能力和沟通能力;3. 学生掌握基本的调试方法,能够分析和解决数字闹钟设计过程中出现的问题。

情感态度价值观目标:1. 学生培养对电子设计制作的兴趣,激发创新精神和实践欲望;2. 学生认识到电子技术在日常生活中的重要作用,增强学以致用的意识;3. 学生通过课程学习,培养严谨、细致的学习态度,提高克服困难的勇气和自信心。

分析课程性质、学生特点和教学要求,本课程以实践操作为主,注重培养学生的动手能力和实际应用能力。

针对初中年级学生的认知水平,课程内容以基本原理和实际操作相结合的方式进行,使学生在学习过程中能够将理论知识与实际应用紧密结合,提高学生的学习兴趣和积极性。

通过本课程的学习,学生能够将所学知识运用到实际项目中,实现学以致用,提升自身的综合素质。

二、教学内容本课程教学内容主要包括以下三个方面:1. 数字闹钟原理学习:- 时钟基础知识:时钟信号、晶振、分频器等;- 数字电路基础:逻辑门、触发器、计数器等;- 闹钟功能模块:时钟模块、闹钟设置模块、显示模块等。

2. EDA软件操作与应用:- EDA软件安装与界面认识;- 原理图绘制:学习如何使用软件绘制数字电路原理图;- PCB布线:学习如何将原理图转化为PCB布线图。

3. 数字闹钟设计与制作:- 教学大纲制定:明确教学内容、进度安排和教学目标;- 实践操作:学生分组进行数字闹钟设计、制作和调试;- 评价与反馈:对学生的设计作品进行评价,及时给予反馈。

教学内容与教材关联性:本课程教学内容紧密结合教材中关于数字电路和EDA软件的相关章节,确保学生能够将所学理论知识应用于实际项目中。

EDA课程设计多功能数字时钟报告

EDA课程设计多功能数字时钟报告
II.功能简介…………………………………………………………………………………4
III.开关功能介绍(两种方案)……………………………………………………………4
二.方案论证……………………………………………………5
I.总体方案分析…………………………………………………………………………5
II.电路的工作原理……………………………………………………………………6
二.方案论证:
I。总体方案分析:
利用QuartusII软件设计一个数字钟,对设计电路进行功能仿真,并下载到SmartSOPC实验系统中,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能.本电路在原有基础上进行了拓展,具备以下功能:
①.能进行正常的时、分、秒计时功能;
These electric circuits are all packed with mold piece okay, for the purpose of other electric circuits adjust to use.With count machine composing to account parts, pass a cent repeatedly the machine divides of when the 1 HZ pulse accounts adjust to show that the electric circuit suggests and passes a little bit whole buzzer that tell the time an electric circuit control with the dynamic state.BE counting the way that the machine class adopted synchronously external different step in the inner part while uniting, but came to a synchronous effect through a simple change and than synchronously returned credibility。While showing a control for economizing a resources adoption dynamic state principle,from wove VHDL language of 24 choose 4 data selectors.文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子学课程设计报告带有整点报时的数字钟设计与制作目录一、课程设计的性质、目的和任务 (3)二、课程设计基本要求 (3)三、设计课题要求 (3)四、课程设计所需要仪器 (4)五、设计步骤 (4)1、整体设计框图 (4)2、各个模块的设计与仿真 (4)2.1分频模块 (4)2.2计数器模块 (6)2.3控制模块 (10)2.4数码管分配 (13)2.5显示模块 (14)2.6报时模块 (16)六、调试中遇到的问题及解决的方法 (18)七、心得体会 (18)一、课程设计的性质、目的和任务创新精神和实践能力二者之中,实践能力是基础和根本。

这是由于创新基于实践、源于实践,实践出真知,实践检验真理。

实践活动是创新的源泉,也是人才成长的必由之路。

通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。

二、课程设计基本要求掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。

三、设计课题要求(1)构造一个24小时制的数字钟。

要求能显示时、分、秒。

(2)要求时、分、秒能各自独立的进行调整。

(3)能利用喇叭作整点报时。

从59分50秒时开始报时,每隔一秒报时一秒,到达00分00秒时,整点报时。

整点报时声的频率应与其它的报时声频有明显区别。

#设计提示(仅供参考):(1)对频率输入的考虑数字钟内所需的时钟频率有:基准时钟应为周期一秒的标准信号。

报时频率可选用1KHz和2KHz左右(两种频率相差八度音,即频率相差一倍)。

另外,为防止按键反跳、抖动,微动开关输入应采用寄存器输入形式,其时钟应为几十赫兹。

(2)计时部分计数器设计的考虑分、秒计数器均为模60计数器。

小时计数为模24计数器,同理可建一个24进制计数器的模块。

(3)校时设计的考虑数字钟校准有3个控制键:时校准、分校准和秒校准。

微动开关不工作,计数器正常工作。

按下微动开关后,计数器以8Hz频率连续计数(若只按一下,则计数器增加一位),可调用元件库中的逻辑门建一个控制按键的模块,即建立开关去抖动电路(见书70页)。

(4)报时设计的考虑可以将高频时钟分频得到约2KHz和1KHz的音频,作为数字钟的报时频率。

当电子钟显示XX:59:50时,数字钟开始报时“DO",持续一秒,而且每隔一秒报一下,直至显示XX:00:00时报“DI",持续一秒后停止。

最后输出至喇叭。

应调用元件库中的逻辑门建一个控制报时的模块。

(5)建一个七段译码的模块因在系统可编程器件实验箱上的数码管没有经过译码,故要用AHDL语言写一个七段译码的模块,且应考虑数码管为共阳极。

数码管上的点(D2、D4、D6)应置Vcc。

四、课程设计所需要仪器1、计算机一台2、quartusⅡ软件3、FPGA开发板五、设计步骤1、模块介绍(1)分频模块:产生1Hz、1KHz、2KHz频率(2)计数器模块:生成60进制、24进制计数器(3)控制模块:按键控制、按键消抖(4)显示模块:7段数码管显示器,分别显示小时、分钟、秒(5)报时模块:进行整点报时2、各个模块的设计与仿真2.1分频模块CLK晶振频率50MHZ,分成2KHZ,1KHZ,1HZ的信号。

基准1HZ信号作为时钟计时的秒计数时钟信号;分频的1KHZ,2KHZ信号用于报时电路的不同声讯。

程序代码:library ieee;use ieee.std_logic_1164.all;entity fre isport(clk ,sel: in std_logic;clk1hz,clk1khz,clk2khz:out std_logic);end fre;architecture beh of fre issignal data1khz,data2khz,data1hz : std_logic := '0';beginclk1hz <= data1hz;clk1khz <= data1khz;clk2khz <= data2khz;clk1khz_pro : process(clk) --产生1khz信号 variable cnt : integer range 0 to 24999;beginif clk'event and clk='1' thenif cnt = 24999 thencnt := 0 ; data1khz <= not data1khz;elsecnt := cnt + 1;end if;end if;end process clk1khz_pro;clk2khz_pro : process(clk) --产生2khz信号 variable cnt : integer range 0 to 12499;beginif clk'event and clk='1' thenif cnt = 12499 thencnt := 0 ; data2khz <= not data2khz;elsecnt := cnt + 1;end if;end if;end process clk2khz_pro;clk1hz_pro : process(data1khz) --产生1hz 信号 variable cnt : integer range 0 to 499;beginif data1khz'event and data1khz='1' thenif sel='0' then cnt:=0;else if cnt = 499 thencnt := 0 ;data1hz <= not data1hz ;elsecnt := cnt + 1;end if;end if;end if;end process clk1hz_pro;end beh;输入模块电路图:f reinst clk sel clk1hzclk1khzclk2khz2.2计数器模块由秒计数器,分计数器,时计数器组成了最基本的数字钟计时电路,两个六十进制计数器与二十四进制计数器组合构成。

程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;entity shuzizhong isport(clk_change : in std_logic;s_en,m_en,h_en:in std_logic;sel:in std_logic;secout,minout,hourout :out std_logic;sl,sh,ml,mh,hl,hh:out std_logic_vector(3 downto 0);a:out std_logic_vector(15downto 0));end shuzizhong;architecture behav of shuzizhong issignallow_rega,high_rega,low_regb,high_regb,low_regc,high_regc :std_log ic_vector(3 downto 0):="0000";signal sout,mout,hout :std_logic :='0';begin--秒的60进制进制 counter_sec_l : process(clk_change,s_en)beginsl<=low_rega;sh<=high_rega;ml<=low_regb;mh<=high_regb;hl<=low_reg c;hh<=high_regc;if clk_change'event and clk_change='1' thenif s_en='1' thenif low_rega="1001" thenlow_rega <= "0000";elselow_rega <= low_rega+'1';end if;end if;end if;end process counter_sec_l;counter_sec_h : process(clk_change,s_en,low_rega)beginif clk_change'event and clk_change='1' thenif s_en='1' thenif low_rega="1001" thenif high_rega ="0101"thenhigh_rega <= "0000";elsehigh_rega <= high_rega+'1'; end if;end if;end if;end if;end process counter_sec_h;sout <= '1' when low_rega="1001" and high_rega="0101" else '0';----分钟的60进制设置counter_min_l : process(clk_change,m_en)beginif clk_change'event and clk_change='1' thenif m_en='1' thenif sout='1'or sel='0' thenif low_regb="1001" thenlow_regb <= "0000";elselow_regb <= low_regb+'1';end if;end if;end if;end if;end process counter_min_l;counter_min_h : process(clk_change,m_en,low_regb)beginif clk_change'event and clk_change='1' thenif sout='1'or sel='0' thenif m_en='1' thenif low_regb="1001" thenif high_regb ="0101"thenhigh_regb <= "0000";elsehigh_regb <= high_regb+'1'; end if;end if;end if;end if;end if;end process counter_min_h;mout <= '1' when low_regb="1001" and high_regb="0101"and sout='1' else '0';--小时的24进制设置counter_hour_l : process(clk_change,h_en)beginif clk_change'event and clk_change='1' thenif h_en='1' thenif mout='1'or sel='0' thenif low_regc="1001"or hout='1' thenlow_regc <= "0000";elselow_regc <= low_regc+'1';end if;end if;end if;end if;end process counter_hour_l;counter_hour_h : process(clk_change,h_en,hout)beginif clk_change'event and clk_change='1' then if mout='1'or sel='0' thenif h_en='1' thenif hout='1' thenhigh_regc<="0000";else if low_regc="1001" thenhigh_regc <= high_regc+'1'; end if;end if;end if;end if;end if;end process counter_hour_h;hout <= '1' when low_regc="0011" and high_regc="0010" else '0'; secout<=sout;minout<=mout;hourout<=hout;a<=high_regb&low_regb&high_rega&low_rega ;end behav;输入模块电路图:shuzizhonginst clk_changes_enm_enh_ensel secout minout hourout sl[3..0]sh[3..0]ml[3..0]mh[3..0]hl[3..0]hh[3..0]a[15..0]2.3控制模块分五个状态0状态正常计时,按下按键进入下一状态开始调时模式1,按下按键进入调秒模式2,按下按键进入调分模式3,按下按键进入调小时模式4.按下按键恢复正常计时模式。

相关文档
最新文档