EDA多功能数字时钟设计实验报告
- 格式:doc
- 大小:790.50 KB
- 文档页数:26
数字电子技术课程设计报告——多功能数字钟电路设计专业班级:信息10-2姓名:学号:开课系室:设计日期:2012年10月22日~26日设计题目:多功能数字钟电路设计一、设计任务及要求:1.设计任务:利用语言设计多功能数字钟,使其具有显示时—分—秒、整点报时、小时和分钟可调等基本功能。
2.设计要求:设计一个多功能数字钟,要求显示格式为时—分—秒,整点报时,在整点前5秒开始按照1的频率闪烁,过整点后,停止闪烁。
系统时钟选择时钟模块的50,要得到1HZ的时钟信号,必须对系统时钟进行分频。
调整时间的按键用按键模块的s1和s2,s1调节小时,每按下一次,小时增加一个小时,s2调整分钟,每按下一次,分钟增加一分钟。
另外用s8按键作为系统时钟复位,复位后全部显示00-00-00。
3.输出资源说明:a)输入信号:按键s1,s2,s8(s1按下时为0,松开时为1,其他按键类似)。
b)外部输入脉冲信号时钟源(50),经适当分频后供计数器使用。
c)输出8组显示译码信号(每组7个输出端),分别接到外部的7个七段数码管上,分别显示小时、分钟、秒,显示格式小时-分钟-秒。
d)输出一个高低电平信号,接到外部的1个指示整点的灯。
(输出高电平时,对应的灯亮)错误!未指定顺序。
多功能数字钟控制器结构框图根据如上说明,本设计的主要任务和设计要求是: 1、按照现代数字系统的模块化设计方法,提出简易洗衣机控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码等模块化子系统的设计方案。
2、在的设计环境中,采用原理图和语言混合输入的方法,完成系统的顶层设计、各子系统的模块化设计。
分别完成各个基于语言实现的子模块(包括分频器、计数器、主控制器、扫描显示译码四部分)的逻辑功能仿真,并对顶层设计进行功能仿真。
3、在2步的基础上,用下载电缆通过口将对应的文件加载到中。
观察实验结果是否与自己的编程思想一致。
二、设计原理与方案:设计多功能数字钟首先要知道钟表的工作原理,整个钟表的工作应该是在1的信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0-23。
E D A数字钟的设计实验报告(总11页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--五邑大学实验报告实验课程名称:EDA实验院系名称:信息工程学院专业名称:通信工程(物联网)(一)实验目的:设计并实现具有一定功能的数字钟。
掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。
此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。
(二)实验器材:计算机一台,EDA实验箱一台。
(三)实验原理:四)实验内容:1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。
2.按键实现“校时”“校分”功能;3.用扬声器做整点报时。
当计时到达59’50”时鸣叫。
方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。
整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。
(五)实验步骤: 1. 新建一个文件夹,命名为shuzizhong.2. 输入源程序。
打开QuartusⅡ,选择File→new命令。
在New窗口中的DesignFiles栏选择编译文件-的语言类型,这里选择VHDL File选项。
然后在VHDL文本编译窗口中输入秒模块程序。
秒模块源程序如下:library ieee;use SECOND isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位co:out std_logic);-------输出/进位信号end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数beginif clr='1' then----当ckr为1时,高低位均为0cnt1:="0000";cnt0:="0000";elsif clk'event and clk='1' thenif cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9时cnt0:=cnt0+1;----计数cnt0:="0000";if cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;3.文件存盘。
eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。
实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。
引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。
本
次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。
实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。
2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。
3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。
实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。
2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。
3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。
讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。
同时,数字钟的组装和操作也相对简单,适合家庭使用。
结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。
在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。
致谢:
感谢实验中提供支持和帮助的老师和同学们。
EDA实训报告指导教师朱小祥田欢专业电子信息工程技术班级电信1004班姓名张子维日期2012年5月21日—25日一、实训目的1、了解数字钟的工作原理。
2、进一步熟悉用VHDL语言编写驱动七段码管显示的代码。
3、掌握VHDL编写中的一些小技巧。
二、实训原理多功能数字钟应该具有的功能有:显示时-分-秒、整点报时、小时和分钟可调等基本功能。
首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23时。
在实训中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD码)显示个位,对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位,用4位二进制码(BCD码)显示个位。
实训中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟进行分频。
对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。
本实训设计的是当进行整点的倒计时5秒时,让LED来闪烁进行整点报时的提示。
三、实训内容本实验的任务就是设计一个多功能数字钟,要求显示格式为小时-分钟-秒钟,整点报时,报时时间为10秒,即从整点前10秒钟开始进行报时提示,喇叭开始发声,直到过整点时,在整点前5秒LED开始闪烁,过整点后,停止闪烁。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
四、实训步骤①认真听取老师介绍开发板硬件结构,仔细阅读EDA实训指导书,了解数字钟设计程序的大致过程。
②根据之前写过的“精确24秒倒计时”程序,将其中的各个模块程序进行修改。
. . -.课程设计报告设计题目:EDA实现多功能数字钟. . -.课程设计 任务书题目 EDA 实验多功能数字钟 任务与要求一、实验任务:用FPGA 器件和EDA 技术实现多功能数字钟的设计 条件:1、MAX+Plus 软件2、FPGA 实验开发装置根本功能:1、以数字形式显示时、分、秒的时间; 2、小时计数器为24进制; 3、分、秒计数器为60进制。
二、小时计数器为24进制原理图如下:…………………………装………………………………订对该图进展编译及波形仿真如下:分析及结论:小时计数器是24进制用当下面的74161到9时等下个脉冲来是向上面一个74161进位使的上面的74161记数。
但是等到上面的计到2时下面的将不能超过4所以等上面的计到2,下面的计到4时就将两个74161共同预置。
从而实现00—24分的记数功能。
仿真波形显示里23小时到00分的循环的过程仿真到位。
对上述仿真波形图进展打包工作,将24进制图建立成模块:三、分计数器为60进制原理图如下:对该图进展编译及波形仿真如下:分析及结论:分计数器是60进制的。
当下面的74161到9时等下个脉冲来是向上面一个74161进位使的上面的74161计数,到5时将两个74161共同预置。
从而实现00—59秒的记数功能。
Cp60S为向分的进位信号上跳沿有效。
仿真波形显示里59秒到00秒的循环的过程,仿真到位。
对上述仿真波形图进展打包工作,将60进制图建立成模块:四、秒计数器为60进制原理图如下:对该图进展编译及波形仿真如下分析及结论:秒计数器是60进制的。
当下面的74161到9时等下个脉冲来是向上面一个74161进位使的上面的74161计数,到5时将两个74161共同预置。
从而实现00—59秒的记数功能。
Cp60S为向分的进位信号上跳沿有效。
仿真波形显示里59秒到00秒的循环的过程,仿真到位。
对上述仿真波形图进展打包工作,将60进制图建立成模块:五、多功能数字钟的主体局部原理图如下:仿真波形图如下:六、下载1、添加译码模块后的原理图对上述图形进展编译及波形图如下2、选用器件3、分配引脚号4、对器件进展下载下载模块的原理图如下七、心得体会:充分体会到了合作的重要性,在协同中觉察自己的缺乏,认真听取同伴的意见。
电子设计自动化(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数字钟实验报告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工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
1. 实验背景数字钟是我们日常生活中常见的设备之一。
它不仅可以显示时间,还具有闹钟等功能。
在这个实验中,我们将使用EDA工具来设计一个数字钟电路,并通过FPGA实现这个电路。
2. 实验目标本次实验的目标是设计一个能够显示小时、分钟和秒的数字钟电路。
我们将使用七段数码管来显示这些信息,并通过按键来设置时间和闹钟。
3. 设计思路我们的设计思路如下:3.1 时钟模块我们首先需要设计一个时钟模块,用来产生一个固定的时钟信号。
我们可以使用FPGA的时钟模块来实现这个功能,或者使用外部的晶振电路。
3.2 数码管驱动模块接下来,我们需要设计一个数码管驱动模块,用来将数字转换为七段数码管的显示信号。
我们可以使用查找表或者逻辑门电路来实现这个功能。
3.3 时间设置模块为了能够设置时间,我们需要设计一个时间设置模块。
这个模块可以通过按键来设置小时、分钟和秒。
3.4 闹钟设置模块类似于时间设置模块,我们还需要设计一个闹钟设置模块。
这个模块可以通过按键来设置闹钟的小时和分钟。
3.5 主控制模块最后,我们需要设计一个主控制模块,用来控制时钟、数码管驱动、时间设置和闹钟设置模块之间的交互。
这个模块可以根据设置的时间和闹钟来控制数码管的显示。
4. 电路实现根据我们的设计思路,我们使用EDA工具来实现我们的数字钟电路。
我们使用VHDL语言来描述电路,并使用模块化的方式来组织我们的代码。
5. 实验结果经过实际的电路实现和测试,我们成功地实现了数字钟电路。
我们可以通过按键来设置时间和闹钟,并通过七段数码管来显示时间和闹钟。
6. 实验总结通过这个实验,我们学习了如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。
我们深入了解了数字钟的工作原理,并学会了如何使用VHDL语言来描述电路。
南京理工大学EDA(Ⅱ)实验报告——多功能数字钟姓名:学号:学院:指导教师:时间:2014/11/3~2014/11/7摘要日益复杂的电子线路使得基于原理图的设计越来越复杂,甚至不切实际。
硬件描述语言的诞生,对设计自动化起到了极大的促进和推动作用。
Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,实现了从算法级、门级到开关级的多种抽象设计层次的数字系统建模,具有仿真,验证,故障模拟与时序分析等功能。
本文利用Verilog HDL语言,采用自顶向下的设计方法设计多功能数字钟,并通过QuartusⅡ分块进行了仿真。
此程序通过下载到FPGA芯片后,可实现实际的数字钟显示,具有基本的计时显示和设置,时间校正,整点报时,12h/24h转换,闹钟设置和闹铃控制的功能。
关键词: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,数字钟AbstractThe development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastically. Verilog HDL is one of the HDL with multiple and strong functions.In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by QuartusⅡ. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling.Keywords: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,Digital clock目录摘要Abstract第一章数字钟设计要求说明第二章数字钟的设计思路和工作原理第三章模块的Verilog HDL设计与仿真3.1 计数器模块3.2 基本计时顶层模块3.3 分频模块3.4 整点报时模块3.5闹钟模块3.6 LED数码管显示模块3.7 数字钟顶层模块第四章FPGA实现第五章总结5.1 遇到的问题与解决方案5.2 尚存在的不足之处5.3 收获与感悟参考文献第一章数字钟设计要求说明(一)数字钟可以正常进行基本的时,分,秒计时功能。
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(一)设计(2)之多功能数字钟南京理工大学电子科学与光电技术学院2005级作者: 高策学号: 0504220224同组: 黄文浩学号: 0504220242指导教师:蒋立平时间:08-3-18目录内容摘要 (3)一.引言 (4)二、实验要求 (4)三、方案论证 (5)四、各模块设计 (6)1、分频器模块 (6)2、计时模块 (8)3、闹铃模块 (10)4、彩铃模块 (12)5、显示模块 (13)6、整点报时模块 (14)7、秒表模块 (15)8、万年历模块 (16)9、动态显示模块 (19)10、闪烁模块 (20)五、整体电路功能综述 (22)六、实验中的问题及解决方法 (24)七、总结体会 (25)八、实验的收获与感受 (26)中文摘要本实验利用QuartusII软件,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常分、秒计时,动态显示,保持、清零、快速校分、整点报时、闹钟功能。
文章分析了整个电路的工作原理,还分别说明了各子模块的设计原理和调试、仿真、编程下载的过程,并对最终结果进行总结,最后提出了在实验过程中出现的问题和解决的方案。
通过实验掌握了一些逻辑组合器件的基本功能和用法,同时体会到了利用软件设计电路的方便快捷,避免了硬件布线的繁琐,提高了效率。
关键词数字计数器动态显示保持清零快速校分整点报时闹钟软件设计外文摘要Title DIGITAL CLOCK DESIGN PROPOSAlAbstractUsing the QuartusII, we design a digital clock of 24 hours with learning electric circuit knowledge. The circuit can keep the time, display, reset, adjust the minute and hour, ring the time in the round number time and alarm clock.The paper has analyzed the principle of all work and explained the designing principle of different parts separately. By debugging, simulating, compiling, programming, I put forward a matter and give a settling plan.I know about the basic functions and using method of some electric pieces in this experiment. At the same time, I realized the convenience of making use of the software to carry on the electric circuit, which is fast, avoided the hardware cloth line tedious, and raised the efficiency.Keywords digital counter, dynamic display, keep, clear, check time, time, alarm clock,software design一、引言传统硬件电路在设计存在连线麻烦,出错率高且不易修改,很难控制成本的缺点。
而软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然;软件内部提供有丰富的元件库;节省实验时间,故障率低,出错时,有错误提示,明显提高了效率。
本次试验就利用QuartusII软件设计一个电子数字钟,并下载到CPLD实验系统中。
初步了解并体验利用软件设计电路的过程及优点,并下载到可编程逻辑器件中完成实验。
二、实验要求1.能进行正常的时,分,秒计时功能。
完成一天二十四小时的计时;2.提供八个数码管动态显示时,分,秒;3.对于时钟要提供校正功能,能对于分、时分别提供校正。
4.时钟具有整点报时功能,当时钟计到每个小时59’51”时开始报时,在59’51”,59’53”, 59’55”,59’57”时发出低音, 59’59”时发出高音;5.闹钟的功能,可以根据需要自己设定闹钟的闹时时间(精确到分),响铃一分钟,期间可通过开关关闭闹铃。
闹铃的铃声可以切换为多种声音,如动画过关响声,警铃声等;附加功能:1.具有秒表功能,在秒表显示界面提供清零、start/stop功能。
2.具有万年历功能,提供2000-2100之间100年的日期显示功能,在万年历显示界面,提供对月、日、年的分别校正功能。
3.闪烁功能,在闹铃的一分钟过程中,显示界面八位数码管以制定频率一次熄灭,出现横向闪烁效果;在正点报时时,即每小时的59分51秒开始,八位数码管整体以1HZ频率闪烁,出现整体闪烁效果,时间持续10秒钟。
三、方案论证按照上述基本功能及附加功能,本次电子数字时钟实验,基本核心功能是计时模块,次功能通过两个模60计数器及一个模24计数器级联既可以实现,由于实验台仅提供48MHZ信号,所以我们首先要通过分频器实验分频,生成1HZ信号。
由于还设计了闹钟,秒表,万年历功能,所以共有四套显示界面,一次还涉及到动态显示界面的切换问题,上述问题将在各模块论述中详细介绍,整体电路图如下:通过上面的整体电路图可以清晰的看出数字电子钟的工作原理,每一显示界面的功能模块连接一个显示模块,最后由一个选择切换模块进行连接,整点报时和闹铃模块与蜂鸣器相连,产生声音信号,闪烁模块连在显示切换输出与动态显示之间,产生闪烁信号,时输出具有闪烁功能。
四、各模块设计(含软件仿真和部分硬件调试)在此,将以模块为单位,对于各个功能模块进行详细说明,并给出详细电路图和仿真波形结果。
1、分频器模块由于实验台仅提供48MHZ频率,所以,需要通过分频器电路分出所需频率的信号,对于时钟来说,最基本的是1HZ信号,通过一个48分频的分频器和一个1M分频的分频器级联构成,具体电路如下:由上图可以看出,通过两片74160构成模48计数器,实现48分频作用,通过5片7416构成2的20次方,近似认为1M分频器,实现1M分频,产生最小为1HZ的各种所需频率信号:1HZ/2HZ/4HZ/8HZ/16HZ/32HZ/256HZ/512HZ/1KHZ/2KHZ/4KHZ分频器波形模拟如下图:二、计时模块:数字钟最基本的功能就是计时,所以计时模块也就成为了本次设计中最基本的模块之一,通过两个模60计数器和一个模24计数器三者级联构成的计时模块能够对时、分、秒进行计时,实现计时功能,电路图如下:由上图可以看出,由于实验电路有能够对分、时进行校正的要求,所以,在秒位向分位进位的中间和分位向时位进位的中间加入了校正电路,当校正开关关闭时,正常进位,当校正开关打开时,将通过校正电路给一个2HZ的校正信号,使得分位或时位以2HZ的频率快速较分,为了实现防颤功能,加入了D触发器,用1000HZ作为房颤信号,使得电路能够消颤。
在试验中,有一种最普遍的防颤方法,就是进位信号接在使能端,而时钟端通一接1HZ,这样的话是不会发生颤抖的,但是较正时也只能以1HZ的频率校正,不能达到快速较分,一次我采用了上述电路,借鉴了上学期电子电路综合实验的电路设计,实现消颤。
上图位计时模块波形仿真图形。
上图为当校正信号产生时,计时模块开始较分、较时。
由上图可以看出,校正存在一定的时间延迟,这是因为门电路时间延迟的原因,但实际操作中,基本可以忽略不计。
三、闹铃模块:具体电路如下图:实验要求数字钟应该具有闹铃功能,具有独立的闹铃设定界面,并且能够设定任意时间,精确到分、时。
这就涉及到多个显示界面的切换问题,在后面的模块介绍中会详细提到,现在,只讨论闹铃模块这一功能。
要想达到设定时间的功能并不难,只需要一个模60计数器和一个模24计数器,与计时电路一样级联,通过校正电路,使其快速较分,较时。
当到要设定的时间时停止脉冲信号,此时,闹铃设定单元将一直保持设定的时间。
但是闹铃模块还需要当时间到达闹铃设定时间时输出闹铃信号,这就涉及到一个设定时间与实际计时单元时间比较的问题,通过四片4位比较器可以实现,当实际计时单元时间与设定闹铃时间相同时,4片比较器同时输出高电平信号,相与后输出闹铃信号。
此闹铃信号将作为彩铃发生模块的控制信号。
具体电路如下:这是本实验中比较有个人特色的模块,利用一个74160制做的模8计数器为3-8线数据选择器提供地址控制,通过数据选择器实现不同频率的组合,这里利用已经做好的分频模块为数据选择器提供各种频率。
我们在制作这个模块的时候,使用了一个讨巧的方法,来实现多种声音的变化,比如有人听惯了闹表声,可以通过搬动开关来变化闹铃声音。
具体方法就是在数据选择器的地址控制端加入开关,控制送入频率的顺序,来变化声音。
K6:地址控制开关;K7:地址控制开关; K8:地址控制开关通过三个地址开关的不同组合,一共可以实现多达八种不同的闹铃声音,是闹铃声音做到多重变化。
在彩铃模块,我们还设置了两个开关,NAOLINGSET和NAOLINGKAIGUAN,前一个开关控制闹铃是否作用,当NAOLINGSET关闭时,闹铃声音将停止;后一个开关控制闹铃设定界面,当NAOLINGKAIGUAN为高电平时,显示进入闹铃设定界面,此时提供闹铃设定功能。
电路图如下:可以看出,这是一个比较简单的模块,可以说是动态显示电路的一个过度模块,由于采用动态显示,八位数码管每次只能有一个在工作,所以,要把八个管子的八路信号通过数据选择器,以动态显示电路的频率一次送入,每次输入一路信号,因此,就融到了上图电路,通过1、2、3三个选择信号与动态显示同步,由上到下,一次选通八路信号。
六、整点报时模块:电路图如下:实验要求在59分51秒、53秒、55秒、57秒输出低音,59秒输出高音报时,这就需要通过计时模块的分位与秒位信号进行以下判断,到达指定时间时,低音送出1KHZ 信号,高音送出4KHZ 信号,通过画卡诺图,可以分析出逻辑关系,具体电路如下,当fg0、fg3、fs0、fs2、ms0、ms2、mg0为1,mg3为0时,输出低音信号,当mg3为1时输出高音信号。
上图为整点报时的波形模拟信号,通过BAOSHIXINHAO 的波形可以看出,当mg3为0时,输出低频信号,为1时,输出高频信号。
NAND4inst178NAND4inst167NOTinst168NOTinst170NOT inst171NAND2inst177NAND2inst179NAND2inst180NAND2inst181NOTinst182f s2f s0f g0f g3ms2ms0mg04KHZ 1KHZmg3BAOSHIXINHAO七、秒表模块:电路图如下:其实秒表模块与计时模块相当相似,因为基本原理是一样的,只不过秒表多加了一级显示罢了,因此,秒表的基本信号不再是1HZ,而是100HZ,所以,在之前要把1KHZ进行10分频,就是加一个模10计数器,后面与计时模块一样,三个模60计数器和一个模24计数器级联,构成秒表模块,在次模块中,设置了MIAOBIAOKAIGUAN、strat/stop、QINGLING三个开关,第一个开关为高电平时,显示进入秒表界面,此时start/atop控制秒表的开启和停止,最后一个开关负责清零。