2011第7章 EDA技术综合设计应用(讲课用简)课件

上传人:我*** 文档编号:141031111 上传时间:2020-08-03 格式:PPT 页数:45 大小:671KB
返回 下载 相关 举报
2011第7章 EDA技术综合设计应用(讲课用简)课件_第1页
第1页 / 共45页
2011第7章 EDA技术综合设计应用(讲课用简)课件_第2页
第2页 / 共45页
2011第7章 EDA技术综合设计应用(讲课用简)课件_第3页
第3页 / 共45页
2011第7章 EDA技术综合设计应用(讲课用简)课件_第4页
第4页 / 共45页
2011第7章 EDA技术综合设计应用(讲课用简)课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《2011第7章 EDA技术综合设计应用(讲课用简)课件》由会员分享,可在线阅读,更多相关《2011第7章 EDA技术综合设计应用(讲课用简)课件(45页珍藏版)》请在金锄头文库上搜索。

1、2020/8/3,1,第7章 EDA技术综合设计应用,7.1 数字闹钟的设计,2020/8/3,2,7.1 数字闹钟的设计,显示屏: 由4个七段数码管组成,显示时间(闹钟)(时:分) 数字键0-9: 用于输入新的时间或新的闹钟时间; TIME(时间)键: 用于确定新的时间设置; ALARM(闹钟)键: 用于确定新的闹钟时间设置,或显示已设置 的闹钟时间; 扬声器: 在当前时钟时间与闹钟时间相同时,发出蜂鸣声。,7.1.1 系统的设计要求, 设计一个24小时的数字闹钟,它包括以下几个组成部分:,2020/8/3,3,该数字闹钟的面板图:,图7.1数字闹钟的面板图,2020/8/3,4,(1) 计

2、时功能:每隔一分钟计时一次,并显示当前时间。 (2) 闹钟功能:当前时间与闹钟时间相同,扬声器发出蜂鸣声。 (3) 设置新的计时时间:用户用数字键09输入新的时间,然后按 “TIME”键确认。在输入过程中,输入数字在显示屏上从右到左依次显示。例如,用户要设置新的时间12:34,则按顺序输入“1”,“2”,“3”,“4”键,与之对应,显示屏上依次显示的信息为:“1”,“12”,“123”,“1234”。如果用户在输入任意几个数字后较长时间内,例如5s,没有按任何键,则数字闹钟恢复到正常的计时显示状态。,该数字闹钟的功能:,2020/8/3,5,(4) 设置新的闹钟时间:用户用数字键“0”-“9”

3、输入新的时间,然后按“ALARM”键确认。过程与(3)类似。 (5) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。,2020/8/3,6,将该数字闹钟命名为ALARM_CLOCK,根据该数字闹钟的设计要求,其外部端口如图7.2所示。,图7.2 数字闹钟的外部端口,7.1.2 系统的总体设计,1. 整体组装端口说明,2020/8/3,7,输入端口: CLK:外部时钟信号。 RESET:外部复位信号。 KEYPAD : 10位信号,若其中某一位为高电平,则表示用户按下了 相应下标的数字键。例如,若KEYPAD(5) = 1,表示用户

4、按下了数字键“5”。本设计不考虑用户同时按下多个数字键的情况,所以任意时刻KEYPAD中只能有一位为1。 KEY_DOWN:(KEY_DOWN= 1),表示用户按下某一数字键。 ALARM_BUTTON:为高电平时,表示用户按下ALARM键。 TIME_BUTTON:为高电平时,表示用户按下TIME键。,2020/8/3,8, DISPLAY:实际上输出驱动4个七段数码显示管的数据,用于显示时间,如12:20。 SOUND_ALARM:用于控制扬声器发声,当SOUND_ALARM=1时,扬声器发出蜂鸣,表示到了设定的闹钟时间。,输出端口:,2020/8/3,9,(1) 闹钟控制器(ALARM_

5、CONTROLLER):是整个系统正常有序工作的核 心,按设计要求产生相应的控制逻辑,以控制其他各部分的工作。 (2) 译码器(DECODER):可将KEYPAD信号转换为09的整型数,以直观地 表示和处理用户输入的数字。 (3) 键盘缓冲器(KEY_BUFFER):是一个移位寄存器,暂存用户键入的 数字,并且实现用户键入数字在显示器上从右到左的依次显示。这里需 要注意的是,由图7.3可以看出,KEY_BUFFER的时钟端连接的是外部 KEY_DOWN 信号。这表示用户每输入一个数字,KEY_BUFFER移位一次。,2.各组成模块的功能:,根据系统的设计要求,整个系统分为7个模块:,2020/

6、8/3,10,(4) 分频器(FQ_DIVIDER):将较高速的外部时钟频率分频成每分钟一 次的时钟频率,以便进行时钟计数。 (5) 时间计数器(ALARM_COUNTER):实际上是一个异步复位、异步置 数的累加器,通常情况下进行时钟累加计数,必要时可置入新的时钟 值,然后从该值开始新的计数。 (6) 闹钟寄存器(ALARM_REG):用于保存用户设置的闹钟时间,是一 个异步复位寄存器。 (7) 显示驱动器(DISPLAY_DRIVER):根据需要显示当前时间、用户 设置的闹钟时间或用户通过键盘输入的新的时间,同时判断当前时间 是否已到了闹钟时间,实际上是一个多路选择器加比较器。,2020/

