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实验箱,完成一个可以计时的数字时钟,其显示时间范围是00:00 :00〜23:59:59,且该时钟具有暂停计时和清零功能。
要求设计报告中有原理分析,实验步骤,程序代码,遇到的问题及解决方法,课程总结。
多功能数字钟一.实验目的:1.回顾Quartus II的使用步骤,强化对软件的熟练使用度。
2.学习综合实验的设计思路及步骤。
3.学习顶层模块的设计以及底层模块调用原理(即编程例化语句的使用)。
4.进一步学习Verilog HDL语言的基本语法。
5.熟练掌握时钟显示的原理及对应代码的编写。
6.设计有特色的多功能可调的数字时钟。
7.学会查阅相关资料,解决实验调试过程中遇到的问题。
二 .实验环境:硬件环境:ALTERA 公司开发板 Cyclone EP1C12Q240C8 软件环境:Quartus II 开发软件三 .实验原理:该时钟项目共分为六大模块,大顶层模块(LAB_TOP)、分频模块 (ClkDivider)、分秒计数模块(Cnt_74161_fm)、时位计数模块(Cnt_74161_ss)、 显示模块(scan_led)、消抖模块(debounce)。
其中,分秒计数模块通过调整 74161计数模块实现,从而达到分秒的六十进制;分频模块由系统时钟clock 调整得到多种频率的信号输入;时位计数模块也通过调整74161计数模块实 现;显示模块与动态显示数码管实验类似,段选和片选以及时钟的输入由顶层 模块调用和产生以实现每位时钟数字的显示;消抖模块与按键实验类似,通过 对信号的三次取或运算判断按键是否是正常输入信号以实现外加按键的正常 控制,从而防止抖动产生的非正常信号输入;大顶层模块用来调用和整合各个 模块以实现对每个模块的复用、调整和连接从而完成时钟的所有功能。
eda多功能数字钟实验报告

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

