多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)_第1頁
多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)_第2頁
多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)_第3頁
多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)_第4頁
多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、多功能標(biāo)準(zhǔn)時(shí)鐘設(shè)計(jì)摘要時(shí)鐘對(duì)人們的日常工作、生活、學(xué)習(xí)都有著非常重要的作用,有了統(tǒng)一的時(shí)間,才能使生活井然有序。多功能時(shí)鐘能更加準(zhǔn)確提供標(biāo)準(zhǔn)的時(shí)間。完整的顯示定時(shí)、倒計(jì)時(shí)、校時(shí)、日歷等多功能為人們的生活提供方便。具體設(shè)計(jì)要求如下:用單片機(jī)編程來實(shí)現(xiàn)輸入信號(hào)的計(jì)時(shí)、驅(qū)動(dòng)顯示等功能,具有年、月、日、星期、時(shí)、分、秒顯示功能。關(guān)鍵詞設(shè)計(jì)譯碼 驅(qū)動(dòng) 數(shù)碼管顯示電路目錄1.引言12.方案論證23.多功能標(biāo)準(zhǔn)時(shí)鐘及FPGA簡介33.1時(shí)鐘的發(fā)展33.2 FPGA簡介33.3電子時(shí)鐘的工作原理34.多功能標(biāo)準(zhǔn)時(shí)鐘各功能模塊實(shí)現(xiàn)54.1時(shí)鐘問題54.2時(shí)鐘的控制系統(tǒng)64.3主控制模塊 maincontrol6

2、4.4時(shí)間及其設(shè)置模塊 time_auto_and_set74.5秒表模塊 stopwatch144.6日期顯示與設(shè)置模塊 date_main144.7鬧鐘模塊alarmclock154.8分頻模塊 fdiv164.9頂層模塊圖165.附錄196.總結(jié)32參考文獻(xiàn)331. 引 言隨著科學(xué)技術(shù)的迅猛發(fā)展,電子工業(yè)界經(jīng)歷了巨大的飛躍。集成電路的設(shè)計(jì)正朝著速度快、性能高、容量大、體積小和微功耗的方向發(fā)展。基于這種情況,可編程邏輯器件的出現(xiàn)和發(fā)展大大改變了傳統(tǒng)的系統(tǒng)設(shè)計(jì)方法??删幊踢壿嬈骷拖鄳?yīng)的設(shè)計(jì)技術(shù)體現(xiàn)在三個(gè)主要方面:一是可編程邏輯器件的芯片技術(shù);二是適用于可邏輯編程器件的硬件編程技術(shù),三是可編

3、程邏輯器件設(shè)計(jì)的EDA開發(fā)工具,它主要用來進(jìn)行可編程邏輯器件應(yīng)用的具體實(shí)現(xiàn)。在本實(shí)驗(yàn)中采用了集成度較高的FPGA 可編程邏輯器件, 選用了VHDL硬件描述語言和MAX + p lus開發(fā)軟件。VHDL硬件描述語言在電子設(shè)計(jì)自動(dòng)化( EDA)中扮演著重要的角色。由于采用了具有多層次描述系統(tǒng)硬件功能的能力的“自頂向下”( Top - Down)和基于庫(L ibrary - Based)的全新設(shè)計(jì)方法,它使設(shè)計(jì)師們擺脫了大量的輔助設(shè)計(jì)工作,而把精力集中于創(chuàng)造性的方案與概念構(gòu)思上,用新的思路來發(fā)掘硬件設(shè)備的潛力,從而極大地提高了設(shè)計(jì)效率,縮短了產(chǎn)品的研制周期。MAX + p lus是集成了編輯器、仿

4、真工具、檢查/分析工具和優(yōu)化/綜合工具的這些所有開發(fā)工具的一種集成的開發(fā)環(huán)境,通過該開發(fā)環(huán)境能夠很方便的檢驗(yàn)設(shè)計(jì)的仿真結(jié)果以及建立起與可編程邏輯器件的管腳之間對(duì)應(yīng)的關(guān)系。2. 方案論證方案1.利用可編程邏輯器件PLD實(shí)現(xiàn)??删幊踢壿嬈骷LD具有集成度高、速度快、功耗小、可靠性高等優(yōu)點(diǎn),且EDA軟件的功能和時(shí)序仿真功能使得電路的調(diào)試變得十分方便,可以很好的完成時(shí)鐘的功能。方案2.利用單片機(jī)內(nèi)部具有的計(jì)數(shù)器實(shí)現(xiàn)時(shí)鐘功能。以12MHZ晶振為例,通過計(jì)算可知,使定時(shí)器每50ms產(chǎn)生一次中斷,當(dāng)產(chǎn)生20次中斷后秒單元將加一,以此類推,從而實(shí)現(xiàn)時(shí)分秒的實(shí)現(xiàn),并加以顯示,這種方法存在由于系統(tǒng)晶振誤差、溫漂

