數(shù)字時鐘的VHDL設(shè)計說明_第1頁
數(shù)字時鐘的VHDL設(shè)計說明_第2頁
數(shù)字時鐘的VHDL設(shè)計說明_第3頁
數(shù)字時鐘的VHDL設(shè)計說明_第4頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、下載可編輯數(shù)字系統(tǒng)設(shè)計與硬件描述語言期末考試作業(yè)題目:數(shù)字時鐘的 VHDL 設(shè)計學(xué)院:信息學(xué)院專業(yè):物聯(lián)網(wǎng)工程學(xué)號:3011204286姓名:趙洋.專業(yè) .整理 .下載可編輯2013-11-06一、選題設(shè)計描述1. 功能介紹設(shè)計一臺能顯示時 、分、秒的數(shù)字鐘 。由時鐘信號經(jīng)分頻產(chǎn)生秒脈沖;計時計數(shù)器用 24 進制計時電路 ;可手動校時 ,能分別進行時 、分的校正 ;具有整點報時功能 。2. 算法簡介設(shè)計原理時顯示器分顯示器秒顯示器時譯碼器分譯碼器秒譯碼器報時時計數(shù)器分計數(shù)器秒計數(shù)器校時電路1H Z振蕩器分頻器圖 1 數(shù)字鐘的系統(tǒng)框圖.專業(yè) .整理 .下載可編輯該系統(tǒng)由振蕩器 、分頻器、“時、分

2、、秒 ”計數(shù)器 、譯碼器及顯示器 、校時電路 、整點報時電路等組成。振蕩器和分頻器產(chǎn)生整個系統(tǒng)的時基信號,它直接決定計時系統(tǒng)的精度 。“秒計數(shù)器 ”采用六十進制計數(shù)器 ,每累計 60 秒向 “分計數(shù)器 ”進位 ;“分計數(shù)器 ”采用六十進制計數(shù)器 ,每累計60 分向 “時計數(shù)器 ”進位 ;“時計數(shù)器 ”采用二十四進制計數(shù)器,按照 “24 翻 1”規(guī)律計數(shù) 。“時、 分、秒 ”計數(shù)器的輸出經(jīng)譯碼器送顯示器顯示。校時電路用來當計時出現(xiàn)誤差時對“時、分、秒 ”進行校對調(diào)整 。設(shè)計過程1. 設(shè)計思路時鐘脈沖信號作為數(shù)字鐘的時間基準,再經(jīng)分頻器輸出標準秒脈沖。秒計數(shù)器計滿 60 后向分計數(shù)器進位 ,分計數(shù)

3、器計滿60 后向小時計數(shù)器進位 ,小時計數(shù)器是計滿24 后,系統(tǒng)自動復(fù)位重新開始計數(shù)。計數(shù)器的輸出經(jīng)譯碼電路后送到顯示器顯示??梢杂眯r電路進行校時 。2. 數(shù)字鐘的設(shè)計方案數(shù)字鐘的設(shè)計包括編碼模塊、分頻模塊 、秒計時模塊 、分計時模塊 、小時計時模塊和報時模塊 。該數(shù)字鐘可以實現(xiàn)3 個功能:計時功能 、報時功能和設(shè)置時間功能。2.1. 編碼模塊編碼模塊主要是對時 (sethour )、分( setmin )、秒(setsec)的設(shè)置輸入 。2.2. 分頻模塊在數(shù)字鐘的設(shè)計中,外部輸入時鐘信號clk1 的頻率為8hz ,其分頻后的頻率為.專業(yè) .整理 .下載可編輯clk ,使其分頻結(jié)果為1hz

4、,用來提供給秒計時模塊 、分計時模塊 、小時計時模塊 。2.3. 秒計時模塊將“秒計時脈沖 ”clk 接信號源單元的1HZ 脈沖信號 ,此時秒顯示將從00 計時到59 ,然后回到 00,重新計時 。在秒位進行計時的過程中。秒計時器是由一個 60 進制的計數(shù)器構(gòu)成的 ,具有置數(shù)和計數(shù)功能 。其中 rst 為置數(shù)信號,當 rst 為 1 時,秒計時器置數(shù) 。clk 為驅(qū)動秒計時器的時鐘,sec1、 sec0 為秒計時器的高位和低位輸出 。2.4. 分計時模塊分計時電路 :將“分計時脈沖 ”clk 接信號源單元的1HZ 脈沖信號 ,此時分顯示將從00 計時到 59,然后回到 00 ,重新計時 。 在

