基于FPGA的多功能數(shù)字鐘設(shè)計
摘要:文中簡要介紹了一種基于FPGA的多功能數(shù)字鐘設(shè)計方案。在實現(xiàn)數(shù)字鐘計時、校時和整點報時等基本功能的基礎(chǔ)上增加世界時鐘功能,能夠?qū)⒈本r間快速轉(zhuǎn)換為格林威治標(biāo)準(zhǔn)時。該方案采用VHDL和原理圖相結(jié)合的設(shè)計輸入方式,在QuartusⅡ開發(fā)環(huán)境下完成設(shè)計、編譯和仿真,并在FPGA硬件開發(fā)板上進行測試,實驗證明該設(shè)計方案切實可行,對FPGA的應(yīng)用和數(shù)字鐘的設(shè)計具有一定參考價值。
關(guān)鍵詞:FPGA;VHDL;數(shù)字鐘;世界時鐘;QuartusⅡ
現(xiàn)場可編程門陣列(Field Programmable Gate Arrays,F(xiàn)PGA)是一種可編程使用的信號處理器件。通過改變配置信息,用戶可對其功能進行定義,以滿足設(shè)計需求。通過開發(fā),F(xiàn)PGA能夠?qū)崿F(xiàn)任何數(shù)字器件的功能。與傳統(tǒng)數(shù)字電路相比,F(xiàn)PGA具有可編程、高集成度、高可靠性和高速等優(yōu)點。
1 數(shù)字鐘總體設(shè)計
本文以FPGA平臺為基礎(chǔ),在QuartusⅡ開發(fā)環(huán)境下設(shè)計開發(fā)多功能數(shù)字鐘。數(shù)字鐘實現(xiàn)的功能如下:
1)計時功能:進行正常的時、分、秒計時,并由6只8段數(shù)碼管分別顯示時、分、秒時間。
2)校時功能:當(dāng)時校時按鍵按下時,計時器時位迅速增加,并按24小時循環(huán);當(dāng)分校時按鍵按下時,計時器分位迅速增加,并按60分循環(huán)。
3)整點報時功能:當(dāng)計時到達59分53秒時開始報時,在59分53秒、55秒、57秒蜂鳴聲頻率為512 Hz;到達59分59秒為最后一聲報時,蜂鳴聲頻率為1 kHz。
4)世界時鐘功能:默認當(dāng)前顯示時間為北京時間(GMT+8),當(dāng)按下世界時按鍵時,顯示時間將轉(zhuǎn)換為格林威治標(biāo)準(zhǔn)時(GMT)。數(shù)字鐘電路的模塊框圖,如圖1所示。
2 功能模塊的工作原理及設(shè)計實現(xiàn)
系統(tǒng)主要由6大模塊組成,即分頻模塊、計時模塊、校時模塊、譯碼顯示模塊、整點報時模塊和世界時鐘模塊。
2.1 分頻模塊的工作原理及設(shè)計實現(xiàn)
本設(shè)計選用的FPGA開發(fā)板板載20 MHz有源晶振,為了得到占空比50%的1 Hz時基脈沖及2 kHz方波信號(用于驅(qū)動譯碼顯示模塊以及為整點報時模塊提供不同頻率的信號以產(chǎn)生不同音調(diào)的聲音),需要對板載時鐘信號進行分頻。分頻模塊采用VHDL語言實現(xiàn),對20 MHz時鐘信號分別進行兩千萬和一萬分頻。具體實現(xiàn)代碼如下:
2.2 計時模塊和校時模塊的工作原理及設(shè)計實現(xiàn)
計時模塊由60進制秒計數(shù)器、60進制分計數(shù)器和24進制時計數(shù)器級聯(lián)構(gòu)成,采用同步時序電路實現(xiàn)。當(dāng)計數(shù)器處于正常計數(shù)狀態(tài)時,3個計數(shù)器的時鐘信號均為1Hz時基脈沖,秒計數(shù)器對1 Hz的時基脈沖進行計數(shù),其進位輸出信號cos_in作為分計數(shù)器的使能信號,而分計數(shù)器的進位輸出信號com_in又作為時計數(shù)器的使能信號。在計時模塊的基礎(chǔ)上,數(shù)字鐘通過增加兩個按鍵分別實現(xiàn)對小時和分鐘的調(diào)整。這兩個按鍵能夠產(chǎn)生時計數(shù)器和分計數(shù)器的另一路使能信號,即按下時校時按鍵時,時計數(shù)器使能信號持續(xù)有效,由于采用同步時序電路,時計數(shù)器能夠持續(xù)增加,達到調(diào)整時間的目的。按下分校時按鍵時原理相同。此外,校時模塊還對校時按鍵進行防抖動處理,提高系統(tǒng)的可靠性和抗干擾能力。
2.3 譯碼顯示模塊的工作原理及設(shè)計實現(xiàn)
譯碼顯示模塊采用原理圖方式實現(xiàn)。本設(shè)計選用的FPGA開發(fā)板設(shè)有6位8段共陽極數(shù)碼管,并采用動態(tài)顯示方式。計時模塊輸出秒低位、秒高位、分低位、分高位、時低位、時高位共6x4路信號,經(jīng)由74151數(shù)據(jù)選擇器選擇1×4路信號,該信號通過74248顯示譯碼器得到驅(qū)動8段數(shù)碼管的1組段選信號(段碼)。同時,2 kHz方波信號經(jīng)由74160分頻得到3路信號,驅(qū)動74151及74138 3:8譯碼器產(chǎn)生位選信號(位碼)。
2.4 整點報時模塊的工作原理及設(shè)計實現(xiàn)
整點報時模塊根據(jù)秒計數(shù)器、分計數(shù)器輸出的數(shù)值決定是否報時,當(dāng)時間為59分53秒、55秒、57秒時,報時頻率為512Hz;當(dāng)時間為59分59秒時,報時頻率為1 kHz。不同頻率的信號通過蜂鳴器產(chǎn)生不同音調(diào)的蜂鳴聲。報時模塊使能時,計時模塊輸出信號如表1所示。
2.5 世界時鐘模塊的工作原理及設(shè)計實現(xiàn)
本設(shè)計中加入了世界時鐘模塊,能夠?qū)⒈本r間快速轉(zhuǎn)換為格林威治標(biāo)準(zhǔn)時。北京位于東八區(qū),格林威治位于本初子午線附近,北京時間比格林威治標(biāo)準(zhǔn)時快8小時,要完成時間轉(zhuǎn)換,需要將北京時間減去8小時,在24進制中相當(dāng)于加16小時?;诖嗽O(shè)計加法和比較電路。在時計數(shù)器輸出信號的基礎(chǔ)上,利用74283四位全加器將時低位加6(01102),時高位加1(0001 2)。由于74283四位全加器為16進制,而時較器判斷計算結(jié)果是否大于9,若結(jié)果大于9,則需要在此基礎(chǔ)上繼續(xù)加6,將結(jié)果修正為十進制,過程中產(chǎn)生的進位信號作為時高位的CIN信號;若結(jié)果小于9,則可直接輸出。第一級加法和比較電路如圖2所示。完成時低位加6,時高位加1的變換后,需要判斷變換后的時間是否大于24。若大于24,則需要減24;若小于24,則可直接輸出。世界時間轉(zhuǎn)換流程圖如圖3所示。
3 結(jié)束語
在QuartusⅡ開發(fā)環(huán)境中完成上述各模塊的原理圖設(shè)計和程序編寫,并對設(shè)計好的電路進行編譯、仿真,得到的仿真波形符合設(shè)計要求。根據(jù)所采用的硬件平臺,在頂層電路中進行管腳分配、再編譯。然后將編譯好的目標(biāo)文件下載到FPGA開發(fā)板中進行驗證和調(diào)試。測試結(jié)果,數(shù)碼管能夠正確顯示計時時間,能夠通過按鍵調(diào)整時間,整點報時和世界時鐘均能夠正常工作,實驗結(jié)果符合設(shè)計要求。