大連理工大學數(shù)字電路課程設計報告多功能數(shù)字時鐘設計_第1頁
大連理工大學數(shù)字電路課程設計報告多功能數(shù)字時鐘設計_第2頁
大連理工大學數(shù)字電路課程設計報告多功能數(shù)字時鐘設計_第3頁
大連理工大學數(shù)字電路課程設計報告多功能數(shù)字時鐘設計_第4頁
大連理工大學數(shù)字電路課程設計報告多功能數(shù)字時鐘設計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、大連理工大學本科實驗報告題目:多功能數(shù)字時鐘設計課程名稱: 數(shù)字電路與系統(tǒng)課程設計 學院(系): 信息與通信工程學院 專 業(yè): 電子信息工程 班 級: 學生姓名: 學 號: 完成日期: 2014年7月16日 2014 年 7 月 16 日題目:多功能數(shù)字時鐘設計1 設計要求1)具有“時”、“分”、“秒”及“模式”的十進制數(shù)字顯示功能;2)具有手動校時、校分功能,并能快速調(diào)節(jié)、一鍵復位(復位時間12時00分00秒);3)具有整點報時功能,從00分00秒起,亮燈十秒鐘;4)具有秒表功能(精確至百分之一秒),具有開關鍵,可暫停、可一鍵清零;5)具有鬧鐘功能,手動設置時間,并可快速調(diào)節(jié),具有開關鍵,可

2、一鍵復位(復位時間12時00分00秒),鬧鐘時間到亮燈十秒鐘進行提醒;6)具有倒計時功能(精確至百分之一秒),可手動設置倒計時時間,若無輸入,系統(tǒng)默認60秒倒計時,且具有開關鍵,計時時間到亮燈十秒鐘進行提醒,可一鍵復位(復位時間默認60秒)。2 設計分析及系統(tǒng)方案設計2.1 模式選擇模塊:按鍵一進行模式選擇,并利用數(shù)碼管顯示出當前模式。模式一:時鐘顯示功能;模式二:時鐘調(diào)節(jié)功能;模式三:鬧鐘功能;模式四:秒表功能;模式五:倒計時功能。2.2 數(shù)字鐘的基本功能部分:包括時、分、秒的顯示,手動調(diào)時,以及整點報時部分?;灸K是由振蕩器、分頻器、計數(shù)器、譯碼器、顯示器等幾部分組成。利用DE2硬件中提

3、供的50MHZ晶振,經(jīng)過分頻得到周期為1s的時鐘脈沖。將該信號送入計數(shù)器進行計算,并把累加結果以“時”“分”“秒”的形式通過譯碼器由數(shù)碼管顯示出來。具有復位按鍵1,在時鐘模式下按下復位鍵后對時鐘進行復位,復位時間12時00分00秒。進入手動調(diào)時功能時,通過按鍵調(diào)節(jié)時間,每按下依次按鍵2,時鐘時針加一,按下按鍵2一秒內(nèi)未松手,時鐘時針每秒鐘加十;按鍵1對分針進行控制,原理與時針相同并通過譯碼器由七位數(shù)碼管顯示。從00分00秒開始,數(shù)字鐘進入整點報時功能(本設計中以一個LED燈代替蜂鳴器,進行報時),亮燈10秒鐘進行提示。2.3 多功能數(shù)字鐘的秒表功能部分:計時范圍從00分00.00秒至59分59

4、.99秒??捎蓮臀绘I0異步清零,并由開關1控制計時開始與停止。將DE2硬件中的50MHZ晶振經(jīng)過分頻獲得周期為0.01秒的時鐘脈沖,將信號送入計數(shù)器進行計算,并把累計結果通過譯碼器由七位數(shù)碼管顯示2.4 多功能數(shù)字鐘的鬧鐘功能部分:進入鬧鐘功能模式后,通過按鍵2(設定小時)和按鍵1(設定分鐘)設定鬧鐘時間,當按下按鍵一秒內(nèi)未松手時,可進行快速設定時間。當時鐘進入鬧鐘設定的時間(判斷時鐘的時信號時針,分針分別與鬧鐘設定的時信號時針、分針是否相等),則以LED燈連續(xù)亮10秒鐘進行提示,并由開關0控制鬧鐘的開和關。2.5 多功能數(shù)字鐘的倒計時功能部分:可通過按鍵3(設定分針)和按鍵2(設定秒針)設定

