eda数字电子钟
基于EDA的数字电子钟设计
摘要数字时钟,就是以数字显示取代模拟表盘的钟表,在显示上它用数字反应此时的时间,它还能同时显示时,分,秒,且能够对时,分,秒准确进行校时。
数字时钟是一种用数字电路技术实现时、分、秒计时的装置。
与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。
数字钟从原理上讲是一种典型的数字电路,一般是由振荡器、分频器、计数器、显示器等几部分组成。
其中包括了组合逻辑电路和时序电路。
数字钟的设计方法有许多种,例如:可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。
本设计采用EDA技术,以硬件描述语言Verilog HDL为系统逻辑描述手段设计文件,在QUARTUS II工具软件环境下,采用自顶向下的设计方法,由各个基本模块共同构建了一个基于FPGA的数字钟。
数字时钟以其体积小、重量轻、抗干扰能力强、对环境要求高、高精确性、容易开发等特性,在工业控制系统、智能化器仪表、办公自动化等诸多领域取得了极为广泛的应用,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动启闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等。
关键词:EDA、QuartusII、Verilog HDL、FPGA芯片、数字时钟等AbstractDigital clock is with digital display to replace analog dial watch, in the show it with digital reaction at this time, it can display at the same time, minutes and seconds, and can pair, minutes and seconds precise timing.Digital clock is a digital circuit technology to achieve time, minutes and seconds of the device. Compared with the mechanical clock has higher accuracy and intuitive, and no mechanical device, has a longer life, has been widely used. Digital clock from the principle of speaking is a typical digital circuit, generally by the oscillator, frequency divider, counter, display and other parts of the composition. The combination logic circuit and the sequential circuit are included in the circuit. Digital clock design, there are many methods. For example: available small scale integrated circuit composition electronic clock; can also use special chip electronic clock with to display circuit and its peripheral circuit composed of electronic clock; can also be used to achieve single-chip electronic clock and so on.This design using EDA technology, the Hardware Description Language Verilog HDL logic system description method of design documents, in the Quartus II software environment by top-down design method, by all the basic modules work together to build a based on FPGA digital clock.Digital clock with the volume small, light weight, strong anti-interference ability, on the environment requirements high, high precision, ease of development, and so on, in the fields of industrial control system, intelligent of instrumentation, office automation, made extremely widely used, such as timing automatic alarm, timely automatic bell, a time program automatic control, regular radio, automatic opening and closing lights, oven timer switch, on-off power equipment, and even a variety of timing electric automatically enabled.Keywords: EDA, QuartusII, Verilog HDL,FPGA chip, Digital clock, etc.摘要 (1)第一章绪论 (4)1.1选题意义与研究现状 (4)1.2国内外研究及趋势 (4)第二章EDA技术 (6)2.1 EDA技术简介 (6)2.2 EDA技术特点 (6)2.3 EDA技术的发展历程 (6)第三章 QuartusⅡ,FPGA的简介 (9)3.1 Quartus II简介 (9)3.2 FPGA简介 (9)3.3 FPGA系统设计流程 (11)3.4本设计所用黑金开发板AX301简介 (12)第四章数字时钟总体设计方案 (14)4.2 数字钟的工作原理 (14)第五章数字时钟的具体设计 (15)5.1 本设计的顶层图 (15)5.2 时钟控制模块 (15)5.2.1信号定义 (15)5.2.2分频模块 (16)5.2.3走时模块 (16)5.3显示模块 (20)第六章程序的验证与修改 (25)6.1程序导入 (25)6.2开发板演示 (25)第七章总结与展望 (27)7.1论文总结 (27)7.2后续展望 (27)致谢 ................................................................................................................... 错误!未定义书签。
EDA技术--数字电子钟的设计
电子信息工程专业项目化课程《EDA技术》项目二总结报告数字电子钟的设计班级姓名指导老师完成时间2010 年10 月 4 日项目二数字电子钟的设计一、概述设计一个具有校时、校分功能的能进行正常时、分、秒计时,分别有六个数码管显示时、分、秒的数字电子钟电路。
并具有整点报时功能。
二、项目要求1.实现60 进制分、秒和24进制时的计时功能。
2.由六个数码管动态显示时、分、秒。
3.通过按键实现校时、校分功能。
4.能利用蜂鸣器实现整点报时,59分50秒开始报时,整点结束。
5.用层次化(模块化)设计方法设计总电路,用VHDL语言编写各个功能模块。
6.用EDA实训系统下载验证三、数字时钟总电路设计11223344DDCCBBAATitleNumberRevisionSize A4Date:2010-11-16Sheet of File:C:\My Documents\..\SHEET1.SCHDOC Drawn By:S1S2S3S4Speaker LS10KRes2R110K R210K R310K R42N3904Q210KR71KR8D1D2D3D4VCCVCC CLK1IN 2DEV_CLR 3DATA75DATA66DATA57DATA48DATA39DATA210DATA111DATA012DCLK 13n C E14TDI 15I/O 16I/O 17I/O 18I/O 19I/O 21I/O 22I/O 23I/O 24I /O25I /O 27I /O 28I /O 29I /O 30MSEL031MSEL132nCONFIG 34I /O 35I /O 36I /O 37I /O38I /O 39CLK 43IN 44I /O 47I /O 48I /O 49I /O 50I /O 51I /O 52I /O53I /O 54nSTATUS 55TRST 56TMS 57I /O 58I /O 59I /O 60I /O61I /O 62I /O 64I /O 65I /O 66I /O 67INIT_DONE 69RDYnBUSY 70I /O 71I /O 72CLKUSR 73TDO 74n C E O 75CONF_DONE 76TCK 77nCS 78CS 79nWS 80nRS 81DEV_OE83IN 84V C C I N T4V C C I N T 20G N D I N T26V C C I N T 33V C C I N T 40G N D I N T 41V C C I N T 45G N D I N T 46V C C I N T 63G N D I N T 68G N D I N T 82IN 42EPF10K10LC84-3U0OED1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7D8Q8VCCGND 74LS244U1VCC A 1B 2C 3OE2A 4OE2B5OE16Y77GND8Y69Y510Y411Y312Y213Y114Y015VCC 16SN74LS138DU4Y0Y1Y2Y5Y3Y4VCCW0W1W2W 1W 2W 0QA QB QC QD QE QF QG VCC VCCA0A1A2A3A4A5A6A7A 0A 1A 2A 3A 4A 5A 6A 7QD 7QE 5QF 4QG 6QH 14QI 13QJ 15QL 1QM 2QN 3/CKO 10CKO9CLR12CKI11CD4060BU3V C C 1N C 2C O U N T 3G N D4U2VCC1024HZ 1024HZ 9123456781KPR1T M S T D I T D 0T CKNetLabel2y 0Y 1Q A Q B Q C Q D Q E Q F Q GY 2Y 3Y 5Y 4Q A Q C Q B Q D Q E Q GQ F A B C D E F G D P C 1C 2DS2Dpy Red-CAA B C D E F G D 1D 2D 3D 4D P DS1Dpy Red-CB12Header 2JP112Header 2JP21234567891110D Connector 9J1680R4D110KR5VCCl9nCONFIG VCCDLCK DAT nSTATUS CONF_DONE k1100pFCap C1nCONFIG nSTATUS DCLK CONF DONE四、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";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")thenql<="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);beginprocess(clk)variable cnt:std_logic_vector(2 downto 0);beginif clk'event and clk='1' thenif 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";when "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 isport(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') thenif (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;use 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课程设计报告电子钟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数字钟毕业设计第一篇:EDA数字钟毕业设计[ 标签:数字钟, eda ]1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
2、时钟源使用频率为0.1Hz的连续脉冲。
3、设置两个按钮,一个供“开始”及“停止”用,一个供系统“复位”用。
4、时钟显示使用数码管显示。
基于VHDL的多功能数字钟的设计EDA课程设计资料类别课程(专业)EDA 适用年级大学文件格式word+DLS 文件大小1725K 上传时间2008-10-10 20:57:00 预览文件无(只能预览文件中的部分内容)下载次数0内容简介:EDA课程设计基于VHDL的多功能数字钟的设计,共11页,6086字,附源程序。
摘要:介绍了利用VHDL硬件描述语言设计的多功能数字钟的思路和技巧。
在MAX+PLUSII开发环境中编译和仿真了所设计的程序,并在可编程逻辑器件上下栽验证。
仿真和验证结果表明,该设计方法切实可行。
EDA-时钟设计-基于Altera数字钟的实现:EDA课程设计基于VHDL的多功能数字钟的设计:EDA数字钟设计报告:资料包括:论文(12页2036字)图纸说明:中文摘要:数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。
此数字钟设计具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。
第二篇:eda数字钟程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clock IS PORT(EN :IN STD_LOGIC;数码管使能CLK:IN STD_LOGIC;时钟信号RST:IN STD_LOGIC;复位信号SEC_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);秒高位SEC_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);秒低位MIN_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);分高位MIN_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);分低位HOU_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);时高位HOU_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);时低位BEE:OUT STD_LOGIC);END clock;ARCHITECTURE behovior OF clock IS SIGNAL SEC_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SEC_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MIN_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MIN_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HOU_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HOU_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CY_MIN:STD_LOGIC;分进位SIGNAL CY_HOU:STD_LOGIC;时进位SIGNAL LOGO_1:STD_LOGIC;标志SIGNAL LOGO_2:STD_LOGIC;SIGNAL LOGO_3:STD_LOGIC;BEGIN MIAOLOW:PROCESS(CLK,RST,EN)BEGINIF(RST = '0')THENSEC_LOW <= “1000”;附给秒低位为8ELSIF(CLK'EVENT AND CLK = '1' AND EN = '1')THEN 检测时钟上升沿及数码管使能端IF(SEC_LOW = “1001”)THENSEC_LOW <= “0000”;ELSESEC_LOW <= SEC_LOW + “0001”;加一END IF;END IF;END PROCESS MIAOLOW;LOGO_1 <= SEC_LOW(3)AND SEC_LOW(0);SEC_01<= SEC_LOW;秒个位放8MIAOHIGH:PROCESS(CLK,RST)BEGINIF(RST = '0')THENSEC_HIGH <= “0101”;ELSIF(CLK'EVENT AND CLK = '1')THEN检测时钟上升沿IF(LOGO_1 = '1')THENIF(SEC_HIGH = “0101”)THENSEC_HIGH <= “0000”;CY_MIN <= '1';ELSESEC_HIGH <= SEC_HIGH + “0001”;加一CY_MIN <= '0';END IF;END IF;END IF;END PROCESS MIAOHIGH;SEC_1 <= SEC_HIGH;秒十位放5FENLOW:PROCESS(CY_MIN,RST,EN)BEGINIF(RST = '0')THEN 若复位位为0MIN_LOW <= “1000”;则分个位为8ELSIF(CY_MIN'EVENT AND CY_MIN = '1' AND EN = '1')THEN 检测时钟上升沿及数码管使能端IF(MIN_LOW = “1001”)THENMIN_LOW <= “0000”;ELSEMIN_LO W <= MIN_LOW + “0001”;加一END IF;END IF;END PROCESS FENLOW;LOGO_2 <= MIN_LOW(3)AND MIN_LOW(0);MIN_01 <= MIN_LOW;分个位放8FENHIGH:PROCESS(CY_MIN,RST)BEGINIF(RST = '0')THENMIN_HIGH <= “0101”;ELSIF(CY_MIN'EVENT AND CY_MIN = '1')THEN检测分进位上升沿IF(LOGO_2 = '1')THENIF(MIN_HIGH = “0101”)THEN若分十位为5MIN_HIGH <= “0000”;CY_HOU <= '1';时进位为1ELSEMIN_HIGH <= MIN_HIGH + “0001”;加一CY_HOU <= '0';END IF;END IF;END IF;END PROCESS FENHIGH;MIN_1 <= MIN_HIGH;分十位放5SHILOW:PROCESS(CY_HOU,RST,EN)BEGINIF(RST = '0')THENHOU_LOW <= “1001”;ELSIF(CY_HOU'EVENT AND CY_HOU = '1'AND EN = '1')THEN检测时进位上升沿及数码管使能端IF(HOU_LOW = “1001”)THEN若时低位为9HOU_LOW <= “0000”;ELSIF(HOU_HIGH = “0010” AND HOU_LOW = “0011”)THEN若时十位为2,个位为3HOU_LOW <= “0000”;ELSEHOU_LOW <= HOU_LOW + “0001”;加一END IF;END IF;END PROCESS SHILOW;LOGO_3 <= HOU_LOW(3)AND HOU_LOW(0);HOU_01 <= HOU_LOW;时个位放3SHIHIGH:PROCESS(CY_HOU,RST)BEGINIF(RST = '0')THENHOU_HIGH <= “0001”;ELSIF(CY_HOU'EVENT AND CY_HOU = '1')THEN检测时进位上升沿IF(HOU_HIGH = “0010” AND HOU_LOW = “0011”)THEN 若时十位为2,时个位为3HOU_HIGH <= “0000”;ELSIF(LOGO_3 = '1')THENHOU_HIGH <= HOU_HIGH + “0001”;加一END IF;END IF;END PROCESS SHIHIGH;BEE_CLOCK:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK = '1')THEN检测时钟上升沿IF(SEC_HIGH = “0101” AND SEC_LOW = “1001”AND MIN_HIGH = “0101” AND MIN_LOW = “1001”)THENBEE <= '1';ELSEBEE <= '0';END IF;END IF;END PROCESS BEE_CLOCK;HOU_1 <= HOU_HIGH;时十位放2END behovior;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clock1 IS PORT(EN :IN STD_LOGIC;CLK:IN STD_LOGIC;RST:IN STD_LOGIC;SEC_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);SEC_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);MIN_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);MIN_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HOU_1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HOU_01 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);BEE:OUT STD_LOGIC);END clock1;ARCHITECTURE behovior OF clock1 IS SIGNAL SEC_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SEC_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MIN_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MIN_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HOU_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HOU_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL CY_MIN:STD_LOGIC;SIGNAL CY_HOU:STD_LOGIC;SIGNAL LOGO_1:STD_LOGIC;SIGNAL LOGO_2:STD_LOGIC;SIGNAL LOGO_3:STD_LOGIC;BEGIN MIAOLOW:PROCESS(CLK,RST,EN)BEGINIF(RST = '0')THENSEC_LOW <= “1000”;ELSIF(CLK'EVENT AND CLK = '1' AND EN = '1')THEN IF(SEC_LOW = “1001”)THENSEC_LOW <= “0000”;ELSESEC_LOW <= SEC_LOW + “0001”;END IF;END IF;END PROCESS MIAOLOW;LOGO_1 <= SEC_LOW(3)AND SEC_LOW(0);SEC_01<= SEC_LOW;MIAOHIGH:PROCESS(CLK,RST)BEGINIF(RST = '0')THENSEC_HIGH <= “0101”;ELSIF(CLK'EVENT AND CLK = '1')THENIF(LOGO_1 = '1')THENIF(SEC_HIGH = “0101”)THENSEC_HIGH <= “0000”;CY_MIN <= '1';ELSESEC_HIGH <= SEC_HIGH + “0001”;CY_MIN <= '0';END IF;END IF;END IF;END PROCESS MIAOHIGH;SEC_1 <= SEC_HIGH;FENLOW:PROCESS(CY_MIN,RST,EN) BEGINIF(RST = '0')THENMIN_LOW <= “1000”;ELSIF(CY_MIN'EVENT AND CY_MIN = '1' AND EN = '1')THEN IF(MIN_LOW = “1001”)THENMIN_LOW <= “0000”;ELSEMIN_LOW <= MIN_LOW + “0001”;END IF;END IF;END PROCESS FENLOW;LOGO_2 <= MIN_LOW(3)AND MIN_LOW(0);MIN_01 <= MIN_LOW;FENHIGH:PROCESS(CY_MIN,RST)BEGINIF(RST = '0')THENMIN_HIGH <= “0101”;ELSIF(Cy_MIN'EVENT AND CY_MIN = '1')THENIF(LOGO_2 = '1')THENIF(MIN_HIGH = “0101”)THENMIN_HIGH <= “0000”;CY_HOU <= '1';ELSEMIN_HIGH <= MIN_HIGH + “0001”;CY_HOU <= '0';END IF;END IF;END IF;END PROCESS FENHIGH;MIN_1 <= MIN_HIGH;SHILOW:PROCESS(CY_HOU,RST,EN)BEGINIF(RST = '0')THENHOU_LOW <= “1001”;ELSIF(CY_HOU'EVENT AND CY_HOU = '1' AND EN = '1')THEN IF(HOU_LOW = “1001”)THENHOU_LOW <= “0000”;ELSIF(HOU_HIGH = “0010” AND HOU_LOW = “0011”)THENHOU_LOW <= “0000”;ELSEHOU_LOW <= HOU_LOW + “0001”;END IF;END IF;END PROCESS SHILOW;LOGO_3 <= HOU_LOW(3)AND HOU_LOW(0);HOU_01 <= HOU_LOW;SHIHIGH:PROCESS(Cy_HOU,RST)BEGINIF(RST = '0')THENHOU_HIGH <= “0001”;ELSIF(CY_HOU'EVENT AND CY_HOU = '1')THENIF(HOU_HIGH = “0010” AND HOU_LOW = “0011”)THEN HOU_HIGH <= “0000”;ELSIF(LOGO_3 = '1')THENHOU_HIGH <= HOU_HIGH + “0001”;END IF;END IF;END PROCESS SHIHIGH;BEE_CLOCK:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK = '1')THENIF(SEC_HIGH = “0101” AND SEC_LOW = “1001”AND MIN_HIGH = “0101” AND MIN_LOW = “1001”)THENBEE <= '1';ELSEBEE <= '0';END IF;END IF;END PROCESS BEE_CLOCK;HOU_1 <= HOU_HIGH;END behovior;第三篇:EDA数字钟课程设计课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:电子1002班学号:20102625 姓名:于晓指导教师:李世平、李宁设计时间:2012年12月摘要数字钟是一种用数字电路技术实现时、分、秒计时的钟表。
eda数字电子钟课程设计
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课程设计——数字时钟
基于CPLD的数字时钟设计1.任务及功能1、任务:设计一个由三个按键控制4位数码管显示2位分与秒的数字时钟。
功能:一个按键实现复位清零功能,一个按键实现暂停开始功能,按键组合校时功能。
2、掌握JTAG下载电路的设计3、用中小规模集成电路组成电子钟;电源3.3V,系统时钟12MHz,带JTAG下载电路;核心芯片Altera公司的EPM7064,PLCC44封装。
2.设计方案2.0总体设计本设计由有源石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。
有源振荡器可以产生稳定的12M脉冲信号,作为数字钟的时间基准,然后经过分频器分频后输出标准1/10秒脉冲。
中间变量计数十次后,生成秒信号,秒计数器满60后向分计数器进位,分计数器满60后全部清零。
设计原理框图如下:ERM7064 芯片部分数码管显示部分有源晶振部分开关控制部分下载电路部分图1. 电路设计框架图此次设计的多功能数字钟主要有五部分组成:(1)有源晶振部分:主要产生12MHZ的CPLD的输入脉冲信号。
(2)开关控制部分:主要实现数字钟的暂停、复位与校时。
(3)EPM7064芯片部分:是整个数字钟的核心部分。
是程序写入以及对输入脉冲的接收与转换控制。
(4)下载电路部分:使用JTAG下载电路。
(5)数码管显示部分:4位数码管显示分(2位)、秒(2位)。
设计电路图如下:图2. 电路设计图2.1 时钟电路晶体振荡器电路给数字钟提供一个稳定准确的方波信号,作为数字时钟信号的基础,可保证数字时钟的准确及稳定。
与晶振并联的电阻的作用——与晶振并联的电阻R17是反馈电阻,是为了保证反相器输入端的工作点电压在VDD/2,这样在振荡信号反馈在输入端时,能保证反相器工作在适当的工作区。
虽然去掉该电阻时,振荡电路仍工作了。
但是如果从示波器看振荡波形就会不一致了,而且可能会造成振荡电路因工作点不合适而停振。
所以不能省略此电阻。
这个电阻是为了使本来为逻辑反相器的器件工作在线性区,以获得增益,在饱和区是没有增益的,没有增益是无法振荡的。
EDA技术实现的数字电子钟设计开题报告
长江职业学院工学院毕业设计(论文)开题报告题目:EDA技术实现的数字电子钟设计一、毕业设计目的数字电子钟实际上是一个标准频率(1HZ)进行记数的记数电路,使用振荡电路构成数字钟来确保标准的1HZ时间信号准确稳定。
为了完成EDA数字电子钟的设计,应该将电子钟的功能进行模块化,以“自顶向下”的方法逐步添加功能。
首先由输入模块、记数模块、显示模块构成最基本的二十四小时的数字电子钟,在此基础上还可添加校时功能、整点报时功能、闹钟功能。
二、本课题的设计(研究)意义(相关技术的现状和发展趋势)数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
从数字钟的发展上看主要向小型化、多功能化发展。
本次毕业设计应用VHDL语言,在MAX+plusII 的环境下设计一个电子钟,最后通过仿真出时序图实现预定功能。
随着电子信息的发展电子钟趋向于小型、精准、多功能,并在其他领域也有相当的发展空间定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,这些都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
通过本次设计可以提高利用计算机辅助设计和用高密度可编程逻辑器件实现数字系统的能力,对VHDL语言和可编程逻辑器件开发软件MAX+PLUSп也有了更深层次的认知,为以后深入学习和应用电子系统现代设计方法打好基础,并具有工程实用性,很适合目前急速发展的市场需求。
三、方案比较与选择1、综合法:该方法是利用组合逻辑电路和时序电路等中小规模集成电路来设计;2、编程法:利用现场可编程门阵列FPGA加以C++、C、VHDL语言来实现;3、模块法:利用VHDL 语言的强大的电路描述和建模能力设计基于EDA的电子钟。
分析知:方案1硬件复杂;方案2设计周期长、成本高;方案3设计周短、开发费用最低。
经分析可知,前两种方案不可取,方案3值得考虑。
EDA课程设计 数字时钟
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 按键可用于跑表的暂停与开始。
EDA数字钟实验报告
EDA数字钟实验报告EDA实验EDA实验数字钟一.实验任务用FPGA器件和EDA技术的设计已知条件:XXX软件XXX实验开发装臵基本功能:1.以数字形式显示时,分,秒的时间;2.小时计数器为24进制;3.分,秒计数器为60进制;多功能数字电子钟设计:输入变量:时钟CPS,直接清零RD;输出变量:小时H[7..4]、H[3..0]为8421BCD码输出,其时钟为CLK;分计时M[7..4]、M[3..0]为8421BCD 码输出,其时钟为CPM;秒计时S[7..4]、S[3..0]为8421BCD码输出,其时钟为CLK;RD为清零信号等。
二.仿真与波形1.60进制原理图如下;其仿真波形如下:2.24进制原理图如下:其仿真波形如下:3.数字钟的整个电路图如下:逻辑电路说明:由电路分析得知,多功能数字电子钟最基本的计时电路在CLK(秒)时钟作用下,电路输出变量为H[7..0],M[7..0]及S[7..0],按8421BCD码正常走时,电路为异步时序逻辑电路4.数字电子钟的仿真波形如下:仿真波形分析及结论:由仿真波形分析得知在CLK(秒)时钟作用下,电路正常走时。
分析过程完全符合多功能数字电子钟最基本的计时功能,逻辑电路设计正确。
三.感想:这次的课程设计的内容是《EDA多功能数字钟》,这次课程设计验我花了两个上午的时间。
虽然我是顺利的完成了任务,但是在实验中我还是发现了自己存在的一些问题。
在课程设计中我经常做完上一步就忘记了下一步该怎么做,总是一边看老师的课件一边做,这样一来浪费了不少时间,这是由于我对软件的操作不熟练的缘故,因此我觉得我应该在今后的日子里多练习一下这个MA_+PLUS软件,做到在以后的学习及工作中能利用这个软件快速的正确的完成任务。
在实验中我还经常出现掉步骤的现象,比如经常忘记“指向当前文件”,从而导致得到的结果是错误的甚至根本就得不到结果,这全都是因为粗心大意造成的。
在今后的日子里我会努力的去改掉这个毛病,从而高质量的完成老师交给我的各项任务!。
eda数字钟实验报告
eda数字钟实验报告EDA数字钟实验报告本次实验旨在设计并实现一个EDA数字钟。
通过这个实验,我们将学习如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
1. 实验背景数字钟是我们日常生活中常见的设备之一。
它不仅可以显示时间,还具有闹钟等功能。
在这个实验中,我们将使用EDA工具来设计一个数字钟电路,并通过FPGA实现这个电路。
2. 实验目标本次实验的目标是设计一个能够显示小时、分钟和秒的数字钟电路。
我们将使用七段数码管来显示这些信息,并通过按键来设置时间和闹钟。
3. 设计思路我们的设计思路如下:3.1 时钟模块我们首先需要设计一个时钟模块,用来产生一个固定的时钟信号。
我们可以使用FPGA的时钟模块来实现这个功能,或者使用外部的晶振电路。
3.2 数码管驱动模块接下来,我们需要设计一个数码管驱动模块,用来将数字转换为七段数码管的显示信号。
我们可以使用查找表或者逻辑门电路来实现这个功能。
3.3 时间设置模块为了能够设置时间,我们需要设计一个时间设置模块。
这个模块可以通过按键来设置小时、分钟和秒。
3.4 闹钟设置模块类似于时间设置模块,我们还需要设计一个闹钟设置模块。
这个模块可以通过按键来设置闹钟的小时和分钟。
3.5 主控制模块最后,我们需要设计一个主控制模块,用来控制时钟、数码管驱动、时间设置和闹钟设置模块之间的交互。
这个模块可以根据设置的时间和闹钟来控制数码管的显示。
4. 电路实现根据我们的设计思路,我们使用EDA工具来实现我们的数字钟电路。
我们使用VHDL语言来描述电路,并使用模块化的方式来组织我们的代码。
5. 实验结果经过实际的电路实现和测试,我们成功地实现了数字钟电路。
我们可以通过按键来设置时间和闹钟,并通过七段数码管来显示时间和闹钟。
6. 实验总结通过这个实验,我们学习了如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
我们深入了解了数字钟的工作原理,并学会了如何使用VHDL语言来描述电路。
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电子钟多功能数字时钟课程设计(含代码)[优秀]
多功能数字时钟设计说明: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设计实验报告题目:数字钟任务:设计一个具有“时”、“分”、“秒”的十进制数字显示的计时器。
要求:(1)准确计时,显示小时、分、秒,小时能以24小时或12小时计时;(2)带有时间校正功能。
摘要:数字电子钟由振荡器、分频器、计数器、译码显示、校时电路组成。
其中振荡器和分频器组成标准秒信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。
秒信号送入计数器进行计数,把累加的结果以时、分、秒的数字显示出来。
时显示由二十四进制计数器、译码器、显示器构成,分、秒显示分别由六十进制计数器、译码器、显示器构成。
当计时出现误差时,可以用校时电路来校时、较分。
一、方案论证与比较1、时钟振荡电路。
晶体振荡器电路给数字钟提供一个频率稳定准确的1kHz的方波信号,可保证数字钟的走时准确、稳定。
2、秒脉冲产生电路。
分频器电路将1kHz的方波信号经1000次分频后得到1Hz的方波信号供秒计数器进行计数。
分频器实际上也就是计数器。
3、计数电路。
电子钟计时分为小时、分钟和秒,其中小时为二十四进制,分钟和秒均为六十进制,输出可以用数码管显示,所以要求二十四进制为~计数,六十进制为~计数,并且均为8421码编码形式。
4、校时较分电路。
在刚接通电源或者时钟走时出现误差时,则需要进行时间的校准。
通常可以在整点时刻和利用电台或电视台的信号进行校准,也可以在其他时刻利用别的时间标准进行校准。
5、译码驱动电路。
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。
6、显示数码管。
数码管通常有发光二极管(LED)数码管和液晶显示(LCD)数码管,本设计应用LED数码管。
二、各模块电路仿真分析1、石英晶体振荡器产生32768Hz方波信号。
仿真电路如图1所示,非门采用CMOS非门74HC04,C2电容可以加入一个微调电容,根据示波器上显示的波形来微调电容值。
仿真波形如图2所X 1R26-32.768kHz74HC04D_6V 74HC04D_6VR310M30pF A B Ext Trig ++__+_图1 石英晶体震荡器仿真电路100pF-VARKey = A 25%2、秒脉冲产生电路仿真74LS161N 在级联使用时一定主意两个使能端EP 、ET 的设置,只有两个均为高电平时才能计数,当第三级控制时是第一级和第二级一同控制第三级,如图3所示,其中第二级的EP 一同由第一级的RCO 控制图4中从上倒下的方波分别为2分频、4分频、8分频、16分频、32分频、64分频、128分频、256分频、512分频,最下面的是32768Hz信号脉冲。
EDA设计(II)实验报告数字电子钟
EDA设计(II)实验报告-数字电子钟实验报告:数字电子钟一、实验目的本实验旨在通过使用EDA设计软件,设计并实现一个具有时、分、秒功能的数字电子钟。
通过学习使用EDA工具,掌握数字电路设计的基本步骤和技巧,培养实践能力和创新思维。
二、实验原理数字电子钟是一种以数字形式显示时间的装置,它利用了时、分、秒的计时原理。
核心部分包括一个时钟发生器,用于产生标准时间信号,以及一个计数器,用于对时间进行计数并显示。
此外,还需要一些控制逻辑来控制时、分、秒的进位和显示。
三、实验步骤1.设计准备:在开始设计之前,首先明确设计要求和功能。
考虑到实验的复杂性和可实现性,我们采用最简单的电路结构,即基于计数器和译码器的数字电子钟。
2.绘制电路图:使用EDA设计软件(如Quartus II)绘制电路图。
首先创建新项目,然后添加必要的元件(如74LS192计数器、74LS248译码器等),并根据设计要求连接元件。
3.编写程序:使用硬件描述语言(如VHDL或Verilog)编写计数器和译码器的程序。
确保程序能够实现所需的功能,并进行仿真测试。
4.编译和下载:将程序编译成可下载的配置文件,然后下载到FPGA开发板上。
5.硬件测试:连接开发板到PC,启动程序,观察数字电子钟的显示情况。
检查时间是否准确,各部分功能是否正常。
6.性能评估:对数字电子钟的性能进行评估,包括计时精度、稳定性等指标。
根据评估结果对设计进行优化。
四、实验结果与分析1.设计结果:经过上述步骤,我们成功地设计并实现了一个基于FPGA的数字电子钟。
通过EDA软件和硬件描述语言,我们实现了计数器和译码器的功能,并完成了程序的编写和下载。
2.性能分析:经过测试,我们的数字电子钟具有较高的计时精度和稳定性。
时间显示准确,各部分功能正常。
这表明我们的设计是成功的。
3.优化方向:虽然我们的数字电子钟已经具有较好的性能,但仍有一些方面可以优化。
例如,可以考虑添加更多的功能,如闹钟、温度显示等;也可以进一步优化电路结构,降低成本和提高性能。
EDA 简单数字电子钟的设计
《EDA技术》课程实验报告学生姓名:**所在班级:**指导教师:** 老师记分及评价:报告满分3分得分一、实验名称实验1-3:简单数字电子钟的设计(原理图输入设计方法)二、任务及要求【基本部分】1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法,完成一个24进制同步计数器的设计,并进行时序仿真。
要求具备使能功能和异步清零功能,设计完成后封装成一个元件。
2、同1,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法,完成一个60进制同步计数器的设计,并进行时序仿真。
要求具备使能功能和异步清零功能,设计完成后封装成一个元件。
3、利用1和2所设计的60进制计数器和24进制计数器元件,采用同步的方式设计一个简单的数字电子钟并进行时序仿真,要求具有时分秒功能显示功能、使能功能和异步清零功能。
4、由于实验箱数码管采用的动态扫描方式,本实验暂时只要求仿真,硬件验证到实验7再完成。
【发挥部分】1、思考:采用反馈清零法设计的计数器与反馈置数法有何不同?请用实例进行仿真。
2、如何实现电子钟时分秒连续可调的功能?三、原理图二十四进制原理图六十进制原理图数字电子钟原理图四、仿真及结果分析24进制时序仿真图24进制计数器采用的是两片74160集成块,利用同步置数原理,在第23个脉冲的时候跳转为零。
这时个位计数器g3到g0的数值时0011,十位计数器的s3到s0的数值时0010。
另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。
60进制时序仿真图60进制计数器采用的是两片74160集成块,利用同步置数原理,在第59个脉冲的时候跳转为零。
这时个位计数器g3到g0的数值时1001,十位计数器的s3到s0的数值时0101。
另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。
电子时钟时序仿真图电子时钟计数器采用的是两片60进制的计数器与一片24进制的计数器组成的,连接到一起就可以组成电子时钟计数器,要注意的是如果前面的24进制计数器与60进制计数器的使能短没接入与非门的话,可能会时钟脉冲的波形不是严格的按要求翻转。
eda多功能数字钟实验报告
eda多功能数字钟实验报告EDA多功能数字钟实验报告一、引言数字钟是现代生活中常见的一种时间显示工具,其准确性和便携性使其成为人们生活中不可或缺的一部分。
本实验旨在设计并制作一款多功能数字钟,通过EDA(电子设计自动化)软件进行模拟和仿真,验证其功能和性能。
二、设计原理1. 时钟电路:采用CMOS(互补金属氧化物半导体)技术设计时钟电路,包括时钟发生器、计数器和显示器。
时钟发生器产生稳定的方波信号,计数器根据方波信号进行计数,显示器将计数结果以数字形式显示出来。
2. 功能模块:多功能数字钟除了显示时间外,还应具备日期显示、闹钟设置、温度检测等功能。
为实现这些功能,需要添加相应的模块,如时钟芯片、温度传感器、闹钟电路等。
三、电路设计1. 时钟电路设计:根据设计原理,使用EDA软件进行电路设计,选择合适的元器件和连接方式。
通过仿真验证电路的工作稳定性和准确性。
2. 功能模块设计:根据需求,添加相应的功能模块。
时钟芯片用于精确计时和日期显示,温度传感器用于检测环境温度并显示,闹钟电路用于设置闹钟时间并触发报警。
四、电路实现1. 元器件选取:根据电路设计需求,选择合适的元器件。
时钟芯片应具备高精度和稳定性,温度传感器应具备高灵敏度和准确度,闹钟电路应具备可调节和触发功能。
2. 电路布局:将选取的元器件按照电路设计进行布局,注意元器件之间的连接和布线,避免干扰和短路。
3. 电路连接:根据电路设计进行元器件之间的连接,注意连接的正确性和稳定性。
五、仿真与测试1. 仿真验证:使用EDA软件进行电路仿真,检查电路的稳定性和准确性。
通过仿真结果对电路进行调整和优化,确保其正常工作。
2. 功能测试:对多功能数字钟进行功能测试,包括时间显示、日期显示、温度检测和闹钟设置等。
通过测试结果对电路进行调整和改进,确保其功能的完善和可靠性。
六、实验结果与分析经过仿真和测试,多功能数字钟实现了准确的时间显示、日期显示、温度检测和闹钟设置等功能。
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课程设计 数字时钟一、课程目标知识目标:1. 学生能理解数字时钟的基本概念和原理,掌握数字时钟的组成、功能及使用方法。
2. 学生能够运用所学知识,分析并设计简单的数字时钟电路。
3. 学生了解EDA(电子设计自动化)软件在数字时钟设计中的应用。
技能目标:1. 学生能够运用EDA软件完成数字时钟电路的绘制、仿真和调试。
2. 学生能够运用逻辑电路知识,设计并实现数字时钟的基本功能,如时、分、秒显示。
3. 学生能够通过团队合作,解决数字时钟设计过程中遇到的问题。
情感态度价值观目标:1. 学生培养对电子设计技术的兴趣,提高创新意识和动手能力。
2. 学生在学习过程中,养成积极思考、主动探究的良好习惯。
3. 学生通过团队合作,培养沟通协作能力和集体荣誉感。
课程性质:本课程为实践性课程,以学生动手实践为主,注重培养学生的实际操作能力和创新能力。
学生特点:本课程面向初中生,学生对电子技术有一定了解,具备基本的逻辑思维能力,但实际操作能力有待提高。
教学要求:教师应结合学生特点,采用任务驱动法、分组合作法等教学方法,引导学生主动参与,确保课程目标的实现。
同时,注重过程评价和成果评价,全面评估学生的学习成果。
二、教学内容本章节教学内容依据课程目标,紧密结合教材,确保科学性和系统性。
具体内容包括:1. 数字时钟基础知识:介绍数字时钟的原理、组成及功能,对应教材第3章“数字电路基础”。
- 时钟信号产生- 计数器原理- 显示技术2. EDA软件应用:学习EDA软件的使用方法,绘制数字时钟电路图,对应教材第5章“EDA技术及其应用”。
- EDA软件操作- 电路图绘制- 电路仿真与调试3. 数字时钟电路设计:运用逻辑电路知识,设计数字时钟电路,对应教材第4章“组合逻辑电路”。
- 逻辑门电路- 时钟分频器设计- 计数器设计- 显示控制电路4. 数字时钟制作与调试:分组合作,动手实践,完成数字时钟的制作与调试,对应教材第6章“数字电路实践”。
EDA课程设计数字电子钟
一、设计任务及要求1、设计内容选用合适的可编程逻辑器件及外围电子元器件,设计一个数字电子钟,利用EDA 软件(QUARTUS Ⅱ)进行编译及仿真,设计输入采用Verilog HDL硬件描述语言输入法,并下载到EDA实验箱系统,连接外围电路,完成实际测试。
2、设计要求(1)具有时、分、秒计数显示功能,该电子钟正常显示小时、分钟、秒,各用2位数码管(共6位数码管),显示范围为0—23时59分59秒。
(2)具有复位清零的功能,且能够对计时系统的小时、分钟进行调整。
(3)定时响铃功能,设计计时到01分10秒后蜂鸣器开始响,持续时间10秒。
二、设计思想对于数字钟来说首先是时分秒的计数功能,然后能显示,附带功能是清零、调整时分,拟定如下方案:计时校正模块中,用1Hz时钟送入秒脉冲信号,“秒计数器”采用60进制,每累计60秒,发出一个“分脉冲”信号,该信号将被送到“分计数器”。
“分计数器”采用60进制计数器,每累计60分,发出一个“分脉冲”信号,该信号被送到“时计数器”。
“时计数器”采用24进制,可实现24小时的累计计数,时钟使用三个输入按键K1、K2、K3,分别控制数字钟的校时、校分、清零,每次分别按下K1、K2按键,对应的时、分计数就加1,按下K3,时间清零。
显示模块中,分别用六个八位数码管显示时钟的时十位、时个位、分十位、分个位、秒十位、秒个位,设置一个时钟脉冲用于扫描数码管显示。
最后的定时响铃功能,本报告设计为计时到01分10秒开始驱动蜂鸣器响,持续十秒。
三、程序清单Verilog HDL源程序:module clock(clk1,clk2,dx,wei,k1,k2,rst,led);input clk1,clk2,k1,k2,rst;output [2:0] wei;output [7:0] dx;output led;reg led;reg [2:0] wei;reg [7:0] dx;reg [7:0] as,ts,am,tm,ah,th,xs;reg [7:0] q;always @(posedge clk1 or posedge rst)beginif(rst){as,ts,xs,am,tm,xs,ah,th}<=8'b00000000; else if(k1)beginif(ah==8'b00001001)beginah=8'b00000000;th=th+8'b00000001;endelse if(ah==8'b00000011&&th==8'b00000010) beginth=8'b00000000;ah=8'b00000000;endelse ah=ah+8'b00000001;endelse if(k2)beginif(am==8'b00001001)beginam=8'b00000000;if(tm==8'b00000101)tm=8'b00000000;else tm=tm+8'b00000001;endelse am=am+8'b00000001;endelse if(as==8'b00001001)beginas=8'b00000000;if (ts==8'b00000101) begints=8'b00000000;if(am==8'b00001001)beginam=8'b00000000;if(tm==8'b00000101)begintm=8'b00000000;if(ah==8'b00001001)beginah=8'b00000000;th=th+8'b00000001;endelseif(ah==8'b00000011&&th==8'b00000010)beginth=8'b00000000;ah=8'b00000000;endelse ah=ah+8'b00000001;endelse tm=tm+8'b00000001;endelse am=am+8'b00000001;end else ts=ts+8'b00000001; endelse as=as+8'b00000001;endalways @(posedge clk2)beginif(wei==3'b111)wei<=3'b000;else wei<=wei+3'b001;endalways @(q or wei or k1)beginif(wei==3'b000)q<=as;else if(wei==3'b001)q<=ts;else if(wei==3'b010)q<=8'b11111111;else if(wei==3'b011)q<=am;else if(wei==3'b100)q<=tm;else if(wei==3'b101)q<=8'b11111111;else if(wei==3'b110)q<=ah;else if(wei==3'b111)q<=th;case(q)0:dx<=8'b11111100;1:dx<=8'b01100000;2:dx<=8'b11011010;3:dx<=8'b11110010;4:dx<=8'b01100110;5:dx<=8'b10110110;6:dx<=8'b10111110;7:dx<=8'b11100000;8:dx<=8'b11111110;9:dx<=8'b11110110;default dx<=8'b00000010;endcaseendalways @(posedge clk1)beginled=1;if(ts==8'b00000001&&am==8'b00000001&&tm==8'b00000000&&ah= =8'b00000000&&th==8'b00000000)led=~led;elseif(as==8'b00000000&&ts==8'b00000010&&am==8'b00000001&&tm= =8'b00000000&&ah==8'b00000000&&th==8'b00000000) led=0;endendmodule四、调试及总结1.仿真波形图2.总结通过此次课程设计,让我对EDA这门技术有了更深的体会,并更好的学会了使用QuartusⅡ软件进行硬件设计。
EDA多功能数字电子钟
EDA实验报告Clock设计姓名:专业:电子信息科学与技术班级:10级1 班学号:1001050903信息科学与工程学院电子信息系2012 年7 月3 日一、实验目的通过本次实验设计,提高学生Verilog语言编写能力,加深对Quartus ΙΙ、modelsim等仿真软件的了解并进一步熟悉和使用。
二、实验要求1.设计一个时钟,具有显示时、分的功能;2.时钟有暂停、复位等功能。
三、实验内容1.clock程序代码module clock(clk,seg,reset,cin,ocom,count);output[3:0] ocom;output[7:0] seg;output count;input cin,clk,reset;reg [7:0] out_s;reg[7:0] out_min;reg[7:0] seg;reg[3:0] ocom;reg[3:0] display;reg clk_m,clk_n;reg[1:0] select;reg count;integer count_clk,count_cp;always @(posedge clk)if (count_cp == 50000)begincount_cp = 0;clk_n = ~clk_n;endelsecount_cp = count_cp + 1;always @(posedge clk)if (count_clk == 25000000)begincount_clk = 0;clk_m = ~clk_m;endelsecount_clk = count_clk + 1;always @(posedge clk_n)select=select + 1;always @(select)begincase(select)2'b00 : begin ocom[3:0]=4'b1110;display = out_s[3:0]; end2'b01 : begin ocom[3:0]=4'b1101;display = out_s[7:4]; end2'b10 : begin ocom[3:0]=4'b1011;display = out_min[3:0]; end2'b11 : begin ocom[3:0]=4'b0111;display = out_min[7:4]; end endcaseendalways @(posedge clk_m)beginif(!reset)out_s <= 0;else if(cin)beginif(out_s[3:0]==9)beginout_s[3:0] <= 0;if(out_s[7:4]==5)out_s[7:4] <= 0;elseout_s[7:4] <= out_s[7:4]+1;endelseout_s[3:0] <= out_s[3:0]+1;endendalways @(out_s)if ((out_s == 8'h59) & cin)count = 1;else#1 count = 0;always @(posedge clk_m)beginif(!reset)out_min <= 0;else if(count)if(out_min[3:0]==9)beginout_min[3:0] <= 0;if(out_min[7:4]==5)out_min[7:4] <= 0;elseout_min[7:4] <= out_min[7:4]+1;endelseout_min[3:0] = out_min[3:0] + 1;endalways @(display)begincase(display)4'b0000 : seg[7:0]=8'b10010000;4'b0001 : seg[7:0]=8'b10011111;4'b0010 : seg[7:0]=8'b01011000;4'b0011 : seg[7:0]=8'b00011001;4'b0100 : seg[7:0]=8'b00010111;4'b0101 : seg[7:0]=8'b00110001;4'b0110 : seg[7:0]=8'b00110000;4'b0111 : seg[7:0]=8'b10011101;4'b1000 : seg[7:0]=8'b00010000;4'b1001 : seg[7:0]=8'b00010001;default : seg[7:0]=8'b11111111;endcaseendendmodule2.测试代码`timescale 1ns/1nsmodule clock_test;wire [3:0] ocom;wire [7:0] seg;wire count;reg cin,clk,reset;always #10 clk=~clk;initialbeginclk=0;cin=1;reset=0;#42reset=1;#100000 $stop;endclock m(.ocom(ocom),.seg(seg),.count(count),.cin(cin),.clk(clk),.reset(reset)); endmodule3.引脚绑定4.程序下载1.Quartus编译2.modelsim仿真五.实验总结这次课程设计让同学们懂得了Verilog语言的重要性,没有好的理论基础就不可能有实践的正确性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
唐山学院《EDA技术》课程设计题目数字电子钟设计系(部) 智能与信息工程学院班级13电本1班姓名马建雨学号4130208144指导教师郭耀华、王默琦、戴彦2016 年7 月 4 日至7 月8 日共 1 周2016年7 月8日目录1 引言 (1)2 EDA技术简介 (2)2.1 EDA技术的基本特征 (2)2.2 硬件描述语言 (2)3 QuartusII软件简介 (4)3.1软件介绍 (4)3.2 QuartusII工作环境介绍 (5)4 课程设计说明 (8)4.1设计内容 (8)4.2设计要求 (8)4.3设计目的 (8)4.4设计思路 (8)4.5 设计具体方案及实现 (9)4.5.1秒、分、时计时模块 (9)4.5.2 动态显示模块 (11)4.5.3 整点报时模块 (13)4.5.4 校时模块 (14)4.6 总程序 (16)5 总结 (18)参考文献 (19)1 引言随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也愈益依赖于EDA技术的应用。
即使是普通的电子技术的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、、性能价格比大幅提高。
不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。
EDA技术的设计语言为VHDL(硬件描述语言),实验载体为可编程器件CPLD或者FPGA,进行元件模拟和仿真的目标器件为ASIC/SOC芯片。
它是一种自动化设计电子产品的过程。
在电子设计仿真的领域里,EDA技术的出现具有非常重要的现实意义。
EDA源自于计算机辅助设计、制造、测试以及辅助工程。
利用EDA工具,设计者们可以从概念、算法、协议等方面来设计电子系统。
值得一提的是,在整个电子系统的设计过程中,设计电路、分析性能、布置IC 和PCB版图等步骤都可以在电脑上自动完成。
时钟是我们日常生活中必备的生活用品之一。
而数字时钟的出现更是给人们的生产生活带来了极大的便利。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
EDA技术为数字类产品提供了一个非常简便实用的开发平台。
随着EDA技术的快速发展,数字时钟的应用越来越广泛,并且它在功能外观方面也有了很大的改善和提高。
本文就是基于EDA技术的基础知识,利用Quartus2软件再现一个具有传统时钟功能和自动报时功能的数字时钟。
数字钟采用EDA技术设计,利用硬件描述语言VHDL按模块化方式设计、编程及时序仿真等。
该数字钟能实现时、分、秒计数的显示功能,且以24小时循环计时,具有清零的功能,且能够对计时系统的小时、分钟进行调整,具有整点报时功能。
整个系统包括传统数字时钟所拥有的计时模块、校时模块、译码显示模块以及整点报时模块。
整个系统使用方便,功能齐全,精度高。
2 EDA技术简介电子设计技术的核心就是EDA 技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术、最新成果二研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB 设计。
2.1 EDA技术的基本特征EDA代表了当今电子技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为及设计,最后通过综合器和适配器生成最终的目标器件,这样的设计被称为高层次的电子设计方法。
这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一进行享验证。
然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现既可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程实在高层次上完成的,这既有利于早期发现结构设计上的一些错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
2.2 硬件描述语言硬件描述语言是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。
例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C 即可。
而且VHDL语言可读性强,易于修改和发现错误。
早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。
为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL 为硬件描述语言标准(IEEESTD—1067)。
VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或者自底向上的电子设计过程都可以用VHDL来完成。
VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现.(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
(3)VHDL的设计不依赖于特定的期间,方便了工艺的转换。
(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
与其他的硬件描述语言相比,VHDL的优势在于:(1)VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
3 QuartusII软件简介3.1软件介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware 支持Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
3.2 QuartusII工作环境介绍工具按钮层次结构显示信息提示窗口工作区菜单栏2.新建工程,如图3.2所示:工程项目目录工程名称项目顶层设计实体名图3.2.2 新建工程图3.2新建工程3.代码输入:执行File菜单下的New命令,点击VHDL File。
如图3.3所示:图3.3 代码输入界面4.进行程序仿真,如图3.4所示:图3.4 功能仿真界面5.建立波形文件,进行波形仿真。
执行File菜单下的New命令,点击Vector Waveform File。
如图3.5所示:图3.5功能仿真界面4 课程设计说明4.1设计内容在本次课程设计中使用QuartusII软件并基于实验室现有的EDA实验箱,实现数字电子钟的设计:(1)设计一个能进行时、分、秒计时数字钟。
(2)能对时、分和秒进行手动调节以校准时间。
(3)具有整点报时功能,通过选择此功能,能在整点时间发出报时声音。