5、、中斷響應(yīng)時(shí)間的不確定性。斷電也會(huì)出現(xiàn)時(shí)間的停止。通過以上兩種方案的比較,決定采用方案1,因?yàn)榉桨敢粚?shí)現(xiàn)簡單,且易于調(diào)試,方便。3.多功能標(biāo)準(zhǔn)時(shí)鐘及FPGA簡介3.1時(shí)鐘的發(fā)展鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能,諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、定時(shí)啟閉路燈等。所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究電子時(shí)鐘及擴(kuò)大其應(yīng)用,有非常現(xiàn)實(shí)的意義。數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,因此得到了廣泛的使用。電子時(shí)鐘從原理上講是一種典型的數(shù)

6、字電路,其中包括了組合邏輯電路和時(shí)序電路。因此,我們此次設(shè)計(jì)與制做電子時(shí)鐘就是為了了解數(shù)字鐘的原理,從而學(xué)會(huì)制作數(shù)字鐘。而且通過時(shí)鐘的制作進(jìn)一步了解各種在制作中用到的中小規(guī)模集成電路的作用及使用方法,且由于電子時(shí)鐘包括組合邏輯電路和時(shí)序電路,通過它可以進(jìn)一步學(xué)習(xí)與掌握各種組合邏輯電路與時(shí)序電路的原理與使用方法。3.2 FPGA簡介PLD/FPGA是近幾年集成電路中發(fā)展最快的產(chǎn)品。由于PLD性能的高速發(fā)展以及設(shè)計(jì)人員自身能力的提高,可編程邏輯器件供應(yīng)商將進(jìn)一步擴(kuò)大可編程芯片的領(lǐng)地,將復(fù)雜的專用芯片擠向高端和超復(fù)雜應(yīng)用。據(jù)IC Insights的數(shù)據(jù)顯示,PLD市場(chǎng)從1999年的29億美元增長到去

7、年的56億美元,幾乎翻了一番。Matas預(yù)計(jì)這種高速增長局面以后很難出現(xiàn),但可編程邏輯器件依然是集成電路中最具活力和前途的產(chǎn)業(yè)??删幊踢壿嬈骷膬煞N主要類型是現(xiàn)場(chǎng)可編程門陣列(FPGA)和復(fù)雜可編程邏輯(CPLD)。 在這兩類可編程邏輯器件中,F(xiàn)PGA提供了最高的邏輯密度、最豐富的特性和最高的性能。 現(xiàn)在最新的FPGA器件,如Xilinx Virtex"系列中的部分器件,可提供八百萬"系統(tǒng)門"(相對(duì)邏輯密度)。這些先進(jìn)的器件還提供諸如內(nèi)建的硬連線處理器(如IBM Power PC)、大容量存儲(chǔ)器、時(shí)鐘管理系統(tǒng)等特性,并支持多種最新的超快速器件至器件(device-

8、to-device)信號(hào)技術(shù).FPGA被應(yīng)用于范圍廣泛的應(yīng)用中,從數(shù)據(jù)處理和存儲(chǔ),以及到儀器儀表、電信和數(shù)字信號(hào)處理等。3.3電子時(shí)鐘的工作原理按鍵消抖 可 編功能鍵 程調(diào)整鍵1 邏調(diào)整鍵2 輯 器 件 CPLD/FPGA LED顯示模塊圖3-1電子時(shí)鐘的工作原理功能鍵用來選擇不同的工作模式:時(shí)間正常顯示功能、時(shí)間調(diào)整與顯示、秒表功能、鬧鐘設(shè)置與查看、日期顯示、日期調(diào)整與設(shè)置。調(diào)整鍵1:主要用于鬧鐘設(shè)置、日期顯示與調(diào)整、秒表、時(shí)間調(diào)整與設(shè)置中的位置選擇按鈕,與功能鍵配合使用。2號(hào)鍵功能模式,即時(shí)間調(diào)整與設(shè)置時(shí),用作時(shí)、分、秒的移位,按一下,將會(huì)實(shí)現(xiàn)“時(shí)-分-秒”的依次移位,便于在特定位置進(jìn)行調(diào)

9、整;4號(hào)鍵功能模式,即鬧鐘設(shè)置與查看時(shí),同樣用作時(shí)、分、秒的移位,按一下,將會(huì)實(shí)現(xiàn)“時(shí)-分-秒”的依次移位,便于在特定位置進(jìn)行調(diào)整;6號(hào)鍵功能模式,即日期調(diào)整與設(shè)置時(shí),用作月、日的移位,按一下,將會(huì)實(shí)現(xiàn)“月-日”的依次移位,便于在特定位置進(jìn)行調(diào)整。調(diào)整鍵2:主要用于鬧鐘設(shè)置、日期顯示與調(diào)整、秒表、時(shí)間調(diào)整與設(shè)置中的調(diào)整按鈕,與功能鍵配合使用。2號(hào)鍵功能模式,即時(shí)間調(diào)整與設(shè)置時(shí),用作時(shí)、分、秒的調(diào)整,按一下,將會(huì)使得當(dāng)前調(diào)整鍵1選擇的位置數(shù)字增加1;4號(hào)鍵功能模式,即鬧鐘設(shè)置與查看時(shí),同樣用作時(shí)、分、秒的調(diào)整,按一下,將會(huì)使得當(dāng)前調(diào)整鍵1選擇的位置數(shù)字增加1;6號(hào)鍵功能模式,即日期調(diào)整與設(shè)置時(shí),