5、分位進行計時的過程中。分計時器是由一個60 進制的計數(shù)器構(gòu)成的 ,具有置數(shù)和計數(shù)功能 。其中 rst 為置數(shù)信號 ,當 rst 為 1 時,分計時器置數(shù) 。min1 、 min0 為分計時器的高位和低位輸出。2.5. 小時計時模塊將“小時計時脈沖 ”clk 接信號源單元的 1HZ 脈沖信號 ,此時小時顯示將從00 計時到24 ,然后回到 00,重新計時 。時計時器是由一個 24 進制的計數(shù)器構(gòu)成的 ,具有置數(shù)和計數(shù)功能 。其中的 rst 為置數(shù)信號,當 rst 為 1 時,時計時器置數(shù) 。hr1 、 hr0 為時計時器的高位和低位輸出。3.2.6, 報時模塊當分位到 59 時,秒位計到 51

6、秒、53 秒、55 秒、57 秒、59 秒時報時一次 ,而后小時位加 1。二、程序源代碼及說明.專業(yè) .整理 .下載可編輯源程序數(shù)字鐘整體程序整個程序分為五個部分,分別為分頻部分 、校時部分 、秒部分 、分部分 、小時部分。VHDL 程序如下 :library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity clock_24 isPort (clk1: in STD_LOGIC;-時鐘rst : inSTD_LOGIC;-復(fù)位,高有效seth

7、r: inSTD_LOGIC;-小時設(shè)置 ,增加 1setmin: inSTD_LOGIC;-分鐘設(shè)置setsec: inSTD_LOGIC;-秒設(shè)置hr0: outSTD_LOGIC_VECTOR(3 downto 0);- 小時個位hr1: outSTD_LOGIC_VECTOR(3 downto 0);- 小時十位min0: outSTD_LOGIC_VECTOR(3 downto 0);- 分鐘個位.專業(yè) .整理 .下載可編輯min1: outSTD_LOGIC_VECTOR(3 downto 0);- 分鐘十位sec0: outSTD_LOGIC_VECTOR(3 downto 0)

8、;- 秒個位sec1: outSTD_LOGIC_VECTOR(3 downto 0);- 秒十位speak: outSTD_LOGIC-報時輸出);end clock_24;architecture rtl of clock_24 issignal co_sec0: STD_LOGIC;- 秒個位計數(shù)溢出標示signal co_sec1: STD_LOGIC;signal co_min0: STD_LOGIC;signal co_min1: STD_LOGIC;signal co_hr0: STD_LOGIC;signal cnt_sec0: STD_LOGIC_VECTOR(3 downt

9、o 0);-秒個位計數(shù)器signal cnt_sec1: STD_LOGIC_VECTOR(3 downto 0);signal cnt_min0: STD_LOGIC_VECTOR(3 downto 0);signal cnt_min1: STD_LOGIC_VECTOR(3 downto 0);signal cnt_hr0: STD_LOGIC_VECTOR(3 downto 0);signal cnt_hr1: STD_LOGIC_VECTOR(3 downto 0);signalstate_hour:STD_LOGIC_VECTOR(1 downto0);- 小 時 個 位 當 前 狀

10、 態(tài) , 當.專業(yè) .整理 .下載可編輯state_hour=00,01時,cnt_hr0 計數(shù)從 0 到 9,當 state_hour=10時,cnt_hr0 計算從0到 3.begincounter_second0:- 秒個位計數(shù)器process(clk1,rst,setsec)beginif(rst=1) then-異步復(fù)位cnt_sec0=1000) thencnt_sec0=cnt_sec0-1000;elsecnt_sec0=cnt_sec0+0010;end if;elseif(cnt_sec0=1001)then-如果 cnt_sec0 計數(shù)到 9,則將 cnt_sec0=0;

11、cnt_sec0=0000;else- 否則將 cnt_sec0 增加 1;cnt_sec0=cnt_sec0+0001;-否則計數(shù)器加 1.專業(yè) .整理 .下載可編輯end if;end if;if(cnt_sec0=1000) then-產(chǎn)生進位標志co_sec0=1;elseco_sec0=0;end if;end if;end process counter_second0;counter_second1:- 秒十位計數(shù)器process(clk1,rst)beginif(rst=1) thencnt_sec1=0000;elsif(clk1event and clk1=1)thenif

12、(co_sec0=1)thenif(cnt_sec1=0101)then-如果溢出則置 0cnt_sec1=0000;elsecnt_sec1=cnt_sec1+0001;-否則計數(shù)器加 1end if;.專業(yè) .整理 .下載可編輯end if;if(cnt_sec0=1000 and cnt_sec1=0101)then-產(chǎn)生進位標志co_sec1=1;elseco_sec1=0;end if;end if;end process counter_second1;counter_miniute0:-分個位計數(shù)器process(clk1,rst,setmin)beginif(rst=1) th

13、encnt_min0=0000;elsif(clk1event and clk1=1)thenif(setmin=1)thencnt_min0=cnt_min0+0001;end if;if (co_sec1=1)thenif(cnt_min0=1001)then-如果溢出則置 0cnt_min0=0000;.專業(yè) .整理 .下載可編輯elsecnt_min0=cnt_min0+0001;-否則計數(shù)器加 1end if;end if;if(cnt_min0=1001 and cnt_sec0=1000 and cnt_sec1=0101)then-產(chǎn)生進位標志co_min0=1;elseco_

14、min0=0;end if;end if;end process counter_miniute0;counter_miniute1:-分十位計數(shù)器process(clk1,rst)beginif(rst=1) thencnt_min1=0000;elsif(clk1event and clk1=1)thenif(co_min0=1)thenif(cnt_min1=0101)then-如果溢出則置 0cnt_min1=0000;.專業(yè) .整理 .下載可編輯elsecnt_min1=cnt_min1+0001;-否則計數(shù)器加 1end if;end if;if(cnt_min1=0101andc

15、nt_min0=1001andcnt_sec0=1000andcnt_sec1=0101)then-產(chǎn)生進位標志co_min1=1;elseco_min1=0;end if;end if;end process counter_miniute1;counter_hour0:- 小時個位計數(shù)器process(clk1,rst,sethr)beginif(rst=1) thencnt_hr0=0000;state_hour=00;elsif(clk1event and clk1=1)thenif(sethr=1)then.專業(yè) .整理 .下載可編輯cnt_hr0-如果當前是 00, cnt_hr0

16、 的計數(shù)范圍從 09if (co_min1=1)thenif(cnt_hr0=1001)then-如果溢出則置 0cnt_hr0=0000;state_hour=01;elsecnt_hr0=cnt_hr0+0001;-否則計數(shù)器加 1end if;end if;if(cnt_hr0=1001andcnt_min1=0101andcnt_min0=1001andcnt_sec0=1000 and cnt_sec1=0101)thenco_hr0=1;-產(chǎn)生進位標志elseco_hr0-如果當前是 01, cnt_hr0 的計數(shù)范圍從 09if (co_min1=1)thenif(cnt_hr0

17、=1001)then-如果溢出則置 0.專業(yè) .整理 .下載可編輯cnt_hr0=0000;state_hour=10;elsecnt_hr0=cnt_hr0+0001;-否則計數(shù)器加 1end if;end if;if(cnt_hr0=1001andcnt_min1=0101andcnt_min0=1001andcnt_sec0=1000 and cnt_sec1=0101)thenco_hr0=1;elseco_hr0-如果當前是 10, cnt_hr0 的計數(shù)范圍從 03if (co_min1=1)thenif(cnt_hr0=0011)then-如果溢出則置 0cnt_hr0=0000

18、;state_hour=00;elsecnt_hr0=cnt_hr0+0001;-否則計數(shù)器加 1end if;.專業(yè) .整理 .下載可編輯end if;if(cnt_hr0=0011andcnt_min1=0101andcnt_min0=1001andcnt_sec0=1000 and cnt_sec1=0101)thenco_hr0=1;-產(chǎn)生進位標志elseco_hr0state_hour=00;end case;end if;end process counter_hour0;counter_hour1:- 小時十位計數(shù)器process(clk1,rst)beginif(rst=1) thencnt_hr1=0000;elsif(clk1event and clk1=1)thenif(co_hr0=1)thenif(cnt_hr1=0010)then-如果溢出則置 0.專業(yè) .整理 .下載可編輯cnt_hr1=0000;elsecnt_hr1=cnt_hr1+0001;end if;end if;end if;end process counter_hour1;- 在 *-59-5* 的時候 speak=1 ,否則等于 0with(cnt_min1=0101 and cnt_min0=1001 and cnt_sec1=0101)

溫馨提示

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

評論

0/150

提交評論