5、倒計時開始,當按下按鍵一秒內(nèi)未松手時,可進行快速設定時間。當沒有手動時間設定時,系統(tǒng)默認為60秒倒計時。倒計時的時鐘與數(shù)字鐘的時鐘相同,每迎到一個1s時鐘上升沿,則計數(shù)器減一。計數(shù)器減至00時,分鐘位、秒鐘位保持為00。倒計時結束時(即00分00秒),倒計時信號燈亮10秒鐘進行提示,并由開關2控制倒計時的開始于停止。本設計通過數(shù)據(jù)選擇器控制譯碼器,使數(shù)碼管獨立顯示,各功能之間互不影響。當mode=“000”時,時鐘功能,則對時鐘信號進行譯碼,數(shù)碼管顯示時鐘數(shù)據(jù);當mode=“001”時,時間校準功能,則對時鐘信號進行譯碼,數(shù)碼管顯示鬧鐘數(shù)據(jù);當mode=“010”時,鬧鐘功能,則對鬧鐘信號進行

6、譯碼,數(shù)碼管顯示鬧鐘信號數(shù)據(jù);當mode=“011”時,秒表功能,則對秒表信號進行譯碼,數(shù)碼管顯示秒表信號數(shù)據(jù)。當mode=“100”時,則倒計時功能,對倒計時鐘信號進行譯碼,數(shù)碼管顯示倒計時信號數(shù)據(jù)。系統(tǒng)總體結構框圖如下所示:數(shù)據(jù)選擇器時鐘計數(shù)器數(shù)碼管顯示秒表計數(shù)器報時鬧鐘分頻(周期1s)分頻模塊分頻(周期0.01s)譯碼器LED提醒分頻(周期0.1s)LED提醒倒計時計數(shù)器3系統(tǒng)以及模塊硬件電路設計3.1分頻電路參數(shù)計算:3.2系統(tǒng)硬件電路設計系統(tǒng)硬件模擬圖:Sw2LEDbsLEDnzLEDdjs50MHZSw1 Sw0Sw0KEY3KEY2KEY0KEY1分別與數(shù)碼管相連3.3系統(tǒng)與引腳

7、分配接口名稱類型(輸入/輸出)引腳號說明clkINPIN_N2晶振50MHz時鐘輸入selectmodeINPIN_W26模式選擇按鍵rstINPIN_G26復位按鍵addINPIN_P23高位設置鍵decINPIN_N23地位設置鍵startnzINPIN_N25鬧鐘開關startmbINPIN_N26秒表開關startdjsINPIN_P25倒計時開關lednzOUTPIN_AE23鬧鐘提示燈leddjsOUTPIN_AE22倒計時提示燈ledbsOUTPIN_Y18整點報時提示燈qss6OUTPIN_N9時針高位數(shù)碼管顯示qss5OUTPIN_P9qss4OUTPIN_L7qss3OUT

8、PIN_L6qss2OUTPIN_L9qss1OUTPIN_L2qss0OUTPIN_L3qsg6OUTPIN_M4時針低位數(shù)碼管顯示qsg5OUTPIN_M5qsg4OUTPIN_M3qsg3OUTPIN_M2qsg2OUTPIN_P3qsg1OUTPIN_P4qsg0OUTPIN_R2qms6OUTPIN_W24秒針高位數(shù)碼管顯示qms5OUTPIN_U22qms4OUTPIN_Y25qms3OUTPIN_Y26qms2OUTPIN_AA26qms1OUTPIN_AA25qms0OUTPIN_Y23qmg6OUTPIN_Y24秒針低位數(shù)碼管顯示qmg5OUTPIN_AB25qmg4OUTP