10、用作月、日的移位,按一下,將會(huì)使得當(dāng)前調(diào)整鍵1選擇的位置數(shù)字增加1。4.多功能電子時(shí)鐘各功能模塊實(shí)現(xiàn)4.1時(shí)鐘問題無論是用離散邏輯、可編程邏輯,還是用全定制器件實(shí)現(xiàn)任何數(shù)字電路,設(shè)計(jì)不良的時(shí)鐘在極限溫度、電壓或制造工藝存在偏差的情況下將導(dǎo)致系統(tǒng)錯(cuò)誤的行為,所以可靠的時(shí)鐘設(shè)計(jì)是非常關(guān)鍵的。在FPGA設(shè)計(jì)時(shí)通常采用四種時(shí)鐘:全局時(shí)鐘、門控時(shí)鐘、多級(jí)邏輯時(shí)鐘和波動(dòng)式時(shí)鐘,多時(shí)鐘系統(tǒng)是這四種時(shí)鐘類型的任意組合。全局時(shí)鐘:對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來說,全局時(shí)鐘(或同步時(shí)鐘)是最簡單和最可預(yù)測(cè)的時(shí)鐘。在FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)單個(gè)主時(shí)鐘去控制設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。FPGA一

11、般都具有專門的全局時(shí)鐘引腳,在設(shè)計(jì)項(xiàng)目時(shí)應(yīng)盡量采用全局時(shí)鐘,它能夠提供器件中最短的時(shí)鐘到輸出的延時(shí)。門控時(shí)鐘:在許多應(yīng)用中,整個(gè)設(shè)計(jì)項(xiàng)目都采用外部的全局時(shí)鐘是不可能或不實(shí)際的,所以通常用陣列時(shí)鐘構(gòu)成門控時(shí)鐘。門控時(shí)鐘常常同微處理器接口有關(guān),例如用地址線去控制寫脈沖。每當(dāng)用組合邏輯來控制觸發(fā)器時(shí),通常都存在著門控時(shí)鐘。在使用門控時(shí)鐘時(shí),應(yīng)仔細(xì)分析時(shí)鐘函數(shù),以避免毛刺的影響。如果設(shè)計(jì)滿足下述兩個(gè)條件,則可以保證時(shí)鐘信號(hào)不出現(xiàn)危險(xiǎn)的毛刺,門控時(shí)鐘就可以像全局時(shí)鐘一樣可靠工作:驅(qū)動(dòng)時(shí)鐘的邏輯必須只包含一個(gè)“與門”或一個(gè)“或門”,如果采用任何附加邏輯,就會(huì)在某些工作狀態(tài)下出現(xiàn)由于邏輯競爭而產(chǎn)生的毛刺。邏

12、輯門的一個(gè)輸入作為實(shí)際的時(shí)鐘,而該邏輯門的所有其他輸入必須當(dāng)成地址或控制線,它們遵守相對(duì)于時(shí)鐘的建立和保持時(shí)間的約束。多級(jí)邏輯時(shí)鐘:當(dāng)產(chǎn)生門控時(shí)鐘的組合邏輯超過一級(jí),即超過單個(gè)的“與門”或“或門”時(shí),該設(shè)計(jì)項(xiàng)目的可靠性將變得很差。在這種情況下,即使樣機(jī)或仿真結(jié)果沒有顯示出靜態(tài)險(xiǎn)象,但實(shí)際上仍然可能存在危險(xiǎn),所以我們不應(yīng)該用多級(jí)組合邏輯區(qū)作為觸發(fā)器的時(shí)鐘端。不同的系統(tǒng) 需要采用不同的方法消除多級(jí)時(shí)鐘,并沒有一個(gè)固定的模式。波動(dòng)式時(shí)鐘:許多系統(tǒng)要求在同一設(shè)計(jì)內(nèi)采用多時(shí)鐘,最常見的例子是兩個(gè)異步微處理器之間的接口,或微處理器和異步通信通道的接口。由于兩個(gè)時(shí)鐘信號(hào)之間要求一定的建立和保持時(shí)間,所以上述

13、應(yīng)用引進(jìn)了附加的定時(shí)約束條件,它們會(huì)要求將某些異步信號(hào)同步化。而在許多應(yīng)用中只將異步信號(hào)同步化還是不夠的,當(dāng)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘時(shí),數(shù)據(jù)的建立和保持時(shí)間很難得到保證,設(shè)計(jì)人員將面臨復(fù)雜的時(shí)間分析問題。最好的方法是將所有非同源時(shí)鐘同步化。使用FPGA內(nèi)部的鎖相環(huán)(PLL)是一個(gè)效果很好的方法,但并不是所有FPGA都帶有PLL,而且?guī)в蠵LL功能的芯片大多價(jià)格昂貴。這時(shí)就需要使用帶使能端的D觸發(fā)器,并引入一個(gè)高頻時(shí)鐘來實(shí)現(xiàn)信號(hào)的同步化。穩(wěn)定可靠的時(shí)鐘是保證系統(tǒng)可靠工作的重要條件,設(shè)計(jì)中不能夠?qū)⑷魏慰赡芎忻痰妮敵鲎鳛闀r(shí)鐘信號(hào),并且盡可能只使用一個(gè)全局時(shí)鐘,對(duì)多時(shí)鐘系統(tǒng)要特別注意異步信

