多功能数字钟-EDA多功能数字钟设计

上传人:QQ15****706 文档编号:52454143 上传时间:2018-08-21 格式:DOC 页数:41 大小:640.50KB
返回 下载 相关 举报
多功能数字钟-EDA多功能数字钟设计_第1页
第1页 / 共41页
多功能数字钟-EDA多功能数字钟设计_第2页
第2页 / 共41页
多功能数字钟-EDA多功能数字钟设计_第3页
第3页 / 共41页
多功能数字钟-EDA多功能数字钟设计_第4页
第4页 / 共41页
多功能数字钟-EDA多功能数字钟设计_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《多功能数字钟-EDA多功能数字钟设计》由会员分享,可在线阅读,更多相关《多功能数字钟-EDA多功能数字钟设计(41页珍藏版)》请在金锄头文库上搜索。

1、江汉大学文理学院江汉大学文理学院EDA 课程设计报告课程设计题目课程设计题目 多功能数字钟多功能数字钟 部部 (系)(系) 信息技术学部信息技术学部 专专 业业 姓姓 名名 学学 号号 指导教师指导教师 20142014 年年 1212 月月 2929 日日课程设计课程设计总成绩:总成绩:目录目录一、设计目的1二、设计要求1三、硬件方案13.1 设计思路 13.2 设计框图 23.3 数字钟主控电路状态表 3四、软件方案54.1 按键消抖模块 54.2 时钟计数器模块 74.3 显示译码模块 .174.4 分频器模块 .194.5 主控制电路模块 .214.5.1 计数器控制模块214.5.2

2、 闹钟计数器模块254.5.3 闹钟控制模块274.5.4 显示输出控制模块324.5.5 led 控制模块 344.5.6 主控模块374.6 电子钟系统原理图 .38五、实现过程中遇到的问题及措施.39六、设计心得体会.39七、参考文献.391一、设计目的一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。能对VHDL 语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。 在成功掌握软件操作基础上,将所数字电路的基础课知识与VHDL 语言的应用型知识结合起来并与实际设计,操作联系起来,即 “理论联系实际” 。深入了解 V

3、HDL 语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。对 EDA 技术有初步的认识,并开始对EDA 技术的开发创新有初步的理解。二、设计要求二、设计要求设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校时间,每逢整点,产生报时音报时。三、硬件方案三、硬件方案3.1 设计思路设计思路根据设计要求进行分析,数字钟应当有计数器, 分频器,按键消抖,闹钟,显示及主控模块构成。分频器用来提供时钟,计数器用于计时,按键消抖为系统提供准确的按键控制信号输入,闹钟用于

4、提供闹钟功能,显示模块显示时间,主控模块根据按键输入控制各个模块以实现所需求功能。在此设计中已将闹钟模块融入主控模块中。23.2 设计框图设计框图设计系统框图如图 3-1 所示。图 3-1 数字钟系统框图分频器模块:48M 时钟信号输入,可以提供多种时钟信号输出。时钟计数模块:由 60 进制,24 进制计数器以及一些附加功能模块组成(设置时间和检测整点等功能)。按键消抖模块:消除机械按键抖动,提供更稳定的信号输入。显示译码:将要显示的数据经过译码 以动态扫描的方式显示在数码管上。可以通过按键显示时间或设置闹钟的时间。蜂鸣器及 LED 输出口:此模块无代码,仅是连接外部蜂鸣器和 LED 的端口。

5、主控模块:主控模块是整个核心,故将单独进行说明。数字钟主控模块框图如图 3-2 所示。3图 3-2 数字钟主控模块框图计数器控制模块: 1HZ 时钟信号输入,按键控制计数器模块对计数器计数及设置计数器的值(即设置时间) 。LED 控制模块:通过按键控制,显示闹钟开启与关闭,以及设置时间和设置闹钟时用于指示当前设置为分钟还是时钟。闹钟计数器模块:此模块跟计数器模块一样。通过按键是计数器自增。来设置闹钟时间。闹钟控制模块:通过计数器输入来判断整点,计数器输入与闹钟计数器模块进行比较。以此来实现闹钟功能。显示输出模块: 显示主要有三部分,一是正常显示时间,二是显示设置时间,三是闹钟时间。具体显示那一

6、部分是通过按键状态来判断。3.3 数字钟主控电路状态表数字钟主控电路状态表用两个电平信号 A、B 进行模式选择,AB=00 为模式 0,系统为计时状态;AB=01 为模式 1,系统为手动校时状态;AB=10 为模式 2,系统为闹钟设置状态。设置一个 turn 信号,当 turn=0 时,表示在手动校对时,选择调整分钟部分;当 turn=1 时,表示在手动校对时,选择调整小时部分。4设置一个 change 信号,在手动校时或闹钟设置模式下,每按一次,计数器加 1。设置一个 reset 信号,当 reset=0 时,整个系统复位;当 reset=1 时,系统进行计时或其他特殊功能操作。设置一个闹钟

