EDA课程设计报告(数字电子时钟)

上传人:油条 文档编号:116020029 上传时间:2019-11-15 格式:DOCX 页数:16 大小:313.57KB
返回 下载 相关 举报
EDA课程设计报告(数字电子时钟)_第1页
第1页 / 共16页
EDA课程设计报告(数字电子时钟)_第2页
第2页 / 共16页
EDA课程设计报告(数字电子时钟)_第3页
第3页 / 共16页
EDA课程设计报告(数字电子时钟)_第4页
第4页 / 共16页
EDA课程设计报告(数字电子时钟)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《EDA课程设计报告(数字电子时钟)》由会员分享,可在线阅读,更多相关《EDA课程设计报告(数字电子时钟)(16页珍藏版)》请在金锄头文库上搜索。

1、 EDA课程设计报告设计题目: 数字时钟的设计 班 级: 电气工程及其自动化 姓 名: 学 号: 日 期: 2014年6月15日 目录摘要一、课程设计任务及要求31.1实验目的31.2功能设计4二、整体设计思想42.1性能指标及功能设计42.2总体方框图4三、详细设计53.1数字时钟的结构:53.2控制模块的结构53.3.1按键处理模块63.3.2定时时钟模块63.3.3扫描时钟模块63.3.4定时计数模块63.3.5显示控制模块7四、主程序.7五、实验步骤145.1工程建立及存盘 145.2时序仿真 145.3引脚锁定 145.4硬件测试 155.5实验结果 15结束语 15参考文献 16E

2、DA技术实现的数字电子时钟设计作者: 指导老师: 摘 要 EDA技术在硬件实现方面融合了大规模集成电路制造技术,IC版图设计技术、ASIC测 试与封装技术、FPGA /CPLD编程下载技术、自动检测技术等;EDA技术为现代电子理论和设计的表达与实现提供了可能性。在现代技术的所有领域中,纵观许多得以飞速发展的科学技术,多为计算机辅助设计,而非自动化设计。显然,最早进入设计自动化的技术领域之一是电子技术,这就是为什么电子技术始终处于所有科学技术发展最前列的原因之一。不难理解,EDA技术已不是某一学科的分支,或某种新的技能技术,应该是一门综合性学科。它融合多学科于一体,打破了软件和硬件间的壁垒,是计

3、算机的软件技术与硬件实现、设计效率和产品性能合二为一,它代表了电子设计技术合应用激活速 的发展方向。电子时钟以成为人们常生活中数字电子钟一般由振荡器,分频器,译码器,显示器等部分组成。电子时钟的应用非常广泛,应用于人家庭或车站、剧场、办公室等公共场所,给人们的生活,学习,工作,娱乐带来极大的便利, 尽管目前市场上以有现成电子时钟集成电路芯片,价格便宜这些都是数字电路中最基本的,应用最广的电路。数字电子钟的基本逻辑功能框图如下:它是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。他的计时装置的周期为24小时,显示满刻度为23时 59分59秒,另外应有校时功能。 关键字:EDA;VHDL

4、语言;电子时钟 一、 课程设计任务及要求1.1实验内容选用合适的可编程逻辑器件及外围电子元器件。设计一个数字电子钟,利用EDA软件(QUARTUS)进行编译及仿真,设计输入可采取VHDL硬件描述语言输入法和原理图输入法,并下载到EDA实验开发系统,连接外围电路,完成实际测试。1.2设计要求1)用六个数码管显示时、分、秒信息2)设置复位功能,可通过复位键将时、分、秒清零3)具有时、分预置功能,可分别对时和分做递增设置和递减设置二、整体设计思想2.1性能指标及功能设计 数字钟时常见的一种计数装置,数字钟以1Hz的频率工作。该设计完成数字钟的运行和显示。其主要功能有: (1)数字钟以1Hz的频率工作