14、號(hào)和非同源時(shí)鐘的同步問題。為了獲得高驅(qū)動(dòng)能、低抖動(dòng)時(shí)延、穩(wěn)定的占空比的時(shí)鐘信號(hào),一般使用FPGA內(nèi)部的專用時(shí)鐘資源產(chǎn)生同步時(shí)序電路的主工作時(shí)鐘。專用時(shí)鐘資源主要指兩部分,一部分是布線資源,包括全局時(shí)鐘布線資源和長線資源等,另一部分則是FPGA內(nèi)部的PLL。4.2電子時(shí)鐘的控制系統(tǒng)此電子時(shí)鐘系統(tǒng)主要有8個(gè)模塊分別設(shè)計(jì)仿真,分別是以下8個(gè)模塊:主控制模塊 maincontrol時(shí)間及其設(shè)置模塊 timepiece_main時(shí)間顯示動(dòng)態(tài)位選模塊 time_disp_select顯示模塊 disp_data_mux秒表模塊 stopwatch日期顯示與設(shè)置模塊 date_main鬧鐘模塊 alarmc

15、lock分頻模塊 fdiv4.3主控制模塊 maincontrol該模塊實(shí)現(xiàn)對(duì)各個(gè)功能模塊的整體控制,包括對(duì)時(shí)間顯示與調(diào)整、日期顯示與調(diào)整、鬧鐘顯示與調(diào)整、秒表操作等的控制,結(jié)構(gòu)功能圖如4-1所示,波形仿真圖如4-2所示。圖4-1 主控制模塊的結(jié)構(gòu)功能圖 圖4-2 主控制模塊的波形仿真圖SW3是功能鍵,從波形圖中可知,SW3每出現(xiàn)一次上升沿,輸出都會(huì)發(fā)生相應(yīng)的變化,即按照Timepiece_EN(時(shí)鐘自動(dòng)顯示使能),TimeSet_EN(時(shí)鐘設(shè)置與調(diào)整使能),Stopwatch_EN(秒表功能使能),Alarmclock_EN(鬧鐘時(shí)間設(shè)置使能),Date_EN(日期顯示使能),DateSet

16、_EN(日期顯示與設(shè)置使能)的順序依次輸出有效波形“1”,對(duì)相應(yīng)的模塊輸入有效使能,從而實(shí)現(xiàn)相應(yīng)的功能。4.4時(shí)間及其設(shè)置模塊 time_auto_and_set時(shí)間及其設(shè)置模塊主要完成時(shí)間的自動(dòng)正常運(yùn)行與顯示,以及在相應(yīng)的功能號(hào)下,實(shí)現(xiàn)時(shí)間的調(diào)整與設(shè)置。時(shí)間模塊 timepiece_main:該模塊主要完成時(shí)間的自動(dòng)增加與顯示功能,即為正常的自動(dòng)模式運(yùn)行,其結(jié)構(gòu)功能圖如4-3所示,波形仿真圖如4-4所示。圖4-3 時(shí)間及其設(shè)置模塊的結(jié)構(gòu)功能圖圖4-4 時(shí)間模塊的結(jié)構(gòu)功能圖秒自動(dòng)計(jì)時(shí)子模塊 second_counter,結(jié)構(gòu)功能圖如4-5所示,圖4-5 秒自動(dòng)計(jì)時(shí)子模塊的結(jié)構(gòu)功能圖分自動(dòng)計(jì)時(shí)子

17、模塊 minute_counter,結(jié)構(gòu)功能圖如4-6示。圖4-6 分自動(dòng)計(jì)時(shí)子模塊的結(jié)構(gòu)功能圖小時(shí)自動(dòng)計(jì)時(shí)子模塊 hour_counter,結(jié)構(gòu)功能圖如4-7所示。圖4-7小時(shí)自動(dòng)計(jì)時(shí)子模塊的結(jié)構(gòu)功能圖圖4-8 時(shí)間模塊的波形仿真圖當(dāng)Timepiece_EN為1時(shí),即處于時(shí)間自動(dòng)工作狀態(tài),即每出現(xiàn)一次時(shí)鐘信號(hào)clk,計(jì)數(shù)一次,先計(jì)數(shù)second0,當(dāng)計(jì)數(shù)到1001(即十進(jìn)制的9)時(shí),向second1發(fā)出一個(gè)計(jì)數(shù)信號(hào),此時(shí)second1進(jìn)行一次計(jì)數(shù),類推,second1計(jì)數(shù)到0101(即十進(jìn)制的5),且second0計(jì)數(shù)到1001(即十進(jìn)制的9)時(shí),minute0則進(jìn)行一次計(jì)數(shù),按照此規(guī)律進(jìn)行

