EDA数字钟报告

合集下载

EDA设计报告数字钟

EDA设计报告数字钟

设计报告课程名称在系统编程技术任课教师设计题目数字钟班级08通信工程(2)班姓名学号日期2011-6-6目录一、题目分析 (3)数字钟的工作原理 (3)二、选择方案 (4)1.数字钟方案论证与选择 (4)2.自顶向下设计框图 (4)三.、单元模块设计 (4)1.控制模块模块的设计 (5)2. mux19s4模块的设计 (5)四、调试及系统仿真 (5)五、硬件测试及说明 (6)六、结论 (6)七、课程总结 (6)八、参考文献目录 (7)九、附录(源程序) (7)EDA 数字钟设计设计并实现具有计时功能、整点报时功能和重置时间功能的数字小系统(数字 钟),要求:1、对所有设计的小系统能够正确分析;2、基于VHDL 语言描述系统的功能;3、在quartus 2环境中编译通过;4、仿真通过并得到正确的波形;5、给出相应的设计报告。

一、题目分析数字钟的工作原理数字钟以其显示时间的直观性、走时准确性作为一种即时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。

数字钟的基本原理方框图如下:图 1.1时基T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz 的、非常稳定的计数时钟脉冲。

控制逻辑电路:产生调时、调分信号及位选信号。

调时、调分信号的产生:有计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。

为了可以手调分钟的数值,把秒计数器的进位脉冲和一个频率为2Hz 的脉冲信号接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去的时候(即为0),则数据选择器将秒计数器的的进为脉冲送到分计数器。

此时,晶振 分频整形 门控双稳 脉冲计数 译码 显示时基T 产生电路计数器 电路 调时、调分控制电路位选信号发生器控制逻辑电路。

EDA实验报告(时钟)

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)。

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

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

(2023)EDA课程数字钟设计报告(一)EDA课程数字钟设计报告设计目的本次设计的目的是通过使用EDA software,设计一个能够正常运行的数字钟,使其能够满足一定的时间显示功能。

设计思路本设计主要使用Verilog HDL编程语言,利用EDA software提供的仿真功能,模拟数字钟的运行过程。

具体实现过程如下:1.首先,设置时钟频率,并利用counter计数器进行计数,产生时间基准信号。

2.利用BCD编码对时间进行编码,分别将时、分、秒的数据传至显示器。

3.设计逻辑电路计算秒钟、分针、时钟转动角度。

4.在EDA software上进行仿真,观察数字钟是否正常工作。

设计图样以下为数字钟方案的部分设计图样。

image textimage text实现结果通过复杂的编程训练和模拟,数字钟设计的功能已经被确认。

数字钟电路能够准确地显示当前时间。

同时,数字钟的设计也具有较高的可靠性、稳定性和精度。

并且,数字钟的主板设计紧凑、易于集成。

这些优点使得本次设计非常适合应用于智能仪器、家庭用品和其他数字显示电子设备中。

总结数字钟设计是一项有挑战性的工程,需要设计人员具有充分的编程功底和深入的EDA工具熟练度。

本设计的成功,体现了设计团队的技术实力和团队协作能力,为未来的科技产品发展提供了有力的技术支撑。

改进方案虽然本设计实现了数字钟正常工作的功能,但是我们仍然可以从以下几个方面进行改进:1.在原有电路基础上增加闹钟功能,方便用户定时提醒。

2.增加显示背光,使数字钟更方便在夜间环境下使用。

3.将数字钟设计进行微小的改动使其更小巧便携,方便携带和使用。

参考文献1.微机原理与接口技术(第四版) 教材2.EDA Software (Xilinx ISE) 许可证书致谢在本次数字钟的设计过程中,我们向来自各地的优秀工程师团队表示感谢,感谢他们在繁忙的工作中,准确地指导我们的设计工作。

同时也感谢电子设计自动化(EDA) company提供的软件支持,使得我们能够顺利完成该设计。

eda多功能数字钟实验报告

eda多功能数字钟实验报告

eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。

实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。

引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。


次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。

实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。

2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。

3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。

实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。

2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。

3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。

讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。

同时,数字钟的组装和操作也相对简单,适合家庭使用。

结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。

在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。

致谢:
感谢实验中提供支持和帮助的老师和同学们。

EDA课程数字钟设计报告-V1

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数码管显示)_实验报告

