EDA数字时钟设计.杨康健_第1页
EDA数字时钟设计.杨康健_第2页
EDA数字时钟设计.杨康健_第3页
EDA数字时钟设计.杨康健_第4页
EDA数字时钟设计.杨康健_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设 计 报 告课程名称 在系统编程技术 任课教师 查长军 设计题目 EDA数字时钟 班级 11通信1班 姓名 杨康健 学号 1105021001 日期 2014-6-28 目录一、设计要求1、稳定的显示时、分、秒。2、当电路发生走时误差时,要求电路有校时功能。3、电路有整点报时功能。报时声响为四低一高,最后一响高音正好为整点。二、选择方案1、设计思路根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。1)时钟计数:首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时钟

2、的小时部分, setmin可以调整分钟,步进为1。由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。2) 时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我

3、们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。3)清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。2、设计原理系统框图由六个模块组成,分别为:秒、分、时计数模块,整点报时模块,LED动态显示扫描模块,调时控制模块组成。其工作原理是:基准脉冲输入信号同时加到秒、分、时、分隔符的脉冲输入端,采用并行计数的方式,秒的进位接到分的使能端上,秒的使能借到分隔符的使能上,分得接到时的使能端上,完成秒、分、时和分隔符的循环计数。整点报时是根据分的A、B输出同时为0时,整点报时模块输出高电平控制报时。LED显示扫描模块根据输入

4、的扫描信号CKDSP轮流选通秒、分、时、分隔符的8位八段数码管,LED显示译码器完成计数器输出的BCD的译码。三细化框图根据自顶向下的方法以及各功能模块的的功能实现上述设计方案应系统细化框图:数字时钟控制单元时调整分调整使能端信号CLK信号时显示分显示秒显示24进制60进制60进制LED显示整点报时花样显示模块化设计(1)秒计时模块秒计时模块由一个60位计数器为主体构成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Setmin:分钟设置信号Enmin:使能输出信号Daout6:0:BCD码输出(2)分计时模块分计时模块由一个60位计数器为主体构成,其输入输出端口组成为:C

5、lk、clk1:计时时钟信号Reset:异步清零信号Sethour:小时设置信号Enmin:使能输出信号Daout6:0:BCD码输出(3)时计时模块时计时模块由24位计数器为主体构成,其输入输出端口组成为:Clk:计时时钟信号Reset:异步清零信号Daout6:0:BCD码输出(4)显示模块系统时间输出由六个七段数码管显示。显示的数据是各计时模块给出的BCD码。(5)调时控制模块该模块主要用于调节时、分显示,用于“对表”。(6)整点报时模块在时钟整点的时候产生扬声器驱动信号。由时钟计时模块中分钟的进行信号进行控制。当contr_en 为高电平时,将输入信号clk 送到输出端speak 用于

6、驱动扬声器,同时在clk 的控制下,输出端lamp2.0进行循环移位。输出控制模块有扬声器控制器子模块组成。2、顶层文件生成前面已经完成了电子时钟电路的各个组成部分的设计,下面把这些组成部分组装起来,形成完整的总体设计。该电子时钟的命名为clock,其外部端口如右图所示。 各个输入/ 输出端口的作用如下: (1) clk 为外部时钟信号,其频率为1Hz,reset 为异步清零信号. (2) sethour 和setmin分别为调时调分脉冲输入信号 ,当en_set为高电平时,每来一个sethour 脉冲或setmin脉冲,时、分输出将分别加1; (3) second6.0为秒的个位和十位BCD

7、 码输出,min60为分钟的个位和十位BCD 码输出,hour6.0为小时的个位和十位BCD 码输出,它们最终中用来驱动七段数码管,lamp2.0为花样显示输出信号,speak 为整点报时扬声器驱动信号 四、编写程序、仿真和分析1、秒计数器1)VHDL语言描述程序见附录2)秒计数器的仿真波形图3)波形分析利用60进制计数器完成00到59的循环计数功能,当秒计数至59时,再来一个时钟脉冲则产生进位输出,即enmin=1;reset作为复位信号低电平有效,即高电平时正常循环计数,低电平清零。因为这种60进制的VHDL语言是很好写的,它并不复杂,再说我们必须要学会这些基本的硬件语言的描写。2、分钟计