18、時(shí)間的計(jì)數(shù)。當(dāng)計(jì)滿24小時(shí),向day_EN發(fā)出一個(gè)計(jì)數(shù)信號(hào),即此使能端輸出有效信號(hào)1,進(jìn)行日期的計(jì)數(shù)。 時(shí)間設(shè)置模塊 timeset:該模塊主要完成對(duì)時(shí)間的設(shè)置相關(guān)的閃爍顯示控制以及時(shí)間中的小時(shí)、分鐘、秒等數(shù)據(jù)的改變,流程圖如4-9所示,結(jié)構(gòu)功能圖如4-10所示,波形仿真圖如4-11所示。 開 始disp_drive<=3b0結(jié) 束初始化,將當(dāng)前時(shí)間賦予設(shè)置后的時(shí)間Timeset_EN=1?disp_drive<3b101?disp_drive<= disp_drive+3b1依SW2,按位進(jìn)行數(shù)字調(diào)整 圖 4-9 時(shí)間設(shè)置模塊的流程圖圖4-10 時(shí)間設(shè)置模塊的結(jié)構(gòu)功能圖圖4

19、-11 時(shí)間設(shè)置模塊的波形仿真圖表4-12 時(shí)間設(shè)置模塊的端口說明輸入端口 功能TimeSet_EN 時(shí)間設(shè)置使能,當(dāng)其電平為高時(shí),時(shí)間設(shè)置有效 SW1,SW2 調(diào)整鍵1與調(diào)整鍵2輸入信號(hào)hour1,hour0 當(dāng)前時(shí)間的小時(shí)數(shù)輸入minute1,minute0 當(dāng)前時(shí)間的分鐘數(shù)輸入second0,second1 當(dāng)前時(shí)間的秒數(shù)輸入輸出端口 功能hour_set1,hour_set0 設(shè)置時(shí)間后的小時(shí)數(shù)minute_set1,minute_set0 設(shè)置時(shí)間后的分鐘數(shù)second_set1,second_set0 設(shè)置時(shí)間后的秒數(shù)disp_drive 設(shè)置中的閃爍顯示設(shè)置 當(dāng)Timeset_E

20、N為1時(shí),即實(shí)現(xiàn)時(shí)間設(shè)置功能。SW1實(shí)現(xiàn)時(shí)間格式中小時(shí)高、低位,分鐘高、低位,秒鐘高、低位的位選,即每出現(xiàn)一個(gè)SW1上升沿,disp_drive的相應(yīng)數(shù)值加1(選擇具體的需要調(diào)整的位置)。SW2實(shí)現(xiàn)相應(yīng)得位的數(shù)值得調(diào)整,即每出現(xiàn)一個(gè)SW2上升沿,相應(yīng)位的數(shù)值增加1。 時(shí)間數(shù)據(jù)與時(shí)間設(shè)置數(shù)據(jù)多路選擇模塊 time_mux:該模塊用來分時(shí)向顯示單元傳輸顯示數(shù)據(jù),流程圖如4-13所示,結(jié)構(gòu)功能圖如4-14所示,波形仿真圖如4-15所示。圖4-13 多路選擇模塊的結(jié)構(gòu)功能圖開 始依輸入條件,判斷是自動(dòng)顯示時(shí)間,或顯示調(diào)整后的時(shí)間Timeset_EN=1?顯示設(shè)置后的時(shí)間顯示自動(dòng)模式時(shí)的時(shí)間結(jié) 束圖 4

21、-14 多路選擇模塊的流程圖圖4-15 多路選擇模塊的波形仿真圖輸入端口 功能TimeSet_EN 時(shí)間設(shè)置使能信號(hào) hour1,hour0 自動(dòng)模式中當(dāng)前時(shí)間的小時(shí)數(shù)輸入minute1,minute0 自動(dòng)模式中當(dāng)前時(shí)間的分鐘數(shù)輸入second0,second1 自動(dòng)模式中當(dāng)前時(shí)間的秒數(shù)輸入hour_set1,hour_set0 時(shí)間設(shè)置后的小時(shí)數(shù)輸入 minute_set1,minute_set0 時(shí)間設(shè)置后的分鐘數(shù)輸入second_set1,second_set0 時(shí)間設(shè)置后的秒數(shù)輸入輸入端口 功能hour_1,hour_0 當(dāng)前需要顯示的小時(shí)輸出minute_1,minute_0 當(dāng)前

22、需要顯示的分鐘輸出second_0,second_1 當(dāng)前需要顯示的秒輸出表4-16 多路選擇模塊的端口說明 時(shí)間顯示動(dòng)態(tài)位選模塊 time_disp_select:該模塊用來分時(shí)顯示時(shí)間數(shù)據(jù),但是在選擇合適的時(shí)間間隔下,人眼并不能分辨出是分時(shí)顯示的,這樣顯示的方式可以降低功耗,結(jié)構(gòu)功能圖如4-17所示,波形仿真圖如4-18所示。圖4-17 時(shí)間顯示動(dòng)態(tài)位選模塊的結(jié)構(gòu)功能圖圖4-18(a) 時(shí)間顯示動(dòng)態(tài)位選模塊的波形仿真圖圖4-18(b) 時(shí)間顯示動(dòng)態(tài)位選模塊的波形仿真圖TimeSet_EN表示時(shí)間設(shè)置使能,Time_EN表示時(shí)間自動(dòng)顯示使能,clk_1kHz用于動(dòng)態(tài)顯示時(shí)間,clk_200H

