基於FPGA的數字時鍾的設計與實現


基於FPGA的Digital_clock的設計與實現

一、設計要求

1.正常顯示功能

四位數碼管顯示當前時間、日期以及鬧鍾時間。對於時間(當前時間、鬧鍾時間)來說,數碼管的前兩位顯示小時,后兩位顯示分鍾。對於日期的年份來說,使用四位數碼管進行顯示;對於日期的月份和日期來說,數碼管的前兩位顯示月份,后兩位顯示日期。兩位之間的“冒號”點亮,各個數碼管的小數點不用點亮。

2.切換功能

復位時,數碼管顯示當前時間;當外部按下key_switch時,數碼管顯示年份;再次按下key_switch時,數碼管顯示月份和日期;再次按下key_switch時,數碼管顯示鬧鍾時間;再次按下key_switch時,數碼管恢復顯示時間。

3.調整功能

當顯示時間(當前時間、鬧鍾時間)時,按下key_adjust,再按下key_add或者key_sub就可以調整分鍾;再次按下key_adjust,再按下key_add或者key_sub就可以調整小時;再次按下key_adjust時,即為確定調整。
當顯示年份時,按下key_adjust,再按下key_add或者key_sub就可以調整年份;再次按下key_adjust時,即為確定調整。
當顯示月份和日期時,按下key_adjust,再按下key_add或者key_sub就可以調整日期;再次按下key_adjust,再按下key_add或者key_sub就可以調整月份;再次按下key_adjust時,即為確定調整。
如果對上述的調整有疑問,可以再次調整。如果在調整期間,按下key_switch,所作調整也會立即生效。

4.調整功能顯示

功能進行調整時,所對應調整的部分應該亮0.5秒,滅0.5秒。

5.聲音模塊

無論按下什么按鍵,都應該發出“叮”的一聲。當鬧鍾時間和當前時間相同時,應該一直播放音樂《世上只有媽媽好》,直到有按鍵按下,終止音樂。

6.鬧鍾

鬧鍾的小時可以調整到24,用以關閉鬧鍾。其他時間打開鬧鍾。鬧鍾的時間不設置日期,即一旦設置鬧鍾,每天都會起作用。

7.補充說明

按照每個月30天進行設計,不考慮閏月等情況的影響。

二、硬件分析

  • 主控芯片:FPGA(Artix7)
  • 晶振:50MHz
  • 復位源:低電平有效
  • 按鍵:切換、調整、加減按鍵均為低電平有效
  • 蜂鳴器:無源蜂鳴器
  • 數碼管:四位一體共陽極數碼管,並且公共端采用NPN三極管控制

三、設計架構

1.總體設計

2.分模塊設計

2.1Key_ctrl模塊的設計與實現

2.2Beep_ctrl模塊的設計與實現

2.2.1Beep_music模塊的設計與實現

2.3Show_ctrl模塊的設計與實現

2.4Digital_clock_ctrl模塊的設計與實現

2.4.1 Clock_ctrl模塊的實現

四、基本原理

4.1按鍵

開發板上面有四個按鍵,當按鍵按下時,將對應的網絡置成低電平;當按鍵釋放時,將對應的網絡置成高電平。

按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時不會馬上進入穩定狀態,瞬間伴隨有一連串的抖動。抖動時間一般為 5ms~10ms。我們采用持續采樣的方案解決這一問題:當檢測到信號持續為低 10ms,認為按鍵按下;當檢測到信號持續為高10ms,認為按鍵釋放。在設計時,需要考慮到外部的按鍵信號為異步信號,需要進行同步處理。方案為外界信號延遲兩拍。

每次按鍵按下的時間的長短不一,經過消抖后,低電平的持續長度長短也不一樣。此長度可能遠遠大於一個時鍾周期的長度。要讓每次按下只能進行一次有效切換,需要進行邊沿檢測:通過檢測下降沿(上升沿)的變化,產生一個新的信號——脈沖(一個時鍾周期的脈沖) ,利用此脈沖作為翻轉的使能即可。

4.2數碼管

共陽數碼管是指將所有發光二極管的陽極接到一起形成公共陽極(COM)的數碼管,共陽數碼管在應用時應將公共極 COM 接到+5V,當某一字段發光二極管的陰極為低電平時,相應字段就點亮,當某一字段的陰極為高電平時,相應字段就不亮。共陰數碼管是指將所有發光二極管的陰極接到一起形成公共陰極(COM)的數碼管,共陰數碼管在應用時應將公共極 COM 接到地線 GND 上,當某一字段發光二極管的陽極為高電平時,相應字段就點亮,當某一字段的陽極為低電平時,相應字段就不亮。

通過分時輪流控制各個數碼管的的 COM 端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為 1~2ms,由於人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位數碼管並非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的 I/O 端口,而且功耗更低。

4.3蜂鳴器

在設計時,首先將簡譜中的音符存起來;利用計數器產生 1/4秒為周期的脈沖,在此脈沖驅動下,將事先存好的音符一個個輸出;根據音符的值,計算出分頻比;根據分頻比,產生對應頻率的波形。將此波形輸出即可。樂譜頻率如下所示:

五、設計代碼

本設計的所有相關設計文件及代碼全部提交至gitee倉庫,請訪問shihao_Yang獲取。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM