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

下載本文檔

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

文檔簡介

1、EDA課 程 設(shè) 計設(shè)計題目:VHDL數(shù)字時鐘設(shè)計 系 部:電子信息與電氣工程 年 級:12 級 班 級:自動化(1)班 姓 名:王廷弼 學 號:1205033015 VHDL數(shù)字時鐘設(shè)計1、功能介紹 1)具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計時。 2)時鐘計數(shù)顯示時有LED燈的花樣顯示。 3)具有調(diào)節(jié)小時、分鐘及清零的功能。 4)具有整點報時功能。2、總體方框圖數(shù)字時鐘控制單元使能端信號輸出信號復位信號LED顯示“花樣”顯示CLK信號3、性能指標及功能設(shè)計 1)時鐘計數(shù):完成時、分、秒的正確計時并且顯示所計的數(shù)字;對秒、分60進制計數(shù),即從0到59循環(huán)計數(shù),時鐘24進制計數(shù),即從0到2

2、3循環(huán)計數(shù),并且在數(shù)碼管上顯示數(shù)值。2)時間設(shè)置:手動調(diào)節(jié)分鐘、小時,可以對所設(shè)計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進行任意的調(diào)整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數(shù)一次。3)清零功能:reset為復位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)??梢愿鶕?jù)我們自己任意時間的復位。4)蜂鳴器在整點時有報時信號產(chǎn)生,蜂鳴器報警。產(chǎn)生“滴答.滴答”的報警聲音。5)LED燈在時鐘顯示時有花樣顯示信號產(chǎn)生。即根據(jù)進位情況,LED不停的閃爍,從而產(chǎn)生“花樣”信號。 4、 方案選擇根據(jù)總體方框圖及各部分分配的功能可知,本系

3、統(tǒng)可以由秒計數(shù)器、分鐘計數(shù)器、小時計數(shù)器、整點報時、分的調(diào)整以及小時的調(diào)整和一個頂層文件構(gòu)成。采用自頂向下的設(shè)計方法,子模塊利用VHDL語言設(shè)計,頂層文件用原理圖的設(shè)計方法。顯示:小時采用24進制,而分鐘和秒均60進制。 5、細化框圖根據(jù)自頂向下的方法以及各功能模塊的的功能實現(xiàn)上述設(shè)計方案應(yīng)系統(tǒng)細化框圖:數(shù)字時鐘控制單元時調(diào)整分調(diào)整使能端信號CLK信號時顯示分顯示秒顯示24進制60進制60進制LED顯示整點報時花樣顯示6、編寫程序、仿真和分析1、秒計數(shù)器1)VHDL語言描述程序LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC

4、_UNSIGNED.ALL;ENTITY hour IS PORT(clk,reset:IN STD_LOGIC; daout:out STD_LOGIC_VECTOR(5 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN daout=count; PROCESS(clk,reset) BEGIN IF(reset=0)THEN count=000000; 若reset=0,則異步清零 ELSIF(clkevent and clk=1)THE

5、N 否則,若clk上升沿到 IF(count(3 DOWNTO 0)=1001)THEN 若個位計時恰好到“1001”即9 IF(count16#23#)THEN 23進制 count=count+7; 若到23D則 else count=000000; 復0 END IF; ELSIF (count16#23#)THEN 若未到23D,則count進1 count=count+1; ELSE 否則清零 count=000000; END IF; END IF(count(3 DOWNTO 0)=“1001”) END IF; END IF(reset=0) END PROCESS;END f

6、un;2)秒計數(shù)器的仿真波形圖3)波形分析利用60進制計數(shù)器完成00到59的循環(huán)計數(shù)功能,當秒計數(shù)至59時,再來一個時鐘脈沖則產(chǎn)生進位輸出,即enmin=1;reset作為復位信號低電平有效,即高電平時正常循環(huán)計數(shù),低電平清零。因為這種60進制的VHDL語言是很好寫的,它并不復雜,再說我們必須要學會這些基本的硬件語言的描寫。2、分鐘計數(shù)器1)VHDL語言描述程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS PORT(clk,clk1,reset,sethour:

7、IN STD_LOGIC; enhour:OUT STD_LOGIC; daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY minute ;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0); SIGNAL enhour_1, enhour_2: STD_LOGIC; enmin_1為59分時的進位信號 BEGIN enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串 daout=count; enhour_2= (sethour and clk1); s