7、8/3,11,图7.3 总体结构,2020/8/3,12,(1)模块功能及端口定义: 控制器命名为ALARM_CONTROLLER,其外部如图7.4所示。,图7.4 控制器的外部端口,7.1.3 单元模块设计:,1、闹钟控制器的设计,2020/8/3,13,(1) LOAD_NEW_A: 高电平有效,控制(闹钟时间寄存器)加载新的闹钟时间值。 (2) LOAD_NEW_C: 高电平有效,控制(时钟计数器)设置新的时间值。 (3) SHOW_NEW_TIME: SHOW_NEW_TIME=1:控制(七段数码显示电路)显示新的时间值,即用户通过 数字键输入的时间; SHOW_NEW_TIME=0:

8、当SHOW_A=1,控制显示闹钟时间, 当SHOW_A=0,控制显示当前时间。,输入端口:,(1) CLK:外部时钟信号。 (2) RESET:复位信号。 (3) KEY:用户按下数字键(“0”“9”)标志,高电平有效。 (4) ALARM_BUTTON:用户按下“ALARM”键标志,高电平有效。 (5) TIME_BUTTON:用户按下“TIME”键标志,高电平有效。,输出端口:,2020/8/3,14,S0:表示电路初态即正常时钟计数状态,完成前面设计功能 (1) 的工作。 S1:接收键盘输入状态。在状态S0时用户按下数字键后进入此状态。在此状态下,显示屏上显示的是用户键入的数字。 S2:

9、设置新的闹钟时间。在状态S1时用户按下ALARM 键后进入此状态。 S3:设置新的计时时间。在状态S1时用户按下TIME 键后进入此状态。 S4:显示闹钟时间。在状态S0时用户直接按下ALARM 键后进入此状态。在此 状态下,显示屏上显示的是所设置的闹钟时间。注意:在此状态下,用户按下ALARM 键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0显示数字闹钟时间。 相应的状态转换及控制如表7.1所示。,(2)状态定义: 控制器的功能可以通过有限状态机(FSM)的方式来实现。根据设计要求及端口设置,需要5个状态来实现:,2020/8/3,15,表7.1 控制器状态转换及控制输出表,

10、表7.1中没有显式说明的控制信号赋值,表示信号的值为零。例如在状态S0,当信号KEY =1时,SHOW_NEW_TIME信号的赋值为1,而其他信号LOAD_NEW_A,LOAD_NEW_C和SHOW_A的值此时都赋为0。,2020/8/3,16,S0,S1,S4,S2,S3,(3) 状态转换图:,2020/8/3,17,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.P_ALARM.ALL; ENTITY ALARM_CONTROLLER IS PORT( RESET :IN STD_LOGIC; CLK :IN STD_LOGIC; K

11、EY :IN STD_LOGIC; ALARM_BUTTON :IN STD_LOGIC; TIME_BUTTON :IN STD_LOGIC; LOAD_NEW_A :OUT STD_LOGIC; LOAD_NEW_C :OUT STD_LOGIC; SHOW_NEW_TIME :OUT STD_LOGIC; SHOW_A :OUT STD_LOGIC); END ALARM_CONTROLLER;,(4) VHDL源程序:,2020/8/3,18,ARCHITECTURE ART OF ALARM_CONTROLLER IS TYPE T_STATE IS (S0, S1, S2, S3,

12、S4); CONSTANT KEY_TIMEOUT :T_SHORT := 500; CONSTANT SHOW_ALARM_TIMEOUT : T_SHORT := 500; SIGNAL CURR_STATE : T_STATE; SIGNAL NEXT_STATE : T_STATE; SIGNAL COUNTER_K : T_SHORT; SIGNAL ENABLE_COUNT_K : STD_LOGIC; SIGNAL COUNT_K_END : STD_LOGIC; SIGNAL COUNTER_A : T_SHORT; SIGNAL ENABLE_COUNT_A : STD_LO

13、GIC; SIGNAL COUNT_A_END : STD_LOGIC;,常数名,数据类型,设置值,2020/8/3,19,BEGIN PROCESS(CLK,RESET) BEGIN IF RESET =1 THEN CURR_STATE = S0; - - 异步复位 ELSIF RISING_EDGE(CLK) THEN CURR_STATE = NEXT_STATE; END IF; - - 状态转换 END PROCESS;,2020/8/3,20,PROCESS(KEY,ALARM_BUTTON,TIME_BUTTON, CURR_STATE, COUNT_A_END,COUNT_K

14、_END) BEGIN NEXT_STATE = CURR_STATE; LOAD_NEW_A = 0; LOAD_NEW_C = 0; SHOW_A = 0; SHOW_NEW_TIME = 0; ENABLE_COUNT_K = 0; ENABLE_COUNT_A = 0; - - 设初值,初始化,2020/8/3,21,CASE CURR_STATE IS WHEN S0 = IF (KEY = 1) THEN NEXT_STATE = S1; SHOW_NEW_TIME = 1; - - 控制显示键入的时间 ELSIF (ALARM_BUTTON = 1) THEN NEXT_STAT

15、E = S4; SHOW_A = 1; - - 控制显示闹钟时间 ELSE NEXT_STATE = S0; END IF;,2020/8/3,22,WHEN S1 = IF (KEY = 1) THEN NEXT_STATE = S1; ELSIF (ALARM_BUTTON = 1) THEN NEXT_STATE = S2; LOAD_NEW_A = 1; - - 控制设定新的闹钟时间 ELSIF (TIME_BUTTON = 1) THEN NEXT_STATE = S3; LOAD_NEW_C = 1; - - 控制设定新的计时时间 ELSE IF (COUNT_K_END = 1) THEN NEXT_STATE = S0; ELSE NEXT_STATE = S1; - - 超时判断 END IF; ENABLE_COUNT_K = 1;- - 打开超时判断定时器 END IF; SHOW_NEW_TIME = 1; - - 控制显示键入的时间,2020/8/3,23,WHEN S2 = IF (ALARM_BUTTON =

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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