23、z用于閃爍顯示時(shí)間,timeset_disp_drive表示時(shí)間設(shè)置數(shù)據(jù)顯示的同步信號(hào),time_disp_select表示顯示動(dòng)態(tài)位選輸出信號(hào)。當(dāng)TimeSet_EN為0,Time_EN為1時(shí),以clk_1kHz為是時(shí)鐘信號(hào),輸出自動(dòng)顯示的時(shí)間,按位依次顯示;當(dāng)TimeSet_EN為1,Time_EN為0時(shí),則以clk_200Hz為時(shí)鐘信號(hào),輸出以timeset_disp_drive對(duì)應(yīng)的位置。顯示模塊是時(shí)間、日期等數(shù)據(jù)用數(shù)碼管顯示的控制與數(shù)據(jù)傳輸模塊,包括數(shù)據(jù)的傳輸以及BCD碼的譯碼等,結(jié)構(gòu)功能圖如4-19所示,波形仿真圖如4-21所示。圖4-19 顯示模塊的結(jié)構(gòu)功能圖 顯示原理

24、采用的是七段數(shù)碼管的現(xiàn)實(shí)原理,如4-20所示:圖4-20 七段數(shù)碼管的顯示原理圖4-21 顯示模塊的波形仿真圖4.5秒表模塊 stopwatch該模塊實(shí)現(xiàn)秒表的功能,在實(shí)際中,可以通過改變自動(dòng)工作模式下的時(shí)間的計(jì)數(shù)時(shí)鐘的頻率來實(shí)現(xiàn)秒表的功能,結(jié)構(gòu)功能圖如4-22所示,波形仿真圖如4-23所示。圖4-22 秒表模塊的結(jié)構(gòu)功能圖圖4-23 秒表功能的波形仿真圖EN表示秒表使能控制信號(hào),clk1表示自動(dòng)工作模式的時(shí)鐘信號(hào),clk2表示秒表工作模式的時(shí)鐘信號(hào),故當(dāng)EN為有效信號(hào)1時(shí),輸出F_out與clk2同,即處于秒表工作狀態(tài),同理EN為0時(shí),輸出F_out與clk1同,即處于自動(dòng)工作狀態(tài)。4.6日

25、期顯示與設(shè)置模塊 date_main該模塊實(shí)現(xiàn)日期的顯示和日期的調(diào)整與設(shè)置,日期自動(dòng)工作模塊 autodate:該模塊實(shí)現(xiàn)的是日期的自動(dòng)工作功能,結(jié)構(gòu)功能圖如4-24所示,波形仿真圖如4-25所示。圖4-24 日期自動(dòng)工作模塊的結(jié)構(gòu)功能圖圖4-25(a) 日期自動(dòng)工作模塊的波形仿真圖圖4-25(b) 日期自動(dòng)工作模塊的波形仿真圖日期設(shè)置模塊 setdate:該模塊用于日期,結(jié)構(gòu)功能圖如4-26所示。圖4-26 日期設(shè)置模塊的結(jié)構(gòu)功能圖4.7鬧鐘模塊alarmclock該模塊實(shí)現(xiàn)的功能包括鬧鐘的設(shè)置以及鬧鐘時(shí)間到后的提示,結(jié)構(gòu)功能圖如4-27所示,波形仿真圖如4-28所示。 圖4-27 鬧鐘模塊

26、的結(jié)構(gòu)功能圖圖4-28 鬧鐘模塊的波形仿真圖EN為鬧鐘設(shè)置使能,clk_200Hz用于設(shè)置中的閃爍顯示的時(shí)鐘,其中還定義了hour_set1,hour_set0,minute_set1,minute_set0,second_set1,second_set0,用來表示已經(jīng)設(shè)置好的鬧鐘時(shí)間。鬧鐘一直處于工作狀態(tài),當(dāng)前時(shí)間(hour1,hour0,minute1,minute0,second1,second0)與設(shè)置的鬧鐘時(shí)間相比較,當(dāng)小時(shí)、分鐘、秒鐘的時(shí)間完全相同時(shí),則鬧鈴響,輸出信號(hào)alarm為有效信號(hào)1。SW1和SW2是調(diào)整鍵,分別控制位選和數(shù)值的調(diào)整。4.8分頻模塊 fdiv該模塊完成全局時(shí)

27、鐘信號(hào)分頻輸出200Hz、60Hz、1Hz的三種時(shí)鐘信號(hào),結(jié)構(gòu)功能圖如4-29所示,波形仿真圖如4-30所示。圖4-29 分頻模塊的結(jié)構(gòu)功能圖圖4-30分頻模塊的波形仿真圖4.9頂層模塊將各個(gè)主模塊綜合成電子時(shí)鐘系統(tǒng),其包括:fdiv分頻模塊,maincontrol主控制模塊,stopwatch秒表模塊,time_auto_and_set時(shí)間及其設(shè)置模塊,date_main日期及其設(shè)置模塊,alarmclock鬧鐘模塊,time_disp_select時(shí)間顯示動(dòng)態(tài)位選模塊及disp_data_mux顯示模塊,該頂層電路Top如圖4-31所示。圖4-31 頂層電路Top5.附錄電子時(shí)鐘系統(tǒng)的Ve