9、IN_AB26qmg3OUTPIN_AC26qmg2OUTPIN_AC25qmg1OUTPIN_V22qmg0OUTPIN_AB23qgs6OUTPIN_AB24模式顯示高位(默認全滅)qgs5OUTPIN_AA23qgs4OUTPIN_AA24qgs3OUTPIN_Y22qgs2OUTPIN_W21qgs1OUTPIN_V21qgs0OUTPIN_V20模式顯示低位qgg6OUTPIN_V13qgg5OUTPIN_V14qgg4OUTPIN_AE11qgg3OUTPIN_AD11qgg2OUTPIN_AC12qgg1OUTPIN_AB12qgg0OUTPIN_AF10qfs6OUTPIN_R

10、3分針高位數(shù)碼管顯示qfs5OUTPIN_R4qfs4OUTPIN_R5qfs3OUTPIN_T9qfs2OUTPIN_P7qfs1OUTPIN_P6qfs0OUTPIN_T2qfg6OUTPIN_T3分針低位數(shù)碼管顯示qfg5OUTPIN_R6qfg4OUTPIN_R7qfg3OUTPIN_T4qfg2OUTPIN_U2qfg1OUTPIN_U1qfg0OUTPIN_U94 系統(tǒng)的VHDL設計4.1頂層設計library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity liyabin is -實體

11、聲明,及系統(tǒng)輸入與輸出port(clk,rst,add,dec,selectmode,startmb,startnz,startdjs:in std_logic; qgs,qgg,qss,qsg,qfs,qfg,qms,qmg:buffer std_logic_vector(6 downto 0); ledbs,lednz,leddjs:out std_logic);end;architecture data of liyabin iscomponent mode -模式循環(huán)模塊元件例化port(selectmode:in std_logic;mode:buffer std_logic_vec

12、tor(2 downto 0);end component;component gnxz-功能選擇模塊元件例化port(zt:in std_logic_vector(2 downto 0);sz1,sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);-時鐘顯示信號mb1,mb2,mb3,mb4,mb5,mb6:in std_logic_vector(3 downto 0);-秒表顯示信號nz3,nz4,nz5,nz6:in std_logic_vector(3 downto 0);-鬧鐘顯示信號djs1,djs2,djs3,djs4,djs5

13、,djs6:in std_logic_vector(3 downto 0);-倒計時顯示信號 s1,s2,s3,s4,s5,s6,s7,s8:out std_logic_vector(3 downto 0)-輸出,送入顯示模塊用數(shù)碼管進行顯示);end component;component fp-分頻模塊元件例化port(clk,rst:in std_logic;clk10ms,clk100ms,clk1s:out std_logic); end component;component sz-時鐘模塊元件例化port(zt:in std_logic_vector(2 downto 0);cl

14、k,clk100ms,rst,add,dec:in std_logic; sz1,sz2,sz3,sz4,sz5,sz6:buffer std_logic_vector(3 downto 0);ledbs: out std_logic);end component;component nz-鬧鐘模塊元件例化port(startnz,add,dec,rst,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);-時鐘顯示信號n

