ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:654.12KB ,
资源ID:9363227      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9363227.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字时钟设计及实现讲解.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字时钟设计及实现讲解.docx

1、数字时钟设计及实现讲解本科实验报告题目:数字时钟设计及实现课程名称: 数字电路课程设计 学院(系): 专 业: 电气工程及其自动化 班 级: 学生姓名: 学 号: 完成日期: 成 绩: 2012 年 12 月 22 日题目:数字时钟设计及实现一 设计要求数字时钟是常见的一种计时装置,数字时钟以1HZ的频率工作。该设计完成数字时钟的运行和显示。其主要功能如下:(1)数字时钟以1HZ的频率工作,其输入频率为1MHZ。(2)数字时钟显示时、分、秒信息。这些显示信息在6个7段数码管上完成。(3)通过按键设置时、分信息,并且具有对数字时钟复位功能。复位键将时、分、秒清0,并做好重新计数的准备。按键具有预

2、置时、分的功能。分别对当前的时和分信息做递增设置和递减设置。二 设计分析及系统方案设计图1给出了数字时钟的结构图。从图中可以看到,数字时钟由复位按键(reset)、小时递增按键(hour_inc)、小时递减按键(hour_dec)、分钟递增按键(min_inc)、分钟递减按键(min_dec)、时钟输入、7段LED显示、LED管选择信号线sel、LED码控制信号线(segment)等部分组成。所有的按键都是低电平有效。LED管选择信号线sel通过控制外部的3-8译码器来选择对应的LED管。LED码控制信号线分别和LED的7个数码控制端a-g相连,用来控制LED上显示的字符,通过合理的控制扫描时

3、钟,就可以得到稳定的时、分、秒的显示。图1 数字时钟结构图三系统以及模块硬件电路设计1、数字时钟控制信号改数字时钟的控制部分由芯片完成。该芯片的输入和输出接口由下面信号组成。(1)输入信号复位信号(reset)时钟输入信号(clk)小时递增信号(hour_inc)小时递减信号(hour_dec)分钟递增信号(min_inc)分钟递减信号(min_dec)。(2)输出信号LED选择信号(sel)LED码显示控制信号(segment)。2、控制模块结构该设计分为下面4个模块:定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。图2给出了这几个模块之间的信号连接关系。(1)按键处理

4、模块由于VHDL语言的规则,将按键的处理和定时模块设计在一起。为了描述清楚,将对按键的处理进行说明。在该设计中,采用异步复位电路方式。当复位信号低有效时,计时器停止计时,时、分、秒清0。图2 电子钟控制模块的内部连接图 对于小时的递增、递减按键操作,通过一个1HZ的计数时钟采样。图3给出了递增、递减的操作时序。图3 预置操作和定时时钟的关系当1HZ的div_clk信号的上升沿到来时,检测hour_inc和hour_dec按键,图中的虚线表示在时钟的上升沿对按键信号进行采样。当hour_inc或hour_dec按键低有效时,对小时进行递加或递减操作。对于分针的递加、递减按键操作,也是通过一个1H

5、Z的计数时钟采样。原理如图4所示。图4 定时器时、分、秒之间的连接关系(2)定时时钟模块定时时钟模块作用就是,将外部提供的1MHZ的时钟通过分频器后向模块内的定时计数模块提供1HZ的定时计数时钟。在设计定时时钟模块时,采用同步计数电路。(3)扫描时钟模块扫描时钟模块的作用就是通过对1MHZ的分频处理后,向显示控制模块提供合适的显示扫描时钟,该始终必须经过合理的设计,才能保证7段数码显示的稳定。在设计扫描时钟模块时,采用同步计数电路。(4)定时计数模块定时计数模块是该设计中最重要的一部分,在设计该模块时,为了便于后续显示控制模块的设计,将时、分、秒进行分离,即小时分成了小时的十位和个位分别处理,

6、分钟分成了分钟的十位和个位分别处理。秒分成了秒的十位和个位分别处理。在该设计中,采用24小时计数模式。例如13:28:57。13为小时的表示,1为小时的十位,3为小时的个位;28为分钟的表示,2为分钟的十位,8为分钟的个位;57为秒的表示,5为秒的十位,7为秒的个位。由于对小时、分钟和秒的十位及个位分别处理,在设计该模块就稍微复杂些。下面逐一进行说明。秒的个位计数从0到9,即十进制计数。当秒的个位计数到9后,准备向秒的十位进位。秒的十位计数从0到5,即六进制计数。当秒的十位计数到5后,准备向分的个位进位。分钟的个位计数从0到9,即十进制计数。当分钟的个位计数到9后,准备向分钟的十位进位。分钟的

7、十位计数从0到5,即六进制计数。当分钟的十位计数到5后,准备向小时的个位进位。对于小时的处理比较复杂,小时的十位和个位之间存在下面的关系:当小时的十位为0或1时,小时的个位可以计数范围为0-9,即十进制计数。当小时的十位为2时,小时的个位可以计数范围为0-3,即四进制计数。图4给出了定时器时、分、秒之间的关系。(5)显示控制模块 显示控制模块主要作用是在7段数码管上正确地显示0-9的数字。Sel三位LED选择线和3-8译码器相连。表1开发系统工作模式:接口名称类型(输入/输出)结构图上的信号名引脚号说明复位信号inResetPin_g26进行复位,显示屏清0时钟输入信号InclkPin_n2输

