版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 6.12.11 鬧鐘系統(tǒng)的設(shè)計(jì)要求及設(shè)計(jì)思路 要求設(shè)計(jì)一個(gè)帶鬧鐘功能的24小時(shí)計(jì)時(shí)器,計(jì)時(shí)器的外觀如圖所示。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.14 計(jì)時(shí)器外觀 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 該計(jì)時(shí)器設(shè)計(jì)要求完成如下功能: (1) 計(jì)時(shí)功能:這是本計(jì)時(shí)器設(shè)計(jì)的基本功能,每隔一分鐘計(jì)時(shí)一次,并在顯示屏上顯示當(dāng)前時(shí)間。 (2) 鬧鐘功能:如果當(dāng)前時(shí)間與設(shè)置的鬧鐘時(shí)間相同,則揚(yáng)聲器發(fā)出蜂鳴聲。 (3) 設(shè)置新的計(jì)時(shí)器時(shí)間:用戶用數(shù)字鍵09輸入新的時(shí)間,然后按 TIME鍵確認(rèn)。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 (4) 設(shè)置新的鬧鐘時(shí)間:用戶用數(shù)字鍵“0”“9”輸入新的時(shí)間,然后按“ALARM”鍵確認(rèn)。過程與(3)
2、類似。 (5) 顯示所設(shè)置的鬧鐘時(shí)間:在正常計(jì)時(shí)顯示狀態(tài)下,用戶直接按下“ALARM”鍵,則已設(shè)置的鬧鐘時(shí)間將顯示在顯示屏上。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.2 鬧鐘系統(tǒng)的控制器的設(shè)計(jì) 1設(shè)計(jì)思路 控制器命名為ALARM_CONTROLLER,其外部端口如圖所示。各端口的作用如下:鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 圖6.15 控制器的外部端口 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 (1) CLK為外部時(shí)鐘信號(hào),RESET為復(fù)位信號(hào)。 (2) 當(dāng)KEY為高電平(KEY= 1)時(shí),表示用戶按下數(shù)字鍵(“0”“9”)。 (3) 當(dāng)ALARM_BUTTON為高電平時(shí),表示用戶按下“ALARM”鍵。 (4) 當(dāng)TIME
3、_BUTTON為高電平時(shí),表示用戶按下“TIME”鍵。 (5) 當(dāng)LOAD_NEW_A為高電平時(shí),控制(鬧鐘時(shí)間寄存器)加載新的鬧鐘時(shí)間值。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 (6) 當(dāng)LOAD_NEW_C為高電平時(shí),控制(時(shí)鐘計(jì)數(shù)器)設(shè)置新的時(shí)間值。 (7) 當(dāng)SHOW_NEW_TIME為高電平時(shí),控制(七段數(shù)碼顯示電路)顯示新的時(shí)間值,即用戶通過數(shù)字鍵輸入的時(shí)間;否則,當(dāng)SHOW_NEW_TIME為低電平時(shí),根據(jù)SHOW_A信號(hào)的值控制顯示當(dāng)前時(shí)間或鬧鐘時(shí)間。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 根據(jù)設(shè)計(jì)要求及端口設(shè)置,需要五個(gè)狀態(tài)來實(shí)現(xiàn): S0:表示電路初態(tài)即正常時(shí)鐘計(jì)數(shù)狀態(tài),完成前面設(shè)計(jì)功能 (1) 的
4、工作。 S1:接收鍵盤輸入狀態(tài)。在狀態(tài)S0時(shí)用戶按下數(shù)字鍵后進(jìn)入此狀態(tài)。在此狀態(tài)下,顯示屏上顯示的是用戶鍵入的數(shù)字。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 S2:設(shè)置新的鬧鐘時(shí)間。在狀態(tài)S1時(shí)用戶按下ALARM鍵后進(jìn)入此狀態(tài)。 S3:設(shè)置新的計(jì)時(shí)器時(shí)間。在狀態(tài)S1時(shí)用戶按下TIME鍵后進(jìn)入此狀態(tài)。 S4:顯示鬧鐘時(shí)間。在狀態(tài)S0時(shí)用戶直接按下ALARM鍵后進(jìn)入此狀態(tài)。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 在此狀態(tài)下,顯示屏上顯示的是所設(shè)置的鬧鐘時(shí)間。注意:在此狀態(tài)下,用戶按下ALARM鍵后,顯示屏上保持顯示鬧鐘時(shí)間,經(jīng)過一段時(shí)間以后,再返回狀態(tài)S0顯示計(jì)時(shí)器時(shí)間。相應(yīng)的狀態(tài)轉(zhuǎn)換及控制如表所示。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思
5、路表6.1 控制器狀態(tài)轉(zhuǎn)換及控制輸出表 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 表中沒有顯式說明的控制信號(hào)賦值,表示信號(hào)的值為 零。例如在狀態(tài)S0,當(dāng)信號(hào)KEY =1時(shí),SHOW_NEW_TIME信號(hào)的賦值為1,而其他信號(hào)LOAD_NEW_A、LOAD_NEW_C和SHOW_A的值此時(shí)都賦為0。另外,表中關(guān)于“超時(shí)”判斷處理的處理細(xì)節(jié)見VHDL源程序中的有關(guān)部分。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序-整個(gè)設(shè)計(jì)中將要用到的程序包定義程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE P_ALARM IS SUBTYPE T_DIGITAL IS INTEG
6、ER 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 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 STD_LOGIC_VECTOR(6 DOWNTO 0); TYPE SEG7 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(6 DOWNTO 0); CONSTANT SEVEN_SEG: SEG7 := (鬧鐘系統(tǒng)的設(shè)計(jì)要求和思
7、路 “0111111”, “0000110”, “1011011”, 1001111, 1100110,1101101, 1111101,0000111,1111111, 1110011);鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 TYPE KEYPAD9 IS ARRAY (0 TO 9) OF STD_LOGIC_VECTOR(9 DOWNTO 0); CONSTANT KEYNUMBER: KEYPAD9 := (鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 0000000001, - 0 0000000010, - 1 0000000100, - 2 0000001000, - 3 0000010000, - 4 000
8、0100000, - 5 0001000000, - 6 0010000000, - 7 0100000000, - 8 1000000000 - 9 );END PACKAGE P_ALARM;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路- 控制器源程序LIBRARY IEEE;ENTITY ALARM_CONTROLLER ISPORT( KEY :IN STD_LOGIC; ALARM_BUTTON :IN STD_LOGIC; TIME_BUTTON :IN STD_LOGIC; CLK :IN STD_LOGIC;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 RESET :IN STD_LOGIC; LOAD_NEW_A
9、:OUT STD_LOGIC; LOAD_NEW_C :OUT STD_LOGIC; SHOW_NEW_TIME :OUT STD_LOGIC; SHOW_A :OUT STD_LOGIC);END ENTITY ALARM_CONTROLLER;ARCHITECTURE ART OF ALARM_CONTROLLER IS TYPE T_STATE IS (S0, S1, S2, S3,S4); CONSTANT KEY_TIMEOUT :T_SHORT := 500;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路CONSTANT SHOW_ALARM_TIMEOUT : T_SHORT := 500; SIGN
10、AL 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鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路PROCESS(CLK,RESET) IS BEGIN IF RESET =1
11、 THEN CURR_STATE = S0; ELSIF RISING_EDGE(CLK) THEN CURR_STATE = NEXT_STATE; END IF; END PROCESS;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路PROCESS(KEY, ALARM_BUTTON, TIME_BUTTON, CURR_STATE, COUNT_A_END,COUNT_K_END) ISBEGIN NEXT_STATE = CURR_STATE; LOAD_NEW_A = 0; LOAD_NEW_C = 0; SHOW_A = 0; SHOW_NEW_TIME = 0; ENABLE_COUNT_K = 0;
12、 ENABLE_COUNT_A IF (KEY = 1) THEN NEXT_STATE = S1; SHOW_NEW_TIME = 1; ELSIF (ALARM_BUTTON = 1) THEN NEXT_STATE = S4; SHOW_A = 1; ELSE NEXT_STATE 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
13、= 1; ELSE IF (COUNT_K_END = 1) THEN NEXT_STATE = S0;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 ELSE NEXT_STATE = S1; END IF; ENABLE_COUNT_K = 1; END IF; SHOW_NEW_TIME IF (ALARM_BUTTON = 1) THEN NEXT_STATE = S2; LOAD_NEW_A = 1; ELSE NEXT_STATE IF (TIME_BUTTON = 1) THEN NEXT_STATE = S3; LOAD_NEW_C = 1; ELSE NEXT_STATE IF (KEY = 1)
14、 THEN NEXT_STATE = S1;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路ELSE NEXT_STATE = S4; IF (COUNT_A_END = 1) THEN NEXT_STATE = S0; ELSE NEXT_STATE = S4; SHOW_A = 1;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路END IF; ENABLE_COUNT_A NULL; END CASE;END PROCESS;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路COUNT_KEY : PROCESS(ENABLE_COUNT_K, CLK) ISBEGIN IF (ENABLE_COUNT_K = 0) THEN COUNTER_K = 0; C
15、OUNT_K_END = KEY_TIMEOUT) THEN COUNT_K_END = 1; ELSE鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 COUNTER_K = COUNTER_K + 1; END IF; END IF;END PROCESS COUNT_KEY;COUNT_ALARM : PROCESS(ENABLE_COUNT_A, CLK) ISBEGIN IF (ENABLE_COUNT_A = 0) THEN COUNTER_A = 0;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 COUNT_A_END = SHOW_ALARM_TIMEOUT) THEN COUNT_A_END = 1; ELSE COU
16、NTER_A = COUNTER_A + 1; END IF; END IF;END PROCESS COUNT_ALARM;END ARCHITECTURE ART;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.3 鬧鐘系統(tǒng)的譯碼器的設(shè)計(jì) 1設(shè)計(jì)思路 本模塊的功能是將每次按下鬧鐘系統(tǒng)的數(shù)字鍵盤后產(chǎn)生的一個(gè)數(shù)字所對(duì)應(yīng)的10位二進(jìn)制數(shù)據(jù)信號(hào)轉(zhuǎn)換為1位十進(jìn)制整數(shù)信號(hào),以作為小時(shí)、分鐘計(jì)數(shù)的四個(gè)數(shù)字之一,如圖所示。其中,KEYPAD為輸入端口,接收10位二進(jìn)制數(shù)據(jù)信號(hào);VALUE為輸出端口,輸出相應(yīng)的1位十進(jìn)制整數(shù)信號(hào)。輸入數(shù)據(jù)與輸出數(shù)據(jù)的譯碼關(guān)系見表。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.16 電路系統(tǒng)示意圖鬧鐘系
17、統(tǒng)的設(shè)計(jì)要求和思路表6.2 輸入、輸出數(shù)據(jù)的譯碼關(guān)系 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序LIBRARY IEEE;ENTITY DECODER IS PORT(KEYPAD :IN STD_LOGIC_VECTOR(9 DOWNTO 0); VALUE :OUT T_DIGITAL);END ENTITY DECODER;ARCHITECTURE ART OF DECODER IS鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路BEGIN WITH KEYPAD SELECT VALUE = 0 WHEN “0000000001”, 1 WHEN “0000000010”, 2 WHEN “0000000100
18、”, 3 WHEN “0000001000”, 4 WHEN “0000010000”, 5 WHEN “0000100000”, 6 WHEN “0001000000”, 7 WHEN “0010000000”, 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路8 WHEN “0100000000”, 9 WHEN “1000000000”, 0 WHEN OTHERS;END ARCHITECTURE ART; 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.4 鬧鐘系統(tǒng)的移位寄存器的設(shè)計(jì) 1設(shè)計(jì)思路 本模塊的功能是在CLK端口輸入信號(hào)的上升沿同步下,將KEY端口的輸入信號(hào)移入NEW_TIME 端口的輸出信號(hào)最低位,原有信息
19、依次向左移,最高位信息丟失;RESET端口的輸入信號(hào)對(duì)NEW_TIME端口輸出信號(hào)進(jìn)行異步清零復(fù)位。電路系統(tǒng)示意圖如圖所示。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.17 移位寄存器電路示意圖 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序LIBRARY IEEE;ENTITY KEY_BUFFER ISPORT(KEY :IN T_DIGITAL; CLK :IN STD_LOGIC; RESET :IN STD_LOGIC; NEW_TIME:OUT T_CLOCK_TIME);END ENTITY KEY_BUFFER;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路ARCHITECTURE ART OF KEY_BUFFER
20、ISSIGNAL N_T:T_CLOCK_TIME;BEGIN SHIFT:PROCESS(RESET,CLK) IS BEGIN IF (RESET = 1) THEN N_T = (0,0,0,0); ELSIF (CLKEVENT AND CLK = 1 )THEN FOR I IN 3 DOWNTO 1 LOOP N_T(I) = N_T(I-1);鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 END LOOP; N_T(0) = KEY; END IF; END PROCESS SHIFT; NEW_TIME = N_T;END ARCHITECTURE ART;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.5
21、鬧鐘系統(tǒng)的鬧鐘寄存器和時(shí)間計(jì)數(shù)器的設(shè)計(jì) 1電路系統(tǒng)工作原理 鬧鐘寄存器模塊的功能是在時(shí)鐘上升沿同步下,根據(jù)LOAD_NEW_A端口的輸入信號(hào)控制ALARM_TIME端口的輸出;當(dāng)控制信號(hào)有效(高電平)時(shí),把NEW_ALARM_TIME端口的輸入信號(hào)值輸出;RESET端口輸入信號(hào)對(duì)ALARM_TIME端口的輸出進(jìn)行異步的清零復(fù)位。圖是鬧鐘寄存器模塊的示意圖。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.18 鬧鐘寄存器示意圖鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 鬧鐘系統(tǒng)的鬧鐘時(shí)間由鬧鐘寄存器保存和傳遞,而當(dāng)前時(shí)間由時(shí)間計(jì)數(shù)器保存、傳遞并按分鐘累加推進(jìn)。這兩個(gè)組件的功能和設(shè)計(jì)描述比較相似,它們之間的區(qū)別主要在于自動(dòng)累加功能的
22、有無和控制信號(hào)的優(yōu)先作用次序。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.19 時(shí)間計(jì)數(shù)器示意圖 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 時(shí)間計(jì)數(shù)器模塊的功能是當(dāng)RESET端口輸入信號(hào)為高電平時(shí),對(duì)CURRENT_TIME端口輸出信號(hào)清零復(fù)位;當(dāng)LOAD_NEW_C端口輸入信號(hào)為高電平時(shí),將NEW_CURRENT_TIME端口的輸入信號(hào)輸出給CURRENT_TIME端口。RESET端口的控制優(yōu)先于LOAD_NEW_C端口。當(dāng)這兩個(gè)控制信號(hào)都無效時(shí),在時(shí)鐘上升沿同步下,對(duì)CURRENT_TIME端口輸出信號(hào)累加1,并根據(jù)小時(shí)、分鐘的規(guī)律處理進(jìn)位。圖是時(shí)間計(jì)數(shù)器模塊的示意圖。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序-時(shí)間計(jì)數(shù)
23、器的源程序LIBRARY IEEE;ENTITY ALARM_COUNTER IS PORT(NEW_CURRENT_TIME:IN T_CLOCK_TIME; LOAD_NEW_C:IN STD_LOGIC; CLK:IN STD_LOGIC;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 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(
24、CLK,RESET,LOAD_NEW_C) IS VARIABLE C_T:T_CLOCK_TIME; BEGIN IF RESET = 1 THEN鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 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_CURRENT_TIME; IF C_T(0) 9 THEN C_T(0) := C_T(0) + 1;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 ELSE C_T(0) := 0; IF C
25、_T(1) 5 THEN C_T(1) := C_T(1) + 1; ELSE C_T(1) := 0; IF C_T(3) 2 THEN IF C_T(2) 9 THEN C_T(2) := C_T(2) + 1; ELSE C_T(2) := 0; C_T(3) := C_T(3) + 1; END IF;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 ELSE IF C_T(2) 3 THEN C_T(2) := C_T(2) + 1; ELSE C_T(2) := 0; C_T(3) := 0; END IF; END IF; END IF; END IF; I_CURRENT_TIME = C_T; EN
26、D IF;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 END PROCESS; CURRENT_TIME = I_CURRENT_TIME;END ARCHITECTURE ART;-鬧鐘寄存器的源程序LIBRARY IEEE;ENTITY ALARM_REG IS鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 PORT(NEW_ALARM_TIME:IN T_CLOCK_TIME; LOAD_NEW_A :IN STD_LOGIC; CLK :IN STD_LOGIC; RESET :IN STD_LOGIC; ALARM_TIME:OUT T_CLOCK_TIME);END ENTITY ALARM_REG;ARCHITECTU
27、RE ART OF ALARM_REG IS BEGIN PROCESS(CLK,RESET) IS BEGIN鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 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; ELSIF LOAD_NEW_A /= 0 THEN ASSERT FALSE REPORT“UNCERTAIN LOAD_NEW_ALARM CONTROL!” SEVERITY WARNING;鬧鐘系統(tǒng)的設(shè)計(jì)要
28、求和思路 END IF; END IF; END IF; END PROCESS;END ARCHITECTURE ART;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.6 鬧鐘系統(tǒng)的顯示驅(qū)動(dòng)器的設(shè)計(jì) 1設(shè)計(jì)思路 本模塊的功能是:當(dāng)SHOW_NEW_TIME端口輸入信號(hào)有效(高電平)時(shí),根據(jù)NEW_TIME端口輸入信號(hào)(時(shí)間數(shù)據(jù)),產(chǎn)生相應(yīng)的四個(gè)七段數(shù)碼顯示器的驅(qū)動(dòng)數(shù)據(jù),并在DISPLAY端口輸出該信號(hào)。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 當(dāng)SHOW_NEW_TIME端口輸入信號(hào)無效(低電平)時(shí),判斷SHOW_A端口的輸入信號(hào),為高電平時(shí),根據(jù)ALARM_TIME端口的輸入信號(hào)(時(shí)間數(shù)據(jù))產(chǎn)生相應(yīng)的四個(gè)七段數(shù)碼
29、顯示器的驅(qū)動(dòng)數(shù)據(jù),并在DISPLAY端口輸出該信號(hào);為低電平時(shí),根據(jù)CURRENT_TIME端口的輸入信號(hào),對(duì)DISPLAY端口進(jìn)行驅(qū)動(dòng)。當(dāng)ALARM_TIME 端口的輸入信號(hào)值與CURRENT_TIME端口的輸入信號(hào)值相同時(shí),SOUND_ALARM端口的輸出信號(hào)有效(高電平),反之無效。圖為顯示驅(qū)動(dòng)器示意圖。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.20 顯示驅(qū)動(dòng)器示意圖鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序LIBRARY IEEE;ENTITY DISPLAY_DRIVER ISPORT(ALARM_TIME :IN T_CLOCK_TIME; CURRENT_TIME :IN T_CLOCK_TI
30、ME; NEW_TIME :IN T_CLOCK_TIME; SHOW_NEW_TIME:IN STD_LOGIC; SHOW_A :IN STD_LOGIC; SOUND_ALARM :OUT STD_LOGIC; DISPLAY:OUT T_DISPLAY);鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路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,SHOW_A
31、,SHOW_NEW_TIME) IS BEGIN鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 SOUND_LP: FOR I IN ALARM_TIMERANGE LOOP IF NOT(ALARM_TIME(I) = CURRENT_TIME(I) THEN SOUND_ALARM = 0; EXIT SOUND_LP; ELSE SOUND_ALARM = 1; END IF;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 END LOOP SOUND_LP; IF SHOW_NEW_TIME = 1 THEN DISPLAY_TIME = NEW_TIME; ELSIF SHOW_A = 1 THEN DISPLAY_TIME
32、= ALARM_TIME; ELSIF SHOW_A = 0 THEN DISPLAY_TIME = CURRENT_TIME; ELSE 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路ASSERT FALSE REPORT “UNCERTAIN DISPLAY_DRIVER CONTROL!” SEVERITY WARNING; END IF; END PROCESS CTRL; DISP:PROCESS(DISPLAY_TIME) IS BEGIN鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 FOR I IN DISPLAY_TIMERANGE LOOP DISPLAY(I) = SEVEN_SEG(DISPLAY_TIME(I)
33、; END LOOP; END PROCESS DISP; END ARCHITECTURE ART;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.7 鬧鐘系統(tǒng)的分頻器的設(shè)計(jì) 1設(shè)計(jì)思路 本模塊的功能是將CLK_IN端口輸入的時(shí)鐘信號(hào)分頻后送給CLK_OUT端口;當(dāng)RESET端口輸入信號(hào)有效(高電平)時(shí),CLK_OUT端口輸出信號(hào)清零。圖為分頻器示意圖。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.21 分頻器示意圖鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路2VHDL源程序LIBRARY IEEE;ENTITY FQ_DIVIDER IS PORT( CLK_IN:IN STD_LOGIC; RESET:IN STD_LOGIC; CL
34、K_OUT:OUT STD_LOGIC );鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路END ENTITY FQ_DIVIDER;ARCHITECTURE ART OF FQ_DIVIDER IS CONSTANT DIVIDE_PERIOD : T_SHORT := 6000; BEGINDIVIDE_CLK: PROCESS(CLK_IN,RESET) IS VARIABLE CNT : T_SHORT; BEGIN IF (RESET = 1) THENCNT := 0;CLK_OUT = 0;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路ELSIF RISING_EDGE(CLK_IN) THENIF (CNT (DIVID
35、E_PERIOD/2) THENCLK_OUT = 1; CNT := CNT + 1; ELSIF (CNT (DIVIDE_PERIOD-1) THENCLK_OUT = 0;CNT := CNT + 1;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 ELSECNT := 0; END IF; END IF; END PROCESS DIVIDE_CLK;END ARCHITECTURE ART;鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 6.12.8 鬧鐘系統(tǒng)的整體組裝 1整體組裝說明 前邊已經(jīng)完成了計(jì)時(shí)器各個(gè)組成部分的設(shè)計(jì),下面把這些組成部分組裝起來,形成完整的總體設(shè)計(jì)。該計(jì)時(shí)器命名為ALARM_CLOCK,其外部端口如圖
36、所示。 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.22 計(jì)時(shí)器的外部端口 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 各個(gè)輸入/輸出端口的作用如下: (1) CLK為外部時(shí)鐘信號(hào),RESET為復(fù)位信號(hào)。 (2) KEYPAD是一個(gè)10位信號(hào),若其中某一位為高電平,則表示用戶按下了相應(yīng)下標(biāo)的數(shù)字鍵。 (3) 當(dāng)KEYDOWN為高電平時(shí)(KEYDOWN= 1),表示用戶按下某一數(shù)字鍵。 (4) 當(dāng)ALARM_BUTTON為高電平時(shí),表示用戶按下ALARM鍵。 (5) 當(dāng)TIME_BUTTON為高電平時(shí),表示用戶按下TIME鍵。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 (6) DISPLAY實(shí)際上表示了四個(gè)七段數(shù)碼顯示管,用于顯示時(shí)間,如122
37、0。 (7) SOUND_ALARM用于控制揚(yáng)聲器發(fā)聲,當(dāng)SOUND_ALARM = 1時(shí),揚(yáng)聲器發(fā)出蜂鳴,表示到了設(shè)定的鬧鐘時(shí)間。 設(shè)計(jì)的總體結(jié)構(gòu)圖如圖所示。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路圖6.23 總體結(jié)構(gòu) 鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 下面再簡要說明各組成部分的功能: (1) 譯碼器(DECODER) 可將KEYPAD信號(hào)轉(zhuǎn)換為09的整型數(shù),以直觀地表示和處理用戶輸入的數(shù)字。 (2) 鍵盤緩沖器(KEY_BUFFER)是一個(gè)移位寄存器,暫存用戶鍵入的數(shù)字,并且實(shí)現(xiàn)用戶鍵入數(shù)字在顯示器上從右到左的依次顯示。這里需要注意的是,由圖可以看出,KEY_BUFFER的時(shí)鐘端連接的是外部KEY_DOWN 信號(hào)。這表示用戶每輸入一個(gè)數(shù)字,KEY_BUFFER移位一次。鬧鐘系統(tǒng)的設(shè)計(jì)要求和思路 (3) 分頻器(FQ_DIVIDER)將較高速的外部時(shí)鐘頻率分頻成每分鐘一次的時(shí)鐘頻率,以便進(jìn)行時(shí)鐘計(jì)數(shù)。 (4) 計(jì)數(shù)器(ALARM_COUNTER)實(shí)際上是一個(gè)異步復(fù)位、異步置數(shù)的累加器,通常情況下進(jìn)行時(shí)鐘累加計(jì)數(shù),必要時(shí)可置入新的時(shí)鐘值,然后從該值開始新的計(jì)數(shù)。 (5) 寄存器(ALARM_REG)用于保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年長沙衛(wèi)生職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(必刷)
- 2025年長白朝鮮族自治縣招教考試備考題庫及答案解析(必刷)
- 2025年陜西青年職業(yè)學(xué)院單招職業(yè)傾向性測(cè)試題庫帶答案解析
- 2026年內(nèi)蒙古豐州職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案解析
- 2026年湖南中醫(yī)藥高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫附答案解析
- 2026年貴州盛華職業(yè)學(xué)院單招職業(yè)技能考試題庫附答案解析
- 精神藥品培訓(xùn)管理制度
- 保安培訓(xùn)財(cái)務(wù)管理制度
- 個(gè)人培訓(xùn)學(xué)校收費(fèi)制度
- 班主任培訓(xùn)班管理制度
- 2024版2026春新教科版科學(xué)三年級(jí)下冊(cè)教學(xué)課件:第一單元4.磁極與方向含2個(gè)微課視頻
- 培訓(xùn)保安課件
- “黨的二十屆四中全會(huì)精神”專題題庫及答案
- 2026屆福建省寧德市三校高三上學(xué)期1月月考?xì)v史試題(含答案)
- 2026年冀教版初一地理上冊(cè)期末真題試卷+解析及答案
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫及答案詳解參考
- 2025年文化產(chǎn)業(yè)版權(quán)保護(hù)與運(yùn)營手冊(cè)
- 四川省樂山市高中高三上學(xué)期第一次調(diào)查研究考試數(shù)學(xué)試題【含答案詳解】
- 《創(chuàng)新創(chuàng)業(yè)基礎(chǔ)》課件-項(xiàng)目1:創(chuàng)新創(chuàng)業(yè)基礎(chǔ)認(rèn)知
- 2026年初一寒假體育作業(yè)安排
- 物流行業(yè)運(yùn)輸司機(jī)安全駕駛與效率績效評(píng)定表
評(píng)論
0/150
提交評(píng)論