EDA课程设计-多功能数字钟
- 格式:doc
- 大小:838.00 KB
- 文档页数:23
eda数字时钟课程设计论文一、课程目标知识目标:1. 理解数字时钟的基本原理,掌握EDA工具的使用方法。
2. 学习数字时钟设计的基本流程,包括时钟信号生成、分频、计数等模块的设计与实现。
3. 了解数字时钟的显示原理,掌握七段显示译码器的应用。
技能目标:1. 培养学生运用所学知识进行数字电路设计的能力。
2. 培养学生运用EDA工具进行电路仿真、调试的能力。
3. 培养学生团队协作、沟通表达的能力。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和动手能力。
2. 培养学生严谨的科学态度,注重实验数据的真实性。
3. 增强学生的自信心,勇于面对和解决问题。
本课程针对高年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果。
课程性质为实践性较强的设计课,注重培养学生的实际操作能力和团队合作精神。
通过本课程的学习,学生能够掌握数字时钟设计的基本方法,提高电子设计能力,培养良好的情感态度价值观。
二、教学内容本课程教学内容主要包括以下三个方面:1. 数字时钟原理及设计流程- 了解数字时钟的基本原理,包括时钟信号、分频器、计数器等组成部分。
- 学习数字时钟设计的基本流程,结合教材相关章节,进行实例分析。
2. EDA工具的使用- 介绍EDA工具的基本功能,如原理图绘制、仿真、PCB设计等。
- 结合教材,学习使用EDA工具进行数字时钟电路的设计与仿真。
3. 数字时钟电路设计与实现- 分析并设计数字时钟的各个功能模块,如时钟信号生成、分频、计数、显示等。
- 结合教材章节,进行具体电路设计,列举所需元器件及参数。
教学进度安排如下:1. 第一周:数字时钟原理及设计流程学习。
2. 第二周:EDA工具的使用方法及操作练习。
3. 第三周:数字时钟电路设计与实现,包括各功能模块设计和整体调试。
教学内容注重科学性和系统性,结合教材章节,使学生能够循序渐进地掌握数字时钟的设计方法。
同时,通过实践操作,提高学生的动手能力和实际应用能力。
实验报告实验四多功能数字钟设计一、实验目的1、学习复杂数字电路系统的设计。
2、设计一个多功能数字钟。
二、实验要求1.数字显示当前的小时、分钟;2.可以预置为12小时计时显示和24小时计时显示;3.一个调节键,用于调节目标数位的数字。
对调节的内容敏感,如调节分钟或秒时,保持按下时自动计数,否则以脉冲计数;4.一个功能键,用于切换不同状态:计时、调时、调分、调秒、调小时制式。
三、实验仪器PC机、Quartus II软件、EDA实验箱四、实验原理1.系统需要两个六十进制计数器用于分钟和秒的计时,为方便译码采用60进制计数器(1)秒计时实验程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;USE IEEE.STD_LOGIC_ARITH.ALL;entity second ISport(clk1,rst1:in std_logic;cout1:out std_logic;cq0:out std_logic_vector(3 downto 0);cq1:out std_logic_vector(3 downto 0));END second;ARCHITECTURE behave of second isSIGNAL d: std_logic_vector(3 downto 0);SIGNAL g: std_logic_vector(3 downto 0);BEGINprocess(clk1,rst1,d,g)BEGINif (rst1 ='1') thend <="0000";g <="0000";elsif(clk1'EVENT and clk1='1')thenif(d=9 and g=5)thencout1<='1';elsecout1<='0';end if;if(d=9)thend<="0000";if(g=5)theng<="0000";elseg<=g+1;end if;elsed<=d+1;end if;end if;end process;cq0<=d;cq1<=g;end behave;clk1是时钟信号,rst1是复位信号, cout1作为下一模块分钟设计的时钟信号,cq0,cq1输出信号最后接在动态译管码芯片上。
EDA课程设计数字闹钟一、教学目标本课程旨在通过数字闹钟的设计与实现,让学生掌握EDA(电子设计自动化)的基本原理和方法,培养学生的实践能力和创新精神。
具体目标如下:知识目标:使学生了解数字闹钟的原理和结构,理解时钟芯片的工作原理,掌握EDA工具的使用方法。
技能目标:培养学生使用EDA工具进行数字电路设计的能力,提升学生的编程和调试技能,训练学生的团队协作和沟通能力。
情感态度价值观目标:培养学生对电子科技的兴趣和热情,增强学生解决实际问题的信心和勇气,培养学生负责任的工作态度和良好的团队合作精神。
二、教学内容本课程的教学内容主要包括数字闹钟的原理与设计、时钟芯片的工作原理、EDA工具的使用等。
1.数字闹钟的原理与设计:介绍数字闹钟的工作原理,包括时钟发生器、分频器、计数器等基本组成部分,以及如何实现闹钟功能。
2.时钟芯片的工作原理:讲解时钟芯片的内部结构和工作原理,使学生了解时钟芯片在数字电路中的应用。
3.EDA工具的使用:介绍常用的EDA工具,如Cadence、Altera等,讲解如何使用这些工具进行数字电路设计。
三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、案例分析法、实验法等。
1.讲授法:通过讲解数字闹钟的原理、时钟芯片的工作原理以及EDA工具的使用方法,使学生掌握相关知识。
2.案例分析法:分析实际案例,让学生了解数字闹钟设计的过程和注意事项。
3.实验法:让学生动手实践,使用EDA工具设计数字闹钟,提高学生的实践能力。
四、教学资源为了支持教学内容的实施,我们将准备以下教学资源:1.教材:选择合适的教材,如《数字电路与EDA技术》等,为学生提供理论支持。
2.多媒体资料:制作课件、视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。
3.实验设备:准备实验设备,如计算机、EDA工具软件、开发板等,为学生提供实践平台。
4.网络资源:利用网络资源,为学生提供更多的学习资料和实践案例,拓宽学生的视野。
E D A课程设计学院:电气信息学院专业年级:通信工程2013级姓名:学号课题: EDA课程设计指导老师:日期:2016年7月6日第一章多功能数字钟的设计1、设计任务了解数字钟的工作原理,进一步熟悉VHDL语言编写驱动七段数码管显示代码,并且掌握用多进程的方式实现一个综合性的程序。
最终实现硬件和软件多功能数字钟的设计。
(1)显示的格式为小时-分钟-秒钟,是24小时制,整点报时时间为5秒,级从整点前5秒钟开始进行报时提示,LED灯开始闪烁,过整点后,停止闪烁。
(2)系统时钟选择时钟模块的10KHz,要得到1Hz时钟信号,必须对系统时钟进行10000次分频。
(3)调整时间的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调节分钟,每按下一次,分钟增加一分钟。
另外用S8按键作为系统时钟复位,复位后全部显示00-00-00。
2、方案设计2.1软件设计方案用VHDL语言编写程序实现设计内容中需要实现的功能。
将编写好的VHDL的程序加载到硬件电路中,从而驱动七段数码管时间,并用按键控制时间的变化,用软件仿真验证实验结果。
2.2硬件设计方案在软件方案实现的基础上,将已经运行成功的程序,将结果烧制到硬件电路中,最后生成顶层电路原理图。
3、设计的具体实现3.1设计步骤3.1.1打开QUARTUSII软件,新建一个工程3.1.2建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框;3.1.3按照自己设计方案,在VHDL编辑窗口编写VHDL程序;(程序见附录) 3.1.4编写完VHDL程序后,保存在自己新建的文件夹在D盘的目录下;3.1.5对自己编写的VHDL程序进行编译仿真,对程序的错误进行修改,直到完全通过编译和仿真;3.1.6仿真无误后,依照按键开关、数码管、LED灯与FPGA的管脚连接表进行管脚分配。
分配完成后,在进行编译一次,以使管脚分配生效;3.1.7用下载电缆通过JTAG口将对应的sof文件加载到FPGA中,观察设计结果是否和自己的编程思想一致。
eda课程设计数字钟设计一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握数字钟的基本原理和设计流程。
2. 学生能描述数字钟的各个模块功能,如计时、显示、调整等,并理解它们之间的协同工作方式。
3. 学生掌握Verilog等硬件描述语言的基本语法,能够利用EDA工具进行基本的数字电路设计和仿真。
技能目标:1. 学生能够运用所学知识,使用EDA工具设计简单的数字时钟电路,并进行功能仿真。
2. 学生通过小组合作,培养团队协作能力和问题解决能力,提高工程实践和项目管理的初步技能。
3. 学生能够运用批判性思维分析设计过程中的问题,提出优化方案,并对设计方案进行改进。
情感态度价值观目标:1. 学生通过数字钟的设计实践,培养对电子工程领域的兴趣和探究精神,激发创新意识和创造潜能。
2. 学生在学习过程中,形成严谨的科学态度和良好的工程意识,认识到技术对日常生活的影响。
3. 学生在小组合作中,学会相互尊重和沟通,培养积极向上的团队精神,增强集体荣誉感。
课程性质分析:本课程为实践性较强的电子设计课程,要求学生将理论知识与实际操作相结合,通过动手实践,深化对电子设计自动化原理的理解。
学生特点分析:针对高中年级学生,已有一定的电子基础和逻辑思维能力,对新鲜事物充满好奇心,具备自主学习的能力。
教学要求:课程要求教师通过引导和启发,帮助学生将抽象的理论具体化,通过项目式的教学方法,使学生能够将所学知识应用于实际问题的解决中。
二、教学内容本课程教学内容围绕数字钟设计的全过程,分为以下三个部分:1. 理论知识学习:- 电子设计自动化(EDA)基本概念与原理;- 数字时钟的组成、工作原理及各模块功能;- Verilog硬件描述语言的基本语法及使用方法;- 相关电子元器件的特性和应用。
2. 实践操作部分:- 使用EDA工具(如ModelSim、Quartus等)进行基本操作;- 设计数字钟的各个模块,并进行功能仿真;- 对设计过程中出现的问题进行分析,提出优化方案;- 完成数字钟整体设计与调试。
eda数字电子钟课程设计一、课程目标知识目标:1. 让学生理解数字电子时钟的基本原理,掌握EDA技术及其在数字电子时钟中的应用。
2. 使学生掌握数字电子时钟的设计流程,包括硬件设计、软件编程及系统调试。
3. 让学生掌握时钟信号的产生、计数、显示等模块的工作原理和电路设计。
技能目标:1. 培养学生运用EDA工具(如Protel、Multisim等)进行电路设计与仿真测试的能力。
2. 培养学生具备编程和调试数字电子时钟程序的基本技能,提高实际动手操作能力。
3. 培养学生团队协作、沟通表达、问题分析和解决的能力。
情感态度价值观目标:1. 培养学生对电子工程学科的兴趣,激发学生学习热情,形成积极的学习态度。
2. 培养学生具有创新意识和实践精神,鼓励学生勇于尝试,不断优化设计方案。
3. 培养学生关注社会发展,了解电子产品在生活中的应用,提高社会责任感和使命感。
分析课程性质、学生特点和教学要求,本课程目标将分解为以下具体学习成果:1. 学生能够独立完成数字电子时钟的电路设计和程序编写。
2. 学生能够运用EDA工具进行电路仿真测试,分析并解决设计中出现的问题。
3. 学生能够以团队形式进行项目汇报,展示设计成果,接受提问并给予解答。
4. 学生通过课程学习,提升对电子工程的兴趣,树立正确的价值观和人生观。
二、教学内容根据课程目标,本章节教学内容主要包括以下三个方面:1. 数字电子时钟原理及EDA技术概述- 时钟信号的产生与计数原理- 数字电子时钟的组成与工作原理- EDA技术简介及其在数字电子时钟设计中的应用2. 数字电子时钟设计与实现- 硬件设计:时钟信号电路、计数器电路、显示电路等- 软件编程:基于单片机的程序编写,实现时钟功能- 系统调试:电路测试、程序调试及优化3. 教学实践与项目汇报- 实践操作:运用EDA工具进行电路设计与仿真测试- 项目实施:分组进行数字电子时钟设计,培养学生的团队协作能力- 项目汇报:展示设计成果,锻炼学生的沟通表达和问题分析解决能力教学内容安排和进度如下:1. 第一周:数字电子时钟原理及EDA技术概述2. 第二周:硬件设计与软件编程基础3. 第三周:系统调试与优化4. 第四周:实践操作与项目实施5. 第五周:项目汇报与评价教学内容与教材章节关联如下:1. 《电子技术基础》第三章:数字电路基础2. 《单片机原理与应用》第四章:单片机程序设计3. 《EDA技术及应用》第二章:EDA工具使用与电路设计实例三、教学方法针对本章节内容,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:用于对基本原理和概念进行系统讲解,如数字电子时钟的工作原理、EDA技术概述等。
电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。
要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。
实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。
1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。
2.建立新文件, 选择文本类型或原理图类型。
3. 编写程序。
4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。
若结果不正确, 则修改程序, 再编译, 直到正确。
模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。
eda课程设计 数字钟。
一、课程目标知识目标:1. 让学生理解数字时钟的基本原理,掌握数字时钟电路的设计方法。
2. 使学生掌握EDA工具的使用,学会利用工具进行电路设计、仿真和调试。
3. 帮助学生了解数字时钟中各个模块的功能和相互关系。
技能目标:1. 培养学生运用EDA工具进行数字电路设计的能力。
2. 培养学生分析问题、解决问题的能力,能够根据实际需求设计简单的数字时钟电路。
3. 提高学生的动手实践能力,学会使用相关仪器设备进行电路调试。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神。
2. 培养学生良好的团队协作精神,学会与他人共同解决问题。
3. 培养学生严谨的科学态度和勤奋刻苦的学习精神。
课程性质:本课程为实践性课程,旨在通过数字时钟电路设计,提高学生的电子设计能力。
学生特点:学生具备一定的电子基础知识,对EDA工具感兴趣,但动手实践能力有待提高。
教学要求:注重理论与实践相结合,充分调动学生的积极性,引导学生主动参与教学活动,提高学生的实践能力。
教学过程中,注重培养学生的团队合作精神和创新能力,为学生的未来发展奠定基础。
通过本课程的学习,使学生能够具备独立设计、制作和调试数字时钟电路的能力。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 数字时钟原理:讲解数字时钟的基本原理,分析数字时钟的各个模块功能,如秒脉冲发生器、计数器、显示驱动等。
2. EDA工具使用:介绍EDA工具的基本操作,如原理图绘制、电路仿真、PCB设计等,使学生掌握使用EDA工具进行数字电路设计的方法。
3. 数字时钟电路设计:根据实际需求,制定数字时钟设计方案,包括选择合适的元器件、绘制原理图、编写程序等。
4. 电路仿真与调试:指导学生利用EDA工具进行电路仿真,分析电路性能,优化设计方案;并进行实际电路搭建与调试,培养学生的动手实践能力。
教学大纲安排如下:1. 第一周:数字时钟原理学习,熟悉各个模块功能。
EDA课程设计报告一·设计任务使用硬件描述语言,在CPLD/FPGA上实现一个多功能数字钟。
二·设计要求除按键、LED、扬声器、时钟信号外,整个数字钟的功能要求在一块芯片上实现。
a)具有时,分,秒,计数显示功能,以24小时循环计时;b)具有时间清零功能;c)具有小时、分钟和秒钟调整功能(个位和十位分开调或合起来调)。
d)具有闹钟功能,能预设闹钟时间,精确到秒。
整个数字钟只设一个时钟输入端口,所需不同频率信号在内部分频实现。
(LED扫描频率设为50Hz以上)。
三·设计方案设计采用模块方式,分别为分频模块:产生1Hz的脉冲作为秒的输入,和产生1kHz的脉冲作为数码管显示的动态扫描。
计时模块:秒模块,分模块,时模块。
闹钟模块,显示模块,控制模块。
四·模块端口设置1. 分频模块输入:clkin : 本实验输入为50MHz晶振输出:clk : 为显示模块及始终调节提供1KHz脉冲clkt: 为计数器模块提供1Hz脉冲2. 计时模块m 是模式按键,当m=0 时,进入计时模式,在计时模式下可以进行时间调整。
num3,num4 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提供。
counta,count1 是手动调节时间。
Turn 接按键,可以改变当前调节的是小时还是分钟,长按turn 键还可以使秒钟信号清零。
sec1,min1,hour1 输出的是计时的秒,分,时。
3.闹钟模块原理:num1,num2 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提供。
countb,count2 是手动调节闹钟时间。
amin,ahour 是输出的闹钟的分钟和小时4. 控制模块m 是模式按键,当m=0 时,指当前输出的是计时功能;当m=1 时,指当前调整的是闹钟时间;当m=2 时,指当前调整的是计时时间;当m=3 时,此时turn 按键可用于跑表的暂停与开始。
多功能数字钟的设计.E D A课程设计(总13页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--EDA 课程设计报告书课题名称 多功能数字钟的设计 姓 名王兴俊学 号 0 院 系 物理与电信工程系 专 业 电子信息工程 指导教师周来秀讲师2011年 6月13日※※※※※※※※※※※※※ ※※※※※※※※※※※2008级学生EDA 课程设计多功能数字钟的设计王兴俊(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)1设计目的EDA是电子设计自动化的缩写,在20世纪如年代初从计算机辅助设计、计算机辅助制造、计算机辅助测试和计算机辅助工程的概念发展而来的。
传统意义上或者狭义上的EDA技术是指可编程技术,是以计算机为工具,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子EDA通用软件包,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
利用EDA技术进行电子系统的设计,具有以下几个特征:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋。
利用EDA设计电子产品已经是势在必得了。
2设计的主要内容和要求a.数字钟能够显示年、月、天、小时、分钟、秒。
在数字钟正常工作时可以对数字钟进行快速校正,即拨动开关可对其进行校正,在数字钟正常工作情况下,可以对其进行不断电复位,以使时、分、秒显示回零。
b.对数字钟采用层次化的方法进行设计,要求设计层次清晰、合理,构成整个设计的功能模块既可采用原理图输入法实现,也可采用文本输入法实现。
EDA课程设计实用多功能数字钟学院:机械与电子工程学院专业:电子科学与技术班级:学号:姓名:指导教师:2012年1月13日摘要:本次课程设计用Verilog语言,选择Quartus II 开发工具来设计多功能数字钟。
就在前不久,我们还刚刚完成了单片机的多功能时钟的设计,继而又做EDA电子钟实验。
通过两者之间的对比可以发现EDA的许多特点。
电子设计自动化(EDA Electronic Design Automation)技术是一种以计算机作为工作平台,以EDA软件工具为开发环境,以硬件描述语言和原理图描述为设计入口,以可编程逻辑器为实验载体,以ASIC、SOC和SOPC嵌入式系统为设计目标,以数字系统系统设计为应用方向的电子产品自动化设计技术。
而QuartusⅡ是Altera 公司推出的的第四代PLD开发系统。
主要用于设计新器件和大规模CPLD/FPGA。
使用QuartusⅡ的设计者不需精通器件内部的复杂结构。
设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,QuartusⅡ把这些设计转自动换成最终所需的格式。
设计方法分为:硬件描述语言,verilog语言描述。
verilog语言描述可能精确和简练地表示电路的逻辑功能,现在PLD的设计过程中广泛使用。
以上是对EDA和QuartusⅡ的了解。
本次EDA的课程设计虽然时间有限,但是设计的题目《多功能数字钟》很贴近人的日常生活,让我们学生对最基本的电子产品有个深入的认识。
本次的课程设计是基于Verilog HDL的多功能数字钟,完成时、分、秒的显示功能。
设计利用Verilog HDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。
整个程序语言功能主要包含计时,闹钟,校时,整点报时等功能。
关键词:EDA软件,Verilog语言,Quartus II 开发工具,多功能时钟目录第1章. QUARTUSⅡ仿真软件的使用简介 .............................................. 错误!未定义书签。
第2章. 课程设计任务 (2)第3章. 设计依据和设计方案 (2)3.1设计原理 (2)3.2设计目标和方法 (2)3.3设计总体方案 (3)3.4总体模块分类介绍 (3)第4章. 设计步骤 (3)4.1CLOCK顶层调用模块 (3)4.1.1顶层程序模块 (3)4.1.2仿真波形及分析 (6)4.2 SOUND_DDD_DU嘀嘀嘀—嘟模块 (6)4.2.1整点报时程序模块 (6)4.2.2仿真波形及分析 (7)4.3 SOUND_DDD闹铃声模块 (8)4.3.1闹铃程序模块 (8)4.3.2仿真波形及分析 (8)4.4 HEXCOUNTER16进制计数器模块 (8)4.4.1H进制计数器程序模块 (8)4.4.2仿真波形及分析 (9)4.5 ADDER加法器模块 (9)4.5.1加法器程序模块 (9)4.5.2仿真波形及分析 (10)4.6 BITSEL将输出解码成时对分秒的选择模块 (10)4.6.1解码选择程序模块 (10)4.6.2仿真波形及分析 (11)4.7 SWITCH对开关的输入去抖模块 (11)4.7.1去抖程序模块 (12)4.7.1仿真波形及分析 (12)4.8LED译码显示模块 (12)4.8.1显示程序模块 (12)4.8.2仿真波形及分析 (13)4.9CLK50MTO1将50MHZ分频到1HZ模块 (13)4.9.1分频模块 (13)4.9.2仿真波形及分析 (13)4.10COUNTER_TIME计时模块 (14)4.10.1计时模块 (14)4.10.2仿真波形及分析 (15)4.11ALARM_TIME闹钟时间设定模块 (15)4.11.1闹钟定时模块 (15)4.11.2仿真波形及分析 (16)4.12ALARM闹铃模块 (17)4.12.1闹铃模块 (17)4.12.2仿真波形及分析 (17)第5章.仿真调试出现的问题及解决方法 (18)第6章.心得体会 (18)第7章.参考文献 (19)1 QuartusⅡ仿真软件的使用简介QuartusⅡ是Altera公司推出的的第四代PLD开发系统。
主要用于设计新器件和大规模CPLD/FPGA。
使用QuartusⅡ的设计者不需精通器件内部的复杂结构。
设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,QuartusⅡ把这些设计转自动换成最终所需的格式。
其设计速度非常快。
对于一般几千门的电路设计,使用QuartusⅡ,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。
设计处理一般在数分钟内内完成。
特别是在原理图输入等方面。
PLD器件的逻辑功能描述一般分为原理图描述和硬件描述语言描述,原理图描述是一种直观简便的方法,它可以将现有的小规模集成电路实现的功能直接用PLD器件来实现,而不必去将现有的电路用语言来描述,但电路图描述方法无法做到简练;硬件描述语言描述是可编程器件设计的另一种描述方法,语言描述可能精确和简练地表示电路的逻辑功能,现在PLD的设计过程中广泛使用。
常用的硬件描述语言有ABEL,VHDL语言等。
[12-13] 在这里我们可以先看一看用FPGA/CPLD开发工具进行电路设计的一般流程通常可将FPGA/CPLD设计流程归纳为以下7个步骤,这与ASIC设计有相似之处。
1.设计输入。
在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。
自90年代初,Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。
2.功能仿真。
设计的电路必须在布局布线前验证电路功能是否有效。
PLD设计中,有时跳过这一步。
3.设计编译。
设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。
4.优化。
对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。
5.布局布线。
在PLD设计中,3-5步可以用PLD厂家提供的开发软件自动一次完成。
6.时序仿真。
需要利用在布局布线中获得的精确参数再次验证电路的时序。
7.生产。
布线和后仿真完成之后,就可以开始ASCI或PLD芯片的投产。
同样,使用QuartusⅡ基本上也是有以上几个步骤,但可简化为:设计输入、设计编译、设计仿真、下载。
2课程设计任务应用Verilog HDL设计一个多功能的数字钟,具有下述功能:(1)计时功能:包括时,分,秒的计时;(2)定时与闹钟功能:能在设定的时间发出闹铃音;(3)校时功能:对小时,分钟和秒能手动调整以校准时间;(4)整点报时功能:每逢整点,产生“嘀嘀嘀嘀—嘟”,四短一长的报时音。
3设计依据和设计方案3.1设计原理:数字电子钟由振荡器、分频器、计数器、译码显示器、报时等电路组成。
其中振荡器和分频器组成标准秒信号发生器由不同进制的计数器、译码器和显示器组成计时系统。
秒信号送入计数器进行计数把累加的结果以‘时’、‘分’、‘秒’的数字显示出来。
‘时’显示由12进制计数器、译码器、显示器构成。
‘分’、‘秒’显示分别由60进制计数器、译码器、显示器构成。
可进行整点报时计时出现误差时可以用校时电路校时、校分。
3.2设计目标和方法:QuartusⅡ软件作为电子钟设计工作平台以数字电路为设计数字时钟的理论基础按照“自顶向下”的层次化设计方法设计该电路对整个系统进行方案设计和功能划分系统的关键电路用一片或几片专用集成电路实现应用QuartusⅡ软件进行数字电路的设计与仿真。
3.3 设计总体方案数字计时器基本功能是计时,因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHz。
数字计时器要实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能,所有功能都基于计时功能。
因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为50MHZ,通过分频获得所需脉冲频率1Hz。
得到1Hz脉冲后,要产生计时模块,必须需要加法器来进行加法。
时钟能够产生时间前进是对秒脉冲计数产生形成的,为了形成时分秒,需要对秒进位信号进行计数从而产生分,对分进位信号进行计数产生时信号。
秒和分均为60进制,时为24进制,所以需要有模60和模24计数器。
3.4 总体模块分类介绍总共分为11各模块,一个总的顶层调用模块:(1) sound_ddd_du嘀嘀嘀—嘟声音模块。
(2) sound_ddd嘀嘀嘀闹铃声(3) hexcounter16 进制计数器模块。
(4) adder加法器模块。
(5) bitsel将输出解码成时分秒选择模块。
(6) switch去抖模块。
(7) led译码显示模块:7段数码管显示器,分别显示小时、分钟、秒。
(8) clk50mto1 时钟分频模块:50mhz时钟分频到1hz。
(9) counter_time 计时模块:生成60进制、24进制计数器。
(10)alarm_time闹钟时间设定模块。
(11)alarm闹铃模块.(12)clock顶层模块。
4设计步骤4.1 CLOCK顶层调用模块4.1.1顶层程序模块顶层模块中,调用各个模块来实现多功能数字钟。
首先是建立在计时模块上完成整个数字钟的走时,计时模块又是建立在50mhz分频至1hz、八位全加器、十六进制计数器等模块上完成整体的基本走时。
然后可以建立闹钟模块,且设置modestate置00为计时模式,10选择闹钟模块,01手动调整模式,11非法模式来避免闹钟模块与走时模块的冲突。
其次在闹铃模块中,ld_alert是否设置了闹铃控制闹铃的开关,mcheck手动调整时间,turn来控制调整的时间在分与时的选择,change是调整信号,alert为闹铃输出。
再通过led输出时分秒。
moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,le d_minu0,led_sec1,led_sec0,alert,ld_alert,ld_check,ld_hour,ld_min,ld_s ec);input clk50m;input mode;input turn;input change;input mreset;output alert;output ld_alert;output ld_check;output ld_hour;output ld_min;output ld_sec;output[7:0] led_hour1;output[7:0] led_hour0;output[7:0] led_minu1;output[7:0] led_minu0;output[7:0] led_sec1;output[7:0] led_sec0;reg [1:0] modestate;wire nowmode;wire ischecking;assign {nowmode,ischecking}=modestate;always@(negedge mode)begincase(modestate)2'b00: modestate<=2'b10;2'b10: modestate<=2'b01;2'b01: modestate<=2'b00;default:modestate<=2'b00;endcaseendwire rest,clk_1hz;switch #(8) rmjitter(clk50m,mreset,reset);clk50mtol (clk50m,clk1hz);wire[2:0] selcode;bitselseldecoder(nowmode,ischecking,turn,selcode,rest);wire[3:0]clocktime0,clocktime1,clocktime2,clocktime3,clocktime4,clocktime5;wire clockalarmon;wire [2:0] counterselcode;assign counterselcode=(modestate==2'b01)?selcode:3'b000;counter_timeclock_time(clk_1hz,counterselcode,~change,clocktime5,clocktime4,clock time3,clocktime2,clocktime1,clocktime0,clockalarmon,reset);wire [3:0] alarmtime0,alarmtime1,alarmtime2,alarmtime3;wire alarmon;alarm_timealarm_time(clk_1hz,nowmode,selcode[2:1],change,{clocktime5,clocktime4 ,clocktime3,clocktime2,clocktime1},{alarmtime3,alarmtime2,alarmtime1,alarmtime0}, alarmon,reset);wire voiceout;alarm alarmvoice(clk50m,{clockalarmon,alarmon},voiceout,reset);assign{ld_hour,ld_min,ld_sec}=(ischecking||nowmode)?selcode:3'b000;assign alert=voiceout;reg[3:0] showout2,showout3,showout4,showout5;led led5(showout5,1'b1,led_hour1);led led4(showout4,1'b0,led_hour0);led led3(showout3,1'b1,led_minu1);led led2(showout2,1'b0,led_minu0);led led1(clocktime1,1'b1,led_sec1);led led0(clocktime0,1'b1,led_sec0);alwaysbegin if(nowmode)begin showout5=alarmtime3;showout4=alarmtime2;showout3=alarmtime1;showout2=alarmtime0; end else beginshowout5=clocktime5;showout4=clocktime4;showout3=clocktime3;showout2=clocktime2; endendassign ld_alert=nowmode;assign ld_check=ischecking;endmodule4.1.2 仿真波形及分析在clock为1ps周期情况下,设置modestate置00为计时模式,10选择闹钟模块,01手动调整模式,11非法模式,在闹铃模块中,ld_alert高电平闹铃开,mcheck为高电平则可以手动调整时间,turn控制了调整的时间在分与时的选择,change有效则改变调整的数值,alert有效闹铃输出。