28、rilog HDL語言程序設(shè)計(jì)部分代碼 主控制模塊module maincontrol(clk,SW3,Timepiece_EN,TimeSet_EN,Stopwatch_EN,Alarmclock_EN,Date_EN,DateSet_EN);output Timepiece_EN; /時(shí)間自動(dòng)顯示使能output TimeSet_EN; /時(shí)間調(diào)整與設(shè)置使能output Stopwatch_EN; /秒鐘功能使能output Alarmclock_EN; /鬧鐘時(shí)間設(shè)置使能output Date_EN; /時(shí)期顯示使能output DateSet_EN; /日期調(diào)整與設(shè)置使能input S

29、W3; /功能號(hào)選擇input clk;reg Timepiece_EN; reg TimeSet_EN; reg Stopwatch_EN; reg Alarmclock_EN; reg Date_EN; reg DateSet_EN; reg 2:0 Function;reg 31:0 cnt;reg q1,q2,q3;reg CLK;always(posedge clk)begin if(cnt<49999) begin cnt=cnt+1; CLK<=0; end else begin cnt=0; CLK<=1'b1; end endalways(posed

30、ge CLK)begin begin q2<=q1; q1<=SW3; end begin q3<=q1&(q2); endendalways(posedge q3 ) /*實(shí)現(xiàn)對(duì)時(shí)間顯示與調(diào)整,日期顯示與 調(diào)整,鬧鐘顯示與調(diào)整,秒表操作等的控制*/ begin /功能號(hào)的產(chǎn)生以及其自動(dòng)循環(huán) if(Function<3'b101 && SW3=1'b1) Function<=Function+3'b1; else Function<=3'b0; case(Function) /各個(gè)分功能的控制和實(shí)現(xiàn) /

31、時(shí)鐘自動(dòng)顯示 3'b000:begin Timepiece_EN<=1'b1; TimeSet_EN<=1'b0; Stopwatch_EN<=1'b0; Alarmclock_EN<=1'b0; Date_EN<=1'b0; DateSet_EN<=1'b0; end /時(shí)鐘調(diào)整與設(shè)置 3'b001:begin end /秒表 3'b010:begin end /鬧鐘時(shí)間設(shè)置 3'b011:begin end /日期顯示 3'b100:begin end /日期調(diào)整與設(shè)

32、置 3'b101:begin end default:begin end endcase endendmodule 秒自動(dòng)計(jì)時(shí)子模塊module second_counter(EN,clk,second_data1,second_data0,E0);output 3:0 second_data1,second_data0;output E0;input clk,EN;reg 3:0 second_data1,second_data0;reg E0;always(posedge clk) begin if(EN=1'b1) begin if(second_data0<4&#

33、39;b1001) second_data0<=second_data0+4'b1; else begin E0<=1'b0; second_data0<=4'b0; if(second_data1<4'b0101) second_data1<= second_data1+4'b1; else begin second_data1<=4'b0; E0<=1'b1; end end end endendmodule時(shí)間自動(dòng)工作控制module timepiece_main(CLK,Timepiece

