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

下載本文檔

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

文檔簡(jiǎn)介

1、vhdl數(shù)字時(shí)鐘設(shè)計(jì)數(shù)字時(shí)鐘設(shè)計(jì)1、功能介紹1)具有時(shí)、分、秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí)2)時(shí)鐘計(jì)數(shù)顯示時(shí)有LED燈的花樣顯示。3)具有調(diào)節(jié)小時(shí)、分鐘及清零的功能。4)具有整點(diǎn)報(bào)時(shí)功能。2、總體方框圖3、性能指標(biāo)及功能設(shè)計(jì)1)時(shí)鐘計(jì)數(shù):完成時(shí)、分、秒的正確計(jì)時(shí)并且顯示所計(jì)的數(shù)字;對(duì)秒、分60進(jìn)制計(jì)數(shù),即從0到59循環(huán)計(jì)數(shù),時(shí)鐘一一24進(jìn)制計(jì)數(shù),即從0至U23循環(huán)計(jì)數(shù),并且在數(shù)碼管上顯示數(shù)值。2)時(shí)間設(shè)置:手動(dòng)調(diào)節(jié)分鐘、小時(shí),可以對(duì)所設(shè)計(jì)的時(shí)鐘任意調(diào)時(shí)間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實(shí)驗(yàn)板上的鍵7與鍵4進(jìn)行任意的調(diào)整用為我們用的時(shí)鐘信號(hào)均就是1HZ的,所以每LED燈變化一次就

2、來一個(gè)脈沖,即計(jì)數(shù)一次。3)清零功能:reset為復(fù)位鍵,低電平時(shí)實(shí)現(xiàn)清零功能,高電平時(shí)正常計(jì)數(shù)??梢愿鶕?jù)我們自己任意時(shí)間的復(fù)位。4)蜂鳴器在整點(diǎn)時(shí)有報(bào)時(shí)信號(hào)產(chǎn)生,蜂鳴器報(bào)警。產(chǎn)生“滴答、滴答”的報(bào)警聲音。5)LED燈在時(shí)鐘顯示時(shí)有花樣顯示信號(hào)產(chǎn)生。即根據(jù)進(jìn)位情況,LED不停的閃爍,從而產(chǎn)生“花樣”信號(hào)。二、選擇方案1、方案選擇方案一:根據(jù)總體方框圖及各部分分配的功能可知,本系統(tǒng)可以由秒計(jì)數(shù)器、分鐘計(jì)數(shù)器、小時(shí)計(jì)數(shù)器、整點(diǎn)報(bào)時(shí)、分的調(diào)整以及小時(shí)的調(diào)整與一個(gè)頂層文件構(gòu)成。采用自頂向下的設(shè)計(jì)方法,子模塊利用VHDL語言設(shè)計(jì),頂層文件用原理圖的設(shè)計(jì)方法。顯示:小時(shí)采用24進(jìn)制,而分鐘均就是采用6進(jìn)制

3、與10進(jìn)制的組合。方案二:根據(jù)總體方框圖及各部分分配的功能可知,本系統(tǒng)可以由秒計(jì)數(shù)器、分鐘計(jì)數(shù)器、小時(shí)計(jì)數(shù)器、整點(diǎn)報(bào)時(shí)、分的調(diào)整以及小時(shí)的調(diào)整與一個(gè)頂層文件構(gòu)成。采用自頂向下的設(shè)計(jì)方法,子模塊利用VHDL語言設(shè)計(jì),頂層文件用原理圖的設(shè)計(jì)方法。顯示:小時(shí)采用24進(jìn)制,而分鐘與秒均60進(jìn)制。終上所述,考慮到試驗(yàn)時(shí)的簡(jiǎn)單性,故我選擇了方案二。三、細(xì)化框圖根據(jù)自頂向下的方法以及各功能模塊的的功能實(shí)現(xiàn)上述設(shè)計(jì)方案應(yīng)系統(tǒng)細(xì)化框圖:時(shí)調(diào)整分調(diào)整花樣顯示分顯示時(shí)顯示控制單元LED顯示整點(diǎn)報(bào)時(shí)四、編寫程序、仿真與分析1、秒計(jì)數(shù)器1)VHDL語言描述程序見附錄2)秒計(jì)數(shù)器的仿真波形圖Mas'er I iM

