带闹钟功能的24小时制闹钟系统的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章
前面已经完成了计数器各个总成部分的设计。下面把这些组成部分组装起来,形成完整的总体设计。该计时器命名为ALARM_CLOCK,其外部端口如下图所示。
对应5种不同的状态,是闹钟系统分别执行正常技术状态(S0),键盘输入状态(S1),设置闹钟时间状态(S2),设置计数器状态(S3),显示闹钟时间状态(S4).
(5)给定CLK输入信号,并用数字键键入1235,同时给定ALARM_BUTTON有效电平,闹钟显示频显示的为闹钟时间。
第四章
4.1
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE P_ALARM IS
SUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9;
SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 65535;
TYPE T_CLOCK_TIME IS ARRAY (3 DOWNTO 0) OF T_DIGITAL;
TYPE T_DISPLAY IS ARRAY (3 DOWNTO 0) OF STD_LOGIC_VECTOR(6 DOWNTO 0);
2.1译码器的设计:
本模块的功能是将每次按下难找那个系统的数字键盘后产生的一个数字所对应的10位二进制数据信号转换为1为10进制整数信号;以作为小时,分钟计数的四个数字之一,其中,KEYPAD为输入端口,接受10位二进制数据信号;VALUE为输出端口,输出相应的1位十进制整数信号。
2.2
本模块的功能是在CLK端口输入信号的上升沿同步下,将KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,原有的信息依次向左移,最高位信息丢失;RESET端口的输入信号对NEW_TIME端口输出信号进行异步清零复位。
b、当KEY为高电平时(KEY=‘1’),表示按下数字键(“0”~“9”)。
c、当ALARM_BUTTON为高电平时,表示按下“ALARM”键。
d、当TIEM_BUTTON为高电平时,表示按下“TIME”。
e、当LOAD_NEW_A为高电平时,控制加载新的闹钟时间。
f、当LOAD_NEW_C为高电平时,控制设置新的时间值。
操作流程如下
(1) 给定CLK输入信号,其他输入给定无效电平,闹钟工作于正常计数状态。
(2)给定CLK输入信号,并用数字键入 ,闹钟处于键盘输入数字状态,输出不变。
(3)给定CLK输入信号,并用数字键入1235,同时给定ALARM_BUTTON有效电平,闹钟时间设置状态,显示频显示该闹钟时间。
(4)给定CLK输入信号,并用数字键键入1235,同时给定ALARM_TIME有效电平,闹钟处于新的计数时间设置状态,显示频显示改时间,并把它作为计时时间起点。
ARCHITECTURE ART OF DECODER IS
BEGIN
WITH KEYPAD SELECT
VALUE<=0 WHEN "0000000001",
1 WHEN "0000000010",
2 WHEN "0000000100",
3 WHEN "0000001000",
4 WHEN "0000010000",
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY ALARM_REG IS
PORT(NEW_ALARM_TIME:IN T_CLOCK_TIME;
LOAD_NEW_A:IN STD_LOGIC;
(5)Leabharlann Baidu显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。
1.2
根据本设计的要求,闹钟系统包括以下几个子系统:
1用于键盘输入的缓冲器
2用于时钟计时的计数器;
3用于保存闹钟时间的寄存器;
4用于显示的气短数码管闲事电路和控制以上各个电路协同工作的控制器。
g、当SHOW_NEW_TIME为高电平时,控制显示新的时间值,即通过数字键输入的时间;否则,当SHOW_NEW_TIME为低电平时,根据SHOW_A信号的值控制显示当前时间或闹钟时间.此时,当SHOW_A为高电平时,控制显示闹钟时间,否则,显示当前时间.
控制器的功能可以通过有限状态自动机(FSM)的方式来实现.根据设计的具体要求及端口设置,需要五个状态实现:
计时器设计要求完成如下功能。
(1) 计时功能:这是 本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。
(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。
(3) 设置新的计时器时间:用户用数字键‘0’~‘9’输入新的时间,然后按 "TIME"键确认。
(4) 设置新的闹钟时间:用户用数字键“0”~“9”输入新的时间,然后按“ALARM”键确认。过程与(3)类似。
4.2
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY DECODER IS
PORT(KEYPAD:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
VALUE:OUT T_DIGITAL);
END ENTITY DECODER;
"0000111",
"1111111",
"1110011" );
TYPE KEYPAD9 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR (9 DOWNTO 0);
CONSTANT KEYNUMBER: KEYPAD9 :=( "0000000001", --0
"0000000010", --1
显示器的功能是根据需要的显示当前时间、设置的闹钟时间或通过键盘输入的新时间同时判断当前时间是否和设定的时间一致是一个多路选择加比较器,从仿真图中看到相应的输入输出,程序功能正常
2.6
模块的功能是将CLK_IN端口输入的时钟信号分频后送给CLK_OUT端口:当RESET端口输入信号有效时,CLK_OUT端口输出信号清零。
分频器将比较高速的外部时钟频率分成每分钟一次的时钟频率,以便进行时钟计数,从仿真图上可以看到CLK_IN端口的输入的时钟信号分频后输出,当RESET端口为高电平时,输出端口CLK_OUT输出信号清零
2.7控制器的设计:
控制器的功能是控制各模块协同工作的,端口及各自作用为:
a、CLK为外部始时钟信号,REXET为复位信号。
异步复为寄存器,从图中可以看到当控制信号为高电平寄存器把NEW_ALARM_TIME端口的输入信号值(即闹钟时间)输出,程序功能正常。
2.4
当RESET端口输入信号为高电平时,对CURRENT_TIME端口输出信号清零复位;当LOAD_NEW_C端口输入信号为高电平时,将NEW_CURRENT_TIME端口的输入信号输出给CURRENT_TIME端口。RESET端口的控制优先于LAOD_NEW_C端口。当这两个控制信号都无效时,在时钟上升沿同步下,对CURRENT_TIME端口输出信号累加1,并根据小时,分钟的规律处理进位
S0:表示电路初态即正常时钟计数状态,完成前面设计功能a的工作.
S1:接受键盘输入状态.在状态S0时用换下数字键后进入此状态.在此状态下,显示屏上显示的是键入的数字.
S2:设置新的闹钟时间.在状态S1时按下ALARM键后进入比赛.
S3:设置新的计时器时间.在状态S1时按下TIME键后进入此状态.
S4:显示闹钟时间.在状态S0时按下ALARM键后进入此状态.在此状态下,显示屏上显示的是所设置的闹钟时间.在此状态下,按下ALARM键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0显示计时器时间.
各部分的功能:
(1)译码器(DECOER)可将KEYPAD信号转换为0-9的整数可直观额表示和处理用户输入的数字。
(2)键盘缓冲器(KEY-BUFFER)是一个移位寄存器,暂存用户键入的数字并且实现用户键入数字在显示器上从左到右依次显示,由上图我们可以看出KEY_BUFFER的时钟端连接的是外部KEY_DOWN的信号。这个表示用户输入一个数字KEY_BUFFER移位一次。
(6)显示器(DISPLAY_DRIVER)根据需要显示当前时间,用户设置的闹钟时间或用户通过键盘键入的新时间,同时判断当前时间是否已经到了闹钟实际上是一个多路选择器加比较器。
(7)控制器(ALARM_CONTEOLLER)设计的核心部分,按设计的要求产生相应的控制逻辑,以控制其他个部分额工作。
第二章
"0000000100", --2
"0000001000", --3
"0000010000", --4
"0000100000", --5
"0001000000", --6
"0010000000", --7
"0100000000", --8
"1000000000" );--9
END PACKAGE P_ALARM;
储存键入的数字,并实现键入数字在显示屏上从左到右的显示,RESET端口的输入信号对NEW_TIME端口的输出信号清零,在CLK端口输入信号的上升沿同步下,KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,依次左移,最高为丢失,由图可知,程序功能正常。
2.3
闹钟寄存模块的功能是在时钟上升沿同步下,根据LOAD_NEW_A端口的输入信号控制ALARM_TIME端口的输出;当控制信号有效时,把NEW_ALARM_TIME端口的输入信号值输出;RESET端口输入信号随ALAR_TIME端口的输出进行异步的清零复位。
TYPE SEG7 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(6 DOWNTO 0);
CONSTANT SEVEN_SEG: SEG7 :=("0111111",
"0000110",
"1011011",
"1001111",
"1100110",
"1101101",
"1111101",
计数器实际是一个异步复位、异步指数的累加器,由图可以看出,当没有新的地输入值时,只是进行时钟累加计数,在输入新的时钟值时又开始新的计数。
2.5
本模块的功能是当SHOW_NEW_TIME端口输入信号有效时,根据NEW_TIME端口输入信号,产生相应的四个七段数码显示器的驱动数据,并在DISPLAY端口输出该信号没为高电平时,根据ALARM_TIME端口的输入信号产生相应的四个七段数码显示管的驱动数据,并在DISPLAY端口输出该信号:为低电平时,根据CURRENT_TIME端口的输入信号,对DISPLAY端口进行驱动,当ALARM_TIME端口的输入信号值与CURRENT_TIME端口的输入喜好值相同时,SOUND_ALARM端口的输出信号有效,反之无效。
SOPC/EDA综合课程设计报告
设计题目:带闹钟功能的24小时制闹钟系统的设计
设计者:
学号:
班级:
指导老师:
完成时间:
设计报告
综合测试
总评
格式
(10)
内容
(40)
图表
(10)
答辩
(20)
平时
(20)
第一章
1.1
随着电子技术与计算机技术的高速发展,电子电路的设计产品无处不在。开发周期短兼容性的电子设计自动化(EDA)已经成为电子设计领域的潮流。本设计的研究目的也是利用EDA技术来实现带闹钟功能的24小时计时器。分别介绍研究背景、发展动态、研究思路、系统原理、系统功能分析、系统结构、各个模块分析与设计以及主要工作过程。其中将重点介绍Quartus II 软件进行各部分器件程序的编辑、综合、波形仿真。从而实现了一种基于FPGA的精确可靠的数字闹钟系统。
(3)分频器(FQ_DIVIER)将较高速的外部时钟频率成为每分钟一次的时钟频率以便进行时钟的计时。
(4)计数器(ALARM_COUNTER)实际上市一个异步复位、异步置数的累加器,通常情况下进行时间累加计数必要时可置入新时钟值然后从该值开始新的计数。
(5)寄存器(ALARM_REG)用于保存用户设置的闹钟时间,是一个异步复位寄存器。
5 WHEN "0000100000",
6 WHEN "0001000000",
7 WHEN "0010000000",
8 WHEN "0100000000",
9 WHEN "1000000000",
0 WHEN OTHERS;
END ARCHITECTURE ART;
4.3
LIBRARY IEEE;
前面已经完成了计数器各个总成部分的设计。下面把这些组成部分组装起来,形成完整的总体设计。该计时器命名为ALARM_CLOCK,其外部端口如下图所示。
对应5种不同的状态,是闹钟系统分别执行正常技术状态(S0),键盘输入状态(S1),设置闹钟时间状态(S2),设置计数器状态(S3),显示闹钟时间状态(S4).
(5)给定CLK输入信号,并用数字键键入1235,同时给定ALARM_BUTTON有效电平,闹钟显示频显示的为闹钟时间。
第四章
4.1
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE P_ALARM IS
SUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9;
SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 65535;
TYPE T_CLOCK_TIME IS ARRAY (3 DOWNTO 0) OF T_DIGITAL;
TYPE T_DISPLAY IS ARRAY (3 DOWNTO 0) OF STD_LOGIC_VECTOR(6 DOWNTO 0);
2.1译码器的设计:
本模块的功能是将每次按下难找那个系统的数字键盘后产生的一个数字所对应的10位二进制数据信号转换为1为10进制整数信号;以作为小时,分钟计数的四个数字之一,其中,KEYPAD为输入端口,接受10位二进制数据信号;VALUE为输出端口,输出相应的1位十进制整数信号。
2.2
本模块的功能是在CLK端口输入信号的上升沿同步下,将KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,原有的信息依次向左移,最高位信息丢失;RESET端口的输入信号对NEW_TIME端口输出信号进行异步清零复位。
b、当KEY为高电平时(KEY=‘1’),表示按下数字键(“0”~“9”)。
c、当ALARM_BUTTON为高电平时,表示按下“ALARM”键。
d、当TIEM_BUTTON为高电平时,表示按下“TIME”。
e、当LOAD_NEW_A为高电平时,控制加载新的闹钟时间。
f、当LOAD_NEW_C为高电平时,控制设置新的时间值。
操作流程如下
(1) 给定CLK输入信号,其他输入给定无效电平,闹钟工作于正常计数状态。
(2)给定CLK输入信号,并用数字键入 ,闹钟处于键盘输入数字状态,输出不变。
(3)给定CLK输入信号,并用数字键入1235,同时给定ALARM_BUTTON有效电平,闹钟时间设置状态,显示频显示该闹钟时间。
(4)给定CLK输入信号,并用数字键键入1235,同时给定ALARM_TIME有效电平,闹钟处于新的计数时间设置状态,显示频显示改时间,并把它作为计时时间起点。
ARCHITECTURE ART OF DECODER IS
BEGIN
WITH KEYPAD SELECT
VALUE<=0 WHEN "0000000001",
1 WHEN "0000000010",
2 WHEN "0000000100",
3 WHEN "0000001000",
4 WHEN "0000010000",
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY ALARM_REG IS
PORT(NEW_ALARM_TIME:IN T_CLOCK_TIME;
LOAD_NEW_A:IN STD_LOGIC;
(5)Leabharlann Baidu显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。
1.2
根据本设计的要求,闹钟系统包括以下几个子系统:
1用于键盘输入的缓冲器
2用于时钟计时的计数器;
3用于保存闹钟时间的寄存器;
4用于显示的气短数码管闲事电路和控制以上各个电路协同工作的控制器。
g、当SHOW_NEW_TIME为高电平时,控制显示新的时间值,即通过数字键输入的时间;否则,当SHOW_NEW_TIME为低电平时,根据SHOW_A信号的值控制显示当前时间或闹钟时间.此时,当SHOW_A为高电平时,控制显示闹钟时间,否则,显示当前时间.
控制器的功能可以通过有限状态自动机(FSM)的方式来实现.根据设计的具体要求及端口设置,需要五个状态实现:
计时器设计要求完成如下功能。
(1) 计时功能:这是 本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。
(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。
(3) 设置新的计时器时间:用户用数字键‘0’~‘9’输入新的时间,然后按 "TIME"键确认。
(4) 设置新的闹钟时间:用户用数字键“0”~“9”输入新的时间,然后按“ALARM”键确认。过程与(3)类似。
4.2
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY DECODER IS
PORT(KEYPAD:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
VALUE:OUT T_DIGITAL);
END ENTITY DECODER;
"0000111",
"1111111",
"1110011" );
TYPE KEYPAD9 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR (9 DOWNTO 0);
CONSTANT KEYNUMBER: KEYPAD9 :=( "0000000001", --0
"0000000010", --1
显示器的功能是根据需要的显示当前时间、设置的闹钟时间或通过键盘输入的新时间同时判断当前时间是否和设定的时间一致是一个多路选择加比较器,从仿真图中看到相应的输入输出,程序功能正常
2.6
模块的功能是将CLK_IN端口输入的时钟信号分频后送给CLK_OUT端口:当RESET端口输入信号有效时,CLK_OUT端口输出信号清零。
分频器将比较高速的外部时钟频率分成每分钟一次的时钟频率,以便进行时钟计数,从仿真图上可以看到CLK_IN端口的输入的时钟信号分频后输出,当RESET端口为高电平时,输出端口CLK_OUT输出信号清零
2.7控制器的设计:
控制器的功能是控制各模块协同工作的,端口及各自作用为:
a、CLK为外部始时钟信号,REXET为复位信号。
异步复为寄存器,从图中可以看到当控制信号为高电平寄存器把NEW_ALARM_TIME端口的输入信号值(即闹钟时间)输出,程序功能正常。
2.4
当RESET端口输入信号为高电平时,对CURRENT_TIME端口输出信号清零复位;当LOAD_NEW_C端口输入信号为高电平时,将NEW_CURRENT_TIME端口的输入信号输出给CURRENT_TIME端口。RESET端口的控制优先于LAOD_NEW_C端口。当这两个控制信号都无效时,在时钟上升沿同步下,对CURRENT_TIME端口输出信号累加1,并根据小时,分钟的规律处理进位
S0:表示电路初态即正常时钟计数状态,完成前面设计功能a的工作.
S1:接受键盘输入状态.在状态S0时用换下数字键后进入此状态.在此状态下,显示屏上显示的是键入的数字.
S2:设置新的闹钟时间.在状态S1时按下ALARM键后进入比赛.
S3:设置新的计时器时间.在状态S1时按下TIME键后进入此状态.
S4:显示闹钟时间.在状态S0时按下ALARM键后进入此状态.在此状态下,显示屏上显示的是所设置的闹钟时间.在此状态下,按下ALARM键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0显示计时器时间.
各部分的功能:
(1)译码器(DECOER)可将KEYPAD信号转换为0-9的整数可直观额表示和处理用户输入的数字。
(2)键盘缓冲器(KEY-BUFFER)是一个移位寄存器,暂存用户键入的数字并且实现用户键入数字在显示器上从左到右依次显示,由上图我们可以看出KEY_BUFFER的时钟端连接的是外部KEY_DOWN的信号。这个表示用户输入一个数字KEY_BUFFER移位一次。
(6)显示器(DISPLAY_DRIVER)根据需要显示当前时间,用户设置的闹钟时间或用户通过键盘键入的新时间,同时判断当前时间是否已经到了闹钟实际上是一个多路选择器加比较器。
(7)控制器(ALARM_CONTEOLLER)设计的核心部分,按设计的要求产生相应的控制逻辑,以控制其他个部分额工作。
第二章
"0000000100", --2
"0000001000", --3
"0000010000", --4
"0000100000", --5
"0001000000", --6
"0010000000", --7
"0100000000", --8
"1000000000" );--9
END PACKAGE P_ALARM;
储存键入的数字,并实现键入数字在显示屏上从左到右的显示,RESET端口的输入信号对NEW_TIME端口的输出信号清零,在CLK端口输入信号的上升沿同步下,KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,依次左移,最高为丢失,由图可知,程序功能正常。
2.3
闹钟寄存模块的功能是在时钟上升沿同步下,根据LOAD_NEW_A端口的输入信号控制ALARM_TIME端口的输出;当控制信号有效时,把NEW_ALARM_TIME端口的输入信号值输出;RESET端口输入信号随ALAR_TIME端口的输出进行异步的清零复位。
TYPE SEG7 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(6 DOWNTO 0);
CONSTANT SEVEN_SEG: SEG7 :=("0111111",
"0000110",
"1011011",
"1001111",
"1100110",
"1101101",
"1111101",
计数器实际是一个异步复位、异步指数的累加器,由图可以看出,当没有新的地输入值时,只是进行时钟累加计数,在输入新的时钟值时又开始新的计数。
2.5
本模块的功能是当SHOW_NEW_TIME端口输入信号有效时,根据NEW_TIME端口输入信号,产生相应的四个七段数码显示器的驱动数据,并在DISPLAY端口输出该信号没为高电平时,根据ALARM_TIME端口的输入信号产生相应的四个七段数码显示管的驱动数据,并在DISPLAY端口输出该信号:为低电平时,根据CURRENT_TIME端口的输入信号,对DISPLAY端口进行驱动,当ALARM_TIME端口的输入信号值与CURRENT_TIME端口的输入喜好值相同时,SOUND_ALARM端口的输出信号有效,反之无效。
SOPC/EDA综合课程设计报告
设计题目:带闹钟功能的24小时制闹钟系统的设计
设计者:
学号:
班级:
指导老师:
完成时间:
设计报告
综合测试
总评
格式
(10)
内容
(40)
图表
(10)
答辩
(20)
平时
(20)
第一章
1.1
随着电子技术与计算机技术的高速发展,电子电路的设计产品无处不在。开发周期短兼容性的电子设计自动化(EDA)已经成为电子设计领域的潮流。本设计的研究目的也是利用EDA技术来实现带闹钟功能的24小时计时器。分别介绍研究背景、发展动态、研究思路、系统原理、系统功能分析、系统结构、各个模块分析与设计以及主要工作过程。其中将重点介绍Quartus II 软件进行各部分器件程序的编辑、综合、波形仿真。从而实现了一种基于FPGA的精确可靠的数字闹钟系统。
(3)分频器(FQ_DIVIER)将较高速的外部时钟频率成为每分钟一次的时钟频率以便进行时钟的计时。
(4)计数器(ALARM_COUNTER)实际上市一个异步复位、异步置数的累加器,通常情况下进行时间累加计数必要时可置入新时钟值然后从该值开始新的计数。
(5)寄存器(ALARM_REG)用于保存用户设置的闹钟时间,是一个异步复位寄存器。
5 WHEN "0000100000",
6 WHEN "0001000000",
7 WHEN "0010000000",
8 WHEN "0100000000",
9 WHEN "1000000000",
0 WHEN OTHERS;
END ARCHITECTURE ART;
4.3
LIBRARY IEEE;