34、_EN,day_EN,hour0,hour1,minute0,minute1,second0,second1);input CLK;input Timepiece_EN;output day_EN;output 3:0 hour1,hour0;output 3:0 minute1,minute0;output 3:0 second1,second0;wire SYNTHESIZED_WIRE_0;wire SYNTHESIZED_WIRE_1;hour_counter /*小時(shí)計(jì)時(shí)*/b2v_inst(.clk(SYNTHESIZED_WIRE_0),.EN(Timepiece_EN),.E0

35、(day_EN),.hour_data0(hour0),.hour_data1(hour1);minute_counter /*分鐘計(jì)時(shí)*/b2v_inst1(.clk(SYNTHESIZED_WIRE_1),.EN(Timepiece_EN),.E0(SYNTHESIZED_WIRE_0),.minute_data0(minute0),.minute_data1(minute1);second_counter /*秒計(jì)時(shí)*/b2v_inst2(.clk(CLK),.EN(Timepiece_EN),.E0(SYNTHESIZED_WIRE_1),.second_data0(second0),

36、.second_data1(second1);endmodule時(shí)間數(shù)據(jù)與時(shí)間設(shè)置數(shù)據(jù)多路選擇模塊module time_mux(TimeSet_EN,hour1,hour0,minute1,minute0,second1,second0,hour_set1,hour_set0,minute_set1,minute_set0,second_set1,second_set0,hour_1,hour_0,minute_1,minute_0,second_1,second_0);output 3:0 hour_1,hour_0; /當(dāng)前需要顯示的小時(shí)輸出output 3:0 minute_1,min

37、ute_0; /當(dāng)前需要顯示的分鐘輸出output 3:0 second_1,second_0; /當(dāng)前需要顯示的秒輸出input TimeSet_EN; /時(shí)間設(shè)置使能信號(hào)input 3:0 hour1,hour0; /自動(dòng)模式中當(dāng)前時(shí)間的小時(shí)輸入input 3:0 minute1,minute0; /自動(dòng)模式中當(dāng)前時(shí)間的分鐘輸入input 3:0 second1,second0; /自動(dòng)模式中當(dāng)前時(shí)間的秒輸入input 3:0 hour_set1,hour_set0; /時(shí)間設(shè)置后的小時(shí)輸入input 3:0 minute_set1,minute_set0; /時(shí)間設(shè)置后的分鐘輸入inpu

38、t 3:0 second_set1,second_set0; /時(shí)間設(shè)置后的秒輸入reg 3:0 hour_1,hour_0;reg 3:0 minute_1,minute_0;reg 3:0 second_1,second_0;/*時(shí)間自動(dòng)顯示與時(shí)間調(diào)整與設(shè)置中顯示數(shù)據(jù)的多路選擇*/always(TimeSet_EN,hour1,hour0,minute1,minute0,second1,second0,hour_set1,hour_set0,minute_set1,minute_set0,second_set1,second_set0) begin if(TimeSet_EN=1'

39、b1) begin hour_1<=hour_set1; hour_0<=hour_set0; minute_1<=minute_set1; minute_0<=minute_set0; second_1<=second_set1; second_0<=second_set0; end else begin hour_1<=hour1; hour_0<=hour0; minute_1<=minute1; minute_0<=minute0; second_1<=second1; second_0<=second0; end

40、 endendmodule 時(shí)間及其設(shè)置模塊 module time_auto_and_set(CLK,Timepiece_EN,TimeSet_EN,SW1,SW2,Day_EN,hour_0,hour_1,minute_0,minute_1,second_0,second_1,TimeSet_disp_drive);input CLK;input Timepiece_EN;input TimeSet_EN;input SW1;input SW2;output Day_EN;output 3:0 hour_1,hour_0;output 3:0 minute_1,minute_0;outpu

41、t 3:0 second_1,second_0;output 2:0 TimeSet_disp_drive;reg 3:0 hour_1,hour_0;reg 3:0 minute_1,minute_0;reg 3:0 second_1,second_0;reg 2:0 TimeSet_disp_drive;wire 3:0 SYNTHESIZED_WIRE_18;wire 3:0 SYNTHESIZED_WIRE_19;wire 3:0 SYNTHESIZED_WIRE_2;wire 3:0 SYNTHESIZED_WIRE_3;wire 3:0 SYNTHESIZED_WIRE_20;wi

42、re 3:0 SYNTHESIZED_WIRE_21;wire 3:0 SYNTHESIZED_WIRE_6;wire 3:0 SYNTHESIZED_WIRE_7;wire 3:0 SYNTHESIZED_WIRE_22;wire 3:0 SYNTHESIZED_WIRE_23;wire 3:0 SYNTHESIZED_WIRE_10;wire 3:0 SYNTHESIZED_WIRE_11;時(shí)間顯示動(dòng)態(tài)位選模塊module time_disp_select(clk_1kHz,clk_200Hz,Time_EN,TimeSet_EN,timeset_disp_drive,time_disp_

43、select);output 5:0 time_disp_select;input clk_1kHz;input clk_200Hz;input Time_EN;input TimeSet_EN;input 2:0 timeset_disp_drive;reg 5:0 time_disp_select;reg 2:0 auto_disp_drive;reg clk;reg 2:0 disp_drive;always(posedge clk_1kHz) /*實(shí)現(xiàn)自動(dòng)運(yùn)行模式中的動(dòng)態(tài)顯示“位選的驅(qū)動(dòng)”*/ begin if(auto_disp_drive<3'b101) auto_d

44、isp_drive<=auto_disp_drive+3'b1; else auto_disp_drive<=3'b0; endalways /*實(shí)現(xiàn)自動(dòng)運(yùn)行模式中時(shí)間動(dòng)態(tài)顯示位選驅(qū)動(dòng)與時(shí)間設(shè)置中的時(shí)間動(dòng)態(tài)顯示位選驅(qū)動(dòng)的二選一*/ begin if(Time_EN=1'b1) begin clk<=clk_1kHz; disp_drive<=auto_disp_drive; end else if(TimeSet_EN=1'b1) begin clk<=clk_200Hz; disp_drive<=timeset_disp_d

45、rive; end endalways(posedge clk) /*實(shí)現(xiàn)時(shí)間的動(dòng)態(tài)位選*/ begin case(disp_drive) 3'b000:time_disp_select<=6'b100000; 3'b001:time_disp_select<=6'b010000; 3'b010:time_disp_select<=6'b001000; 3'b011:time_disp_select<=6'b000100; 3'b100:time_disp_select<=6'b000

46、010; 3'b101:time_disp_select<=6'b000001; default:time_disp_select<=6'b000000; endcase endendmodule 秒表模塊module stopwatch(clk1,clk2,EN,F_out);output F_out;input EN;input clk1,clk2;reg F_out;always(EN,clk1,clk2) begin case(EN) 1'b0:F_out<=clk1; 1'b1:F_out<=clk2; default:F_out<=1'b0; endcase endendmodule分頻模塊module fdiv(clk,f200Hz,f60Hz,f1Hz);outp

溫馨提示

  • 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)論