7、设置信号 reset1,当 reset1=0 时,对闹钟进行设置,当reset1=0 时,关闭闹钟信号。设置状态显示信号(连发光二极管):LD_alert 指示是否设置了闹铃功能;LD_h 指示当前调整的是小时信号;LD_m 指示当前调整的是分钟信号。当闹钟功能设置后(LD_alert=1) ,系统应启动一个比较电路,当计时与预设闹铃时间相等时,启动闹铃声,直到关闭闹铃信号有效。整点报时部分由分和秒计时同时为 0(或 60)启动,与闹铃共用一个扬声器驱动信号 out。系统计时时钟为 clk=1Hz,选择另一时钟 clk_lk=1024Hz 作为产生闹铃声、报时音的时钟信号。主控电路状态表如表

8、3-1 所示。表 3-1 数字钟主控电路状态表模式选择秒、分、时计数器秒冲输出状态备注resetreset1A BturnLD_hLD_mLD_alert0xx xxx000系统复位1x0 0xclk000系统计时1x0 10change=分计数器加 10101x0 11change=时计数器加 1100手动校时111 00change=分计数器加 1011111 01change=时计数器加 1101设置闹钟510x xxx000关闭闹钟四、软件方案四、软件方案4.1 按键消抖模块按键消抖模块消除按键抖动,按键检测时钟为 1kHZ,如果为其它时钟,请修改计数器 计数值,默认时间为 5ms。按

9、键消抖符号图如图 4-1-1 所示图 4-1-1 按键消抖符号图端口说明:Key_in : 按键输入端。Key_out : 按键去抖后输出端。Clk_1k : 按键检测时钟信号(1kHZ)。按键消抖代码: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;entity xiaodou isport (key_in : in std_logic; key_out : out std_logic; clk_1k : in std_logic

10、); end;6architecture bhv of xiaodou is signal count : std_logic_vector (2 downto 0); begin process (clk_1k) begin if (clk_1kevent and clk_1k=1) then if key_in=0 then if count=5 then count select_wei select_wei select_wei select_wei select_wei select_wei null;end case; end process; - 显示译码19process (d

11、ata) begin case (data) is when x“0“ = data_out data_out data_out data_out data_out data_out data_out data_out data_out data_out null; end case; end process; end;显示译码模块仿真图如图 4-3-2 所示图 4-3-2 显示译码模块仿真图4.4 分频器模块分频器模块分频器模块提供各种频率的时钟信号源,这次设计采用的实验板晶振频率 为 48M,必须经过分频才能为各模块提供时钟。由于晶振频率较大,故分频所 用的计数器为约翰逊计数器。此模块以

12、48MHZ 频率输入,输出 1HZ 和 1KHZ 两种 频率。由六分频,八分频,十分频模块级联构成,下面将以六分频为例进行说 明。 分频器原理图如图 4-4-1 所示20图 4-4-1 分频器原理图分频器模块图如图 4-4-1 所示图 4-4-1 分频器模块图六分频模块符号图如图 4-4-2 所示图 4-4-2 六分频模块符号图 六分频模块代码: library ieee; use ieee.std_logic_1164. all; use ieee.std_logic_arith. all; use ieee.std_logic_unsigned. all;21entity john_6 i

13、s port (clk : in std_logic; clk_out : buffer std_logic ); end;architecture a of john_6 is signal cntQ: std_logic_vector(2 downto 0); begin process(clk) begin if (rising_edge(clk) then cntQ(2 downto 1) clk_disp clk_disp clk_disp null;end case;else clk_disp if (turn = 0) then clkout_minute_t clkout_ho

14、ur_t if (turn = 0) then clkout_minute_a clkout_hour_a if (alarm = 1 and reset1=1) then beep_out beep_out ld_alert 36ld_alert if reset1 = 1 then ld_alert null;end case;else ld_alert = 0;ld_h = 0;ld_m = 0;end if;end process;end;Led 控制模块仿真图如图 4-5-15 所示37图 4-5-15 Led 控制模块仿真图4.5.6 主控模块主控模块主控模块原理图如图 4-5-1

15、6 所示图 4-5-16 主控模块原理图主控模块符号图如图 4-5-17 所示38图 4-5-17 主控模块符号图4.6 电子钟系统原理图电子钟系统原理图电子钟系统原理图如图 4-6-1 所示 图 4-5-1 电子钟系统原理图五、实现过程中遇到的问题及措施五、实现过程中遇到的问题及措施(1)分频器模块设计出来不稳定,计数过快,导致整个系统不能正常工作, 分频器输出频率跟设计需求的频率不一样。进过分析和排除最终确定问题出在 分频计数器上,由于输入为 48MHZ,频率比较大,会导致计数器出现尖峰脉冲, 最后用约翰逊计数器替代掉普通计数器解决问题。 (2)数码管只能显示 4 位,高两位不能显示,后四位工作正常,经过排除 最后问题问题出在 IO 驱动。由于数码管的所需电流较大,IO 的输出电流和灌 电流都是有限制的,在数码管段选加入 74HC573,位选端加入 74HC138。整个显39示部分亮度也比较高,显示也正常了。 (3)电子钟计数初值不为零,分钟和时钟上电后为 1,而按键 turn 切换会 导致时钟计数器自加,但闹钟计数器正常。由于按键 turn 切换在计数器时钟输 入端产生一个上升沿,故在其中间加入反相器(见图 4-5-1 电子钟系统原理图) , 经过测试一切正常。六、设计心得体会六、设计心

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 论文指导/设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号