8、数器1)VHDL语言描述程序见附录2)分钟计数器的仿真波形图3)波形分析小时计数模块利用24进制计数器,通过分钟的进位信号的输入可实现从00到23的循环计数。 3、小时计数器1)VHDL语言描述程序见附录2)小时计数器的仿真波形图3)波形分析小时计数模块利用24进制计数器,通过分钟的进位信号的输入可实现从00到23的循环计数。4、整点报时报警模块 1)VHDL语言描述程序见附录2)整点报时模块仿真波形图1) 波形分析由图知对于整点报时模块,当分钟计数至59时来一个时钟脉冲则产生一个进位信号,分钟计数到00,此时产生报警信号持续一分钟。当有时钟脉冲时lamp显示灯就闪烁轮续点亮。五、全系统联调1

9、、数字时钟系统原理图2、数字时钟系统波形图仿真六、硬件调试说明1)时、分、秒计时器 时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、.、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、.、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、.、23、00。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲

10、,数字钟将自动显示00点00分00秒。2)校时电路 当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。结论经硬件调试,系统可完成计时,整点报时以及清零等预定功能,此实验基本成功。八、课程总结本次课程设计整个过程中,我的最大体会就是:对知识复习的重要性。在本次的实验设计中,一开始做起来也很不顺手,甚至不知如何下手,印象里非常简单的电路,到了设计出来时才觉得不是易事,主要原因是对相关应用软件的不熟悉,这提醒我对学过的知识要时常复习,加深记忆,熟练运用。还

11、有值得注意的是要把从书本上学到的知识和实际联系起来,这不论对我们以后的学习还是就业,都会起到很大的促进和帮助。通过本次课程设计,巩固了我们以前学过的专业知识,使我们对数字系统结构也有了更进一步的了解与认识,同时对数据库软件技术,语言等系列知识都有了一定的了解与认识。使用技术开发页面的能力也有了提高,也使我们把理论与实践从正真意义上结合了起来,考验了我们的动手能力和查阅相关资料的能力,还有整合材料的能力。这些都是我们在日后的工作学习中十分重要的能力。最后,感谢查老师这段时间的悉心教导。九、参考文献:1潭会生,张昌凡.EDA技术及应用.西安电子科技大学出版社,2001.92李洋. EDA技术使用教

12、程.机械工业出版社,2002.33赵刚.EDA技术简明教程.成都:四川大学出版社,2004.6附 录121、秒计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL co

13、unt:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;BEGINdaout=count;enmin_2=(setmin and clk);enmin=(enmin_1 or enmin_2);process(clk,reset,setmin)beginif(reset=0) then count=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenmin

14、_1=1;count=0000000;elsecount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enmin_1=0 after 100 ns;elseend if;end if;end process;end fun ;2、分计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk,clk1,reset,sethour:IN STD_

15、LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0);SIGNAL enhour_1,enhour_2:STD_LOGIC;BEGINdaout=count;enhour_2=(sethour and clk1);enhour=(enhour_1 or enhour_2);process(clk,reset,sethour)beginif(r

16、eset=0)thencount=0000000;elsif(clkevent and clk=1)thenif(count(3 downto 0)=1001)thenif(count16#60#)thenif(count=1011001)thenenhour_1=1;count=0000000;ELSEcount=count+7;end if;elsecount=0000000;end if;elsif(count16#60#)thencount=count+1;enhour_1=0after 100 ns;elsecount=0000000;end if;end if;end proces

17、s;END fun;3、时计数单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END entity hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 downto 0);BEGINdaout=count;process(clk,reset)beginif