4、e Har:17S25ns U Pointer 3DL52ut Irter*ai:3O5us Starttnd:elkresetdais'llB BB B IH C組 71 us 31 35 us 30 93 g 31.63 us32.27 us 32 rLnjTrLnnjULrLnnruWLnrLrwuwLnjPWCrJVL3)波形分析利用60進(jìn)制計(jì)數(shù)器完成 個(gè)時(shí)鐘脈沖則產(chǎn)生進(jìn)位輸出00到59的循環(huán)計(jì)數(shù)功能,當(dāng)秒計(jì)數(shù)至59時(shí),再來一,即enmin=1;reset作為復(fù)位信號(hào)低電平有效,即高電平時(shí)正常循環(huán)計(jì)數(shù),低電平清零。因?yàn)檫@種60進(jìn)制的VHD印言就是很好寫的,它并不復(fù)雜,再說我們必

5、須要學(xué)會(huì)這些基本的硬件語言的描寫。2、分鐘計(jì)數(shù)器1)VHDL語言描述程序見附錄2)分鐘計(jì)數(shù)器的仿真波形圖3)波形分析小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號(hào)的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。3、小時(shí)計(jì)數(shù)器1)VHDL語言描述程序見附錄2)小時(shí)計(jì)數(shù)器的仿真波形圖Kas'er Time Ear:17 825 Hi Pointer11.35 us hletvat11.83 us Starl:Enc:Value s 17.8311. us12.2S ux1Z.92 ui13. 55 "resetrLrLn njTrLn rLnnjn rLrLrLn rLrLrLn rLr

6、LruTHdauKit3)波形分析小時(shí)計(jì)數(shù)模塊利用24進(jìn)制計(jì)數(shù)器,通過分鐘的進(jìn)位信號(hào)的輸入可實(shí)現(xiàn)從00到23的循環(huán)計(jì)數(shù)。4、整點(diǎn)報(bào)時(shí)報(bào)警模塊1)VHDL語言描述程序見附錄2)整點(diǎn)報(bào)時(shí)模塊仿真波形圖1)波形分析由圖知對(duì)于整點(diǎn)報(bào)時(shí)模塊,當(dāng)分鐘計(jì)數(shù)至59時(shí)來一個(gè)時(shí)鐘脈沖則產(chǎn)生一個(gè)進(jìn)位信號(hào),分鐘計(jì)數(shù)到00,此時(shí)產(chǎn)生報(bào)警信號(hào)持續(xù)一分鐘。當(dāng)有時(shí)鐘脈沖時(shí)lamp顯示燈就閃爍輪續(xù)點(diǎn)亮。五、全系統(tǒng)聯(lián)調(diào)1、數(shù)字時(shí)鐘系統(tǒng)原理圖2、數(shù)字時(shí)鐘系統(tǒng)波形圖仿真六、附錄(源程序)1、小時(shí)計(jì)數(shù)器VHDL語言源程序(底層文件)LIBRARYIEEE;useIEEE、STD_LOGIC_1164ALL;USEIEEE、STD_LO

7、GIC_UNSIGNEDALL;ENTITYhourISPORT(clk,reset:INSTD_LOGIC;daout:outSTD_LOGIC_VECTOR(5DOWNTO0);ENDENTITYhour;ARCHITECTUREfunOFhourISSIGNALcount:STD_LOGIC_VECTOR(5DOWNTO0);BEGINdaout<=count;PROCESS(clk,reset)BEGINIF(reset='0')THEN count<="000000”;ELSIF(clk'event and clk='1'

8、)THENIF(count(3 DOWNTO 0)="1001")THENIF(count<16#23#)THENcount<=count+7;elsecount<="000000”;END IF;ELSIF (count<16#23#)THEN count<=count+1;ELSEcount<="000000”;END IF;END IF(count(3 DOWNTO 0)=END IF;END IF(reset=END PROCESS;若reset=0,則異步清零否則,若clk上升沿到若個(gè)位計(jì)時(shí)恰好到“1001”

9、即923進(jìn)制若到23D則復(fù)0若未到 23D,則count進(jìn)1否則清零1001” )0')ENDfun;2、分鐘計(jì)數(shù)器VHDL語言源程序(底層文件)LIBRARYIEEE;USEIEEE、STD_LOGIC_1164、ALL;USEIEEE、STD_LOGIC_UNSIGNE、DALL;ENTITYminuteISPORT(clk,clk1,reset,sethour:INSTD_LOGIC;enhour:OUTSTD_LOGIC;daout:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDENTITYminute;ARCHITECTUREfunOFminuteISSI

10、GNALcount:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALenhour_1,enhour_2:STD_LOGIC;enmin_1為59分時(shí)的進(jìn)位信號(hào)BEGINenmin_2由clk調(diào)制后的手動(dòng)調(diào)時(shí)脈沖信號(hào)串daout<=count;enhour_2<=(sethourandclk1);sethour為手動(dòng)調(diào)時(shí)控制信號(hào),高電平有效enhour<=(enhour_1orenhour_2);PROCESS(clk,reset,sethour)BEGINIF(reset='0')THEN若reset為0,則異步清零count<=&qu

