数字钟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课程设计报告——数字钟设计班级:学号:姓名:一、设计任务设计一台能显示时、分、秒的数字钟。
具体要求如下:(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课程设计报告设计题目:数字时钟班级:姓名:学号:日期:一、系统设计要求设计一个具有整点报时功能的数字时钟,要求;1.具有时、分、秒的计数显示功能,24小时循环显示。
2.具有清零、预置初值功能,实现LED动态显示,整点报时采用声音报时。
3.采用元件例化方式实现各模块间的连接。
二、系统设计方案要设计的数字时钟具有基本的计时功能,采用二十四小时计时,显示时分秒,其中分钟和秒模块采用60进制计数器实现,小时模块则需要一24进制计数器实现。
要实现时钟预置初值功能分别设计一个分钟允许置数端和小时允许置数端。
要实现LED动态显示,单独设计一个显示模块。
整点报时采用隔秒响一声实六十进制计数器模块二十四进制计数器模块显示模块元器件例化模块三、主要VHDL源程序六十进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY liushijinzhi ISPORT(clk,clr,en,a: IN STD_LOGIC;load_1,load_10: IN STD_LOGIC_VECTOR(3 DOWNTO 0); co: OUT STD_LOGIC;q_10,q_1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END liushijinzhi;ARCHITECTURE behav OF liushijinzhi ISSIGNAL q1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q10:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL c:STD_LOGIC;BEGINPROCESS(clk,clr,a,en,load_1)BEGINIF(clr='1') THENq1<="0000";ELSIF(a='1') THENq1<=load_1;ELSIF(clk'event AND clk='1') THENIF(en='1')thenIF(q1="1001") THENq1<="0000";c<='0';ELSIF(q1="1000") THENq1<=q1+'1';c<='1';ELSEq1<=q1+'1';c<='0';END IF;END IF;END IF;END PROCESS;PROCESS(c,clk,clr,a,load_10)BEGINIF(clr='1') THENq10<="0000";ELSIF(a='1') THENq10<=load_10;ELSIF (clk'event AND clk='1') THENIF(c='1') THENIF(q10="0101") THENq10<="0000";co<='1';ELSEq10<=q10+'1';co<='0';END IF;END IF;END IF;END PROCESS;PROCESS(q1)BEGINCASE q1 ISWHEN"0000"=>q_1<="1111110";WHEN"0001"=>q_1<="0110000";WHEN"0010"=>q_1<="1101101";WHEN"0011"=>q_1<="1111001";WHEN"0100"=>q_1<="0110011";WHEN"0101"=>q_1<="1011011";WHEN"0110"=>q_1<="0011111";WHEN"0111"=>q_1<="1110000";WHEN"1000"=>q_1<="1111111";WHEN"1001"=>q_1<="1110011";WHEN OTHERS=>q_1<="ZZZZZZZ";END CASE;END PROCESS;PROCESS(q10)BEGINCASE q10 ISWHEN"0000"=>q_10<="1111110";WHEN"0001"=>q_10<="0110000";WHEN"0010"=>q_10<="1101101";WHEN"0011"=>q_10<="1111001";WHEN"0100"=>q_10<="0110011";WHEN"0101"=>q_10<="1011011";WHEN OTHERS=>q_10<="ZZZZZZZ";END CASE;END PROCESS;END behav;二十四进制计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ershisijinzhi ISPORT(clk,clr,en,a:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q_1,q_10:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END ershisijinzhi;ARCHITECTURE behav OF ershisijinzhi ISSIGNAL c:STD_LOGIC;SIGNAL q1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL q10:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,clr,en,a,load_1)BEGINIF(clr='1') THENq1<="0000";ELSIF (a='1') THENq1<=load_1;ELSIF(clk'event AND clk='1') THENIF(q1="0011" AND q10="0010") THENq1<="0000";ELSIF (en='1') THENIF(q1="1001") THENq1<="0000";c<='0';ELSIF(q1="1000") THENq1<=q1+'1';c<='1';ELSEq1<=q1+'1';c<='0';END IF;END IF;END IF;END PROCESS;PROCESS(clk,clr,c,a,q1,load_10)BEGINIF(clr='1') THENq10<="0000";ELSIF (a='1') THENq10<=load_10;ELSIF(clk'event AND clk='1') THENIF(q1="0011" AND q10="0010") THEN q10<="0000";ELSIF (c='1') THENIF(q10="0010") THENq10<="0000";ELSEq10<=q10+'1';END IF;END IF;END IF;END PROCESS;PROCESS(q1)BEGINCASE q1 ISWHEN"0000"=>q_1<="1111110"; WHEN"0001"=>q_1<="0110000"; WHEN"0010"=>q_1<="1101101"; WHEN"0011"=>q_1<="1111001";WHEN"0100"=>q_1<="0110011";WHEN"0101"=>q_1<="1011011";WHEN"0110"=>q_1<="0011111";WHEN"0111"=>q_1<="1110000";WHEN"1000"=>q_1<="1111111";WHEN"1001"=>q_1<="1110011";WHEN OTHERS=>q_1<="ZZZZZZZ";END CASE;END PROCESS;PROCESS(q10)BEGINCASE q10 ISWHEN"0000"=>q_10<="1111110";WHEN"0001"=>q_10<="0110000";WHEN"0010"=>q_10<="1101101";WHEN OTHERS=>q_10<="ZZZZZZZ";END CASE;END PROCESS;END behav;显示模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY qdmkz ISPORT(clk,clr:IN STD_LOGIC;din1,din2,din3,din4,din5,din6:IN STD_LOGIC_VECTOR(6 DOWNTO 0); sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END qdmkz;ARCHITECTURE behav OF qdmkz ISSIGNAL q :STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINsel<=q;PROCESS(clk,clr)BEGINIF(clr='1') THENq<="101";ELSIF(clk'event AND clk='1') THENIF(q="000") THENq<="101";ELSEq<=q-'1';END IF;END IF;END PROCESS;PROCESS(q,din1,din2,din3,din4,din5,din6)BEGINCASE q ISWHEN "101"=>num<=din1;WHEN "100"=>num<=din2;WHEN "011"=>num<=din3;WHEN "010"=>num<=din4;WHEN "001"=>num<=din5;WHEN "000"=>num<=din6;WHEN OTHERS=>num<="ZZZZZZZ";END CASE;END PROCESS;END behav;元器件例化模块含报时LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shuzishizhong ISPORT(clk1,clk2,clrh,clrm,clrs,clr,ah,am,as,en:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);alm:OUT STD_LOGIC);END shuzishizhong;ARCHITECTURE one OF shuzishizhong ISCOMPONENT liushijinzhi ISPORT(clk,clr,en,a: IN STD_LOGIC;load_1,load_10: IN STD_LOGIC_VECTOR(3 DOWNTO 0);co: OUT STD_LOGIC;q_10,q_1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT ershisijinzhi ISPORT(clk,clr,en,a:IN STD_LOGIC;load_1,load_10:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q_1,q_10:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;COMPONENT qdmkz ISPORT(clk,clr:IN STD_LOGIC;din1,din2,din3,din4,din5,din6:IN STD_LOGIC_VECTOR(6 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);num:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END COMPONENT;SIGNAL co1,co2:STD_LOGIC;SIGNAL sq_1,sq_10,mq_1,mq_10,hq_1,hq_10:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINu1:liushijinzhi PORT MAP (clk1,clrs,en,as,load_1,load_10,co1,sq_10,sq_1);u2:liushijinzhi PORT MAP (co1,clrm,en,am,load_1,load_10,co2,mq_10,mq_1);u3:ershisijinzhi PORT MAP (co2,clrh,en,ah,load_1,load_10,hq_1,hq_10);u4:qdmkz PORT MAP(clk2,clr,hq_10,hq_1,mq_10,mq_1,sq_10,sq_1,sel,num);PROCESS(sq_10,sq_1,mq_10,mq_1,hq_10,hq_1)BEGINIF(((hq_10="1111110" AND hq_1="1111110")OR(hq_10="0110000" AND hq_1="1101101")) AND mq_1="1111110"AND mq_10="1111110" AND ((sq_10="1111110"AND(sq_1="1111110"OR sq_1="1101101"OR sq_1="0110011"OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND(sq_1="1111110"OR sq_1="1101101"OR sq_1="0110011"OR sq_1="0011111"OR sq_1="1111111")) OR(sq_10="1101101"AND(sq_1="1111110"OR sq_1="1101101")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0110000") OR (hq_10="0110000" AND hq_1="1111001")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND sq_1="1111110") THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1101101") OR (hq_10="0110000" AND hq_1="0110011")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1111001") OR (hq_10="0110000" AND hq_1="1011011")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0110011") OR (hq_10="0110000" AND hq_1="0011111")) AND mq_1="1111110"ANDmq_10="1111110" AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1011011") OR (hq_10="0110000" AND hq_1="1110000")) AND mq_1="1111110"AND mq_10="1111110"AND sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111")) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="0011111") OR (hq_10="0110000" AND hq_1="1111111")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND sq_1="1111110"))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1110000") OR (hq_10="0110000" AND hq_1="1110011")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1111111") OR (hq_10="1101101" AND hq_1="1111110")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011")))) THENalm<='1';ELSIF(((hq_10="1111110" AND hq_1="1110011") OR (hq_10="1101101" AND hq_1="0110000")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111")))) THENalm<='1';ELSIF(((hq_10="0110000" AND hq_1="1111110") OR (hq_10="1101101" AND hq_1="1101101")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111" OR sq_1="1111111")))) THENalm<='1';ELSIF(((hq_10="0110000" AND hq_1="0110000") OR (hq_10="1101101" AND hq_1="1111001")) AND mq_1="1111110"AND mq_10="1111110"AND ((sq_10="1111110"AND (sq_1="1111110" OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111"OR sq_1="1111111"))OR(sq_10="0110000"AND (sq_1="1111110"OR sq_1="1101101" OR sq_1="0110011" OR sq_1="0011111" OR sq_1="1111111"))OR(sq_10="1101101"AND sq_1="1111110"))) THENalm<='1';ELSEalm<='0';END IF;END PROCESS;END;四、系统仿真/硬件验证五、设计中遇到的问题与体会在置数方面,第一次写时,在时钟沿内,同步置数,下载在试验箱上很难实现,于是把置数改成异步置数。
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数字时钟设计程序报告

EDA实验报告EDA多功能数字时钟设计摘要:本实验中我们运用EDA课程中所学的知识,设计了一个拥有时间校正和闹钟功能的24小时制多功能数字时钟。
通过本实验,我们初步了解EDA的设计过程;初步掌握用VHDL语言的设计方法和设计思想;初步熟悉Max+Plus II软件平台的编程和仿真,并通过AEDK-EDA实验板下载模拟实现初步了解了硬件实现的方法。
关键词:数字时钟、VHDL、FPGA、Max+Plus II一、设计方案1.功能描述本次设计的多功能数字钟具有基本的计时功能和时间校正功能,同时可以进行定时闹铃。
计时功能采用24小时计时,显示时、分、秒。
其中分钟和秒模块采用60进制实现;小时设计了24进制的计数器.时间校正部分,分为时校时和分校时,分别通过控制时校正按钮和分校正按钮来实现.闹铃部分,先通过模式切换按钮进入闹钟定时,然后通过与时间校正相同的方法来进行闹铃时间的预置,当预置到达时间时,时钟将通过蜂鸣器进行闹铃。
2.硬件使用模块:EPF10K20TC144-4,模块10(蜂鸣器),模块17(脉冲源),模块21(开关设置),模块22(设置跳接模块), 模块23(键盘显示模块)3.VHDL程序设计框图二、 VHDL 源程序library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity clock isport(clk:in std_logic;----------------------时钟脉冲clk1:in std_logic;---------------------数码管选通时钟脉冲md1:in std_logic;----------------------模式选择:0为计时,1为闹钟 md2:in std_logic_vector(1 downto 0);---10为时校正(定时),01为分校正(定时) speak:out std_logic;-------------------闹钟 0dout:out std_logic_vector(6 downto 0);--数码管七段码输出 selout:out std_logic_vector(2 downto 0));---数码管选通输出 end clock;architecture one of clock issignal sel:std_logic_vector(2 downto 0);--------模6计数信号(数码管选通输入) signal hou1:std_logic_vector(3 downto 0);-------小时十位 signal hou2:std_logic_vector(3 downto 0);-------小时个位 signal min1:std_logic_vector(3 downto 0);-------分钟十位 signal min2:std_logic_vector(3 downto 0);-------分钟个位 signal seth1:std_logic_vector(3 downto 0);------定时小时十位 signal seth2:std_logic_vector(3 downto 0);------定时小时个位 signal setm1:std_logic_vector(3 downto 0);------定时分钟十位 signal setm2:std_logic_vector(3 downto 0);------定时分钟个位 signal sec1:std_logic_vector(3 downto 0);-------秒十位 signal sec2:std_logic_vector(3 downto 0);-------秒个位 signal h1:std_logic_vector(3 downto 0); ------输出小时十位 signal h2:std_logic_vector(3 downto 0); ------输出小时个位 signal m1:std_logic_vector(3 downto 0); ------输出分钟十位 signal m2:std_logic_vector(3 downto 0); ------输出分钟个位signal s1:std_logic_vector(3 downto 0); ------输出秒十位signal s2:std_logic_vector(3 downto 0); ------输出秒个位-------------------------------------------------begin----------------------------------------------模6计数(数码管选通)choice:process(clk1)beginif clk1'event and clk1='1' thenif sel="101" thensel<="000";elsesel<=sel+1;end if;end if;end process choice;selout<=sel;-----------------------------------------------小时十位h110:process(clk,hou2,min1,min2,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif (hou1="0010" and hou2="0011")and(min1="0101" and min2="1001") and(sec1="0101" and sec2="1001") thenhou1<="0000";elsif hou1="0010"and hou2="0011"and md1='0' and md2="10" then hou1<="0000";elsif (hou2="1001"and(min1="0101" and min2="1001") and (sec1="0101" and sec2="1001"))or (hou2="1001"and md1='0' and md2="10") thenhou1<=hou1+1;end if;end if;end process h110;-----------------------------------------------小时个位h220:process(clk,min1,min2,sec1,sec2,md1,md2,hou1)beginif clk'event and clk='1' thenif (hou1="0010" and hou2="0011")and(min1="0101" and min2="1001") and(sec1="0101" and sec2="1001") thenhou2<="0000";elsif hou2="1001"and(min1="0101" and min2="1001") and (sec1="0101" andsec2="1001") thenhou2<="0000";elsif (hou2="1001"and md1='0' and md2="10")or (hou1="0010"andhou2="0011"and md1='0' and md2="10") thenhou2<="0000";elsif ((min1="0101" and min2="1001") and (sec1="0101" and sec2="1001"))or (md1='0' and md2="10") thenhou2<=hou2+1;end if;end if;end process h220;-----------------------------------------------分钟十位m110:process(clk,min2,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif (min1="0101" and min2="1001") and (sec1="0101" and sec2="1001") then min1<="0000";elsif min1="0101"and min2="1001"and (md1='0' and md2="01")thenmin1<="0000";elsif (min2="1001"and (sec1="0101" and sec2="1001")) or (min2="1001"and md1='0' and md2="01")thenmin1<=min1+1;end if;end if;end process m110;----------------------------------------------分钟个位m220:process(clk,sec1,sec2,md1,md2)beginif clk'event and clk='1' thenif min2="1001"and (sec1="0101" and sec2="1001")thenmin2<="0000";elsif min2="1001"and (md1='0' and md2="01")thenmin2<="0000";elsif (sec1="0101" and sec2="1001") or(md1='0' and md2="01")thenmin2<=min2+1;end if;end if;end process m220;---------------------------------------------秒十位s110:process(clk,sec1,sec2)beginif clk'event and clk='1' thenif (sec1="0101" and sec2="1001")thensec1<="0000";elsif sec2="1001"thensec1<=sec1+1;end if;end if;end process s110;--------------------------------------------秒个位s220:process(clk,sec2)beginif clk'event and clk='1' thenif sec2="1001" thensec2<="0000";else sec2<=sec2+1;end if;end if;end process s220;-------------------------------------------时间设置小时部分sethour1:process(clk,seth2)beginif clk'event and clk='1' thenif seth1="0010"and seth2="0011" thenseth1<="0000";elsif seth2="1001" thenseth1<=seth1+1;end if;end if;end process sethour1;-------------------------------------------sethour2:process(clk,md1,md2,seth1)beginif clk'event and clk='1' thenif (seth1="0010"and seth2="0011")or seth2="1001"then seth2<="0000";elsif md1='1' and md2="10" theneth2<=seth2+1;end if;end if;end process sethour2;-------------------------------------------时间设置分钟部分setmin1:process(clk,setm1,setm2)beginif clk'event and clk='1' thenif setm1="0101"and setm2="1001"thensetm1<="0000";elsif setm2="1001"thensetm1<=setm1+1;end if;end if;end process setmin1;----------------------------------------------setmin2:process(clk,md1,md2,setm2)beginif clk'event and clk='1'thenif setm2="1001"thensetm2<="0000";elsif md1='1' and md2="01"thensetm2<=setm2+1;end if;end if;end process setmin2;--------------------------------------------闹铃speaker:process(clk1,hou1,hou2,min1,min2)beginif clk1'event and clk1='1'thenif seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 thenif(sec2="0000"or sec2="0010" or sec2="0100" or sec2="0110" or sec2="1000" )thenspeak<='1';else speak<='0';end if;end if;end if;end process speaker;-------------------------------------------数码管显示disp:process(sel,md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2) beginif sel="101" thencase h1 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when others =>dout<="1000000";end case;elsif sel="100" thencase h2 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when "0011"=>dout<="1001111";when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when "0110"=>dout<="1111101";when "0111"=>dout<="0000111";when "1000"=>dout<="1111111";when "1001"=>dout<="1101111";when others=>dout<="1000000";end case;elsif sel="011" thencase m1 iswhen "0000"=>dout<="0111111";when "0001"=>dout<="0000110";when "0010"=>dout<="1011011";when "0011"=>dout<="1001111";when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when others=>dout<="1000000";end case;elsif sel="010" thencase m2 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110"; when "0101"=>dout<="1101101"; when "0110"=>dout<="1111101"; when "0111"=>dout<="0000111"; when "1000"=>dout<="1111111"; when "1001"=>dout<="1101111"; when others=>dout<="1000000"; end case;elsif sel="001" thencase s1 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110"; when "0101"=>dout<="1101101"; when others=>dout<="1000000"; end case;elsif sel="000" thencase s2 iswhen "0000"=>dout<="0111111"; when "0001"=>dout<="0000110"; when "0010"=>dout<="1011011"; when "0011"=>dout<="1001111"; when "0100"=>dout<="1100110";when "0101"=>dout<="1101101";when "0110"=>dout<="1111101";when "0111"=>dout<="0000111";when "1000"=>dout<="1111111";when "1001"=>dout<="1101111";when others=>dout<="1000000";end case;end if;if md1='0' then---------------计时时间显示和设置模式h1<=hou1;h2<=hou2;m1<=min1;m2<=min2;s1<=sec1;s2<=sec2;else -------------闹铃时间显示和设置模式h1<=seth1;h2<=seth2;m1<=setm1;m2<=setm2;s1<="1111";s2<="1111";end if;end process disp;------------------------------------------end;三、仿真结果我们将上述VHDL程序通过Max+Plus II进行编译仿真,仿真结果符合我们设计所预想的功能。
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 收获与感悟参考文献第一章数字钟设计要求说明(一)数字钟可以正常进行基本的时,分,秒计时功能。
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设计报告-数字时钟
设计报告课程名称在系统编程技术任课教师设计题目数字时钟班级09级通信工程(2)班姓名学号日期2012年05月29日目录前言 (1)摘要 (2)关键词 (2)正文 (2)一、题目分析 (2)1、实验目的 (2)2、根据目的及要求确定总体方框图 (2)3、须完成的技术指标或功能要求 (3)二、设计方案和设计内容 (3)1、设计方案 (3)2、设计内容 (3)三、设计原理及框图细化 (4)1、数字钟的工作原理 (4)2、数字钟设计的电路原理图 (5)3、数字钟模块功能说明 (5)四、编写应用程序并仿真 (7)1、相关程序代码见附件。
(7)2、相关仿真图如下: (7)五、全系统联调,画出整机电路图和波形图 (9)1、整机电路原理图画出后如图3.2。
(9)2、全系统联调后的波形图和仿真图 (9)六、硬件测试及说明 (10)1、编程下载 (10)2、硬件调试 (10)七、结论 (11)八、课程总结 (12)九、参考文献 (12)十、附录(课题背景介绍和源程序) (12)1、EDA技术 (12)2、VHDL的简介 (13)3、VHDL语言的特点 (13)4、VHDL的设计流程 (13)5、源程序代码 (14)前言近年来,集成电路和计算机应用得到了高速发展,现代电子设计技术已迈入一个崭新的阶段,具体表现在:(1)电子器件及其技术的发展将更多地趋向于为EDA服务;(2)硬件电路与软件设计过程已高度渗透;(3)电子设计技术将归结为更加标准、规范的EDA工具和硬件描述语言VHDL的运用;(4)数字系统的芯片化实现手段已成主流。
因此利用计算机和大规模复杂可编程逻辑器件进行现代电子系统设计已成为电子工程类技术人员必不可少的基本技能之一。
随着社会的发展,科学技术也在不断的进步。
特别是计算机产业,可以说是日新月异,数字钟作为计算机的一个组成也随之逐渐进入人们的生活,从先前的采用半导体技术实现的数字钟到现在广泛应用的采用高集成度芯片实现的数字钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多功能数字钟EDA设计报告中文摘要本实验利用QuartusII软件,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常分、秒计时,动态显示,保持、清零、快速校分、整点报时功能。
文章分析了整个电路以及各子模块的设计原理,并给出调试、仿真、编程下载到CPLD实验系统等结果,最后提到实验过程中出现的问题及解决方案关键词计数器动态显示保持清零快速校时整点报时闹钟Enghlish AbstractThis experiment Use the QuartusII to design a digital clock of 24 hours with learning electric circuit knowledge. The clock has the normal time function and can keep,display, reset the time, adjust the minute and hour, ring the alarm clock at the round timeThis report paper analyzes the principle of all work and explainedthe designing principle of different parts circuit .shows us the resultof debugging, simulating, compiling the program on the CPLD experiment system, the problems meeted in the process of experiment and solve measure.Keywords:counter, dynamic display, keep, clear, adjust the time quickly, alarm clock目录一、设计要求说明 (3)二、方案论证 (3)三、各子模块设计原理 (4)1、脉冲发生电路 (4)2、计时电路 (7)3、译码显示电路 (11)4、报时电路 (13)5、校分电路 (15)6、清零电路 (16)四、调试及仿真 (16)五、总电路图 (17)六、编程下载 (17)七、结论 (18)八、实验过程遇到的问题及解决办法 (18)九、实验总结 (18)十、参考文献 (18)设计一个数字计时器,可以完成00:00:00到23:59:59的计时功能,并在控制电路的作用下具有保持、清零、快速校时、快速校分、整点报时等功能。
1、能进行正常的时、分、秒计时功能2、分别由六个数码管显示时分秒的计时3、K1是系统的使能开关(K1=1正常工作,K1=0时钟保持不变)4、K2是系统的清零开关(K2=1正常工作,K2=0时钟的分、秒全清零);5、K3是系统的校分开关(K3=1正常工作,K3=0时可以快速校分);6、K4是系统的校时开关(K4=1正常工作,K4=0时可以快速校分)7、使时钟具有整点报时功能(当时钟计到59’51”时开始报时,在59’51’’,59’53”,59’55”,59’57” 时报时频率为500Hz,59’59”时报时频率为1KHz)根据设计要求我们可采用自顶向下的设计方法将整个电路分成六个具有不同种功能的模块,对各个模块进行分开设计、调试,利用QuartusII软件模块封装功能对各模块进行封装,最后整个电路变成了六个功能模块的组合。
通过这种方法我们可以将复杂的电路设计简单化,具有很强的可行性。
整个电路各模块及其功能连接如下图如以上电路图所示,脉冲发生电路主要产生秒及各种不同频率的脉冲,计时电路具有正常的计时功能,报时电路能在给定的时刻给蜂提供报时脉冲,较分电路能实现不同脉冲的选择来控制计时电路时属于正常计时、保持、还是快速较分较时,清零电路主要能产生清零信号,译码显示电路负责将计时电路产生的信号进行译码并在数码管上显示。
一、脉冲发生电路CPLD实验系统提供的是48MHZ频率的脉冲,需要设计一个分频器将48MHZ频率的脉冲分成各种频率,分频器可以由各种不同模数计数器级联而成。
通过对模10计数器74160,D触发器,模16计数器74163可以设计出各种模数计数器。
以下分别是模2 3、6、10、16、1000的原理图(记为m2,m3,m10,m16,m1000)图1(m2)图2(m3)图3(m10)图4(m16)图5(m1000)将以上各种不同模数计数器进行级联就可以得到不同频率的脉冲如下图所示图6(脉冲发生电路)最后将以上脉冲发生电路进行封装,如下图7(脉冲发生模块)二、计时电路计时电路可以分为秒、分、时三个模块计时模块,秒和分可用一个模六十计数器组成,时为一个模24的计数器,如下图图8(计数器原理)模60的秒、分计数器电路图如下图9(秒、分计时器电路图)将秒计时器封装得如下图所示的模块图10(秒计时器)模60的分计时器电路图亦如图9所示,其封装模块如下图11(分计时器)模24的时计时器电路图如下图12(时计时器电路图)将电路图进行封装如下图13(时计时器)最后将秒、分、时计时器进行模块连接得到计时电路,如下图图14(计时电路)将计时电路封装如下,图15(计时模块)三、译码显示电路译码显示电路将计时电路产生的秒、分、时信号通过一个24选4的数据选择器将秒、分、时的低位与高位分时选择给显示译码器7447进行译码,译码器74138对数据选择器地址信号译码控制六个数码管实现动态显示,地址信号由一个计数频率比计时电路计数频率高很多的计数器产生。
电路结构如下图所示acef DIG0 DIG1 DIG2 DIG3 DIG4 DIG5图16(译码显示原理)具体实现如下:(1)地址信号由一模6计数器产生图17(地址信号)(2)24选4数据选择器由四个六选一的数据选择器组成,电路结构如下图18(24选4数据选择器原理)(3)译码器74138图19(4)显示译码器7447图20将以上电路进行模块封装得译码显示模块如下图21(译码显示模块)四、报时电路根据报时要求(当时钟计到59’51”时开始报时,在59’51’’,59’53”, 59’55”,59’57” 时报时频率为500Hz,59’59”时报时频率为1KHz)可得如下关系Sound=59’5*9’’1Khz+(1’’+3”+5”+7”)500HZ]将计时器对应位带入,并化简得MSQ3MSQ2MSQ1MSQ0MGQ3MGQ2MGQ1MGQ0SSQ3SSQ2SSQ1SSQ0(SGQ3SGQ2SGQ1SGQ0 1KHZ +SGQ3SGQ0 500HZ)可将前面的59’5独立封装成一模块如下图(左边为内部电路,右边为封装模块)图22(59’5模块)最后报时电路如下图23(报时电路)将报时电路封装如下图24(报时模块)较分电路需要实现保持、快速较分、快速较时功能,即设计要求中的第3、5、6条要求。
经仔细分析得该电路有6个输入分别为开关K1、k3、k4、计时电路正常计数时所需的1HZ脉冲,较分、较时所需的5HZ脉冲、电路正常工作时分进位信号ENMN以及时进位信号ENHN,6个输出分别为秒、分、时计数器的使能端ENS、ENM、ENH以及他们的诗中信号CLKS、CLKM、CLKH。
计数器正常工作时秒、分、时各计数器使用同步计数方式(由分、时进位信号控制进位),较时时停秒、停分,较分时停秒。
按照以上设计要求可得如下关系表由上表可得如下关系ENS=K1 K3 K4 .ENM=K1 K4(+K3 ENMN) .ENH=K1(+K4 ENHN) .CLKS=1HZCLKM=K4(K3 1HZ+5HZ) CLKH=K4 1HZ+5HZ由以上关系可得如下较分电路图图25(较分电路)将较分电路封装如下图26(较分模块)六、清零电路清零电路只需将开k2与计时电路的CLRN连接即可。
调试主要是将电路下载到试验箱上调试,一些基本模块也可在QuartusII软件上进行模拟仿真调试,一下为一些基本电路的仿真秒、分计时仿真波形(模60计数波形)图27时计时器波形(模24技术波形)图28图29当整个电路设计完成后,将编译好的程序下载到芯片之前要进行管脚分配。
选择“Assignments-Pins”,打开管脚分配对话框。
在TO栏中,输入各管脚的名称,在Location下输入相应的管脚。
选择“File-Save”来保存分配,然后关闭“Assignment Editor”。
选择“Assignments-Setting”,打开Device&Pin对话框,选择Configuration标签页,采用串行配置器件EPCS4的主动配置模式。
在Device&Pin对话框中选择Unused Pins标签页,进行没有使用的管脚设置为高阻状态。
然后选择“Processing-Start Compilation”进行全程编译。
将实验箱的电源打开,点击工具栏上的,再点击,点击,在弹出的对话框中点击“OK”,然后点击“close”关闭对话框,则在后面的“No hardware”变成了“ByteBlaster[LPT1]”。
最后在“Program/configure”列下的复选框中打勾,点击开始向实验箱上下载。
经过对各个模块的设计调试,最后模块组合成的多功能数字钟具有正常计时,动态显示,保持、清零、快速校分、整点报时功能。
实验过程中遇到的主要问题是在正常计时中时钟会出现一些非正常跳变,例如49秒后就直接回到零秒,后经了解是由于计时器采用异步计数的方式计数,计数过程中出现的一些秒冲毛刺也会引起计数器进行计数,经改用同步计数方式后问题迎刃而解。
通过本次实验我们学习了利用EDA技术进行电子设计的方法,这种设计方法能大大提高了电子设计的效率,设计过程中出现的一些问题能够比较容易的查找出原因并解决。
也让我们学习了模块化设计的思想并培养我们进行分工合作设计的能力。
为期一周的实验是辛苦的,在这辛苦的过程中我们体验到了学习的乐趣。
虽说我们设计的数字钟并不是什么很了不起的东西,但这期间教给我们的思想是伟大的,在此感谢在这期间耐心指导我们实验的老师。
同时也希望我们的实验室的实验仪器更多一点,让更多的同学能体会到实验的乐趣。
[1] 《数字电路基础》蒋立平著兵器工业出版社出版,2001年3月。
[2]《EDA设计实验指导书》南京理工大学电子技术中心编写2008年1月。