EDA设计

  • 格式:doc
  • 大小:2.07 MB
  • 文档页数:16

青岛工学院《数字系统设计》综合练习专业:通信工程专业题目:多功能数字钟的设计任课老师:刘雪锋小组成员:张孟贾琦目录第1章设计目的 (1)第2章设计任务及要求 (1)第3章设计原理及方案 (4)3.1 总体设计框图 (4)3.2 原理概述 (4)第4章分析与讨论 (6)第5章设计总结 (7)第6章电路设计及实现 (8)6.1 源程序 (8)6.2 仿真波形图 (13)第1章设计目的学习使用QuartusII 9.0,巩固已掌握的EDA知识,增强自己的动手实践能力。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计数字钟的目的就是为了了解多功能数字钟的原理,从而学会制作多功能数字钟。

而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法,且由于数字钟包括组合逻辑电路和时序电路,通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理和使用方法。

第2章设计任务及要求(一)、设计任务1、知识内容包含以下几个环节:(1)划分电路的设计模块(2)以VHDL文本输入法编写及调试秒计数电路VHDL程序(3)以VHDL文本输入法编写及调试数字显示电路VHDL程序(4)以VHDL文本输入法编写及调试数码管片选信号电路VHDL程序(5)以VHDL文本输入法编写及调试多功能数字钟的顶层电路VHDL程序(6)元件的封装(7)在线重配置2、外部输入输出要求:外部输入要求:输入信号由1khz/1HZ时钟信号、低电平有效的秒清零信号CLR、低电平有效的调分信号SETmin、底电平有效的调时信号SEThour;外部输出要求:整点报时信号SOUND(59分51/3/5/7秒时为500HZ低频声,59分59秒时为1khz高频声)、时十位显示信号h1(a,b,c,d,e,f,g)、时各位显示信号h0(a,b,c,d,e,f,g)、分十位显示信号m1以及分各位m0、秒十位s1以及秒十位s0;数码管显示位选SET0/1/2等三个信号3、内部各功能模块:(1)分频模块,因为整点报时采用的是1kzh和500hz的脉冲信号,这里的输入信号时1khz,因此只要一个二分频即可;时间基准采用1hz输入信号直接提供(当然也可以分频取得,考虑到精度问题采用硬件频率信号(2)秒计数模块SECOUND60进制,带有进位和清零功能的,输入为1hz脉冲和低电平有效的清零信号CLR,输出秒各位、时位及进位信号CO。

(3)分计数模块MINUTE60进制,带有进位和清零功能的,输入为1hz脉冲和低电平有效的清零信号CLR,输出分各位、时位及进位信号CO。

(4)时计数模块HOUR:(二)、设计要求:本次设计的多功能数字钟具有如下功能:(1)秒、分、时的依次显示并正确计数;(2)定时闹钟:实现整点报时,扬声器发出报时声音;(3)时间设置,即手动调时功能:当时钟不准确时,可以分别对分、时进行调整。

第3章 设计原理及方案3.1 总体设计框图该课题的实现过程大体如下:先对4MHZ 的信号进行分频使其变为1HZ ;将该信号加入计数器中(模60和模24/12)实现基本时钟功能;然后在此基础上加入,整点报时,图1 总体设计框图(1)时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分 ——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。

(2)蜂鸣器在整点时通过1khz 和500hz 高频声控,蜂鸣器报警。

产生“滴答.滴答”的报警声音。

3.2 原理概述本文数字钟主要实现了两个功能:正常计数并显示时间和整点报时。

系统由“1kHz 时钟”、“整点报时电路”、“时、分、秒”计数器、和“译码显示电路”等组成。

“1kHz 时钟”和“分频器”产生整个系统的时基信号,它直接决定计时系统 分 秒 时 时显示 分显示 CLK 信号 秒显示 译码器 译码器 译码器 数码管显示 整点报时500HZ 1KHZ1KHZ 信号 500H 信号的精度。

“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。

进行校时,将秒进位直接输出给“分计数器”,将分进位直接输出给“时计数器”;如果进行小时校时,将秒进位直接输出给“分计数器”,任何情况下,“秒计数器”的输出直接送“译码显示电路”显示。

“分计数器”的输出直接送“译码显示电路”显示。

“时计数器”的输出直接送“译码显示电路”显示。

整点报时功能,在59分59秒时钟开始报时,在00分00秒到00分08秒间隔一秒产生1khz的声音,在00分10秒时产生500hz的声音。

第4章分析与讨论本电子时钟设计主要实现了时、分、秒的计时功能和整点报时功能,秒、分功能主要采用60计时,时功能采用24进制实现的,整点报时功能是在每到59分59秒时开始报时,在2、4、6、8秒时产生1KHZ的声音,在第9秒时产生500HZ 的声音。

整个数字时钟设计是通过文本文档与电路图相结合的设计方法来实现的,通过建立一个工程,并且在此工程下分别建立时、分、秒及显示模块和整点报时模块,将这些模块生成的元器件连接起来,实现多功能数字时钟的功能。

这种方法比较简便,思路比较清晰。

由于时间限制,校时器功能没有实现,从校时器功能的分析来看,已经有了校时器功能设计的思路并掌握了此功能的设计方法。

第5章设计总结经过努力,简易电子时钟的设计基本上算是完成了,在整个设计中,我最大的体会就是:难!我在本次的课程设计中,发现了很多问题,同时做起来也很难不顺手,看着简单的电路,要动手把它设计出来实非易事,主要原因是我没有经常动手设计电路,这就要求我在以后的学习中,应该注意到这一点,更重要的是我要学会把从书本上学到的知识和实际电路联系起来,这不论对我以后的学习还是就业,都会起到很大的促进和帮助,我相信,通过这次的课程设计,在下一阶段的学习中我会更加努力,力争把这门课学好学精。

同时通过本次课程设计,巩固了我以前学过的专业知识,通过这次的程序设计,使我对数字系统结构也有了更进一步的了解与认识,同时对数据库软件EDA技术,VHDL语言等系列知识都有了一定的了解与认识。

使用EDA技术开发页面的能力也有了提高,也使我把理论与实践从正真意义上结合了起来,考研了我的动手能力,查阅相关资料的能力,还有组织材料的能力。

通过此次实践,我从中可以找出自己知识的不足与欠缺,以便我在日后的学习中得以改进与提高。

经过本次设计使我对大学期间所学习到的知识得以进一步实践,这将对我走出校园走向社会走向工作岗位奠定坚实的基础。

第6章电路设计及实现6.1 源程序生成秒的源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY miao60 ISPORT(clk:IN STD_LOGIC;co:out STD_LOGIC;ge,shi:OUT STD_LOGIC_VECTOR(3 downto 0)); end entity;architecture miao of miao60 issignal ge_tmp,shi_tmp:STD_LOGIC_vector(3 downto 0); begin--co<='1' when (shi_tmp="0000" and ge_tmp="1001") else '0';process(clk)BEGINif(clk'EVENT and clk='1')thenif(ge_tmp=9)thenge_tmp<="0000";if(shi_tmp=5)thenshi_tmp<="0000";co<='1';elseshi_tmp<=shi_tmp+1;co<='0';end if;elsege_tmp<=ge_tmp+1;co<='0';end if;end if;end process;shi<=shi_tmp;ge<=ge_tmp;end architecture;生成分的源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fen60 ISPORT(ci:IN STD_LOGIC;co:out STD_LOGIC;ge,shi:OUT STD_LOGIC_VECTOR(3 downto 0)); end entity;architecture fen of fen60 issignal ge_tmp,shi_tmp:STD_LOGIC_vector(3 downto 0); begin--co<='1' when (shi_tmp="0000" and ge_tmp="1001") else '0';process(ci)BEGINif(ci'EVENT and ci='1')thenif(ge_tmp=9)thenge_tmp<="0000";if(shi_tmp=5)thenshi_tmp<="0000";co<='1';elseshi_tmp<=shi_tmp+1;co<='0';elsege_tmp<=ge_tmp+1;co<='0';end if;end if;end process;shi<=shi_tmp;ge<=ge_tmp;end architecture;生成时的源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shi24 ISPORT(ci:IN STD_LOGIC;ge,shi:OUT STD_LOGIC_VECTOR(3 downto 0)); end entity;architecture shi of shi24 issignal ge_tmp,shi_tmp:STD_LOGIC_vector(3 downto 0); begin--co<='1' when (shi_tmp="0000" and ge_tmp="1001") else '0';process(ci)BEGINif(ci'EVENT and ci='1')thenif(ge_tmp=9)thenge_tmp<="0000";if(shi_tmp=2)thenshi_tmp<="0000";shi_tmp<=shi_tmp+1;end if;elsege_tmp<=ge_tmp+1;end if;if(shi_tmp=2 and ge_tmp=4)thenge_tmp<="0000";shi_tmp<="0000";end if;end if;end process;shi<=shi_tmp;ge<=ge_tmp;end architecture;整点报时源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshiqi isport(khz,baihz : in std_logic;miaoge,miaoshi,fenge,fenshi:in std_logic_vector(3 downto 0);y1: out std_logic);end entity;architecture baoshi of baoshiqi isbeginprocess(khz,baihz,miaoge,miaoshi,fenge,fenshi)beginif(miaoge="1001"and miaoshi="0101"and fenge="1001"and fenshi="1001")then case miaoge iswhen"0010"=>y1<=khz;when"0100"=>y1<=khz;when"0110"=>y1<=khz;when"1000"=>y1<=khz;when"1001"=>y1<=baihz;when others=>y1<='0';end case;end if;end process;end architecture;显示器源代码:library ieee;use ieee.std_logic_1164.all;entity xianshiqi isport(D:in std_logic_vector(3 downto 0);Q:out std_logic_vector(6 downto 0)); end entity;architecture xianshi of xianshiqi isbeginprocess(D)begincase D iswhen"0000"=>Q<="1000000";when"0001"=>Q<="1111001";when"0010"=>Q<="0100100";when"0011"=>Q<="0110000";when"0100"=>Q<="0011001";when"0101"=>Q<="0010010";when"0110"=>Q<="0000010";when"0111"=>Q<="1111000";when"1000"=>Q<="0000000";when"1001"=>Q<="0010000";when"1010"=>Q<="0111111";when"1011"=>Q<="0001000";when"1100"=>Q<="0001100";when others =>Q<="1000000";end case;end process;end architecture;6.2 仿真波形图秒分析波形图:图2 秒分析波形图分分析波形图:图3 分分析波形图时分析波形图:图4 时分析波形图总分析波形图:总设计电路图:图6 总设计电路图。