8、入时钟小时递增信号InHour_incPin_n23用于小时位调节小时递减信号InHour_decPin_p23用于小时位调节分钟递增符号InMin_incPin_w26用于分钟位调节分钟递减符号InMin_decnone用于分钟位调节LED选择信号Outsel用于选择LED信号LED码显示控制信号Outsegment用于控制LED显示屏四系统的VHDL设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clock is -实

9、体定义部分 port( clk:in std_logic; rst:in std_logic; inc_min: in std_logic; sub_min:in std_logic; inc_hour:in std_logic; sub_hour:in std_logic; sel:out std_logic_vector(2 downto 0); q:out std_logic_vector(7 downto 0);end clock;architecture behavioral of clock is -信号定义部分 signal sec_counter1:std_logic_vect

10、or(3 downto 0); signal sec_counter2:std_logic_vector(3 downto 0); signal min_counter1:std_logic_vector(3 downto 0); signal min_counter2:std_logic_vector(3 downto 0); signal hour_counter1:std_logic_vector(3 downto 0); signal hour_counter2:std_logic_vector(3 downto 0); signal divcounter:std_logic_vect

11、or(19 downto 0); signal div_clk:std_logic; signal scancounter:std_logic_vector(1 downto 0); signal scan_clk:std_logic; signal scan_out:std_logic_vector(2 downto 0); signal secseg1,secseg2,minseg1,minseg2,hourseg1,hourseg2:std_logic_vector(7 downto 0);begin process(rst,clk) -计数时钟代码设计 begin if(rst=0)t

12、hen divcounter=x00000; div_clk=0; elsif(rising_edge(clk)then if(divcounter=x7a11f)then divcounter=x00000; div_clk=not div_clk; else divcounter=divcounter+1; end if; end if; end process; process(rst,clk) -数码管扫描时钟 begin if(rst=0)then scancounter=00; scan_clk=0; elsif(rising_edge(clk)then if(scancounte

13、r=11)then scancounter=00; scan_clk=not scan_clk; else scancounter=scancounter+1; end if; end if; end process;process(div_clk,rst) -时钟计数部分主进程beginif(rst=0)then -复位部分 sec_counter1=x0; sec_counter2=x0; min_counter1=x0; min_counter2=x0; hour_counter1=x0; hour_counter2=x0; elsif(rising_edge(div_clk)then

14、-手动调分,递增 if(inc_min=0)then if(min_counter1=x9)then min_counter1=x5)then min_counter2=x0; else min_counter2=min_counter2+1; end if; else min_counter1=min_counter1+1; end if;elsif(sub_min=0)then -手动调分,递减 if(min_counter1=x0)then min_counter1=x9; if(min_counter2=x0)then min_counter2=x5; else min_counter

15、2=mincounter2-1; end if;else min_counter1=min_counter1-1;end if;elsif(inc_hour=0)then -手动调时,增时 if(hour_counter2=x2)then if(hour_counter1=x3)then hour_counter1=x0; hour_counter2=x0; else hour_counter1=hour_counter1+1; end if; else if(hour_counter1=x9)then hour_counter1=x0; hour_counter2=hour_counter2

16、+1; else hour_counter1=hour_counter1+1; end if; end if;elsif(sub_hour=0)then -手动调时,减时 if(hour_counter1=x0)then if(hour_counter2=x0)then hour_counter1=x3; hour_counter2=x2; else hour_counter2=hour_counter2-1; hour_counter1=x9; end if;else hour_counter1=x9)then sec_counter1=x5)then sec_counter2=x9)the

17、n min_counter1=x5)then min_counter2=x0; if(hour_counter2=x2)then if(hour_counter1=x3)then hour_counter1=x0; hour_counter2=x0; else hour_counter1=hour_counter1+1; end if; else if(hour_counter1=x9)then hour_counter1=x0; hour_couner2=hour_counter2+1; else hour_counter1=hour_counter1+1; end if; end if;e

18、lse min_counter2=min_counter2+1;end if;else min_counter1=min_counter1+1;end if;else sec_counter2=sec_counter2+1;end if;else sec_counter1=sec_counter1+1; end if; end if;end if;end process;process(rst,scan_clk) -生成扫描时钟begin if(rst=0)then scan_out=000; elsif(rising_edge(scan_clk)then if(scan_out=101)th

19、en scan_out=000; else scan_outq=secseg1;selq=secseg2;selq=minseg1;selq=minseg2;selq=hourseg1;selq=hourseg2;selq=11111111;selsecseg1secseg1secseg1secseg1secseg1secseg1secseg1secseg1secseg1secseg1secseg1secseg2secseg2secseg2secseg2secseg2secseg2secseg2minseg1minseg1minseg1minseg1minseg1minseg1minseg1m

20、inseg1minseg1minseg1minseg1minseg2minseg2minseg2minseg2minseg2minseg2minseg2hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg1hourseg2hourseg2hourseg2hourseg2=01111111; end case; end process;end behavioral; -程序结束五 结论以及结果说明1.系统运行环境(1)PC机一台(2)Quartus II 6.0软件一套(3)主芯片为ALTERA公司DE2 board(CYCLONE2C55FPGA)2.运行结果 程序运行正常,实验板仿真由于管脚问题没能得以实现。参考文献1 何宾 .EDA原理及应用M.出版地:清华大学出版社,2009.237-247.2 何宾.EDA原理及应用实验教程M. 出版地:清华大学出版社,2009.70-75.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1