版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、江西理工大学应用科学学院课程设计 SOPC/EDA综合课程设计报告 设计题目:带闹钟功能的24小时制闹钟系统的设计设 计 者: 学 号: 班 级: 指导老师: 完成时间: 设计报告综合测试总评格式(10)内容(40)图表(10)答辩(20)平时(20)1目录目录1第一章 系统设计综述21.1设计要求21.2要求分析2第二章 系统模块分析42.1 译码器的设计42.2移位寄存器的设计:42.3闹钟寄存器的设计:42.4 时间计数器模块设计: 42.5显示驱动器的设计:52.6分频器的设计:52.7控制器的设计:5第三章 闹钟系统的整体组装7第四章
2、 系统子程序设计84.1、整个设计中将要用到的程序包定义程序P_ALARM.VHD84.2、译码器源程序DECODER.VHD84.3、寄存器源程序ALARM_REG.VHD94.4、时间计数器源程序ALARM_COUNTER.VHD104.5、移位寄存器源程序KEY_BUFFER.VHD114.6、显示驱动器源程序DISPLAY_DRIVER.VHD124.7、分频器源程序FQ_DIVIDER.VHD134.8、控制器源程序ALARM_CONTROLLER.VHD144.9、闹钟系统的整体组装源程序ALARM_CLOCK.VHD17 第五章 心得体会
3、; 19第六章 参考文献201第一章 系统设计综述 1.1设计要求 随着电子技术与计算机技术的高速发展,电子电路的设计产品无处不在。开发周期短兼容性的电子设计自动化(EDA)已经成为电子设计领域的潮流。本设计的研究目的也是利用EDA技术来实现带闹钟功能的24小时计时器。分别介绍研究背景、发展动态、研究思路、系统原理、系统功能分析、系统结构、各个模块分析与设计以及主要工作过程。其中将重点介绍Quartus II 软件进行各部分器件程序的编辑、综合、波形仿真。从而实现了一种基于FPGA的精确可靠的数字闹钟系统。 &
4、#160; 计时器设计要求完成如下功能。 (1) 计时功能:这是 本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。 (2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。 (3) 设置新的计时器时间:用户用数字键09输入新的时间,然后按 "TIME"键确认。(4) 设置新的闹钟时间:用户用数字键“0”“9”输入新的时间,然后按“ALARM”键确认。过程与(3)类似。
5、(5) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。 1.2要求分析 根据本设计的要求,闹钟系统包括以下几个子系统:1用于键盘输入的缓冲器2用于时钟计时的计数器;3用于保存闹钟时间的寄存器;4用于显示的气短数码管闲事电路和控制以上各个电路协同工作的控制器。 各部分的功能: (1)译码器(DECOER)可将KEYPAD信号转换为0-9的整数可直观额表示和处理用户输入的数字。(2)键盘缓冲器(KEY-BUFFER)是一个移位寄存器,暂
6、存用户键入的数字并且实现用户键入数字在显示器上从左到右依次显示,由上图我们可以看出KEY_BUFFER的时钟端连接的是外部KEY_DOWN的信号。这个表示用户输入一个数字KEY_BUFFER移位一次。(3)分频器(FQ_DIVIER)将较高速的外部时钟频率成为每分钟一次的时钟频率以便进行时钟的计时。(4)计数器(ALARM_COUNTER)实际上市一个异步复位、异步置数的累加器,通常情况下进行时间累加计数必要时可置入新时钟值然后从该值开始新的计数。(5)寄存器(ALARM_REG)用于保存用户设置的闹钟时间,是一个异步复位寄存器。(6)显示器(DISPLAY_DRIVER)根据需要显示当前时间
7、,用户设置的闹钟时间或用户通过键盘键入的新时间,同时判断当前时间是否已经到了闹钟实际上是一个多路选择器加比较器。(7)控制器(ALARM_CONTEOLLER)设计的核心部分,按设计的要求产生相应的控制逻辑,以控制其他个部分额工作。第二章 系统模块分析 2.1 译码器的设计: 本模块的功能是将每次按下难找那个系统的数字键盘后产生的一个数字所对应的10位二进制数据信号转换为1为10进制整数信号;以作为小时,分钟计数的四个数字之一,其中,KEYPAD为输入端口,接受10位二进制数据信号;VALUE为输出端口,输出相应的1位十进制整数信号。 2.2
8、移位寄存器的设计: 本模块的功能是在CLK端口输入信号的上升沿同步下,将KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,原有的信息依次向左移,最高位信息丢失;RESET端口的输入信号对NEW_TIME端口输出信号进行异步清零复位。 储存键入的数字,并实现键入数字在显示屏上从左到右的显示,RESET端口的输入信号对NEW_TIME端口的输出信号清零,在CLK端口输入信号的上升沿同步下,KEY端口的输入信号移入NEW_TIME端口的输出信号最低位,依次左移,最高为丢失,由图可知,程序功能正常。 2.3闹钟寄
9、存器的设计:闹钟寄存模块的功能是在时钟上升沿同步下,根据LOAD_NEW_A端口的输入信号控制ALARM_TIME端口的输出;当控制信号有效时,把NEW_ALARM_TIME端口的输入信号值输出;RESET端口输入信号随ALAR_TIME端口的输出进行异步的清零复位。 异步复为寄存器,从图中可以看到当控制信号为高电平寄存器把NEW_ALARM_TIME端口的输入信号值(即闹钟时间)输出,程序功能正常。 2.4 时间计数器模块设计: 当RESET端口输入信号为高电平时,对CURRENT_TIME端口输出信号清零复位;当LOAD_NEW_C端口输入信号为高电平时,将N
10、EW_CURRENT_TIME端口的输入信号输出给CURRENT_TIME端口。RESET端口的控制优先于LAOD_NEW_C端口。当这两个控制信号都无效时,在时钟上升沿同步下,对CURRENT_TIME端口输出信号累加1,并根据小时,分钟的规律处理进位 计数器实际是一个异步复位、异步指数的累加器,由图可以看出,当没有新的地输入值时,只是进行时钟累加计数,在输入新的时钟值时又开始新的计数。 2.5显示驱动器的设计:
11、60; 本模块的功能是当SHOW_NEW_TIME端口输入信号有效时,根据NEW_TIME端口输入信号,产生相应的四个七段数码显示器的驱动数据,并在DISPLAY端口输出该信号没为高电平时,根据ALARM_TIME端口的输入信号产生相应的四个七段数码显示管的驱动数据,并在DISPLAY端口输出该信号:为低电平时,根据CURRENT_TIME端口的输入信号,对DISPLAY端口进行驱动,当ALAR
12、M_TIME端口的输入信号值与CURRENT_TIME端口的输入喜好值相同时,SOUND_ALARM端口的输出信号有效,反之无效。显示器的功能是根据需要的显示当前时间、设置的闹钟时间或通过键盘输入的新时间同时判断当前时间是否和设定的时间一致是一个多路选择加比较器,从仿真图中看到相应的输入输出,程序功能正常 2.6分频器的设计: 模块的功能是将CLK_IN端口输入的时钟信号分频后送给CLK_OUT端口:当RESET端口输入信号有效时,CLK_OUT端口输出信号清零。 分频器将比较高速的外部时钟频率分成每分钟一次的时钟频率,以便进行时钟计数,从仿真图上可以
13、看到CLK_IN端口的输入的时钟信号分频后输出,当RESET端口为高电平时,输出端口CLK_OUT输出信号清零 2.7控制器的设计: 控制器的功能是控制各模块协同工作的,端口及各自作用为:a、CLK为外部始时钟信号,REXET为复位信号。b、当KEY为高电平时(KEY=1),表示按下数字键(“0”“9”)。c、当ALARM_BUTTON为高电平时,表示按下“ALARM”键。d、当TIEM_BUTTON为高电平时,表示按下“TIME”。e、当LOAD_NEW_A为高电平时,控制加载新的闹钟时间。f、当LOAD_NEW_C为高电平时,控制设置新的时间值。g、当SHOW_NEW_
14、TIME为高电平时,控制显示新的时间值,即通过数字键输入的时间;否则,当SHOW_NEW_TIME为低电平时,根据SHOW_A信号的值控制显示当前时间或闹钟时间.此时,当SHOW_A为高电平时,控制显示闹钟时间,否则,显示当前时间. 控制器的功能可以通过有限状态自动机(FSM)的方式来实现.根据设计的具体要求及端口设置,需要五个状态实现: S0:表示电路初态即正常时钟计数状态,完成前面设计功能a的工作.S1:接受键盘输入状态.在状态S0时用换下数字键后进入此状态.在此状态下,显示屏上显示的是键入的数字.S2:设置新
15、的闹钟时间.在状态S1时按下ALARM键后进入比赛.S3:设置新的计时器时间.在状态S1时按下TIME键后进入此状态.S4:显示闹钟时间.在状态S0时按下ALARM键后进入此状态.在此状态下,显示屏上显示的是所设置的闹钟时间.在此状态下,按下ALARM键后,显示屏上保持显示闹钟时间,经过一段时间以后,再返回状态S0显示计时器时间. 第三章 闹钟系统的整体组装前面已经完成了计数器各个总成部分的设计。下面把这些组成部分组装起来,形成完整的总体设计。该计时器命名为ALARM_CLOCK,其外部端口如下图所示。 对应5种不同的状态,是闹钟系统分别执行正常技术状态(S0),
16、键盘输入状态(S1),设置闹钟时间状态(S2),设置计数器状态(S3),显示闹钟时间状态(S4).操作流程如下(1) 给定CLK输入信号,其他输入给定无效电平,闹钟工作于正常计数状态。(2)给定CLK输入信号,并用数字键入 ,闹钟处于键盘输入数字状态,输出不变。(3)给定CLK输入信号,并用数字键入1235,同时给定ALARM_BUTTON有效电平,闹钟时间设置状态,显示频显示该闹钟时间。(4)给定CLK输入信号,并用数字键键入1235,同时给定ALARM_TIME有效电平,闹钟处于新的计数时间设置状态,显示频显示改时间,并把它作为计时时间起点。(5)给定CLK
17、输入信号,并用数字键键入1235,同时给定ALARM_BUTTON有效电平,闹钟显示频显示的为闹钟时间。第四章 系统子程序设计4.1、整个设计中将要用到的程序包定义程序P_ALARM.VHDLIBRARY 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; TY
18、PE 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); TYPE SEG7 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(6 DOWNTO 0); CONSTANT SEVEN_SEG: SEG7 :=("0111111",
19、 "0000110",
20、0; "1011011", &q
21、uot;1001111", "1100110",
22、0; "1101101",
23、160; "1111101", "0000111",
24、0; "1111111",
25、160; "1110011" ); TYPE KEYPAD9 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR (9 DOWNTO 0); CONSTANT KEYNUMBER: KEYPAD9 :=( "0000000001", -0
26、160; "0000000010", -1
27、 "0000000100", -2
28、0; "0000001000", -3
29、160; "0000010000", -4
30、 "0000100000", -5
31、0; "0001000000", -6 "0010000000", -7
32、 "0100000000", -8
33、0; "1000000000" );-9END PACKAGE P_ALARM; 4.2、译码器源程序DECODER.VHDLIBRARY IEEE;USE IEEE.STD_L
34、OGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY DECODER ISPORT(KEYPAD:IN STD_LOGIC_VECTOR(9 DOWNTO 0); VALUE:OUT T_DIGITAL);END ENTITY DECODER;ARCHITECTURE ART OF DECODER ISBEGINWITH KEYPAD SELECTVALUE<=0 WHEN "0000000001",1 WHEN "0000000010",
35、; 2 WHEN "0000000100", 3 WHEN "0000001000", 4 WHEN "0000010000", 5 WHEN "0000100000"
36、, 6 WHEN "0001000000", 7 WHEN "0010000000", 8 WHEN "0100000000", 9 WHEN "1000
37、000000", 0 WHEN OTHERS;END ARCHITECTURE ART; 4.3、寄存器源程序ALARM_REG.VHDLIBRARY IEEE;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
38、:IN STD_LOGIC; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; ALARM_TIME:OUT T_CLOCK_TIME);END ENTITY ALARM_REG;ARCHITECTURE ART OF ALARM_REG IS BEGIN PROCESS(CLK, RESET)
39、BEGIN IF RESET='1'THEN ALARM_TIME<=(0,0,0,0); ELSE IF RISING_EDGE(CLK) THEN IF LOAD_NEW_A='1' THEN ALARM_TIME<=NEW_ALARM_TIME; EL
40、SIF LOAD_NEW_A/='0'THEN ASSERT FALSE REPORT "UNCERTAIN LOAD_NEW_ALARM CONTROL!" SEVERITY WARNING; END IF; END IF; END IF; END PROCESS;END ARCHITECTURE ART; 4
41、.4、时间计数器源程序ALARM_COUNTER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY ALARM_COUNTER IS PORT(NEW_CURRENT_TIME:IN T_CLOCK_TIME; LOAD_NEW_C:IN STD_LOGIC; CLK:IN STD_LOGIC;
42、 RESET:IN STD_LOGIC; CURRENT_TIME:OUT T_CLOCK_TIME);END ENTITY ALARM_COUNTER;ARCHITECTURE ART OF ALARM_COUNTER IS SIGNAL I_CURRENT_TIME:T_CLOCK_TIME; BEGIN PROCESS(CLK, RESET, LOAD_NEW_C)
43、0;VARIABLE C_T:T_CLOCK_TIME; BEGIN IF RESET='1' THEN I_CURRENT_TIME<=(0, 0, 0, 0); ELSIF LOAD_NEW_C='1' THEN I_CURRENT_TIME<=NEW_CURRENT_TIME; ELSIF RISING_EDGE(CLK) THEN C_T:=I_CURRE
44、NT_TIME; IF C_T(0)<9 THEN C_T(0):=C_T(0)+1; ELSE C_T(0):=0; IF C_T(1)<5 THEN &
45、#160; C_T(1):=C_T(1)+1; ELSE C_T(1):=0; IF C_T(3)<2 THEN IF C_T(2)<9 THEN
46、0; C_T(2):=C_T(2)+1; ELSE C_T(2):=0;
47、60; C_T(3):=C_T(3)+1; END IF; ELSE IF C_T(2)<3 THEN C_T(2):=C_T(2)+1;
48、; ELSE C_T(2):=0; C_T(3):=0; END IF;
49、0; END IF; END IF; END IF; I_CURRENT_TIME<=C_T; END IF; END PROCESS; CURRENT_TIME<=I_CURRENT_TIME;END ARCHITECTURE ART;
50、160; 4.5、移位寄存器源程序KEY_BUFFER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY KEY_BUFFER IS PORT(KEY:IN T_DIGITAL; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC;
51、0; NEW_TIME:OUT T_CLOCK_TIME);END ENTITY KEY_BUFFER;ARCHITECTURE ART OF KEY_BUFFER IS SIGNAL N_T:T_CLOCK_TIME; BEGIN SHIFT:PROCESS(RESET, CLK) BEGIN IF (RESET='1') THEN
52、0;N_T<=(0, 0, 0, 0); ELSIF (CLK'EVENT AND CLK='1') THEN FOR I IN 3 DOWNTO 1 LOOP N_T(I)<=N_T(I-1); END LOOP;
53、0; N_T(0)<=KEY; END IF; END PROCESS SHIFT; NEW_TIME<=N_T;END ARCHITECTURE ART; 4.6、显示驱动器源程序DISPLAY_DRIVER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY DISPLAY
54、_DRIVER IS PORT(ALARM_TIME:IN T_CLOCK_TIME; CURRENT_TIME:IN T_CLOCK_TIME; NEW_TIME:IN T_CLOCK_TIME; SHOW_NEW_TIME:IN STD_LOGIC; SHOW_A:IN STD_LOGIC; &
55、#160; SOUND_ALARM:OUT STD_LOGIC; DISPLAY:OUT T_DISPLAY);END ENTITY DISPLAY_DRIVER;ARCHITECTURE ART OF DISPLAY_DRIVER IS SIGNAL DISPLAY_TIME: T_CLOCK_TIME; BEGIN CTRL:PROCESS(ALARM_TIME, CURRENT_TIME, NEW_TIME,
56、 SHOW_A, SHOW_NEW_TIME) BEGIN SOUND_LP: FOR I IN ALARM_TIME'RANGE LOOP IF NOT(ALARM_TIME(I)=CURRENT_TIME(I) THEN SOUND_ALARM<='0'
57、0; EXIT SOUND_LP; ELSE SOUND_ALARM<='1' END IF; END LOOP SOUND_LP;
58、 IF SHOW_NEW_TIME='1' THEN DISPLAY_TIME<=NEW_TIME; ELSIF SHOW_A='1' THEN DISPLAY_TIME<=ALARM_TIME;
59、0; ELSIF SHOW_A='0' THEN DISPLAY_TIME<=CURRENT_TIME; ELSE ASSERT FALSE REPORT "UNCERTAIN DISPLAY
60、_DRIVER CONTROL!" SEVERITY WARNING; END IF;END PROCESS CTRL;DISP:PROCESS(DISPLAY_TIME)BEGIN FOR I IN DISPLAY_TIME'RANGE LOOP
61、160; DISPLAY(I)<=SEVEN_SEG(DISPLAY_TIME(I); END LOOP; END PROCESS DISP;END ARCHITECTURE ART; 4.7、分频器源程序FQ_DIVIDER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY FQ_DIVIDER IS
62、 PORT(CLK_IN:IN STD_LOGIC; RESET:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC);END ENTITY FQ_DIVIDER;ARCHITECTURE ART OF FQ_DIVIDER IS CONSTANT DIVIDE_PERIOD:T_SHORT:=6000; BEGIN DIVI
63、DE_CLK: PROCESS(CLK_IN, RESET) VARIABLE CNT : T_SHORT; BEGIN IF(RESET='1') THEN CNT:=0; CLK_OUT<='0' ELSIF RISING_EDGE(CLK_IN) THEN IF(CNT<(DIVIDE_
64、PERIOD/2) THEN CLK_OUT<='1' CNT:=CNT+1; ELSIF(CNT<(DIVIDE_PERIOD-1) THEN CLK_OUT<='0' CNT:=CNT+1; ELSE CNT:=0;
65、0; END IF; END IF; END PROCESS DIVIDE_CLK;END ARCHITECTURE ART; 4.8、控制器源程序ALARM_CONTROLLER.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.P_ALARM.ALL;ENTITY ALARM_CONTROLLER ISPORT(KEY : IN STD_LOGIC;
66、160; ALARM_BUTTON : IN STD_LOGIC; TIME_BUTTON : IN STD_LOGIC; CLK : IN STD_LOGIC; RESET : IN STD_LOGIC; LOAD_NEW_A : OUT STD_LOGIC; LOAD_N
67、EW_C : OUT STD_LOGIC; SHOW_NEW_TIME : OUT STD_LOGIC; SHOW_A : OUT STD_LOGIC);END ENTITY ALARM_CONTROLLER;ARCHITECTURE ART OF ALARM_CONTROLLER ISTYPE T_STATE IS (S0, S1, S2, S3, S4);CONSTANT KEY_TIMEOUT : T_SHORT:=500;CONSTANT SHOW_ALARM_TIMEO
68、UT : 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_LOGIC;SIGNAL COUNT_A_END : STD_LOGIC;BEGIN PROCESS(CLK, RESET)
69、 BEGIN IF RESET='1' THEN CURR_STATE<=S0; ELSIF RISING_EDGE(CLK) THEN CURR_STATE<=NEXT_STATE; END IF;END PROCESS;PROCESS(KEY, ALARM_BUTTON, TIME_BUTTON, CURR_STATE, COUNT_A_END, COUNT_K_END) B
70、EGIN 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' CASE CURR_S
71、TATE IS WHEN S0=> IF (KEY='1') THEN NEXT_STATE<=S1; SHOW_NEW_TIME<='1' ELSIF (ALARM_BUTTON='1') THEN
72、0; NEXT_STATE<=S4; SHOW_A<='1' ELSE NEXT_STATE<=S0; END IF; WHEN S1=> &
73、#160; IF (KEY='1') THEN NEXT_STATE<=S1; ELSIF (ALARM_BUTTON='1') THEN NEXT_STATE<=S2; LOAD_
74、NEW_A<='1' ELSIF (TIME_BUTTON='1') THEN NEXT_STATE<=S3; LOAD_NEW_C<='1' ELSE
75、60; IF (COUNT_K_END='1') THEN NEXT_STATE<=S0; ELSE NEXT_STATE<=S1; EN
76、D IF; ENABLE_COUNT_K<='1' END IF; SHOW_NEW_TIME<='1' WHEN S2=> IF (ALARM_BUTTON='1') THEN
77、60; NEXT_STATE<=S2; LOAD_NEW_A<='1' ELSE NEXT_STATE<=S0; END IF; WHEN S3=>
78、160; IF (TIME_BUTTON='1') THEN NEXT_STATE<=S3; LOAD_NEW_C<='1' ELSE NEXT_STATE<=S0
79、; END IF; WHEN S4=> IF (KEY='1') THEN NEXT_STATE<=S1; ELSE NEXT_STATE<=S4;IF (COUNT_A_END='1') THENNEXT_STATE<=S0; EL
80、SE NEXT_STATE<=S4;SHOW_A<='1'END IF;ENABLE_COUNT_A<='1'END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;COUNT_KEY: PROCESS(ENABLE_COUNT_K, CLK)BEGINIF (ENABLE_COUNT_K='0') THEN COUNTER_K<=0; COUNT_K_END<=
81、'0' ELSIF (RISING_EDGE(CLK) THEN IF (COUNTER_K>=KEY_TIMEOUT) THEN COUNT_K_END<='1' ELSE COUNTER_K<=COUNTER_K+1; END IF; END IF;END PROCESS COUNT
82、_KEY;COUNT_ALARM: PROCESS(ENABLE_COUNT_A, CLK) BEGIN IF (ENABLE_COUNT_A='0') THEN COUNTER_A<=0; COUNT_A_END<='0' ELSIF RISING_EDGE(CLK) THEN
83、;IF (COUNTER_A>=SHOW_ALARM_TIMEOUT) THEN COUNT_A_END<='1' ELSE COUNTER_A<=COUNTER_A+1; END IF; END IF;END PROCESS COUNT_
84、ALARM;END ARCHITECTURE ART; 4.9、闹钟系统的整体组装源程序ALARM_CLOCK.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE WORK.P_ALARM.ALL;ENTITY ALARM_CLOCK IS PORT(KEYPAD: IN STD_LOGIC_VECTOR(9 DOWNTO 0); KEY_DOWN: IN STD
85、_LOGIC; ALARM_BUTTON: IN STD_LOGIC; TIME_BUTTON: IN STD_LOGIC; CLK : IN STD_LOGIC; RESET: IN STD_LOGIC;
86、60; DISPLAY: OUT T_DISPLAY; SOUND_ALARM:OUT STD_LOGIC);END ENTITY ALARM_CLOCK;ARCHITECTURE ART OF ALARM_CLOCK IS COMPONENT DECODER IS PORT( KEYPAD:IN STD_LOGIC_VECTOR(9 DOWNTO 0); VALUE
87、 :OUT T_DIGITAL); END COMPONENT DECODER; COMPONENT KEY_BUFFER IS PORT(KEY:IN T_DIGITAL; CLK:IN STD_LOGIC; RESET:IN STD_LOGIC; NEW_TIME:OUT T_CLO
88、CK_TIME); END COMPONENT KEY_BUFFER; COMPONENT ALARM_CONTROLLER IS PORT(KEY:IN STD_LOGIC; ALARM_BUTTON:IN STD_LOGIC; TIME_BUTTON:IN STD_LOGIC; CL
89、K:IN STD_LOGIC; RESET: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 COMPONENT ALARM_CONTROLLER; COMPONENT ALA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年晋江市市政工程建设有限公司权属公司公开招聘项目制工作人员备考题库及参考答案详解1套
- 跨境电商服务质量承诺书4篇
- 2026年能动学院管理辅助工作人员招聘备考题库及一套完整答案详解
- 芜湖市裕溪口街道2026年公开招聘2名工作人员备考题库有完整答案详解
- 2026年五大连池市青山幼儿园公开招聘自聘性幼儿保育员备考题库及答案详解参考
- 2026年石家庄市桥西区振头社区卫生服务中心招聘备考题库及答案详解(考点梳理)
- 2026年西安高新一中沣东中学招聘备考题库及答案详解一套
- 护理实践中的沟通障碍解决
- 滦州市2025年公立二级医院自主招聘卫生专业技术人员备考题库有完整答案详解
- 2026年云南昆华医院投资管理有限公司(云南新昆华医院)招聘备考题库及答案详解(考点梳理)
- 留学合同补充协议
- 大学计算机教程-计算与人工智能导论(第4版)课件 第10章 云计算与大数据
- 2025山东日照五莲县城市社区专职工作者招聘8人考试题库必考题
- 溶剂精制装置操作工班组安全考核试卷含答案
- 2025年超声科工作总结和2026年工作计划
- 2026年辽宁医药职业学院单招职业适应性测试题库及答案详解一套
- 2025河南郑州公用事业投资发展集团有限公司招聘10人笔试参考题库附带答案详解(3卷)
- 招标代理质疑投诉处理方案及措施
- 2025西部机场集团航空物流有限公司招聘参考模拟试题及答案解析
- 2025重庆空港人力资源管理有限公司招聘笔试历年参考题库附带答案详解
- 测量员测量员工作创新案例
评论
0/150
提交评论