18、(reset=0)thencount=000000;elsif(clkevent and clk=1)thenif (count(3 downto 0)=1001)thenif(count=16#23#)thencount=count+7;elsecount=000000;end if;elsif(count16#23#)thencount=count+1;elsecount=000000;end if;end if;end process;END fun;4、显示单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u

19、nsigned.all;ENTITY deled ISPORT(num:IN std_logic_vector(3 downto 0);led:OUT std_logic_vector(6 downto 0);end deled;ARCHITECTURE fun OF deled ISBEGINled=1111110when num=0000else0110000when num=0001else1101101when num=0010else1111001when num=0011else0110011when num=0100else1011011when num=0101else1011

20、111when num=0110else1110000when num=0111else1111111when num=1000else1111011when num=1001else1110111when num=1010else0011111when num=1011else1001110when num=1100else0111101when num=1101else1001111when num=1110else1000111when num=1111;END fun;5、调时控制单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee

21、.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY seltime ISPORT(clk1,reset:IN STD_LOGIC;sec,min:IN STD_LOGIC_VECTOR(6 downto 0);hour:in std_logic_vector(5 downto 0);daout:OUT STD_LOGIC_vector(3 downto 0);dp:OUT std_LOGIC;sel:out std_logic_vector(2 downto 0);END seltime;ARCHITECTURE fun OF

22、 seltime ISSIGNAL count:STD_LOGIC_vector(2 downto 0);BEGINsel=count;process(clk1,reset)beginif(reset=0)thencount=101)thencount=000;elsecountdaout=sec(3 downto 0);dpdaout(3)=0;daout(2 downto 0)=sec(6 downto 4);dpdaout=min(3 downto 0);dpdaout(3)=0;daout(2 downto 0)=min(6 downto 4);dpdaout=hour(3 downt

23、o 0);dpdaout(3 downto 2)=00;daout(1 downto 0)=hour(5 downto 4);dp=0;end case;end process;end fun;6、整点报时单元代码LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alert ISPORT(clk:IN STD_LOGIC;dain:IN STD_LOGIC_VECTOR (6 DOWNTO 0);speak:OUT STD_LOGIC;lamp:OUT STD_LOGIC_VECTOR

24、 (2 DOWNTO 0);END alert;ARCHITECTURE fun OF alert ISsignal coun:std_logic_vector (1 downto 0);signal count1:std_logic_vector (1 downto 0);BEGINspeaker:process(clk)beginspeak=10)thencount1=00;elsecount1=count1+1;end if;end if;end if;end process speaker;lamper:process(clk)beginif(rising_edge(clk)theni

25、f(coun=10)thenif(coun=00)thenlamp=001;elsif(coun=01)thenlamp=010;elsif(coun=10)thenlamp=100;end if;coun=coun+1;elsecoun=00;end if;end if;end process lamper;END fun;7、顶层代码library ieee;use ieee.std_logic_1164.all;entity clock_top isport(clk,reset,setmin,sethour,clkdsp:in std_logic;speaker:out std_logi

26、c;lamp:out std_logic_vector(2 downto 0);sel:out std_logic_vector(2 downto 0);a,b,c,d,e,f,g,dpout:out std_logic);end clock_top;architecture a of clock_top isCOMPONENT secondPORT(clk,reset,setmin:IN STD_LOGIC;daout:out std_logic_vector(6 downto 0);enmin:OUT STD_LOGIC);END COMPONENT;COMPONENT minutePOR

27、T(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0);END COMPONENT;COMPONENT hourPORT(clk,reset:IN STD_LOGIC;daout:out std_logic_vector(5 downto 0);END COMPONENT;COMPONENT alertPORT(clk:IN STD_LOGIC;dain:in std_logic_vector(6 downto 0);lamp:out std_logic_vector(2 downto 0);speak:OUT STD_LOGIC);END COMPONENT;COMPONENT seltimePORT(clk1,reset:IN STD_LOGIC;sec,min:in std_logic_vector(6 downto 0);hour:in std_logic_vector(5 downto 0);dp:out std_logic;daout:out std_logic_vector(3 downto 0);sel:OUT STD_LOGIC_vector(2 down

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论