EDA数字钟设计实验报告
EDA设计报告-数字时钟

目录前言 (1)摘要 (2)关键词 (2)正文 (2)一、题目分析 (2)1、实验目的 (2)2、根据目的及要求确定总体方框图 (2)3、须完成的技术指标或功能要求 (2)二、设计方案和设计内容 (3)1、设计方案 (3)2、设计内容 (3)三、设计原理及框图细化 (3)1、数字钟的工作原理 (3)2、数字钟设计的电路原理图 (4)3、数字钟模块功能说明 (4)四、编写应用程序并仿真 (7)1、相关程序代码见附件。
(7)2、相关仿真图如下: (7)五、全系统联调,画出整机电路图和波形图 (8)1、整机电路原理图画出后如图3.2。
(8)2、全系统联调后的波形图和仿真图 (8)六、硬件测试及说明 (9)1、编程下载 (10)2、硬件调试 (10)七、结论 (11)八、课程总结 (11)九、参考文献 (12)十、附录(课题背景介绍和源程序) (12)1、EDA技术 (12)2、VHDL的简介 (12)3、VHDL语言的特点 (12)4、VHDL的设计流程 (13)5、源程序代码 (13)前言近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务;(2)硬件电路与软件设计过程已高度渗透;(3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言VHDL的运用;(4)数字系统的芯片化实现手段已成主流。
因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。
随着社会的发展,科学技术也在不断的进步。
特别是计算机产业,可以说是日新月异,数字钟作为计算机的一个组成也随之逐渐进入人们的生活,从先前的采用半导体技术实现的数字钟到现在广泛应用的采用高集成度芯片实现的数字钟。
数字钟正在向着功能强,体积小,重量轻等方向不断发展,本设计主要介绍的是一个基于超高速硬件描述语言VHDL对数字钟中显示电路进行编程实现。
EDA实验报告(时钟)

巢湖学院EDA实验报告数字时钟的设计报告学校:巢湖学院系别:物理与电子科学系专业:电子科学与技术班级:07电子科学与技术学号:07036037姓名:汪振新指导老师:常红霞2009-12-10摘要:根据系统设计的要求,系统设计采用自顶向下的设计方法,可以将该系统中的各功能模块细分为:秒计数模块、分计数模块、小时计数模块、报时模块、时间设置模块和译码显示模块六个部分。
具有清零、校时、校分等功能。
关键字:VHDL MAX+PLUS软件七段共阴数码管设计校时系统整体GDF图标文件截图目录一设计目的 (4)二设计要求 (4)三系统整体构架 (4)四各模块程序设计 (5)五系统模块的编译、仿真及调试 (14)六系统模块的整合 (18)七系统硬件介绍 (19)八系统实验过程 (20)九实验总结 (21)十参考文献 (21)一:设计目的1、数字时序逻辑电路综合应用。
2、学习喇叭的驱动方法。
3、学习CPLD/FPGA的层次化设计方法。
二:设计要求具有时、分、秒计数显示功能,以24小时循环计时。
整个计数器具有清零、调分、调时功能,而且在接近整点时间时能提供报时信号。
三:系统整体构架根据系统设计的要求,系统设计采用自顶向下的设计方法,可以将该系统中的各功能模块细分为:秒计数模块、分计数模块、小时计数模块、报时模块、时间设置模块和译码显示模块六个部分。
先使用VHDL语言设计编译将这每个模块制作成图元,然后再使用图形编辑器进行总体的整合,系统的整体组装设计的草图如下:四:各模块程序设计1.秒计数模块VHDL(second.vhd)秒计数模块中是以60进制进行循环的,故需要的秒数据输出应该是7位的,但是为了方便随后的调整时间模块设计,秒输出数据用8位二进制表示,其中低四位用于秒的低位,而高四位作为秒的高位。
另外在该模块下的程序由于考虑到系统功能中调整时钟和分钟的要求,故要在秒计数模块中另外加入复位信号(reset)以及分钟设置信号(setmin)。
EDA课程设计报告(数字电子时钟)

EDA课程设计报告设计题目:数字时钟的设计班级:电气工程及其自动化姓名:学号:日期:2014年6月15日目录摘要一、课程设计任务及要求 (3)1.1实验目的 (3)1.2功能设计 (4)二、整体设计思想 (4)2.1性能指标及功能设计 (4)2.2总体方框图 (4)三、详细设计 (5)3.1数字时钟的结构: (5)3.2控制模块的结构 (5)3.3.1按键处理模块 (6)3.3.2定时时钟模块 (6)3.3.3扫描时钟模块 (6)3.3.4定时计数模块 (6)3.3.5显示控制模块 (7)四、主程序 (7)五、实验步骤 (14)5.1工程建立及存盘14 5.2时序仿真14 5.3引脚锁定14 5.4硬件测试15 5.5实验结果15结束语15参考文献16EDA技术实现的数字电子时钟设计作者:指导老师:摘要EDA技术在硬件实现方面融合了大规模集成电路制造技术,IC版图设计技术、ASIC测试与封装技术、FPGA /CPLD编程下载技术、自动检测技术等;EDA技术为现代电子理论和设计的表达与实现提供了可能性。
在现代技术的所有领域中,纵观许多得以飞速发展的科学技术,多为计算机辅助设计,而非自动化设计。
显然,最早进入设计自动化的技术领域之一是电子技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。
不难理解,EDA技术已不是某一学科的分支,或某种新的技能技术,应该是一门综合性学科。
它融合多学科于一体,打破了软件和硬件间的壁垒,是计算机的软件技术与硬件实现、设计效率和产品性能合二为一,它代表了电子设计技术合应用激活速的发展方向。
电子时钟以成为人们常生活中数字电子钟一般由振荡器,分频器,译码器,显示器等部分组成。
电子时钟的应用非常广泛,应用于人家庭或车站、剧场、办公室等公共场所,给人们的生活,学习,工作,娱乐带来极大的便利,尽管目前市场上以有现成电子时钟集成电路芯片,价格便宜这些都是数字电路中最基本的,应用最广的电路。
EDA设计实验报告——数字钟的设计

EDA设计实验报告——数字钟的设计摘要随着现在社会的快速发展,人们都电子产品的要求越来越高,因而电子产品无论从制作上还是从销售上都要求很高。
要制作一个应用性比较好的电子产品就离不开数字电路,大到超级计算机、小到袖珍计算器,很多电子设备都有数字电路。
数字系统是一个能够对数字信号进行加工,传递,和存储的实体,它由实现各种功能的数字逻辑电路相互连接而成。
用来处理数字信号的电子线路称为数字电路,数字集成电路的基本逻辑单元是逻辑门,一块集成电路芯片所容纳的逻辑门数量反映了芯片的集成度,集成度越高,单个芯片所实现的逻辑功能越强。
数字电路在生活中应用广泛,而我所学习的专业为电子信息工程,对于数字电路的熟悉程度要更彻底,所以我选择设计数字钟电路。
在本次设计的课题中,其目的是得到一个计时准确的数字时钟。
在数字钟的制作过程中,要得到准确的计时,就必须对组成电路的每一部分的要求要高。
整个电路是由振荡器电路、分频器电路、时间计数单元、译码驱动电路、数码管五个部分组成。
整个电路的核心部分是振荡电路,振荡电路应采取晶体振荡,晶体振荡器输出频率为32768HZ,在设计中我们采用CD4060来完成电路的振荡和分频,以便于得到1HZ的输出频率。
在计数电路中采用了74LS161计数,74LS161是直接清零的计数器,在电路中起计数和分频的作用。
为了能够得到即准确又清楚的输出,电路采用了译码驱动和数码显示,译码器为74LS247(BCD七段显示译码器)。
译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。
整个电路的设计有严密的逻辑关系。
关键词:计数器,译码器,振荡器,分频器,译码驱动目录摘要 (5)目录 (6)设计任务描述 (7)设计思路 (8)设计方案 (9)1.引言 (10)2.各部分的分析 (12)2.1、振荡电路 (12)2.2、分频电路 (13)2.3、时间计数电路 (13)2.4、译码驱动电路 (14)2.5、校时电路 (15)2.6、数码显示电路 (16)3.电路的逻辑功能 (17)3.1、十进制 (18)3.2、六进制 (18)3.3、二十四进制 (18)结论 (18)致谢 (21)参考文献 (22)附录A1.1 (23)附录A1.2 (24)附录A1.3 (25)设计任务描述1 设计题目题目:数字钟电路2设计要求(1)以二十四小时为一个周期计时。
eda多功能数字钟实验报告

eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。
实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。
引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。
本
次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。
实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。
2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。
3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。
实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。
2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。
3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。
讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。
同时,数字钟的组装和操作也相对简单,适合家庭使用。
结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。
在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。
致谢:
感谢实验中提供支持和帮助的老师和同学们。
EDA课程数字钟设计报告-V1

EDA课程数字钟设计报告-V1数字钟设计报告数字钟设计是EDA(Electronic Design Automation)课程的一项实验任务。
在本次实验中,我们学习了数字电路设计的基本原理和EDA工具的使用方法,并通过数字钟的设计和实现,进一步加深了对数字电路运作的理解和应用能力。
设计原理在数字钟的设计中,我们需要考虑以下几个方面的原理:1.时钟信号发生器时钟信号发生器是数字钟的核心部件,它需要产生一种能够精确计时的信号,来控制其他部件的运作。
我们使用的时钟信号发生器是基于分频电路的原理,通过将高频信号逐步分频,最终得到1Hz的低频信号作为时钟信号。
2.计数器计数器是用于记录时间的关键部件,它需要能够根据时钟信号的变化而自动计数。
我们使用的计数器是基于JK触发器的原理,通过配置不同的触发器状态和逻辑门电路,实现对秒、分、时位数的分别计数。
3.显示器显示器是将计数器的结果通过人们能够理解的形式进行输出的部件,它需要能够清晰、准确地显示时间信息。
我们使用的显示器是基于七段数码管的原理,通过将计数器的结果转换为七段数码管的相应显示状态,实现对时间的显示。
技术实现在技术实现方面,我们使用了EDA工具Xilinx ISE Design Suite来完成数字钟的设计和编程。
通过该工具,我们可以方便地进行原理图绘制、模拟仿真、逻辑设计和HDL编程等过程,最终得到可供FPGA实现的数字钟设计。
具体实现过程如下:1. 通过原理图绘制工具,建立时钟信号发生器、计数器和显示器等部件的原理图,并进行逻辑连接;2. 在模拟仿真工具中,针对不同的输入信号进行仿真测试,检查各个部件的正常运行情况;3. 在HDL编程工具中,编写相应的代码实现数字钟的各项功能,并进行综合和优化;4. 在下载工具中,将编译后的数字钟设计文件下载到FPGA芯片中,完成数字钟的实际实现。
实验结果经过以上的设计和实现,我们最终完成了一款具有完整计数与显示功能的数字钟,能够自动计时、定时报时、清零等各项操作。
电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(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数字钟实验报告

5.改错并重新编译;
6.建立仿真波形文件并进行仿真。单击File菜单下的New,选择Vector Waveform File单击OK,创建一个后缀名为*.vwf的仿真波形文件,按照课件上的方法编辑输入波形,保存,进行仿真,验证仿真结果是否正确;
7.选择器件及分配引脚,重新编译;
四.心得体会
对于我们刚熟悉QuartusⅡ的新手来说,这是一个比较大的实现程序了。通过多VHDL语句的掌握以及真值表的理解来控制LED的七段显示译码。先设计一个4位计数器,使其可以从1计数到15.分别用1~F表示,然后通过译码器显示。通过这次实验进一步增进了我们对VHDL语言的了解,提高了发现错误及纠错的能力。
控制模块:数字钟要满足题目要求,必须有5种状态:正常计时、校小时、校分钟、闹铃设置小时、闹铃设置分钟,所以至少用三个二进制数字表示这5种状态,“000”、“001”、“010”、“011”、“100”,当setup为低电平时,状态在这五种状态之间转换,当setup为高电平时,就停在该状态,等待其他操作。主控组合进程程序:
8.根据引脚分配在试验箱上进行连线,使用LED进行显示;
9.程序下载,观察实验结果并记录;
三.仿真波形:
四.心得体会
通过此次课堂的亲自操作,大致了解了quartus的工作流程和操作步骤,对数字电路中的38译码器和半加器的原理有了新的认识,其中,全加器可以通过之前半加器的原理图生成文件以及与门和或门结合来实现。同时对VHDL语言的语法结构和设计方法也有了初步认识,虽然还不能独立编写程序但是却可以看懂程序了,对这门编程语言有浓厚的兴趣!
二.实验步骤
学习QuartusⅡ软件的使用方法:
1.进入QuartusⅡ环境;
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实验院系名称:信息工程学院专业名称:通信工程(物联网)(一)实验目的:设计并实现具有一定功能的数字钟。
掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握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;----计数elsecnt0:="0000";if cnt1<"0101" then----高位小于5时cnt1:=cnt1+1;elsecnt1:="0000";co<='0';end if;end if;end if;sec1<=cnt1;sec0<=cnt0;end process;end SEC;3.文件存盘。
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 多功能数字钟实验报告

EDAⅡ多功能数字钟目录内容摘要 (3)一.引言 (4)二、实验要求 (4)三、方案论证 (5)四、整体电路功能综述 (6)五、各模块设计1、分频器模块 (8)2、计时模块 (9)3、闹铃模块 (12)4、上下午切换模块 (13)5、显示模块 (14)6、整点报时模块 (15)7、秒表模块 (15)8、动态显示模块 (16)9、倒计时模块 (18)10、开关防抖动 (19)11、开关复用控制 (20)六、实验中的问题及解决方法 (21)中文摘要本实验利用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, reset, adjust the minute and hour, ring the time in the round number time , alarm clock , stopwatch and countdown. 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 and let us have a good foundation for design a more complex system, avoided the hardware cloth line tedious, and raised the efficiency.Keywords digital clock, alarm clock,stopwatch,count down一、引言传统硬件电路在设计存在连线麻烦,出错率高且不易修改,很难控制成本的缺点。
多功能数字钟(EDA设计)实验报告

多功能数字钟一、实验原理分析通过晶振产生的50MHz的脉冲,用分频器进行分频产生1Hz 的脉冲信号,即作为时钟的1s的信号进行计数。
秒钟每计数60秒后产生进位使分钟显示加1,分钟满60循环至0。
为实现手动校准时刻功能,能够对分和秒计数器进行加减。
为实现校准时刻时候的闪烁,对数码管利用消隐,把数码管的接地端口接一个脉冲信号。
在实验进程中,要注意很多细节,比如进行按键消抖,手动调整时刻时可不能进位。
二、逻辑分析三、功能模块分析功能模块包括分频模块,时刻计数及校准模块,数码管译码显示模块、裁决模块和消抖模块1.分频模块该电路由多个70LS90通过度频将由晶振产生的50MHz分频为1Hz方波,供后续时钟电路利用。
这一模块是整个电路的基础。
2.时刻计数及校准模块该模块连接至分频模块的信号输出端,以分频模块产生的1Hz 方波作为基础。
1Hz方波与秒同步,以秒为基础,别离实现电子钟中,分与时的运转,即1分钟=60秒,1小时=60分钟的循环运转。
为了修正电子钟在运行进程中产生的一些误差或其他以为错误,另设置校准功能,能够对电子钟的计时进行调整。
其中,此模块的逻辑部份需Verilog语言实现并进行封装。
此模块用到3个十进制计数器、2个六进制计数器和1个三进制计数器。
3.数码管译码显示模块本电子钟采纳数码管来显示,能够简单、直观地表现出确切的时刻,实现其他配套功能。
且数码管易于操作。
此模块中有四个数码管,每两个数码管别离显示小时与分钟。
由上一模块,即时刻计数及校准模块中的时刻计数器产生的数值,将其对应的七段码直接传送至相应的数码管译码显示。
4.裁决模块该电路裁决信号连接至开关,当开关选中数码管某位后,通过裁决器令改成停止计数,并开始1秒闪烁,按动按键可实现手动调整。
5.消抖模块通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时可不能马上稳固地接通,在断开时也可不能一下子断开。
eda数字钟实验报告

eda数字钟实验报告一、实验目的与背景数字钟是一种在现代社会中广泛应用的时间显示器,其具有精度高、易于观察、维修方便等特点。
本次实验旨在通过使用EDA 软件,实现数字钟的制作,以便更好地了解数字时钟的原理及其设计过程。
二、实验器材与软件器材:电脑、EDA软件、闹钟模块、LCD液晶显示器、电源线、按键开关、电阻等。
软件:Protues、Keil、Proteus VSM等。
三、设计过程1. 硬件设计(1)指示器:使用了LCD液晶显示屏来显示时间。
其可显示当前的小时、分钟、秒等信息。
(2)核心控制器:使用了AT89S52单片机作为核心,用来控制整个数字时钟的运行。
(3)时钟电路:使用DS1302时钟芯片来实现时钟计时功能。
该芯片具有高精准度、低功耗等特点,能够提供准确的时间信号。
(4)外设控制:使用了按键开关、蜂鸣器等外设来实现数字时钟的启停、闹钟设置等功能。
2. 软件设计(1)包含了时间可视化方案的设计。
(2)编写了大量的实时驱动程序,使计时、位置更新、操作循环等功能得到实现。
(3)事件触发机制设计,使得按键响应、报时提示等功能得到实现。
(4)根据时钟电路信号进行时钟校准等相关处理。
四、实验结果通过实验,我们成功地制作出了一个高精度、功能齐全、操作简便的数字时钟。
该时钟可以准确地显示当前时间,同时根据设置还可以产生报时提示,启动或关闭闹钟等功能。
五、实验总结通过本次实验,我们对数字时钟的原理和设计过程有了更加深入的理解,增加了对数字电路的整体认识。
同时,我们还掌握了EDA软件的使用方法和调试技术。
希望今后能够在数字电路设计和嵌入式系统开发中能够有更好的发挥。
EDA数字时钟设计报告

EDA实验设计报告——数字时钟设计目录一、实验名称 (3)二、实验目的 (3)三、实验内容 (3)1.扩展内容: (3)2.选做内容: (3)四、实验仪器 (4)五、实验原理 (4)1. 硬件部分 (4)2. 软件部分 (8)六、心得体会 (9)一、实验名称数字时钟设计二、实验目的通过设计一个数字时钟,逐步了解FPGA的编程原理,初步入门FPGA,了解FPGA工作原理及开发流程,为后续的深入学习打好坚实基础。
通过扩展功能提高FPGA系统综合应用能力,熟练掌握QuartusII开发环境及编程应用。
三、实验内容用同步时序电路设计实现时、分、秒计数,并在数码管上正确显示。
1.扩展内容:1、可以按键清零;2、支持年月日显示功能,用按键进行年月日和时分秒间显示切换;3、可对显示内容进行修改,时分秒均可修改。
2.选做内容:(1)利用5个数码管完成秒表显示功能。
要求:1、精度达100ms;2、可以清零;3、可暂停;4、最大计时为999.9s;(2)跑马灯设计实现8个发光二极管以不同频率(2Hz,1Hz,0.5Hz)循环进行左滚动、右滚动、向中间滚动、向两边滚动、闪动等效果,不同频率显示用按键进行切换。
四、实验仪器计算机;QuartusII软件;下载线;电子技术综合实验箱五、实验原理1. 硬件部分框图:Power Manage5V/3.3V/2.5VVGA Port FPGA模块MCU模块AD/DA模块Audio Port LED_KEY模块SRAM/ROM模块RS232 Port(1)处理器Cyclone ⅡEP2C20Q240,该处理器是Altera 公司研发的一款FPGA 芯片。
(2)显示 LED 数码管LED 数码管是有多个发光二极管封装一起组成“8”字形的器件,引线在内部链接完成只引出公共电极。
实验中采取动态显示驱动方法。
每位数码管点亮时间约为2ms 。
这样做能够节省大量的I\O 埠,而且功耗较静态显示驱动更低。
EDA电子钟实验报告

华北水利水电学院EDA课程设计(电子钟)报告名称:EDA综合实验设计题目:电子钟院系:信息工程班级:2009122学号:200912214学生姓名:宋月指导教师:段美霞袁胜2013年1月7日-----18日一、课程设计(综合实验)任务设计一个综合性的计时系统,要求能实现时、分、秒计数等综合计时功能,同时将计时结果通过6个七段数码管显示。
能够对时和分进行设置,并能一键复位,重新计数。
1.计秒电路:以直接输入或由分频器产生的秒脉冲作为计秒电路的计数时钟信号,待计数至60瞬间,进位,计分电路加1,而计秒电路则清零并重新计秒。
注:本组实验所用的计秒时钟是用实验箱上1KHZ信号经分频器产生的。
2.计分电路、计时电路:其设计思想与计秒电路类似。
计时电路是24进制的,计满24产生进位。
3.时间设置电路:负责对时分秒进行调整,并能够产生进位。
4.显示控制电路的设计,本设计显示需要使用的是6个七段显示数码管。
注:本组实验在EDA6000上运行时,所用的是内部含有4-16译码器的八段数码管。
二、试验目的1.掌握时十进制、六十进制和二十四进制计数器的设计方法。
2.掌握多位计数器相连的设计方法。
3.掌握多位共阴极扫描显示数码管的驱动及编码。
三、总体设计方案1.问题分析:1.1计时及显示功能:计时模块实际为对一个标准1Hz时钟脉冲进行计数。
秒计数器满60后向分计数器进位,分计数器满60向时计数器进位,时计数器为24进制。
6个七段显示数码管分别显示时、分、秒的十位和个位。
1.2时间设置电路:对于系统中的时间调整电路,可以通过三个外部按键“set”,“chang”,“rst”来完成。
“rst“为复位键,按下之后时钟清零,重新开始计数。
“set”为时间设置控制键,按第一下对分进行设置(用min发光二极管亮标示);按第二下对时进行设置,(用hour发光二极管亮标示);按第三下,重新开始计数。
“chang”键为在“set”键按下对时间进行设置时,对时或分进行加1操作,直至到达满意时间。
EDA实验多功能数字钟课程设计报告

. . -.课程设计报告设计题目: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的数字时钟课程设计报告

EDA课程设计报告目录一、设计内容简介 (2)二、设计要求 (2)基本要求 (2)提高部分要求 (3)三、方案论证(整体电路设计原理) (3)四、各个模块设计原理 (4)4.1 分频电路模块设计 (5)4.2 秒计时器模块设计 (7)4.3 分计时器模块设计 (9)4.4 小时计时器模块设计 (11)4.5 报时模块设计 (13)五、实验中遇到问题及解决方法 (20)六、结论 (20)七、实验心得 (21)八、参考文献 (22)一、设计内容简介设计一个数字钟,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
我设计的电路在具有基本功能的基础上,增加了下列功能:改变分频比、不同整点不同报时等;二、设计要求基本要求1、能进行正常的时、分、秒计时功能;2、分别由六个数码管显示时分秒的计时;3、K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);4、K2是系统的校分开关;5、K3是系统的校时开关;提高部分要求1、使时钟具有整点报时功能(当时钟计到59’50”时开始报时,四个不同整点发出不同声音);2、分频比可变;三、方案论证(整体电路设计原理)本实验在实现实验基本功能的基础上,加入了整点报时等功能;图1为实验功能方框图:图1 实验方框图数字计时器基本功能是计时,因此首先需要获得具有精确振荡时间的脉振信号,以此作为计时电路的时序基础,实验中可以使用的振荡频率源为4KHZ,通过分频获得所需脉冲频率(1Hz,1KHz,500Hz)。
为产生秒位,设计一个模60计数器,对1HZ的脉冲进行秒计数,产生秒位;为产生分位,通过秒位的进位产生分计数脉冲,分位也由模60计数器构成;为产生时位,用一个模24计数器对分位的进位脉冲进行计数。
整个数字计时器的计数部分共包括六位:时十位、时个位、分十位、分个位、秒十位和秒个位。
显示功能是通过数选器、译码器、码转换器和7段显示管实现的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA数字钟设计报告指导教师:袁海林时间: 09年6月9号目录1.设计思路 (3)1.1总体结构 (3)2.单元模块设计部分 (3)6模块的设计 (3)2.2.SEL61模块的设计 (3)2.3.DISP模块的设计 (4)2.4.K4模块的设计 (4)T10模块的设计 (4)T6模块的设计 (5)T101模块的设计 (6)T61模块的设计 (6)2.4.5 CNT23模块的设计 (7)3.系统仿真 (7)3.1.数字钟仿真图 (7)3.2.数字钟编译报告 (8)3.3.数字钟原理图 (8)EDA数字钟设计1.设计思路基于VHDL语言,用Top_Down的思想进行设计。
1.1 确定总体结构,如图1-1所示。
图1-12. 单元模块设计部分单元模块设计部分分四个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。
2.1 CN6模块的设计即无进位的六进制计数器,由此提供选择信号,可提供选择信号,选择显示的数码管及对应的数,循环扫描显示。
如图1-2图1-2library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cn6 isport(res,clk : in std_logic;cout : out std_logic_vector(2 downto 0));end cn6;architecture rtl of cn6 issignal q : std_logic_vector(2 downto 0); beginprocess(res,clk)beginif res='0' thenq<="000";elsif(clk'event and clk='1') thenif(q=5) thenq<="000";elseq<=q+1;end if;end if;end process;cout<=q;end rtl;2.2 SEL61模块的设计即六选一选择器,如图1-3所示,对于给定的信号,输出对应的数,送到七段码译码器。
图1-3library ieee;use ieee.std_logic_1164.all;entity sel61 isport(sel : in std_logic_vector(2 downto 0);a,b,c,d,e,f : in std_logic_vector(3 downto 0);q : out std_logic_vector(3 downto 0));end;architecture rtl of sel61 isbeginprocess(a,b,c,d,e,f,sel)variable cout : std_logic_vector(3 downto 0);begincase sel iswhen "000"=>cout:=a;when "001"=>cout:=b;when "010"=>cout:=c;when "011"=>cout:=d;when "100"=>cout:=e;when others=>cout:=f;end case;q <=cout;end process;end rtl;2.3 DISP模块的设计即七段译码器,如图1-4所示,对于输入的4位BCD码进行译码,输出7位,Q0~Q6分别外接数码管a~g段显示。
图1-4library ieee;use ieee.std_logic_1164.all;entity disp isport(d : in std_logic_vector(3 downto 0);q : out std_logic_vector(6 downto 0)); end;architecture one of disp isbeginprocess(d)begincase d iswhen "0000"=>q<="0111111";when "0001"=>q<="0000110";when "0010"=>q<="1011011";when "0011"=>q<="1001111";when "0100"=>q<="1100110";when "0101"=>q<="1101101";when"0110"=>q<="1111101";when "0111"=>q<="0100111";when"1000"=>q<="1111111";when"1001"=>q<="1101111";when others=>q<="0000000";end case;end process;end one;2.4 K4模块的设计图1-5如图1-5,RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI 可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环;RING是整点报时;SEC,SEC10,MIN,MIN10,HR,HR10都输出四位BCD码,用于计数。
2.4.1 CNT10模块设计10进制计数器。
CLK为秒信号;RES是复位信号,与CLK同步;EN为选通信号;COUT3..0]输出秒个位;CA是进位信号。
如图1-6所示。
图1-6library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(en,res,clk: in std_logic;ca : out std_logic;cout : out std_logic_vector(3 downto 0));end;architecture rtl of cnt10 issignal q : std_logic_vector(3 downto 0); beginp1 : process(en,clk,res)beginif(clk'event and clk='1') thenif(res='0') thenq<="0000";elsif(en='1') thenif(q=9) thenq<="0000";elseq<=q+1;end if;end if;end if;end process p1;p2 : process(q)beginif(q=9) thenca<=en;elseca<='0';end if;end process p2;cout<=q;end rtl;2.4.2 CNT6模块设计即进制计数器,CLK为秒信号;RES为复位信号,与CLK同步;EN为选通信号;COUT[3..0]输出秒的十位;CA是进位信号。
如图1-7所示。
图1-7library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt6 isport(en,res,clk: in std_logic;ca : out std_logic;cout : out std_logic_vector(3 downto 0));end;architecture rtl of cnt6 issignal q : std_logic_vector(3 downto 0); beginp1 : process(en,clk,res)beginif(clk'event and clk='1') thenif(res='0') thenq<="0000";elsif(en='1') thenif(q=5) thenq<="0000";elseq<=q+1;end if;end if;end if;end process p1;p2 : process(q)beginif(q=5) thenca<=en;elseca<='0';end if;end process p2;cout<=q;end rtl;2.4.3 CNT101模块设计即十进制计数器,输出分的个位。
EN接CNT6的进位CA,产生正常的时钟;EN2由外部断口控制,可用来调节时间,高电平有效,输出将以秒的速度递增循环。
如图1-8 所示。
图1-8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt101 is --output minitute's geweiport(en2,en,res,clk : in std_logic;ca : out std_logic; --jingweicout : out std_logic_vector(3 downto 0));end;architecture rtl of cnt101 issignal q : std_logic_vector(3 downto 0); beginp1 : process(en,en2,clk,res)beginif(clk'event and clk='1') thenif(res='0') thenq<="0000";elsif(en='1'or en2='1') thenif(q=9) thenq<="0000";elseq<=q+1;end if;end if;end if;end process p1;p2 : process(q)beginif(q=9) thenca<=en;elseca<='0';end if;end process p2;cout<=q;end rtl;2.4.4 CNT61模块的设计六进制计数器,输出分的各位。