15、z3,nz4,nz5,nz6:buffer std_logic_vector(3 downto 0);-鬧鐘顯示信號lednz:out std_logic-鬧鐘提示燈輸出);end component;component mb-秒表模塊元件例化port(zt:in std_logic_vector(2 downto 0);clk,rst,startmb:in std_logic; mb1,mb2,mb3,mb4,mb5,mb6:buffer std_logic_vector(3 downto 0);end component;component djs-倒計時模塊元件例化port(rst,st

16、artdjs,add,dec,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);djs1,djs2,djs3,djs4,djs5,djs6:buffer std_logic_vector(3 downto 0);leddjs:out std_logic);end component;component xs-顯示模塊元件例化port(xsin:in std_logic_vector(3 downto 0);-xsout:out std_logic_vector(6 downto 0);end component;signa

17、l clk10ms,clk100ms,clk1s,clk1m,clk1h :std_logic;-分頻脈沖信號級進位脈沖信號signal sz1,sz2,sz3,sz4,sz5,sz6,sz33,sz55:std_logic_vector(3 downto 0);-時鐘顯示信號signal nz3,nz4,nz5,nz6:std_logic_vector(3 downto 0);-鬧鐘顯示信號signal mb1,mb2,mb3,mb4,mb5,mb6:std_logic_vector(3 downto 0);-秒表顯示信號signal djs1,djs2,djs3,djs4,djs5,djs

18、6:std_logic_vector(3 downto 0);-倒計時顯示信號signal s1,s2,s3,s4,s5,s6,s7,s8:std_logic_vector(3 downto 0);-顯示信號signal zt:std_logic_vector(2 downto 0);begin-結構體-模式循環(huán)模塊-u1:mode port map(selectmode,zt);-功能選擇模塊-u2:gnxz port map(zt,sz1,sz2,sz3,sz4,sz5,sz6,mb1,mb2,mb3,mb4,mb5,mb6,nz3,nz4,nz5,nz6,djs1,djs2,djs3,d

19、js4,s1,s2,s3,s4,s5,s6,s7,s8);-分頻模塊-u3:fp port map(clk,rst,clk10ms,clk100ms,clk1s);-時鐘模塊-u4:sz port map(zt,clk1s,clk100ms,rst,add,dec,sz1,sz2,sz3,sz4,sz5,sz6,ledbs);-鬧鐘模塊-u5:nz port map(startnz,add,dec,rst,clk1s,clk100ms,zt,sz2,sz3,sz4,sz5,sz6,nz3,nz4,nz5,nz6,lednz);-秒表模塊-u6:mb port map(zt,clk10ms,rs

20、t,startmb,mb1,mb2,mb3,mb4,mb5,mb6);-倒計時模塊-u7:djs port map(rst,startdjs,add,dec,clk10ms,clk100ms,zt,djs1,djs2,djs3,djs4,djs5,djs6,leddjs);-顯示模塊-show1: xs port map(s1,qmg);show2: xs port map(s2,qms);show3: xs port map(s3,qfg);show4: xs port map(s4,qfs);show5: xs port map(s5,qsg);show6: xs port map(s6,

21、qss);show7: xs port map(s7,qgg);show8: xs port map(s8,qgs);end;-結束4.2 分頻模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fp isport(clk,rst:in std_logic;clk10ms,clk100ms,clk1s:out std_logic); end;architecture data of fp isbegin-50兆分頻,產(chǎn)生clk1s,作為始時鐘的秒計時脈沖process(clk,rst

22、) variable num:integer range 0 to 49999999; begin if rst='0' then num:=0; elsif rising_edge(clk) then if num=49999999 then num:=0;clk1s<='1' else num:=num+1;clk1s<='0' end if; end if; end process; -5兆分頻,產(chǎn)生clk100ms(即clk0.1s),作為快速調(diào)整時間的脈沖信號process(clk,rst)variable num:inte

23、ger range 0 to 4999999; begin if rst='0' then num:=0; elsif rising_edge(clk) then if num=4999999 then num:=0;clk100ms<='1' else num:=num+1;clk100ms<='0' end if; end if; end process;-5兆分頻,產(chǎn)生clk10ms(即clk0.01s)作為秒表計時脈沖process(clk,rst)variable num:integer range 0 to 499999;

24、 begin if rst='0' then num:=0; elsif rising_edge(clk) then if num=499999 then num:=0;clk10ms<='1' else num:=num+1;clk10ms<='0' end if; end if; end process;end;4.3模式循環(huán)模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mode is -實體聲明port(sele

25、ctmode:in std_logic;mode:buffer std_logic_vector(2 downto 0);end;architecture data of mode isbeginprocess(selectmode)beginif rising_edge(selectmode) then-模式循環(huán)計數(shù)器if mode="100" thenmode<="000"else mode<=mode+1;end if;end if;end process;end;4.4功能選擇模塊library ieee;use ieee.std_l

26、ogic_1164.all;use ieee.std_logic_unsigned.all;entity gnxz is-實體聲明port(zt:in std_logic_vector(2 downto 0);sz1,sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);-時鐘顯示信號mb1,mb2,mb3,mb4,mb5,mb6:in std_logic_vector(3 downto 0);-秒表顯示信號nz1,nz2,nz3,nz4,nz5,nz6:in std_logic_vector(3 downto 0);-鬧鐘顯示信號djs1,d

27、js2,djs3,djs4,djs5,djs6:in std_logic_vector(3 downto 0);-倒計時顯示信號 s1,s2,s3,s4,s5,s6,s7,s8:out std_logic_vector(3 downto 0)-輸出,送入顯示模塊用數(shù)碼管進行顯示);end;architecture data of gnxz isbeginprocess(zt,sz1,sz2,sz3,sz4,sz5,sz6,-選擇譯碼器數(shù)日信號nz3,nz4,nz5,nz6,mb1,mb2,mb3,mb4,mb5,mb6,djs1,djs2,djs3,djs4,djs5,djs6)beginif

28、 zt="000" then-1時鐘顯示s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0001"s8<="1111"elsif zt="001" then-2調(diào)整s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0010"s8<="1111"elsif zt=&quo

29、t;010" then-3鬧鐘s1<="0000"s2<="0000"s3<=nz3;s4<=nz4;s5<=nz5;s6<=nz6;s7<="0011"s8<="1111"elsif zt="011" then-4秒表s1<=mb1;s2<=mb2;s3<=mb3;s4<=mb4;s5<=mb5;s6<=mb6;s7<="0100"s8<="1111"

30、;elsif zt="100" then-5倒計時s1<=djs1;s2<=djs2;s3<=djs3;s4<=djs4;s5<=djs5;s6<=djs6;s7<="0101"s8<="1111"else s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0001"s8<="1111" end if;end process;end;4.5顯示模

31、塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xs isport(xsin:in std_logic_vector(3 downto 0);xsout:out std_logic_vector(6 downto 0);end;architecture data of xs isbeginprocess(xsin)-顯示譯碼器begin case xsin is when "0000"=>xsout<="1000000" when

32、 "0001"=>xsout<="1111001" when "0010"=>xsout<="0100100" when "0011"=>xsout<="0110000" when "0100"=>xsout<="0011001" when "0101"=>xsout<="0010010" when "0110"=&g

33、t;xsout<="0000010" when "0111"=>xsout<="1111000" when "1000"=>xsout<="0000000" when "1001"=>xsout<="0010000" when others=>xsout<="1111111"end case;end process; end;4.6 時鐘及其調(diào)整模塊library ieee;use

34、ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sz is-實體聲明port(zt:in std_logic_vector(2 downto 0);clk,clk100ms,rst,add,dec:in std_logic; sz1,sz2,sz3,sz4,sz5,sz6:buffer std_logic_vector(3 downto 0);ledbs: out std_logic);end;architecture data of sz issignal clk1m,clk1h,clk1m0,clk1h0:std

35、_logic;-進位脈沖信號signal js,js1:std_logic_vector(0 downto 0);-按鍵計時信號beginprocess(zt,js,clk100ms,clk1m0,add,dec)-時間校準選擇脈沖分針部分beginif zt="001" and js="1" thenclk1m<=clk100ms;elsif zt="001" and js/="1" thenclk1m<=clk1m0 or not dec;else clk1m<=clk1m0;end if;e

36、nd process;process(zt,js1,clk100ms,clk1h0)-時間校準選擇脈沖時針部分beginif zt="001" and js1="1" thenclk1h<=clk100ms;elsif zt="001" and js1/="1" thenclk1h<=clk1h0 or not dec;else clk1h<=clk1h0;end if;end process;process(zt,clk,rst,add,dec)-時鐘分針按鍵計時beginif zt="

37、;000" and rst='0' thensz2<="0000"sz1<="0000"elseif zt="001" and dec='0' then if rising_edge(clk) thenjs<=js+1;if js="1" then js<="1"end if;end if;else js<="0"end if;if zt="001" and add='0

38、9; then -時鐘時針按鍵計時if rising_edge(clk) thenjs1<=js1+1;if js1="1" then js1<="1"end if;end if;else js1<="0"end if;if rising_edge(clk) then-時鐘秒針計數(shù)器if sz2="0101" and sz1="1001" thensz2<="0000"sz1<="0000"clk1m0<='1&

39、#39;elsifsz1="1001"thensz1<="0000"sz2<=sz2+1;clk1m0<='0'else sz1<=sz1+1;clk1m0<='0'end if;end if;end if;end process;process(zt,clk1m,rst)-時鐘分針計數(shù)器beginif zt="000" and rst='0' thensz4<="0000"sz3<="0000"elsif

40、 rising_edge(clk1m) thenif sz4="0101" and sz3="1001" thensz4<="0000"sz3<="0000"clk1h0<='1'elsifsz3="1001"thensz3<="0000"sz4<=sz4+1;clk1h0<='0'else sz3<=sz3+1;clk1h0<='0'end if;end if;end proce

41、ss;process(clk1h,rst,zt)-時鐘時針計數(shù)器begin if zt="000" and rst='0' thensz6<="0001"sz5<="0010"elsif rising_edge(clk1h) thenif sz6="0010" and sz5="0011" thensz6<="0000"sz5<="0000"elsifsz5="1001"thensz5<=&

42、quot;0000"sz6<=sz6+1;else sz5<=sz5+1;end if;end if;end process;process(sz1,sz2,sz3,sz4)-整點報時beginif sz4="0000" and sz3="0000" and sz2="0000" thenledbs<='1'else ledbs<='0'end if;end process;end;4.7鬧鐘模塊library ieee;use ieee.std_logic_1164.

43、all;use ieee.std_logic_unsigned.all;entity nz isport(startnz,add,dec,rst,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);-時鐘顯示信號nz3,nz4,nz5,nz6:buffer std_logic_vector(3 downto 0);-鬧鐘顯示信號lednz:out std_logic);end;architecture data of nz

44、 issignal js,js1:std_logic_vector(0 downto 0);-按鍵計時信號signal clkd,clkg:std_logic;-進位脈沖信號beginprocess(js,clk100ms,dec)beginif js="1" then-分針按鍵計時clkd<=clk100ms;else clkd<=not dec;end if;end process;process(js1,clk100ms,add)-時針按鍵計時beginif js1="1" thenclkg<=clk100ms;else clkg

45、<=not add;end if;end process;process(zt,add,dec,rst,clk,clkg,clkd)-鬧鐘時間手動設置beginif zt="010" thenif rst='0' then nz6<="0001"nz5<="0010"nz4<="0000"nz3<="0000"-鬧鐘復位12:00:00elseif dec='0' then if rising_edge(clk) thenjs<

46、=js+1;if js="1" then js<="1"end if;end if;else js<="0"end if;if add='0' then if rising_edge(clk) thenjs1<=js1+1;if js1="1" then js1<="1"end if;end if;else js1<="0"end if;if falling_edge(clkd) then-鬧鐘手動設置分鐘if nz4="

47、;0101" and nz3="1001" thennz4<="0000"nz3<="0000"elsif nz3="1001" thennz3<="0000"nz4<=nz4+1;else nz3<=nz3+1;end if;end if;if falling_edge(clkg) then-鬧鐘手動設置時鐘if nz6="0010" and nz5="0011" thennz6<="0000&qu

48、ot;nz5<="0000"elsif nz5="1001" thennz5<="0000"nz6<=nz6+1;else nz5<=nz5+1;end if;end if;end if;end if;end process;process(startnz,nz6,nz5,nz4,nz3,sz2,sz3,sz4,sz5,sz6)-鬧鐘判斷及提示beginif startnz='1' thenif nz6=sz6 and nz5=sz5 and nz4=sz4 and nz3=sz3 and sz

49、2="0000" thenlednz<='1'else lednz<='0'end if;else lednz<='0'end if;end process;end;4.8秒表模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mb is-實體聲明port(zt:in std_logic_vector(2 downto 0);clk,rst,startmb:in std_logic; mb1,mb2

50、,mb3,mb4,mb5,mb6:buffer std_logic_vector(3 downto 0);end ;architecture data of mb issignal clk10ms,clk1s,clk1m:std_logic;-進位脈沖信號beginprocess(zt,clk,startmb,rst)-秒表脈沖計數(shù)器beginif zt="011" and rst='0' thenmb2<="0000"mb1<="0000"elsif startmb='1' thenif

51、rising_edge(clk) thenif mb2="1001" and mb1="1001" thenmb2<="0000"mb1<="0000"clk1s<='1'elsifmb1="1001"thenmb1<="0000"mb2<=mb2+1;clk1s<='0'else mb1<=mb1+1;clk1s<='0'end if;end if;end if;end proc

52、ess;process(zt,clk1s,rst)-秒表分針計數(shù)器beginif zt="011" and rst='0' thenmb4<="0000"mb3<="0000"elsif rising_edge(clk1s) thenif mb4="0101" and mb3="1001" thenmb4<="0000"mb3<="0000"clk1m<='1'elsifmb3="10

53、01"thenmb3<="0000"mb4<=mb4+1;clk1m<='0'else mb3<=mb3+1;clk1m<='0'end if;end if;end process;process(zt,clk1m,rst)-秒表時針計數(shù)器begin if zt="011" and rst='0' thenmb6<="0000"mb5<="0000"elsif rising_edge(clk1m) thenif mb

54、6="0101" and mb5="1001" thenmb5<="0000"mb6<="0000"elsifmb5="1001"thenmb5<="0000"mb6<=mb6+1;else mb5<=mb5+1;end if;end if;end process;end;4.9 倒計時模塊library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ie

55、ee.std_logic_arith.all;entity djs is-實體聲明port(rst,startdjs,add,dec,clk,clk100ms:in std_logic;-按鍵及脈沖輸入zt:in std_logic_vector(2 downto 0);-狀態(tài)輸入djs1,djs2,djs3,djs4,djs5,djs6:buffer std_logic_vector(3 downto 0);-倒計時顯示輸出leddjs:out std_logic-倒計時提示燈);end;architecture data of djs issignal clk1s,clk1m,clkd,c

56、lkg:std_logic;-進位脈沖signal js,js1:std_logic_vector(0 downto 0);-按鍵計時信號signal s1,s2,s3,s4,s5,s6,ss1,ss2,ss3,ss4,ss5,ss6:std_logic_vector(3 downto 0);-倒計時設置時間信號和倒計時減法器時間信號begin-結構體process(js,clk100ms,dec)-分針按鍵計時beginif js="1" thenclkd<=clk100ms;else clkd<=not dec;end if;end process;process(js1,clk100ms,add)-時針按鍵計時beginif js1="1" thenclkg<=clk100ms;else clkg<=not add;end if;end process;process(zt,add,dec,rst,startdjs,clk,clkd,clkg)-倒計時設置時間beginif zt="100" and rst='0' then-異步復位s6<="0000"s5<="0000"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論