




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數字系統(tǒng)設計與硬件描述語言期末考試作業(yè)題目:空調控制器的設計學院:電子信息工程學院專業(yè):物聯網工程學號:3014204328姓名:劉涵凱2016-12-14選題設計描述1. 功能介紹設計內容為空調控制器,可實現空調的開關、模式切換、溫度控制、風速控制、定時設置。模式默認為制冷,可切換為制熱、除濕。溫度默認為26度,可按“溫度 +”、 “溫度-”調節(jié),每次調節(jié)1 度,最高30度,最低 16 度。風速默認為中擋,可按“風速+”、 “風速-”切換為低擋、高擋、睡眠模式。睡眠模式中,在低擋與停止間循環(huán)。定時設置默認關閉,開啟時默認30 分鐘,可按“定時+”、 “定時 -”調節(jié),每次調節(jié)30 分鐘,最高
2、24 小時,最低30 分鐘。定時倒計時結束時,關閉空調。定時開啟時,可按“取消定時”關閉定時。空調控制器模擬界面如下:382. 算法簡介1)空調控制器其輸入與輸出在主程序kt 中已標明,在此不做介紹。2)單脈沖模塊這是非常重要以及核心的模塊。當 a產生一個上升沿時,輸出一個單脈沖,脈沖將持續(xù)到經過一個clk上升沿后的clk 下降沿。3)開關模塊a 連接空調的開關,b 連接開關控制模塊的輸出,c 為空調各工作模塊的開關信號,d 連接數碼管顯示開關狀況。當定時時間結束,b 輸入一個單脈沖,空調關閉。4)開關控制模塊此模塊的作用是保證開關模塊能夠正常工作。開關打開時,a輸入一個單脈沖,重置c。 b
3、連接定時模塊,當定時結束,b輸入一個單脈沖,使c 輸出1,使開關模塊輸出05)溫度模塊a連接開關模塊,b 為溫度 +1, c為溫度-1,輸出為溫度的十位和個位。6)風速模塊a連接開關模塊,b 為風速+1, c為風速 -1。di, zhong, gao 為抵擋、中擋、高擋的狀態(tài)(無睡眠模式,因為睡眠模式是抵擋停止模式)。其他連接數碼管,顯示睡眠模式、抵擋、中擋、高擋的狀態(tài)。7)模式模塊b 連接開關模塊,c 為切換模式,輸出類似于模式模塊。8)定時模塊a 連接開關模塊,b 為定時模塊開啟,c 為取消定時,up、 down 為定時時間+、 -。clk1 為空調時鐘,clk2 為模擬的倒計時時鐘(周期
4、1 分鐘) 。 clk2 周期遠大于clk1 。當時間倒計時結束時,sw1 輸出 1,使開關控制模塊控制開關關閉。其他輸出連接倒計時模塊。9)倒計時模塊a 連接開關模塊,clk 連接定時模塊的clk2,輸入時間發(fā)生變化時,重新倒計時。倒計時結束時,finish 輸出 1,使定時模塊的sw1 輸出 1。10)數碼管模塊a 連接開關模塊,此為7 段譯碼器。11)計數器模塊此為六位計數器。a 連接睡眠模式開關,rst 為睡眠模式打開時的重置信號,每6 次輸出一次1。二、 程序源代碼及說明1)空調控制器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE
5、.STD_LOGIC_UNSIGNED.ALL ;ENTITY kt ISPORT(switchin,modeset,fanup,fandown,tempup,tempdown,timerop,timercancel,timerup,t imerdown,clk1,clk2: IN STD_LOGIC;-電源開關、模式切換、風速+、風速-、溫度+、溫度-、定時、取消定時、定時 +、定時-、時鐘信號、倒計時時鐘信號cools,heats,drys,dis,zhongs,gaosO: UT STD_LOGIC; -通向空調內部的制冷、制熱、除濕、抵擋、中擋、高擋狀態(tài)輸出switchstate,te
6、mpd,temps,coolstate,heatstate,drystate,distate,zhongstate,gaostate,sleepstate ,hdstate,hsstate,tdstate,tsstate: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-由數碼管顯示的開關、溫度、制冷、制熱、除濕、 抵擋、中擋、高擋、睡眠狀態(tài)和倒計時剩余時間END ENTITY kt;ARCHITECTURE behave OF kt ISCOMPONENT switch-開關模塊PORT(a,b,clk: IN STD_LOGIC;-b 受定時模塊的控制,時間減為0時,關
7、閉開關c: OUT STD_LOGIC;d: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-輸送給數碼管END COMPONENT switch;COMPONENT control-開關控制模塊PORT(a,b,clk: IN STD_LOGIC;c: OUT STD_LOGIC);END COMPONENT control;COMPONENT fan-風速模塊PORT(a,b,c,clk: IN STD_LOGIC;di,zhong,gao: OUT STD_LOGIC; -由于high 和 low 是敏感詞匯,所以此處用拼音,可以看到此處沒有睡眠模式,是因為睡眠模式其
8、實是抵擋-停止模式ssleep,sdi,szhong,sgao:O UT STD_LOGIC_VECTOR(3 DOWNTO 0);-不同于發(fā)給空調內部的信號,睡眠模式的狀態(tài)應顯示在外END COMPONENT fan;COMPONENT BCD7-數碼管模塊PORT(a: IN STD_LOGIC;b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);q : OUT STD_LOGIC_VECTOR(0 TO 6) );END COMPONENT BCD7;COMPONENT pulse-單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOG
9、IC);END COMPONENT pulse;COMPONENT temp-溫度模塊PORT(a,b,c,clk: IN STD_LOGIC;-a 控制開關,b 提高 1 度, c降低 1度temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT temp;COMPONENT timer-定時模塊PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC;sw1: OUT STD_LOGIC; -總開關關閉信號oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0
10、);-輸送給數碼管顯示剩余時間END COMPONENT timer;COMPONENT modePORT(b,c,clk: IN STD_LOGIC;cool,heat,dry: OUT STD_LOGIC;cool1,heat1,dry1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT mode;SIGNAL swa,swb,swc:STD_LOGIC;SIGNAL sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5, sigBCD7_6,sigBCD7_7,sigBCD7_8,sigBCD7_
11、9,sigBCD7_10, sigBCD7_11,sigBCD7_12,sigBCD7_13,sigBCD7_14:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1: switch PORT MAP(a=>switchin,b=>swb,c=>swa,clk=>clk1,d=>sigBCD7_1);U2: control PORT MAP(a=>switchin,b=>swc,clk=>clk1,c=>swb);U3:fanPORTMAP(a=>swa,b=>fanup,c=>fandown,clk
12、=>clk1,di=>dis,zhong=>zhongs,gao=>gaos,ssle ep=>sigBCD7_2,sdi=>sigBCD7_3,szhong=>sigBCD7_4,sgao=>sigBCD7_5);U4:tempPORTMAP(a=>swa,b=>tempup,c=>tempdown,clk=>clk1,temp1=>sigBCD7_6,temp2=>sigBC D7_7);U5:timerPORTMAP(a=>swa,clk1=>clk1,clk2=>clk2,b=>
13、timerop,c=>timercancel,up=>timerup,down=> timerdown,sw1=>swc,oh1=>sigBCD7_8,oh2=>sigBCD7_9,ot1=>sigBCD7_10,ot2=>sig BCD7_11);U6:modePORTMAP(b=>swa,c=>modeset,clk=>clk1,cool=>cools,heat=>heats,dry=>drys,cool1=>sigBC D7_12,heat1=>sigBCD7_13,dry1=>sigB
14、CD7_14);U7: BCD7 PORT MAP(a=>swa,b=>sigBCD7_1,q=>switchstate);U8: BCD7 PORT MAP(a=>swa,b=>sigBCD7_2,q=>sleepstate);U9: BCD7 PORT MAP(a=>swa,b=>sigBCD7_3,q=>distate);U10: BCD7 PORT MAP(a=>swa,b=>sigBCD7_4,q=>zhongstate);U11: BCD7 PORT MAP(a=>swa,b=>sigBCD7_5,
15、q=>gaostate);U12: BCD7 PORT MAP(a=>swa,b=>sigBCD7_6,q=>tempd);U13: BCD7 PORT MAP(a=>swa,b=>sigBCD7_7,q=>temps);U14: BCD7 PORT MAP(a=>swa,b=>sigBCD7_8,q=>hdstate);U15: BCD7 PORT MAP(a=>swa,b=>sigBCD7_9,q=>hsstate);U16: BCD7 PORT MAP(a=>swa,b=>sigBCD7_10,q=
16、>tdstate);U17: BCD7 PORT MAP(a=>swa,b=>sigBCD7_11,q=>tsstate);U18: BCD7 PORT MAP(a=>swa,b=>sigBCD7_12,q=>coolstate);U19: BCD7 PORT MAP(a=>swa,b=>sigBCD7_13,q=>heatstate);U20: BCD7 PORT MAP(a=>swa,b=>sigBCD7_14,q=>drystate);PROCESS(clk1)BEGINEND PROCESS;END ARCH
17、ITECTURE behave;2)單脈沖模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY pulse IS-單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END ENTITY pulse;ARCHITECTURE behave OF pulse ISSIGNAL d:STD_LOGIC:='0'SIGNAL f:STD_LOGIC:='0'SIGNAL g:STD_LOGIC:='0
18、39;-確保經過第一個clk 上升沿時輸出1SIGNAL h:STD_LOGIC:='0'-同上BEGINPROCESS(a,clk)BEGINIF(clk'EVENT AND clk='1')THENIF(f='1')THENg<='1'ELSE g<='0'END IF;END IF;END PROCESS;PROCESS(a,clk)BEGINIF(clk'EVENT AND clk='0')THENIF(a='1')THENIF(f='1&
19、#39;)THENIF(g='1')THENd<='1'ELSE d<='0'END IF;ELSE d<='1'END IF;ELSE d<='0'-a 為 0 時,重置此單脈沖發(fā)生器END IF;END IF;END PROCESS;PROCESS(d)BEGINIF(a='1')THENIF(d='1')THENf<='0'ELSE f<='1'END IF;ELSE f<='0'END
20、IF;b<=f;END PROCESS;END ARCHITECTURE behave;3)開關模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY switch IS-開關模塊PORT(a,b,clk: IN STD_LOGIC; -b受定時模塊的控制,時間減為0 時,關閉開關c: OUT STD_LOGIC;d: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-輸送給數碼管END ENTITY switch;ARCHITECTURE behave OF switch ISCOMPONENT pulse-調用單脈沖模塊
21、PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pulse;SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'BEGINU1: pulse PORT MAP(a=>a,b=>p1,clk=>clk);U2: pulse PORT MAP(a=>b,b=>p2,clk=>clk);PROCESS(a,b,clk)BEGINIF(clk'EVENT AND clk='1')THENIF(p
22、1='1')THEN-空調開關打開c<='1'd<="0001"END IF;IF(p2='1')THEN-時間減為0時,定時模塊返回1,關閉開關c<='0'd<="0000"END IF;END IF;END PROCESS;END ARCHITECTURE behave;4)開關控制模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY control IS-開關控制模塊PORT(a,b,clk: IN STD_LOG
23、IC;c: OUT STD_LOGIC);END ENTITY control;ARCHITECTURE behave OF control ISCOMPONENT pulse-調用單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pulse;SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'BEGINU1: pulse PORT MAP(a=>a,b=>p1,clk=>clk);U2: pulse PORT MAP(
24、a=>b,b=>p2,clk=>clk);PROCESS(a,b,clk)BEGINIF(clk'EVENT AND clk='1')THENIF(p1='1')THEN-空調開關打開c<='0'END IF;IF(p2='1')THEN-時間減為0時,定時模塊返回1,關閉開關c<='1'END IF;END IF;END PROCESS;END ARCHITECTURE behave;5)溫度模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.AL
25、L;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY temp IS-溫度模塊,最高30度,最低16度,默認26度PORT(a,b,c,clk: IN STD_LOGIC;-a控制開關,b 提高 1 度, c降低 1 度temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY temp;ARCHITECTURE behave OF temp ISCOMPONENT pulse-調用單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pul
26、se;SIGNAL t1 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL t2 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'SIGNAL p3 : STD_LOGIC:='0'BEGINU1: pulse PORT MAP(a=>b,b=>p1,clk=>clk);U2: pulse PORT MAP(a=>
27、c,b=>p2,clk=>clk);U3: pulse PORT MAP(a=>a,b=>p3,clk=>clk);PROCESS(a,clk)BEGINIF(clk'EVENT AND clk='1')THENIF(p3='1')THEN-開關打開時,默認26度t1<="0010"t2<="0110"ELSIF(a='0')THENt1<="0000"t2<="0000"END IF;IF(a='
28、1')THENIF(p1='1')THEN -判斷 "溫度 +"按鍵按下IF(t1="0011")THENt1<="0011"t2<="0000"ELSIF(t2="1001")THENt1<=t1+'1't2<="0000"ELSE t2<=t2+'1'END IF;END IF;IF(p2='1')THEN -判斷 "溫度 -"按鍵按下IF(t1=&q
29、uot;0001")THENIF(t2="0110")THENt1<="0001"t2<="0110"ELSE t2<=t2-'1'END IF;ELSIF(t2="0000")THENt1<=t1-'1't2<="1001"ELSE t2<=t2-'1'END IF;END IF;ELSE t1<="0000"t2<="0000"END IF;END
30、 IF;temp1<=t1;temp2<=t2;END PROCESS;END ARCHITECTURE behave;6)風速模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY fan IS-風速模塊:睡眠、低、中、高;默認中擋;睡眠模式在低擋和停止之間循環(huán)PORT(a,b,c,clk: IN STD_LOGIC;di,zhong,gao: OUT STD_LOGIC; -由于high 和 low 是敏感詞匯,所以此處用拼音,可以看到此處沒有睡眠模式,是因為睡眠模式
31、其實是抵擋-停止模式ssleep,sdi,szhong,sgao:O UT STD_LOGIC_VECTOR(3 DOWNTO 0);-不同于發(fā)給空調內部的信號,睡眠模式的狀態(tài)應顯示在外END ENTITY fan;ARCHITECTURE behave OF fan ISCOMPONENT pulse-調用單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pulse;COMPONENT count6-調用計數器PORT ( a,clk,rst : IN STD_LOGIC;o: OUT STD_LOGIC);END C
32、OMPONENT count6;SIGNAL e : STD_LOGIC_VECTOR(2 DOWNTO 0):="000" - 停止000、睡眠001、抵擋 010、中擋011、高擋100SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'SIGNAL p3 : STD_LOGIC:='0'SIGNAL op : STD_LOGIC:='0'SIGNAL op1 : STD_LOGIC:='0' -其上升沿用于開啟睡眠模式SIGNAL op2
33、 : STD_LOGIC:='0'SIGNAL rst1 : STD_LOGIC:='0'SIGNAL rst2 : STD_LOGIC:='0'SIGNAL change : STD_LOGIC:='0'SIGNAL m : STD_LOGIC:='0' - 睡眠模式中使用,由于睡眠模式是循環(huán)模式,所以不設置置 0BEGIN-模式在按鍵操作下可循環(huán)滾動U1: pulse PORT MAP(a=>b,b=>p1,clk=>clk);U2: pulse PORT MAP(a=>c,b=>
34、p2,clk=>clk);U3: pulse PORT MAP(a=>a,b=>p3,clk=>clk);U4: pulse PORT MAP(a=>rst1,b=>rst2,clk=>clk);U5: count6 PORT MAP(a=>op,rst=>rst2,clk=>clk,o=>change);PROCESS(a,clk)BEGINIF(clk'EVENT AND clk='1')THENop1<=op2;IF(p3='1')THEN-開關打開時,默認中擋e<=&q
35、uot;011"ELSIF(a='0')THENe<="000"END IF;IF(a='1')THENIF(p1='1')THEN -判斷"風速+"按鍵按下IF(e="100")THEN-高擋時按下,則切換為睡眠e<="001"op1<='1'ELSE e<=e+'1'op1<='0'END IF;END IF;IF(p2='1')THEN -判斷"風速
36、"-"按鍵按下IF(e="001")THEN - 睡眠時按下,則切換為高擋e<="100"op1<='0'ELSIF(e="010")THENe<=e-'1'op1<='1'ELSE e<=e-'1'op1<='0'END IF;END IF;ELSE e<="000"END IF;END IF;END PROCESS;PROCESS(change)BEGINIF(chang
37、e'EVENT AND change='1')THENIF(m='1')THENm<='0'ELSE m<='1'END IF;END IF;END PROCESS;PROCESS(e)BEGINop2<=op1;IF(e="001")THEN-睡眠時的低擋-停止循環(huán)IF(op2'EVENT AND op2='1')THENop<='1'rst1<='1'END IF;op<='1'CASE m
38、ISWHEN'1'=>di<='1'zhong<='0'gao<='0'ssleep<="0001"sdi<="0000"szhong<="0000"sgao<="0000"WHEN'0'=>di<='0'zhong<='0'gao<='0'ssleep<="0001"sdi<=&quo
39、t;0000"szhong<="0000"sgao<="0000"END CASE;ELSEop<='0'-關閉睡眠模式IF(e="010")THENdi<='1'zhong<='0'gao<='0'ssleep<="0000"sdi<="0001"szhong<="0000"sgao<="0000"ELSIF(e=&quo
40、t;011")THENdi<='0'zhong<='1'gao<='0'ssleep<="0000"sdi<="0000"szhong<="0001"sgao<="0000"ELSIF(e="100")THENdi<='0'zhong<='0'gao<='1'ssleep<="0000"sdi<=&q
41、uot;0000"szhong<="0000"sgao<="0001"ELSIF(e="000")THENdi<='0'zhong<='0'gao<='0'ssleep<="0000"sdi<="0000"szhong<="0000"sgao<="0000"END IF;END IF;END PROCESS;END ARCHITECTURE be
42、have;7)模式模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY mode IS-模式模塊:制冷、制熱、除濕PORT(b,c,clk: IN STD_LOGIC;cool,heat,dry: OUT STD_LOGIC;cool1,heat1,dry1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY mode;ARCHITECTURE behave OF mode ISCOMPONENT pulse-單脈沖模塊PORT(a,clk:
43、IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pulse;SIGNAL e : STD_LOGIC_VECTOR(1 DOWNTO 0):="00"SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'BEGINU1: pulse PORT MAP(a=>b,b=>p1,clk=>clk);U2: pulse PORT MAP(a=>c,b=>p2,clk=>clk);PROCESS(b,c,p1,p2,clk)-
44、按鍵選擇模式BEGINIF(clk'EVENT AND clk='1')THENIF(b='1')THENIF(p1='1')THEN -默認制冷模式e<="01"END IF;IF(p2='1')THENIF(e="11")THENe<="01"ELSE e<=e+'1'END IF;END IF;ELSE e<="00"END IF;END IF;END PROCESS;PROCESS(e)BEGIN
45、-由于第一個PROCESS中,a為 0 時 e為 "00", 所以此處不再考慮aCASE e ISWHEN"01"=>cool<='1'heat<='0'dry<='0'cool1<="0001"heat1<="0000"dry1<="0000" WHEN"10"=>cool<='0'heat<='1'dry<='0'
46、;cool1<="0000"heat1<="0001"dry1<="0000" WHEN"11"=>cool<='0'heat<='0'dry<='1'cool1<="0000"heat1<="0000"dry1<="0001" WHENOTHERS=>cool<='0'heat<='0'dry<
47、;='0'cool1<="0000"heat1<="0000"dry1<="0000"END CASE;END PROCESS;END ARCHITECTURE behave;8)定時模塊ENTITY timer IS-定時模塊:最低30分鐘,最高24小時,每次按鍵調整 30 分鐘,可取消定時PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC;sw1: OUT STD_LOGIC; -總開關關閉信號oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECT
48、OR(3 DOWNTO 0);-輸送給數碼管顯示剩余時間END ENTITY timer;ARCHITECTURE behave OF timer ISCOMPONENT pulse-調用單脈沖模塊PORT(a,clk: IN STD_LOGIC;b: OUT STD_LOGIC);END COMPONENT pulse;COMPONENT cd-調用倒計時模塊PORT(a,clk: IN STD_LOGIC;time1,time2,time3,time4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);finish: OUT STD_LOGIC;outtime1,outti
49、me2,outtime3,outtime4:OUT STD_LOGIC_VECTOR(3DOWNTO 0);END COMPONENT cd;SIGNAL cl : STD_LOGIC:='0'SIGNAL op : STD_LOGIC:='0'SIGNAL p1 : STD_LOGIC:='0'SIGNAL p2 : STD_LOGIC:='0'SIGNAL p3 : STD_LOGIC:='0'SIGNAL sw : STD_LOGIC:='0'- 倒計時模塊開關信號SIGNAL h11 : S
50、TD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL h22 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL t11 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0011"SIGNAL t22 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL h1 : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL h2 : STD_LOGIC_VECTOR(3 DOWNTO
51、 0);SIGNAL t1 : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL t2 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1: pulse PORT MAP(a=>b,b=>op,clk=>clk1);U2: pulse PORT MAP(a=>c,b=>cl,clk=>clk1);U3: pulse PORT MAP(a=>up,b=>p1,clk=>clk1);U4: pulse PORT MAP(a=>down,b=>p2,clk=>clk1);U5: p
52、ulse PORT MAP(a=>sw,b=>p3,clk=>clk1);U6:cdPORTMAP(a=>sw,clk=>clk2,time1=>h1,time2=>h2,time3=>t1,time4=>t2,finish=>sw1,outtime1=>oh1,outtime2=>oh2,outtime3=>ot1,outtime4=>ot2);PROCESS(a,op,cl)BEGINIF(a='1')THENIF(op='1')THENsw<='1'E
53、ND IF;IF(cl='1')THENsw<='0'END IF;ELSE sw<='0'END IF;END PROCESS;PROCESS(sw,clk1)BEGINIF(clk1'EVENT AND clk1='1')THENIF(p3='1')THEN-定時開啟時,默認30分鐘h11<="0000"h22<="0000"t11<="0011"t22<="0000"ELSIF(sw=&
54、#39;0')THENh11<="0000"h22<="0000"t11<="0000"t22<="0000"END IF;IF(sw='1')THENIF(p1='1')THEN -判斷"時間+"按鍵按下IF(h11="0010")THENIF(h22="0100")THENh11<="0010"h22<="0100"t11<=&qu
55、ot;0000"t22<="0000"ELSIF(t11="0000")THENt11<="0011"ELSE h22<=h22+'1't11<="0000"END IF;ELSIF(h22="1001")THENIF(t11="0000")THENt11<="0011"ELSE h11<=h11+'1'h22<="0000"t11<="
56、0000"END IF;ELSIF (t11="0011")THENh22<=h22+'1't11<="0000"ELSE t11<="0011"END IF;END IF;IF(p2='1')THEN -判斷"時間-"按鍵按下IF(h11="0000")THENIF(h22="0000")THENh11<="0000"h22<="0000"t11<=&quo
57、t;0011"t22<="0000"ELSIF(t11="0011")THENt11<="0000"ELSE h22<=h22-'1't11<="0011"END IF;ELSIF(h22="0000")THENIF(t11="0011")THENt11<="0000"ELSE h11<=h11-'1'h22<="1001"t11<="0
58、011"END IF;ELSIF (t11="0011")THENt11<="0000"ELSE h22<=h22-'1't11<="0011"END IF;END IF;END IF;END IF;h1<=h11;h2<=h22;t1<=t11;t2<=t22;END PROCESS;END ARCHITECTURE behave;9)倒計時模塊LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_
59、UNSIGNED.ALL ;ENTITY cd IS-倒計時模塊,僅在定時開啟時有效PORT(a,clk: IN STD_LOGIC;time1,time2,time3,time4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);finish: OUT STD_LOGIC;outtime1,outtime2,outtime3,outtime4: OUT STD_LOGIC_VECTOR(3DOWNTO 0);END ENTITY cd;ARCHITECTURE behave OF cd ISCOMPONENT pulse-調用單脈沖模塊PORT(a,clk: IN STD_L
60、OGIC;b: OUT STD_LOGIC);END COMPONENT pulse;SIGNAL s : STD_LOGIC:='0'SIGNAL intime11 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime22 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime33 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime44 : STD_LOGIC_VECT
61、OR(3 DOWNTO 0):="0000"SIGNAL stime1 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL stime2 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL stime3 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL stime4 : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"SIGNAL intime5 : STD
62、_LOGIC_VECTOR (1 DOWNTO 0):="00"SIGNAL intime6 : STD_LOGIC_VECTOR(1 DOWNTO 0):="01"SIGNAL intime7 : STD_LOGIC_VECTOR(1 DOWNTO 0):="01" BEGINU1: pulse PORT MAP(a=>a,b=>s,clk=>clk);PROCESS(time1,time2,time3,time4,clk) -為當定時時間更改時,令變量重新賦值BEGINIF(clk'EVENT AND c
63、lk='1')THENIF(s='1')THENintime5<="11"ELSIF(a='1')THENIF(stime1/=time1 OR stime2/=time2 OR stime3/=time3 OR stime4/=time4)THEN stime1<=time1;stime2<=time2;stime3<=time3;stime4<=time4;IF(intime5="01")THENintime5<="10"ELSE intime5&
64、lt;="01"END IF;END IF;ELSE intime5<="00"END IF;END IF;intime11<=time1;intime22<=time2;intime33<=time3;intime44<=time4;END PROCESS;PROCESS(clk,intime5,intime6)VARIABLE intime1,intime2,intime3,intime4 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF(clk'EVENT AND clk='
65、1')THENIF(a='1')THENIF(intime5/=intime6)THEN-第一個PROCESS 運行時,變量被重新賦值intime6<=intime5;intime1:=intime11;intime2:=intime22;intime3:=intime33;intime4:=intime44;END IF;IF(intime4/="0000")THENintime4:=intime4-'1'finish<='0'ELSIF(intime3/="0000")THENintime4:="1001"intime3:=intime3-'1'finish<='0'ELSIF(intime2/="0000")THENintime3:="0101" intime4:="1001"intime2:=intime2-'1'finish<='0'ELSIF(intime1/="0000")THEN intime2:="1001"intime3:=&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西醫(yī)科大學晉祠學院《大學生精益創(chuàng)新創(chuàng)業(yè)實踐》2023-2024學年第二學期期末試卷
- 上饒衛(wèi)生健康職業(yè)學院《水土保持工程學》2023-2024學年第二學期期末試卷
- 山東省棗莊市市中區(qū)2025年四下數學期末復習檢測模擬試題含解析
- 西安理工大學高科學院《外國教育論著選讀》2023-2024學年第二學期期末試卷
- 2025年商業(yè)地產抵押貸款合同
- 2025合同違約導致解除權產生:遲延履行的一方將面臨合同解除風險
- 2025關于針對中石油合同書的法律規(guī)定與解析
- 法律法規(guī)及其他要求清單
- 山東省曲阜市2014-2015學年高二歷史上學期期中教學質量檢測試題
- 2024年農業(yè)植保員測試要點試題及答案
- 《新聞基礎知識》近年考試真題題庫(附答案)
- 【MOOC】大學攝影基礎-福建師范大學 中國大學慕課MOOC答案
- 【MOOC】固體物理學-北京交通大學 中國大學慕課MOOC答案
- 心衰病人的觀察與護理
- 20241115某克縫紉機供應鏈計劃IBP PPDS詳細解決方案
- 愛護環(huán)境主題班會課件
- 大班游戲活動案例《快樂沙池》
- 糖尿病飲食指導護理
- DB41T 1633-2018 排油煙設施清洗服務規(guī)范
- 腦出血疑難病例討論護理
- 連續(xù)梁線型控制技術交底
評論
0/150
提交評論