11、ot;0000000"ELSIF(clk'eventandclk='1')THEN否則,若clk上升沿到IF(count(3DOWNTO0)="1001")THEN若個(gè)位計(jì)時(shí)恰好到“1001”即9IF(count<16#60#)THEN又若count小于16#60#,即60IF(count="1011001")THEN又若已到59Denhour_1<='1'則置進(jìn)位為1count<="0000000"count復(fù)0ELSEcount<=count+7;若coun

12、t未到59D,則加7,即作“加6校正”ENDIF;使前面的16#60#的個(gè)位轉(zhuǎn)變?yōu)?421BCD的容量ELSEcount<="0000000"count復(fù)0(有此句,則對(duì)無效狀態(tài)電路可自啟動(dòng)ENDIF;ENDIF(count<16#60#)ELSIF(count<16#60#)THENcount<=count+1;若count<16#60#則count加1enhour_1<='0'after100ns;沒有發(fā)生進(jìn)位ELSEcount<="0000000"否則,若count不小于16#60#coun

13、t復(fù)0ENDIF;ENDIF(count(3DOWNTO0)=“1001”)ENDIF;ENDIF(reset=0)ENDprocess;ENDfun;3、秒鐘計(jì)數(shù)器VHDL語言源程序(底層文件)LIBRARYIEEE;USEIEEE、STD_LOGIC_1164、ALL;USEIEEE、STD_LOGIC_UNSIGNE、DALL;ENTITYsecondISPORT(clk,reset,setmin:STD_LOGIC;enmin:OUTSTD_LOGIC;daout:OUTSTD_LOGIC_VECTOR(6DOWNTO0);ENDENTITYsecond;ARCHITECTUREfun

14、OFsecondISSIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALenmin_1,enmin_2:STD_LOGIC;enmin_1為59秒時(shí)的進(jìn)位信號(hào)BEGINenmin_2由clk調(diào)制后的手動(dòng)調(diào)分脈沖信號(hào)串daout<=count;enmin_2<=(setminandclk);setmin為手動(dòng)調(diào)分控制信號(hào),高電平有效enmin<=(enmin_1orenmin_2);enmin為向分進(jìn)位信號(hào)PROCESS(clk,reset,setmin)BEGINIF(reset='0')THENcount<=&qu

15、ot;0000000"ELSIF(clk'eventandclk='1')thenIF(count(3downto0)="1001")thenIF(count<16#60#)then又若IF(count="1011001")then又若已到enmin_1<='1'count<="0000000"ELSE未到59D若reset為0,則異步清零否則,若clk上升沿到若個(gè)位計(jì)時(shí)恰好到“1001”即count小于16#60#,即60H59D則置進(jìn)位為1及count復(fù)0coun

16、t<="0000000"END IF;ELSIF(count<16#60#)then count<=count+1;enmin_1<='0'after 100 ns;ELSEcount<="0000000"END IF;END IF;count<=count+7;則加7,而+7=+1+6,即作“加6校正”ENDIF;ELSE若count不小于16#60#(即count等于或大于16#60#)count復(fù)0ENDIF(count<16#60#)若個(gè)位計(jì)數(shù)未到“1001”則轉(zhuǎn)此句再判若count<

17、;16#60#則count加1沒有發(fā)生進(jìn)位,若count不小于16#60#count復(fù)0ENDIF(count(3DOWNTO0)=“1001”)ENDIF(reset=0)ENDPROCESS;ENDfun;4、整點(diǎn)報(bào)時(shí)報(bào)警模塊VHDL語言源程序(底層文件)LIBRARYIEEE;USEIEEE、STD_LOGIC_1164、ALL;USEIEEE、STD_LOGIC_UNSIGNE、DALL;ENTITYalertISPORT(clk:INSTD_LOGIC;dain:INSTD_LOGIC_VECTOR(6DOWNTO0);speak:OUTSTD_LOGIC;lamp:OUTSTD_L

18、OGIC_VECTOR(2DOWNTO0);ENDalert;ARCHITECTUREfunOFalertISSIGNALcount:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALcount1:STD_LOGIC_VECTOR(1DOWNTO0);BEGINspeaker:PROCESS(clk)BEGINspeak<=count1(1);IF(clk'eventandclk='1')THENIF(dain="0000000")THENIF(count1>="10")THENcount1<="00"count1為三進(jìn)制加法計(jì)數(shù)器ELSEcount1<=count1+1;ENDIF;ENDIF;ENDIF;ENDPROCESSspeaker;lamper:PROCESS(clk)BEGINIF(rising_edge(clk)TH

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論