5、,其输入频率为1MHz。 (2)数字钟显示时、分、秒信息。这些显示信息在6个7段数码管上完成。 (3)通过按键设置时、分信息。并且具有对数字钟的复位功能。 复位键将时、分、秒清零,并做好重新计数的准备。按键具有预置时、分的功能。分别对当前的时和分信息做递增设置和递减设置。2.2总体方框图三、详细设计3.1数字时钟的结构该数字钟的控制部分由PLD芯片完成。该芯片的输入和输出接口由下面信号组成:输入信号:复位信号(reset)时钟输入信号(clk)小时递增信号(inc_hour)小时递减信号(sub_hour)分钟递增信号(inc_min)分钟递减信号(sub_min)输出信号:7段数码管选信号(

6、sel)7段数码管段选信号(q)3.2控制模块结构该设计分成下面五个模块:定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。图11.2给出了这几个模块之间的信号连接关系。 3.2.1、按键处理模块 由于VHDL语言的规则,将按键的处理和定时模块设计在一起。为了描述清楚,将对按键的处理进行说明。在该设计中,采用异步复位电路方式。当复位信号低有效时,计数器停止计数,时、分、秒清零。对于小时的递增、递减按键操作,通过一个1Hz的计数时钟采样。图11.3给出了递增、递减的操作时序。当1Hz的div_clk信号的上升沿到来时,检测hour_inc和hour_dec按键,图中的虚线表示

7、在时钟的上升沿对按键信号进行采样。当hour_inc或hour_dec按键低有效时,对小时进行递加或递减操作。对于分钟的递加、递减按键操作,也是通过一个1Hz的计数时钟采样。原理同图11.3。 3.2.2、定时时钟模块定时时钟模块其作用就是将外部提供的1MHz的时钟,通过分频器后向模块内的定时计数模块提供1Hz的定时计数时钟。在设计定时时钟模块时,采用同步计数电路。 3.2.3、扫描时钟模块扫描时钟模块的作用就是通过对1MHz的分频处理后,向显示控制模块提供合适的显示扫描时钟,该时钟必须经过合理的设计,才能保证7段数码显示的稳定。在设计扫描时钟模块时,采用同步计数电路。 3.2.4、定时计数模

8、块 定时计数模块是该设计中最重要的一部分,在设计该模块时,为了便于后续显示控制模块的设计,将时、分、秒进行分离,即小时分成了小时的十位和个位分别处理,分钟分成了分钟的十位和个位分别处理。秒分成了秒的十位和个位分别处理。在该设计中,采用24小时计数模式。 例如:13:28:57。13为小时的表示,1为小时的十位,3为小时的个位;28为分钟的表示,2为分钟的十位,8为分钟的个位;57为秒的表示,5为秒的十位,7为秒的个位。秒的个位计数从0-9,即十进制计数。当秒的个位计数到9后,准备向秒的十位进位。秒的十位计数从0-5,即六进制计数。当秒的十位计数到5后,准备向分的个位进位。分钟的个位计数从0-9

9、,即十进制计数。当分钟的个位计数到9后,准备向分钟的十位进位。分钟的十位计数从0-5,即六进制计数。当分钟的十位计数到5后,准备向小时的个位进位。对于小时的处理比较复杂,小时的十位和个位之间存在下面的关系:(1)当小时的十位为0或1时,小时的个位可以计数范围为0-9,即十进制计数;(2)当小时的十位为2时,小时的各位可以计数的范围为0-3,即四进制计数;3.2.5、显示控制模块显示控制模块主要作用是在7段数码管上正确的显示0-9的数字。sel三位选择线和3-8译码器相连四、主程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGI

10、C_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clock is 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(5 downto 0);q : out std_logic_vector(7 downto 0); end clock;architecture Beh

11、avioral of clock is signal sec_counter1:std_logic_vector(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_logi

12、c_vector(3 downto 0); signal divcounter : std_logic_vector(8 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); beginprocess(rst,clk) begin if(rst=1)then divcounter=000000000; div_clk=0;elsif(rising_edge(clk)thenif(divcounter=111111111) then divcounter=000000000; div_clk=not div_clk; else divcounter=divcounter+1; end if;end if; end process;process(rst,clk) beginif(rst=1)then scancounter=0

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

当前位置:首页 > 中学教育 > 其它中学文档

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