eda课程设计数字钟实验一、课程目标知识目标:1. 学生能够理解数字时钟的基本原理,掌握EDA工具的使用方法,并能够运用Verilog HDL语言描述数字时钟的基本功能。
2. 学生能够掌握数字时钟设计中涉及的计数器、分频器等基本模块的工作原理和设计方法。
3. 学生了解数字时钟系统的层次化设计方法,并能够根据设计需求进行模块划分。
技能目标:1. 学生能够运用所学知识,使用EDA工具设计并实现一个简单的数字时钟,培养动手实践能力。
2. 学生能够通过分析问题、解决问题,培养逻辑思维能力和团队协作能力。
情感态度价值观目标:1. 学生通过实际操作,体验数字电路设计的乐趣,激发对电子信息技术学习的兴趣。
2. 学生在课程学习过程中,培养严谨的科学态度和良好的工程意识,提高对电子产品质量的追求。
3. 学生通过团队合作,培养沟通协作能力,增强团队意识和集体荣誉感。
课程性质:本课程为电子设计自动化(EDA)的实践课程,结合数字电路设计原理,让学生通过实际操作,掌握数字时钟的设计与实现。
学生特点:学生已经具备一定的电子信息技术基础,对数字电路有一定的了解,具备基本的编程能力。
教学要求:注重理论与实践相结合,强调学生的动手实践能力,鼓励学生独立思考和团队协作,培养解决实际问题的能力。
通过本课程的学习,使学生能够将所学知识应用于实际工程项目中,提高学生的综合素质。
二、教学内容本课程教学内容主要包括以下三个方面:1. 数字时钟原理及设计方法- 理解数字时钟的基本原理,包括计时原理、分频原理等。
- 学习数字时钟的模块化设计方法,掌握计数器、分频器等基本模块的设计与实现。
关联教材章节:第五章《数字时钟的设计与应用》2. EDA工具及Verilog HDL语言- 学习EDA工具的使用方法,如Quartus II等。
- 掌握Verilog HDL语言的基本语法和编程技巧,能够使用Verilog描述数字电路。
关联教材章节:第四章《EDA工具与Verilog HDL编程》3. 数字时钟设计与实现- 学习数字时钟的整体设计流程,包括模块划分、代码编写、仿真验证等。
电子设计自动化(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数字钟实验报告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设计数字钟实验报告

南京理工大学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 收获与感悟参考文献第一章数字钟设计要求说明(一)数字钟可以正常进行基本的时,分,秒计时功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end process;
process(div_cnt(26),rst,last_over)
begin
if(s='1')then
if(rst='0')then
cntfirst<="0000";
first_over<='0';
elsif(div_cnt(26)'event and div_cnt(26)='1')then
if( cntfour="0101")then
cntfour<="0000";
four_over<='1';
else
four_over<='0';
cntfour<= cntfour+1;
end if;
end if;
end process;
process(four_over,rst)--four 10 counter
WHEN "0010" =>dataout_xhdl1 <= "10100100";
WHEN "0011" =>dataout_xhdl1 <= "10110000";
WHEN "0100" =>dataout_xhdl1 <= "10011001";
WHEN "0101" =>dataout_xhdl1 <= "10010010";
end if;
end if;
end process;
process(third_over,rst)--third 10 counter
begin
if(rst='0')then
cntfour<="0000";
four_over<='0';
elsif(third_over'event and third_over='1')then
third_over<='0';
elsif(second_over'event and second_over='1')then
if( cntthird="1001")then
cntthird<="0000";
third_over<='1';
else
third_over<='0';
cntthird<= cntthird+1;
WHEN "1010" =>dataout_xhdl1 <= "10000000"
WHEN "1011" =>dataout_xhdl1 <= "10010000";
WHEN "1100" =>dataout_xhdl1 <= "01100011
WHEN "1101" =>dataout_xhdl1 <= "10000101";
院(系):电子工程学院课程名称:EDA技术与VHDL日期:
班级
学号
实验室
专业
姓名
计算机号
实验名称
数字时钟
成绩评价
所用软件
QuartusⅡ7.0
教师签名
实
验
目
的或要求源自设计一个可以计时的数字时钟,其显示时间范
围是00:00:00~23:59:59,且该时钟具有暂停计时、
清零等功能。
实
验
步
骤
、
心
得
体
会
1、启动QuartusⅡ建立一个空白工程并命名。
led_out<=dataout_xhdl1;
led_bit<=en_xhdl;
process(clk,rst)
begin
if(rst='0')then
div_cnt<="001001100000000000000000000";
elsif(clk'event and clk='1')then
div_cnt<=div_cnt+1;--利用计数器分频
begin
if(rst='0')then
cntlast<="0000";
last_over<='0';
elsif(five_over'event and five_over='1')then
if( cntlast="0010")then
cntlast<="0000";
last_over<='1';
else
4、对该工程进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
5、设计下载
1)使用下载线,连接计算机USB口和实验箱JTAG下载口(注意插口方向),打开实验箱电源。
2)启动下载界面,确认已选中下载线。
3)完成下载界面的设置,启动下载。
4)按动按键开关KET1来输入脉冲信号,波动拨挡开关SW2、SW1来控制输入信号,观察数码管的变化规律并记录实验结果,看是否与预期设计一致。
last_over<='0';
cntlast<= cntlast+1;
end if;
end if;
if(cntlast="0010" and cntfive="0100")then cntlast<="0000" ;end if;
end process;
---****************显示部分***************--
begin
if(rst='0')then
cntsecond<="0000";
second_over<='0';
elsif(first_over'event and first_over='1')then
if(cntsecond="0101")then
cntsecond<="0000";
second_over<='1';
signal cntfour : std_logic_vector(3 downto 0);
signal cntfive : std_logic_vector(3 downto 0);
signal cntlast : std_logic_vector(3 downto 0);
signal first_over: std_logic;
WHEN "1110" =>dataout_xhdl1 <= "01100001";
WHEN "1111" =>dataout_xhdl1 <= "01110001";
five_over<='1';
else
five_over<='0';
cntfive<= cntfive+1;
end if;
end if;
if(cntlast="0010" and cntfive="0100")then cntfive<="0000" ;end if;
end process;
process(five_over,rst)--five 10 counter
if(cntfirst="1001" or last_over='1')then
cntfirst<="0000";
first_over<='1';
else
first_over<='0';
cntfirst<=cntfirst+1;
end if;
end if;
end if;
end process;
process(first_over,rst)--first 10 counter
signal en_xhdl : std_logic_vector(5 downto 0);
signal cntfirst :std_logic_vector(3 downto 0);
signal cntsecond : std_logic_vector(3 downto 0);
signal cntthird : std_logic_vector(3 downto 0);
END LED_0000_9999 ;
ARCHITECTURE arch OF LED_0000_9999 IS
signal div_cnt : std_logic_vector(26 downto 0 );
signal data4 : std_logic_vector(3 downto 0);
signal dataout_xhdl1 : std_logic_vector(7 downto 0);