8、ethour為手動調(diào)時控制信號,高電平有效 enhour= (enhour_1 or enhour_2); PROCESS(clk,reset,sethour) BEGIN IF(reset=0) THEN 若reset為0,則異步清零 count=0000000; ELSIF(clkevent and clk=1)THEN 否則,若clk上升沿到 IF(count (3 DOWNTO 0) =1001)THEN若個位計時恰好到“1001”即9 IF(count 16#60#) THEN 又若count小于16#60#,即60 IF(count=1011001) THEN又若已到59D enh

9、our_1=1; 則置進位為1 count=0000000; count復0 ELSE count=count+7; 若count未到59D,則加7,即作“加6校正” END IF; 使前面的16#60#的個位轉(zhuǎn)變?yōu)?421BCD的容量 ELSE count=0000000;count復0(有此句,則對無效狀態(tài)電路可自啟動) END IF; END IF(count16#60#) ELSIF (count 16#60#) THEN count=count+1; 若count16#60#則count加1 enhour_1=0 after 100 ns; 沒有發(fā)生進位 ELSE count=000

10、0000; 否則,若count不小于16#60# count復0 END IF; END IF(count(3 DOWNTO 0)=“1001”) END IF; END IF(reset=0) END process;END fun;2)分鐘計數(shù)器的仿真波形圖3)波形分析小時計數(shù)模塊利用24進制計數(shù)器,通過分鐘的進位信號的輸入可實現(xiàn)從00到23的循環(huán)計數(shù)。 3、小時計數(shù)器1)VHDL語言描述程序LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS PORT(clk,res

11、et:IN STD_LOGIC; daout:out STD_LOGIC_VECTOR(5 DOWNTO 0);END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN daout=count; PROCESS(clk,reset) BEGIN IF(reset=0)THEN count=000000; 若reset=0,則異步清零 ELSIF(clkevent and clk=1)THEN 否則,若clk上升沿到 IF(count(3 DOWNTO 0)=1001)T

12、HEN 若個位計時恰好到“1001”即9 IF(count16#23#)THEN 23進制 count=count+7; 若到23D則 else count=000000; 復0 END IF; ELSIF (count16#23#)THEN 若未到23D,則count進1 count=count+1; ELSE 否則清零 count=000000; END IF; END IF(count(3 DOWNTO 0)=“1001”) END IF; END IF(reset=0) END PROCESS;END fun;2)小時計數(shù)器的仿真波形圖3)波形分析小時計數(shù)模塊利用24進制計數(shù)器,通過分

13、鐘的進位信號的輸入可實現(xiàn)從00到23的循環(huán)計數(shù)。4、整點報時報警模塊 1)VHDL語言描述程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS PORT(clk:IN STD_LOGIC; dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0); speak:OUT STD_LOGIC; lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END alert;ARCHITECTURE fun OF alert IS SIGNA

14、L count:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN speaker:PROCESS(clk) BEGIN speak=10)THEN count1=00;count1為三進制加法計數(shù)器 ELSE count1=count1+1; END IF ; END IF ; END IF ; END PROCESS speaker; lamper:PROCESS(clk) BEGIN IF(rising_edge(clk)THEN IF(count=10)THEN IF(count

15、=00)THEN lamp=001;循環(huán)點亮三只燈 ELSIF(count=01)THEN lamp=010; ELSIF(count=10)THEN lamp=100; END IF; count=count+1; ELSE count=00; END IF; END IF; END PROCESS lamper;END fun;2)整點報時模塊仿真波形圖1) 波形分析由圖知對于整點報時模塊,當分鐘計數(shù)至59時來一個時鐘脈沖則產(chǎn)生一個進位信號,分鐘計數(shù)到00,此時產(chǎn)生報警信號持續(xù)一分鐘。當有時鐘脈沖時lamp顯示燈就閃爍輪續(xù)點亮。7、全系統(tǒng)聯(lián)調(diào)1、數(shù)字時鐘系統(tǒng)原理圖2、數(shù)字時鐘系統(tǒng)波形圖仿真8、總結(jié)通過這次設(shè)計,進一步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當每一個子模塊編寫調(diào)試成功時,心里特別的開心。但是在編寫頂層文件的程序時,遇到了不少問題,特別是各元件之間的連接,以及信號的定義,總是有錯誤,在細心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。器件的選擇也很重

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論