电子设计自动化(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数字钟实验报告
4.输入完成后检查并保存,编译。
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实验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软件,做到在以后的学习及工作中能利用这个软件快速的正确的完成任务。

在实验中我还经常出现掉步骤的现象,比如经常忘记“指向当前文件”,从而导致得到的结果是错误的甚至根本就得不到结果,这全都是因为粗心大意造成的。

在今后的日子里我会努力的去改掉这个毛病,从而高质量的完成老师交给我的各项任务!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA应用技术
数字钟




系别:电气工程系
班级:电子与电气081
姓名:陈海峰
学号:830702004
指导老师:张江伟老师
地点:B07-306
时间:
目录
内容摘要:
关键词:
一、实验目的
二、实验要求
三、实验内容
数字钟电路设计方案
1.相关理论知识
2.计数电路设计
(1)74LS161集成芯片的介绍
(2) 用74LS161集成芯片实现六十进制电路
(3)用74LS161集成芯片实现二十四进制电路
3.动态扫描显示电路
(1)四进制电路及电路模块和其波形
(2)2线-4线译码器
(3)用三态门构成四选一的数据选择器
(4) 用七段译码器74LS48数据输出显示
4.数字钟的总电路图及波形
四、实验总结
五、参考资料
内容摘要:
数字钟由振荡器、分频器、计数器、译码器、显示器等几部分构成,数字钟的时、分、秒实际上就是由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。

以10进制计数器74LS161来实现时间计数单元的计数功能。

采用74LS48作为显示译码电路。

选择LED数码管作为显示单元电路。

关键词:
数字钟计数器动态扫描数据选择器译码器
一、实验目的
1.熟练掌握原理图输入的EDA软件设计流程
2.进一步掌握常用数字集成电路的应用。

3.初步掌握数字系统的分析设计方法。

二、实验要求
1.正常模式时,采用24小时制,设计时有时、分、
秒。

但只显示时、分(四个数码管)。

2.设计时要有计数、数据选择、译码、显示等。

设计提示:
数字钟的功能实际上是对秒信号计数。

EDA-V硬件开发系统可提供不同的时钟信号,分频后可产生秒时钟。

数字钟在结构上
可分为两个部分:计数器和显示器。

计数器又可分为秒计数器、
分计数器和小时计数器;秒计数器和分计数器由两个六十进制构成,小时计数器由二十四进制计数器实现。

动态显示电路可用三态门构成的四选一数据选择器,和一个四进制加一个二四译码器,还有一个七段译码器7448组成。

三态门在选择了一个数码管的同时,打开一个三态门,其他的关闭。

进而实现数据选择。

如图1所示的用三态门实现动态显示的框图。

在QuartusII软件中实现四个数码管的动态显示原理
指定按实验箱上的连接关系,指定引脚,下载到实验箱中,进行测试。

位选
时钟—78
动态数码管的引脚关系如下:
SEG3—SEG6的共阴公共端G经反相器分别与CPLD的对应管脚P170,P172.P173.P174相连,由其控制器实现各位分
时选通,动态扫描。

SEG3—SEG6(a,b,c,d,e,f,g)的各段与CPLD
引脚的对应关系为:P175,P176,P177,P179,P180,P186,P187。

SEG7—SEG10的共阴公共端G经反相器分别与CPLD 的对应管脚P190,P191,P192,P193相连,由其控制实现各位分
时选通,动态扫描。

SEG7—SEG10(a,b,c,d,e,f,g)的各段与CPLD
引脚的对应关系为:
P195,P196,P197,P198,P199,P200,P202,P203。

三、实验内容
1.相关理论知识
数码管要正常显示,就要驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

本报告选的是动态式。

①静态显示驱动:静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机或其它器件的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用I/O端口才32个。

实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示比划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都要接收到相同的自形码,但究竟是哪个数码管会显示出字形,取决于单片机对为选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮轮流控制各个数码管的COM端,这使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示一样的,能够节省大量的I/0端口,而且功耗更低。

2.计数电路设计
(1)74LS161集成芯片的介绍
74LS161是一种同步4进制加法集成计数器。

其引脚排列如图1所示。

引脚图
图1
当复位端CR=1时,输出Q3Q2Q1Q0 全为零,实现异步清零的功能。

当CR=0时,预置控制端LD=1,且为上升沿时,Q3Q2Q1Q0 =D3D2D1D0
实现同步预置数功能。

当CR=LD=0且使能端相与为零时,输出保持不变。

当CR=LD=0且使能端全为1,上升沿有效时,计数器才开始加法计数,实现计数功能。

用74LS161实现(N)进制计数器的方法。

1.直接清零法
2.置位法
3.级联法
(2)用74LS161集成芯片实现六十进制电路
因为74LS161是十六进制计数,所以60(图2)、24(图3)进制要采用级联法。

方法:将低位芯片的进位输出端CO端和高位芯片的计数控制端CTT或CTP直接连接,外部计数脉冲同时从每片芯片的CP端输入。

电路图

2
转换为模块波形图
(3)用74LS161集成芯片实现二十四进制电路电路图

3
转换为模块
波形图
3.动态扫描显示电路
(1)四进制电路及电路模块和其波形电路图四进制模块
波形图
(2)2线-4线译码器
逻辑电路图译码器模块
2线—4线译码器功能表
(3)用三态门构成四选一的数据选择器 电路图(四个三态门级联)三态门模块
波形图
(4) 用七段译码器74LS48数据输出显示
七段显示译码器74LS48
是一种与共阴极数码管显示器配合使用的集成译码器,它的功能是将输入的4位二进制代码转化成显示器所需要的七个字段信号a~g.
4.数字钟的总电路图
按实验要求所作的电路图
四、实验总结
通过这段时间的实验,能够用以前学的《数字电子技术》的知识和现在学的EDA技术知识在QuartusII软件上实现电路设计和验证。

要在QuartusII软件上实现数字钟的电路,需要各种芯片(74LS160、74LS161等)构成各个进制的计数器,运用级联法应用两个芯片的级联构成10进制,60进制,24进制计数器,并能够
仿真出各个电路的波形,且制成相应模块。

用三态门构成四选一的数据选择器(首先将四个三态门级联,将其设成模块,最后用四个三态门构成一个四选一的数据选择器,三态门的使能端作为输入端),构成数据输出电路。

用74LS161芯片构成4进制计数器和2线-4线译码器构成数码管动态扫描选位模块,设置成模块形式。

加一个共阴极的译码器74LS48连接数码管显示。

五、参考资料
1.张明金.《数字电子技术》.北京:北京师范大学出版社,2009.3 。

2.黄仁欣.《EDA技术实用教程》.北京:清华大学出版社,2006.3。

3.张江伟.《数字钟指导PDF文件》.2010.4。

相关文档
最新文档