EDA数字时钟课程设计报告
eda课程设计5篇[修改版]
第一篇:eda课程设计数字钟一、设计要求设计一个数字钟,具体要求如下:1、具有时、分、秒计数显示功能,以24小时循环计时。
2、具有清零、校时、校分功能。
3、具有整点蜂鸣器报时以及LED花样显示功能。
二、设计方案根据设计要求,数字钟的结构如图8-3所示,包括:时hour、分minute、秒second计数模块,显示控制模块sel_clock,七段译码模块deled,报时模块alert。
三、VHDL程序library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; useIEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM;--use UNISIM.VComponents.all;entityddz is port(rst,clk: in std_logic; hour_h: out std_logic_vector( 6 downto 0); hour_l: outstd_logic_vector( 6 downto 0); min_h: out std_logic_vector( 6 downto 0);min_l: out std_logic_vector( 6 downto 0);sec_h: out std_logic_vector( 6 downto 0);sec_l: out std_logic_vector( 6 downto 0)); endddz;architecture Behavioral of ddz is signalcnt: std_logic_vector(15 downto 0); signalsec_h_in: std_logic_vector( 3 downto 0); signalsec_l_in: std_logic_vector( 3 downto 0); signalmin_h_in: std_logic_vector( 3 downto 0); signalmin_l_in: std_logic_vector( 3 downto 0); signalhour_h_in: std_logic_vector(3 downto 0); signalhour_l_in: std_logic_vector(3 downto 0);signalclk_s,clk_m,clk_h: std_logic; begin process(rst,clk) begin if rst='0' then sec_h_in'0');sec_l_in'0');clk_msec_l_inifsec_h_in=5 thensec_h_inclk_melsesec_h_inclk_mend if; else sec_l_inclk_mend if; end if; end process;process(rst,clk_m) begin if rst='0' then-- min_h_in'0');min_l_in'0'); -- clk_hmin_l_inmin_h_inclk_mend if; else min_l_inend if; end if; end process;process(rst,clk_n) begin if rst='0' then-- hour_h_in'0');hour_l_in'0'); -- clk_hhour_l_inhour_h_inclk_nend if; else hour_l_inend if; end if; end process;process(sec_l_in) begin casesec_l_in iswhen "0000" =>sec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lsec_lprocess(sec_h_in) begin casesec_h_in iswhen "0000" =>sec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hsec_hprocess(min_l_in) begin casemin_l_in iswhen "0000" =>min_lmin_lmin_lwhen "0011" =>min_lmin_lmin_lmin_lmin_lmin_lmin_lmin_lprocess(min_h_in) begin casemin_h_in iswhen "0000" =>min_hmin _h min _hmin _hmin _h min _hmin _hmin _hmin _hmin _hmin _hend case; end process;process(hour_l_in) begin casehour_l_in iswhen "0000" =>hour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lhour_lprocess(hour_h_in) begin casehour_h_in iswhen "0000" =>hour_hhour_hhour_hhour_h hour _h hour _h hour _h hour _h hour _hhour_h hour _h四、VHDL仿真结果五、课程设计心得通过这次课程设计,有效得巩固了课本所学的知识,而且通过上机仿真不断发现问题并及时改正,加深了我们对该课程设计的印象。
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课程设计报告课程设计题目多功能数字钟部(系)信息技术学部专业姓名学号指导教师2014年 12 月 29 日目录一、设计目的 (1)二、设计要求 (1)三、硬件方案 (1)3.1 设计思路 (1)3.2 设计框图 (2)3.3 数字钟主控电路状态表 (3)四、软件方案 (4)4.1 按键消抖模块 (4)4.2 时钟计数器模块 (5)4.3 显示译码模块 (13)4.4 分频器模块 (15)4.5 主控制电路模块 (16)4.5.1 计数器控制模块 (16)4.5.2 闹钟计数器模块 (19)4.5.3 闹钟控制模块 (21)4.5.4 显示输出控制模块 (25)4.5.5 led控制模块 (26)4.5.6 主控模块 (29)4.6 电子钟系统原理图 (29)五、实现过程中遇到的问题及措施 (30)六、设计心得体会 (30)七、参考文献 (31)一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。
能对VHDL语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。
在成功掌握软件操作基础上,将所数字电路的基础课知识与VHDL语言的应用型知识结合起来并与实际设计,操作了解起来,即“理论了解实际”。
深入了解VHDL语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。
对EDA技术有初步的认识,并开始对EDA 技术的开发创新有初步的理解。
二、设计要求设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校时间,每逢整点,产生报时音报时。
三、硬件方案3.1 设计思路根据设计要求进行分析,数字钟应当有计数器,分频器,按键消抖,闹钟,显示及主控模块构成。
分频器用来提供时钟,计数器用于计时,按键消抖为系统提供准确的按键控制信号输入,闹钟用于提供闹钟功能,显示模块显示时间,主控模块根据按键输入控制各个模块以实现所需求功能。
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的数字时钟课程设计报告
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段显示管实现的。
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)_数字时钟程序模块(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课程设计报告电子钟1. 需求分析在日常生活中,我们无处不被时间所包围。
精准的时间尤为重要,电子钟因其准确、便携、易于控制等优点成为人们生活和工作必不可少的工具之一。
因此,基于此需求,我们设计了一款电子钟。
2. 系统设计电子钟的核心是时钟的计算,时钟的计算和显示涉及到时、分、秒、时间的设定和计算。
所以,系统的设计需要分为两个方面:硬件系统设计和软件系统设计。
2.1. 硬件系统设计硬件系统设计主要涉及到5V电源模块、单片机模块、RTC模块、时钟显示模块等。
2.1.1. 5V电源模块5V电源模块是提供设备运行所需电能的模块。
整个设备需要5V DC直流电源来工作,电源模块需要接上220V/110V AC电源。
此模块采用LM7805电压稳压芯片作为主要元件,保证设备稳定长时间的工作。
2.1.2. 单片机模块单片机模块是整个电子钟系统的核心,它负责计算时间并通过串口发送指令。
在本次设计中,晶振的时钟频率选用12MHz。
单片机选用STM32F103C8T6型号,这是一款高性能、低功耗、易于扩展的MCU芯片。
该模块可用于控制LED灯的开关、按键扫描等。
2.1.3. RTC模块RTC模块是实时时钟模块,其内部集成电池,即使在断电的情况下,时钟系统也能保持不变。
本设计采用DS3231型号RTC芯片,该模块闹钟功能精准,精度高,抗干扰能力好等特点。
该模块可以通过I2C接口进行通讯。
2.1.4. 时钟显示模块时钟显示模块用于显示时、分、秒的时间信息。
本设计采用Max7219驱动LED点阵进行显示。
该驱动芯片模块具有图形引擎,能够支持八个数字性显示的点阵。
同时,该芯片还具有串行接口,能够方便地和单片机连接通讯。
2.2. 软件系统设计在本次设计中,软件系统主要由驱动程序、串口通讯程序、定时器程序、闹钟程序、检测程序、显示程序等模块组成。
2.2.1. 驱动程序驱动程序主要有RTC模块的驱动程序、LED点阵模块的驱动程序和按键模块的驱动程序。
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多功能数字时钟课程设计一、课程目标知识目标:1. 学生能理解数字时钟的基本原理,掌握EDA工具的使用方法,并运用相关电路知识设计多功能数字时钟。
2. 学生能够运用所学知识,分析并解释数字时钟电路中各个部分的功能及其相互关系。
3. 学生了解数字时钟在实际生活中的应用,理解其重要性。
技能目标:1. 学生能够运用EDA工具进行电路设计,具备实际操作能力。
2. 学生通过动手实践,培养解决实际问题的能力,提高创新意识和团队协作能力。
3. 学生能够运用所学知识,对数字时钟电路进行调试和优化。
情感态度价值观目标:1. 学生在学习过程中,培养对电子技术的兴趣,激发创新精神。
2. 学生通过团队合作,学会尊重他人,培养良好的沟通能力和团队精神。
3. 学生认识到科技发展对社会进步的重要性,树立正确的价值观。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子技术基础知识,对实践操作有较高的兴趣。
教学要求:教师需结合理论教学,指导学生进行实践操作,注重启发式教学,引导学生主动探究,提高学生的综合能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过课程学习,使学生能够将所学知识应用于实际生活中,提高学生的创新意识和实践能力。
二、教学内容本课程教学内容主要包括以下几部分:1. 数字时钟原理:讲解数字时钟的基本工作原理,包括时钟信号、计数器、显示驱动等组成部分。
2. EDA工具使用:介绍EDA工具的基本操作,如原理图绘制、电路仿真、PCB设计等。
3. 电路设计与实现:指导学生运用EDA工具设计多功能数字时钟电路,包括时钟信号电路、分频器、计数器、显示驱动和按键控制等模块。
4. 电路调试与优化:教授学生如何对设计的数字时钟电路进行调试,找出问题并进行优化。
教学内容与教材关联性如下:1. 《电子技术基础》中关于数字电路的基础知识,为理解数字时钟原理提供理论支持。
EDA课程设计报告之数字时钟设计(免费哦~)
计算机科学与技术学院EDA课程设计报告设计题目:数字时钟的设计班级:姓名:学号:日期:2011年6月20日一、系统设计要求1、具有时、分、秒的计数显示功能,24小时循环显示。
2、具有异步清零、预置初值功能,实现LED动态显示,整点报时采用声音报时,几点报几下。
3、采用元件例化方式实现各模块间的连接。
二、系统设计方案1、整个模块采用两个时钟,一个时钟的频率为一秒,用于程序秒的输入。
另一个时钟频率较高,用于七段显示器的选择端口三八译码器的输入时钟。
2、时分秒皆采用两个位的计数,一位代表十位,一位代表个位。
分秒为60进制,时为24进制。
个位逢九向十位进一,秒逢59向分进一,分逢59向时进一。
3、在小时的子程序里把两位小时数转换成一位数作为报时程序的输入。
三、主要VHDL源程序秒—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SECOND ISPORT (CLK1,R:IN STD_LOGIC;CO1:OUT STD_LOGIC;S0,S1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ;ARCHITECTURE XIA OF SECOND ISBEGINPROCESS(CLK1,R,SS0,SS1)VARIABLE SSS0,SSS1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF R='1' THEN SSS0:="";SSS1:="";ELSIF CLK1'EVENT AND CLK1='1' THENIF SSS1="" AND SSS0=""THEN CO1<='1';SSS0:=""; SSS1:="";ELSIF SSS0="" THEN SSS0:="";SSS1:=SSS1+1;ELSE SSS0:=SSS0+1;CO1<='0';END IF;END IF;S0<=SSS0;S1<=SSS1;END PROCESS;END ;分—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY MINUTE ISPORT (CLK2,R,S:IN STD_LOGIC;MM0,MM1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);CO2:OUT STD_LOGIC;M0,M1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ;ARCHITECTURE XIA OF MINUTE ISBEGINPROCESS(CLK2,R,S,MM0,MM1)VARIABLE MMM0,MMM1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF R='1' THEN MMM0:="0000";MMM1:="0000";ELSIF S='1' THEN MMM0:=MM0;MMM1:=MM1;ELSIF CLK2'EVENT AND CLK2='1' THENIF MMM1="0101" AND MMM0="1001"THEN CO2<='1';MMM0:="0000"; MMM1:="0000";ELSIF MMM0="1001" THEN MMM0:="0000";MMM1:=MMM1+1;CO2<='0'; ELSE MMM0:=MMM0+1;CO2<='0';END IF;END IF;M0<=MMM0;M1<=MMM1;END PROCESS;END ;时—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.std_logic_unsigned.all;ENTITY HOUR ISPORT (CLK3,R,S:IN STD_LOGIC;HH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);HH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);H0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);H1:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUMBER2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ;ARCHITECTURE XIA OF HOUR ISBEGINPROCESS(CLK3,R,S,HH0,HH1)VARIABLE HHH0:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE HHH1:STD_LOGIC_VECTOR(1 DOWNTO 0);VARIABLE NUMBER1,NUMBER0:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF R='1' THEN HHH0:="0000";HHH1:="00";ELSIF S='1' THEN HHH0:=HH0;HHH1:=HH1;ELSIF CLK3'EVENT AND CLK3='1' THENIF HHH0="0011" AND HHH1="10"THEN HHH0:="0000";HHH1:="00";ELSIF HHH0="1001" THEN HHH1:=HHH1+1;HHH0:="0000"; ELSE HHH0:=HHH0+1;END IF;END IF;H0<=HHH0;H1<=HHH1;IF HHH1="00" THEN NUMBER0:="";ELSIF HHH1="01" THEN NUMBER0:="";ELSIF HHH1="10" THEN NUMBER0:="";END IF;NUMBER1:=NUMBER0+HHH0;IF NUMBER1="" THEN NUMBER2<="";ELSIF NUMBER1>"" THEN NUMBER2<=NUMBER1-"";ELSE NUMBER2<=NUMBER1;END IF;END PROCESS;END ;报时—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY RING ISPORT(CLK4,CLK5:IN STD_LOGIC;NUMBER:IN STD_LOGIC_VECTOR(7 DOWNTO 0);P:OUT STD_LOGIC);END;ARCHITECTURE ONE OF RING ISBEGINPROCESS(CLK4,CLK5,NUMBER)VARIABLE R:STD_LOGIC;VARIABLE TEX:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK4='1' THENIF (NUMBER/=""AND TEX<NUMBER) THEN R:=CLK5;ELSE R:='0';END IF;IF CLK5'EVENT AND CLK5='1' THENIF TEX<NUMBER THENTEX:=TEX+1;END IF;END IF;ELSE TEX:="";END IF;P<=R;END PROCESS;END;显示—底层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dec7s ISPORT(a1,a2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);a3,a4,a5:IN STD_LOGIC_VECTOR(3 DOWNTO 0); a6:IN STD_LOGIC_VECTOR(1 DOWNTO 0);led7s1,led7s2,led7s3,led7s4,led7s5,led7s6 :OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE one OF dec7s ISBEGINPROCESS(a1,a2,a3,a4,a5,a6)BEGINCASE a1 ISWHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN ""=>led7s1<="";WHEN OTHERS=>led7s1<="";END CASE;CASE a2 ISWHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN ""=>led7s2<="";WHEN OTHERS=>led7s2<="";END CASE;CASE a3 ISWHEN "0000"=>led7s3<="";WHEN "0001"=>led7s3<="";WHEN "0010"=>led7s3<="";WHEN "0011"=>led7s3<="";WHEN "0100"=>led7s3<="";WHEN "0101"=>led7s3<="";WHEN "0110"=>led7s3<="";WHEN "0111"=>led7s3<="";WHEN "1000"=>led7s3<="";WHEN "1001"=>led7s3<="";WHEN OTHERS=>led7s3<=""; END CASE;CASE a4 ISWHEN "0000"=>led7s4<="";WHEN "0001"=>led7s4<="";WHEN "0010"=>led7s4<="";WHEN "0011"=>led7s4<="";WHEN "0100"=>led7s4<="";WHEN "0101"=>led7s4<="";WHEN "0110"=>led7s4<="";WHEN "0111"=>led7s4<="";WHEN "1000"=>led7s4<="";WHEN "1001"=>led7s4<="";WHEN OTHERS=>led7s4<=""; END CASE;CASE a5 ISWHEN "0000"=>led7s5<="";WHEN "0001"=>led7s5<="";WHEN "0010"=>led7s5<="";WHEN "0011"=>led7s5<="";WHEN "0100"=>led7s5<="";WHEN "0101"=>led7s5<="";WHEN "0110"=>led7s5<="";WHEN "0111"=>led7s5<="";WHEN "1000"=>led7s5<="";WHEN "1001"=>led7s5<="";WHEN OTHERS=>led7s5<=""; END CASE;CASE a6 ISWHEN "00"=>led7s6<="";WHEN "01"=>led7s6<="";WHEN "10"=>led7s6<="";WHEN OTHERS=>led7s6<=""; END CASE;END PROCESS;END one;顶层LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY TOP ISPORT (CP,CLK,R0,S0:IN STD_LOGIC;SM0,SM1,SH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);PP:OUT STD_LOGIC);END;ARCHITECTURE XIA OF TOP ISSIGNAL Y0,Y1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL Y2,Y3,Y4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL Y5:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL YY6,YY1,YY2,YY3,YY4,YY5,YY7,PNUMBER:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL CO11,CO22:STD_LOGIC;component SECONDPORT (CLK1,R:IN STD_LOGIC;CO1:OUT STD_LOGIC;S0,S1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;component MINUTEPORT (CLK2,R,S:IN STD_LOGIC;MM0,MM1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);CO2:OUT STD_LOGIC;M0,M1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));end component;component HOURPORT (CLK3,R,S:IN STD_LOGIC;HH0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);HH1:IN STD_LOGIC_VECTOR(1 DOWNTO 0);H0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);H1:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);NUMBER2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;component RINGPORT(CLK4,CLK5:IN STD_LOGIC;NUMBER:IN STD_LOGIC_VECTOR(7 DOWNTO 0);P:OUT STD_LOGIC);end component;component dec7sPORT(a1,a2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);a3,a4,a5:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a6:IN STD_LOGIC_VECTOR(1 DOWNTO 0);led7s1,led7s2,led7s3,led7s4,led7s5,led7s6:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));end component;BEGINYY7<="";U1:SECOND PORT MAP(CLK1=>CLK,R=>R0,S0=>Y0,S1=>Y1,CO1=>CO11); U2:MINUTE PORT MAP(CLK2=>CO11,R=>R0,S=>S0,M0=>Y2,M1=>Y3,CO2=>CO22,MM0=>SM0,MM1=>SM1);U3:HOUR PORT MAP(CLK3=>CO22,R=>R0,S=>S0,H0=>Y4,H1=>Y5,HH0=>SH0,HH1=>SH1,NUMBER2=>PNUMBER);U4:RING PORT MAP(CLK4=>CO22,CLK5=>CLK,NUMBER=>PNUMBER,P=>PP); U5:dec7s PORT MAP(a1=>Y0,led7s1=>YY1,a2=>Y1,led7s2=>YY2,a3=>Y2,led7s3=>YY3,a4=>Y3,led7s4=>YY4,a5=>Y4,led7s5=>YY5,a6=>Y5,led7s6=>YY6);PROCESS(CP)VARIABLE SELL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIF CP'EVENT AND CP='1' THENIF SELL="111" THEN SELL:="000" ;ELSE SELL:=SELL+1;END IF;END IF;CASE SELL ISWHEN "000"=>Y<=YY1;WHEN "001"=>Y<=YY2;WHEN "010"=>Y<=YY3;WHEN "011"=>Y<=YY4;WHEN "100"=>Y<=YY5;WHEN "101"=>Y<=YY6;WHEN OTHERS=>Y<=YY7;END CASE;SEL<=SELL;END PROCESS;END;四、系统仿真/硬件验证五、设计中遇到的问题与体会自己想了哈。
eda课程设计数字时钟设计
eda课程设计数字时钟设计一、教学目标本课程旨在通过数字时钟设计项目,让学生掌握EDA(电子设计自动化)工具的基本使用,理解数字电路的设计原理,培养学生的动手实践能力和创新能力。
具体目标如下:1.知识目标:•掌握数字电路的基本概念和设计方法。
•学习常用的EDA工具,如Multisim、Proteus等,并能够运用它们进行数字电路的设计和仿真。
•了解时钟信号的产生和应用,理解RTC(实时时钟)的工作原理。
2.技能目标:•能够运用EDA工具设计简单的数字时钟电路。
•能够进行电路仿真,调试并优化设计。
•学会阅读和理解电子电路图,培养良好的电子工程实践能力。
3.情感态度价值观目标:•培养学生对电子科技的兴趣,增强其科技意识。
•培养学生团队协作精神和自主学习能力。
•培养学生解决问题的能力,增强其面对挑战的信心。
二、教学内容本课程的教学内容主要包括数字电路基础、EDA工具的使用、数字时钟设计原理和RTC的应用。
具体安排如下:1.数字电路基础:•数字逻辑门电路•组合逻辑电路•时序逻辑电路2.EDA工具的使用:•Multisim和Proteus的基本操作•数字电路图的绘制和仿真3.数字时钟设计原理:•常见的时钟信号生成电路•数字时钟电路的设计方法4.RTC的应用:•RTC的工作原理•RTC在数字时钟中的应用三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:用于讲解数字电路基础和EDA工具的使用方法。
2.案例分析法:通过分析具体的数字时钟设计案例,让学生理解数字时钟的设计过程。
3.实验法:让学生动手实践,使用EDA工具进行数字时钟的设计和仿真。
四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用《数字电路与EDA技术》作为主要教材。
2.参考书:提供《EDA技术教程》等参考书籍,供学生课后自主学习。
3.多媒体资料:制作课件和教学视频,用于课堂讲解和课后复习。
4.实验设备:提供计算机、EDA工具软件、电路仿真实验板等,供学生进行实验和实践。
EDA时钟设计 报告
《EDA数字电路课程设计》题目:数字时钟设计专业:电子信息科学与技术班级:信息电科1202B姓名: ############第一部分:设计说明1设计任务设计一款数字电子时钟,具体要求如下:1:输入条件:1KHZ输入时钟,2个输入按键;2:功能实现:具有时、分、秒进位功能;具有闹钟与校时功能,校时要求精确到秒,采用按键作为输入信号。
3:采用altera公司的quartusII软件进行编程与仿真,设计语言可以选择VHDL或者使用原理图输入。
2目的与意义训练综合运用学过的数字电子技术、数字系统设计技术和计算机编程及电路相关基本知识,培养独立设计比较复杂数字系统设计能力。
通过综合设计,力争掌握使用EDA工具设计数字系统电路的基本方法,包括原理方案的确定、详细设计中的编程与仿真等一系列过程,为以后进行工程实践问题的研究打下设计基础。
时钟,自从它发明的那天起,就成为人类的朋友,但随着社会的进步,科技的的发展,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春光彩呢?这就要求人们不断设计出新型时钟。
现代社会,守时已不仅关系到一个人的职业生涯,还成了衡量一个人道德的标准。
时钟为人们提供了科学利用时间规律的依据,然而,普通的机械钟表与半机械钟表对于忙碌的生活显然早已不太适应,设计一款高精度数字时钟势在必行。
本课题将通过对目前市场上的数字电子钟的研究,利用EDA技术设计一款高精度数字式电子钟,使人们可以得到精确时间显示,帮助人们合理安排时间,方便人们的生活第二部分原理方案设计1总体方案要实现一个数字时钟小系统,整个系统由主要模块电路模块和外部输入输出以及显示模块组成。
首先分别实现单个模块的功能,然后再通过级联组合的方式实现对整个系统的设计。
其中,主要模块有四个。
它包括1HZ时钟信号产生模块、时间计数模块(计数模块又分为分计数模块、秒计数模块、时计数模块)、闹铃模块、控制模块。
各个模块先用EDA技术中的VHDL语言编程仿真,再生成各个小模块的模拟元件,再元件例化,根据设计连接电路实现数字电子钟小系统。
本科毕业设计论文--eda课程设计报告多功能数字钟设计
湖北大学物电学院EDA课程设计报告(论文)题目:多功能数字钟设计专业班级: 14微电子科学与工程*名:**时间:2016年12月20日指导教师:万美琳卢仕完成日期:2015年12月20日多功能数字钟设计任务书1.设计目的与要求了解多功能数字钟的工作原理,加深利用EDA技术实现数字系统的理解2.设计内容1,能正常走时,时分秒各占2个数码管,时分秒之间用小时个位和分钟个位所在数码管的小数点隔开;2,能用按键调时调分;3,能整点报时,到达整点时,蜂鸣器响一秒;4,拓展功能:秒表,闹钟,闹钟可调3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
目录(四号仿宋_GB2312加粗居中)(空一行)1 引言 (1)2 总体设计方案 (1)2.1 设计思路 (1)2.2总体设计框图 (2)3设计原理分析 (3)3.1分频器 (4)3.2计时器和时间调节 (4)3.3秒表模块 (5)3.4状态机模块 (6)3.5数码管显示模块 (7)3.6顶层模块 (8)3.7管脚绑定和顶层原理图 (9)4 总结与体会 (11)多功能电子表摘要:本EDA课程主要利用QuartusII软件Verilog语言的基本运用设计一个多功能数字钟,进行试验设计和软件仿真调试,分别实现时分秒计时,闹钟闹铃,时分手动较时,时分秒清零,时间保持和整点报时等多种基本功能关键词:Verilog语言,多功能数字钟,数码管显示;1 引言QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程,解决了传统硬件电路连线麻烦,出错率高且不易修改,很难控制成本的缺点。
利用软件电路设计连线方便,修改容易;电路结构清楚,功能一目了然2 总体设计方案2.1 设计思路根据系统设计的要求,系统设计采用自顶层向下的设计方法,由时钟分频部分,计时部分,按键调时部分,数码管显示部分,蜂鸣器四部分组成。
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 埠,而且功耗较静态显示驱动更低。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA技术及应用课程设计说明书 2013 届电子信息工程专业班级
题目数字时钟
学号
姓名
指导教师
二О一五年月日
一、基本原理
一个完整的时钟应由三部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。
秒脉冲发生电路原理:一个时钟的准确与否主要取决于秒脉冲的精确度。
为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。
计数显示部分原理:显示部分是用数码管LED实现的,这里使用的是共阳极的数码管如图所示8个数码管,其中左边两个数码管用来显示时的个位和十位、中间的显示分的个位和十位、最右边两个显示分的个位和十位。
时钟调整部分原理:校时电路里定义key[0]、key[1]和k2、k3分别用于控制时钟的计时开始、清零和调整功能中的时的加1、分的加1处理,从而完成对现在的时间调整。
本实验电路校时电路在此完成了暂停、清零、时调整和分调整。
二、硬件设计
芯片图:
图1 数字时钟原理图
程序的调试工作都是在电脑上完成的,通过程序的输入、原理图的建立、管脚分配、编译、仿真、再下载到芯片进行运行。
电路中采用共阳极连接的七段数码管,通过程序的控制扫描驱动来显示时钟的时-分-秒。
程序中的按键设定为K1暂停、K2清零、K3调时、K4调分元件清单:
三、数字时钟的Verilog实现
管脚的分配:
程序:
module clock(clk,s1,,s2,key,dig,seg); //模块名clock input clk,s1,s2; //输入时钟
input[1:0]key; //输入按键
output[7:0]dig; //数码管选择输出引脚
output[7:0]seg; //数码管段输出管脚
reg[7:0]seg_r; //定义数码管输出寄存器reg[7:0]dig_r; //定义数码管选择输出寄存器reg[3:0]disp_dat; //定义显示数据寄存器reg[24:0]count; //定义计数寄存器
reg[23:0]hour; //定义现在时刻寄存器reg sec,en; //定义标志位
reg[1:0]dout1,dout2,dout3; //寄存器
wire[1:0]key_done; //按键消抖输出
assign dig=dig_r; //输出数码管选择
assign seg=seg_r; //输出数码管译码结果
//秒信号产生部分
always@(posedge clk) //定义clock上升沿触发begin
count=count+1'b1;
if(count==25'd2*******) //是否到0.5秒
begin
count=25'd0; //计数器清零
sec=~sec; //置位秒标志
end
end
//按键消抖处理部分
assign key_done=(dout1|dout2|dout3); //按键消抖输出always@(posedge count[17])
begin
dout1<=key;
dout2<=dout1;
dout3<=dout2;
end
always@(negedge key_done[0])
begin
en=~en; //将琴键开关转换为乒乓开关
end
always @(posedge clk) //count[17:15]大约1ms改变一次begin
case(count[17:15]) //选择扫描显示数据
3'd0:disp_dat = hour[3:0]; //秒个位
3'd1:disp_dat = hour[7:4]; //秒十位
3'd2:disp_dat = 4'ha; //显示“-”
3'd3:disp_dat = hour[11:8]; //分个位
3'd4:disp_dat = hour[15:12]; //分十位
3'd5:disp_dat = 4'ha; //显示“-”
3'd6:disp_dat = hour[19:16]; //时个位
3'd7:disp_dat = hour[23:20]; //时十位
endcase
case(count[17:15]) //选择数码管显示位 3'd0:dig_r = 8'b11111110;
3'd1:dig_r = 8'b11111101;
3'd2:dig_r = 8'b11111011;
3'd3:dig_r = 8'b11110111;
3'd4:dig_r = 8'b11101111;
3'd5:dig_r = 8'b11011111;
3'd6:dig_r = 8'b10111111;
3'd7:dig_r = 8'b01111111;
endcase
end
always @(posedge clk)
begin
case(disp_dat)
4'h0:seg_r = 8'hc0; //显示0
4'h1:seg_r = 8'hf9;
4'h2:seg_r = 8'ha4;
4'h3:seg_r = 8'hb0;
4'h4:seg_r = 8'h99;
4'h5:seg_r = 8'h92;
4'h6:seg_r = 8'h82;
4'h7:seg_r = 8'hf8;
4'h8:seg_r = 8'h80;
4'h9:seg_r = 8'h90;
4'ha:seg_r = 8'hbf;
default:seg_r = 8'hff;
endcase
if((count[17:15]==3'd2)&sec)
seg_r = 8'hff;
end
always @(negedge sec or negedge key_done[1]) //计时处理Begin
if(!key_done[1]) //是否为清零键
hour=24'h0; //是,则清零
else if(en)
begin
if(!s1)
begin
if(hour[23:16]==8'd35)
begin
hour[19:16]=0;
hour[23:20]=0;
end
else
begin
if(hour[19:16]==9)
begin
hour[19:16]<=0;
hour[23:20]<=hour[23:20]+1; end
else
hour[19:16]<=hour[19:16]+1; end
end
else if(!s2)
begin
if(hour[11:8]==9)
begin
hour[11:8]<=0;
if(hour[15:12]==5)
hour[15:12]<=0;
else
hour[15:12]<=hour[15:12]+1;
end
else
hour[11:8]=hour[11:8]+1;
end
end
else
begin
hour[3:0]=hour[3:0]+1; //秒加1
if(hour[3:0]==4'ha)
begin
hour[3:0]=4'h0;
hour[7:4]=hour[7:4]+1; //秒的十位交1 if(hour[7:4]==4'h6)
begin
hour[7:4]=4'h0;
hour[11:8]=hour[11:8]+1; //分个位加1 if(hour[11:8]==4'ha)
begin
hour[11:8]=4'h0;
hour[15:12]=hour[15:12]+1; //分十位加1 if(hour[15:12]==4'h6)
begin
hour[15:12]=4'h0;
hour[19:16]=hour[19:16]+1; //十个位加1 if(hour[19:16]==4'ha)
begin
hour[19:16]=hour[4'h0];
hour[23:20]=hour[23:20]+1; //时十位加1 end
if(hour[23:16]==8'h24)
hour[23:16]=8'h0;
end
end
end
end
end
end
endmodule
一、课程设计总结
二、指导教师评语。