本模板:
明德揚首創全新fpga設計技巧--至簡設計法,教你如何一步一步去完成乙個複雜電路的設計,裡面很多有實用技巧,熟練運用這些技巧,有助於你寫出非常優秀的
fpga設計
**。非常簡潔易讀,歡迎比較。
一、功能描述
本工程包括矩陣鍵盤和數碼管顯示模組,共同實現乙個帶有鬧鐘功能、可以設定時間的數字時鐘。具體功能如下:
1.數碼管可以顯示時十位、時個位、分十位、分個位、秒十位、秒個位。
2.上電後,數碼管顯示000000,並開始每秒計時。
3.按下按鍵0進入時間設定狀態。再按下按鍵0退出時間設定狀態,繼續計時。
4.在時間設定狀態,通過按鍵1來選擇設定的時間位,在0~5之間迴圈選擇。
5.在時間設定狀態,通過按鍵2來對當前選擇的時間位進行加1。
6.在計時狀態下,按下按鍵14,進入鬧鐘時間點設定狀態。再按下按健15,退出鬧鐘設定狀態。
7.在鬧鐘設定狀態,按下按鍵13選擇設定的時間位,此時可以按下所需要的按鍵序號設定對應鬧鐘時間。
8.當前時間與所設定的時間點匹配上了,蜂鳴器響應5秒。
二、平台效果圖
三、實現過程
首先根據所需要的功能,列出工程頂層的輸入輸出訊號列表。
訊號名i/o 位寬
說明clk i
1系統工作時鐘50m
rst_n i
1系統復位訊號,低電平有效
key_col i
4矩陣鍵盤按鍵列輸入
key_row o
4按鍵輸出行訊號
seg_ment o
8數碼管段選訊號
seg_sel o
6數碼管位選訊號
bell o
1蜂鳴器控制訊號
我們把工程分成四個模組,分別是數碼管顯示模組,矩陣鍵盤掃瞄模組,時鐘計數模組,鬧鐘設定模組。
1.數碼管顯示模組
本模組實現了將時鐘資料或者鬧鐘資料顯示到七段解碼器上的功能。
七段解碼器引腳圖:
根據七段解碼器的型號共陰極或者共陽極,給予訊號0或1點亮對應的led燈,乙個八段數碼管稱為一位,多個數碼管並列在一起可構成多位數碼管,它們的段選(a,b,c,d,e,f,g,dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字元編碼,而選中哪個位選線,那個數碼管便會被點亮。數碼管的8段,對應乙個位元組的8位,a對應最低位,dp對應最高位。所以如果想讓數碼管顯示數字0,那麼共陰數碼管的字元編碼為00111111,即;共陽數碼管的字元編碼為11000000。
在輪流顯示過程中,每位數碼管的點亮時間為1~
2ms,由於人的視覺暫留現象及發光二極體的餘輝效應,儘管實際上各位數碼管並非同時點亮,但只要掃瞄的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的
i/o埠,而且功耗更低。
本模組採用
6個七段解碼器顯示鬧鐘小時分鐘秒位,使用乙個計數器不停計數
0-5,每個數字代表乙個七段解碼器,在對應的七段解碼器給予對應的字元編碼,以此達到掃瞄數碼管顯示資料的功能。
訊號列表如下:
訊號名
i/o 位寬
說明 rst_n i
1系統復位訊號,低電平有效
clk i
1系統工作時鐘
50mdin i
32每個數碼管的時間資料
seg_sel o
8數碼管位選
seg_ment o
8數碼管段選
2.矩陣鍵盤掃瞄模組
本次案例萬年曆使用的是
4x4矩陣鍵盤,本模組就是實現了矩陣鍵盤的掃瞄並使用以及按鍵消抖功能。通過行掃瞄法得到按下的鍵的位置資訊。
訊號列表如下:
訊號名
i/o 位寬
說明 clk i
1 系統工作時鐘50m
rst_n i
1系統復位訊號,低電平有效
key_col i
4矩陣鍵盤列訊號
key_row o
4矩陣鍵盤行訊號
key_num o
4按鍵位置訊號
key_vld o
1按鍵有效訊號
3.時鐘計數模組
本模組實現了時鐘計數功能,按鍵
1按下則進入時鐘數字調節介面,此時利用按鍵
2來位選,按鍵
3來調節數字,按一次按鍵3則加
1,再次按下按鍵
1則恢復計數。
訊號列表如下:
訊號名
i/o 位寬
說明 clk i
1 系統工作時鐘50m
rst_n i
1系統復位訊號,低電平有效
key_num i
4輸入按鍵值
key_vld i
1按鍵輸入有效指示
dout o
24時鐘資料輸出
dout_vld o
24時鐘資料輸出有效
4.鬧鐘設定模組
本模組實現了設定鬧鐘時間功能,按下按鍵
14則進入鬧鐘時間設定介面,此時利用按鍵
13來位選,然後按下對應的按鍵則設定對應的數字,按下按鍵
15則退出鬧鐘設定介面,當時鐘資料和鬧鐘資料相同時,也就是到達設定時間時,蜂鳴器響5s。
訊號列表如下:
訊號名
i/o 位寬
說明 clk i
1 系統工作時鐘50m
rst_n i
1系統復位訊號,低電平有效
time_now i
24當前輸入時間
time_now_vld i
1當前輸入時間有效
bell o
1蜂鳴器控制訊號
set_group o
24設定鬧鐘時間點
setting o
1設定狀態標誌
C 鬧鐘的實現
說明下兩個類的主要功能吧,1.time類 主要負責記錄時間,包括當前時間還有響鈴時間 2.clock 負責鬧鐘響鈴,輸出時間,計時這些功能 include include using namespace std ifndef time h define time h class time endif...
AlarmManager類的應用(實現鬧鐘功能)
1 alarmmanager,顧名思義,就是 提醒 是android中常用的一種系統級別的提示服務,可以實現從指定時間開始,以乙個固定的間隔時間執行某項操作,所以常常與廣播 broadcast 連用,實現鬧鐘等提示功能 2 alarmmanager的常用方法有三個 1 set int type,lo...
基於FIS的前端工程化實現
2015.9.14 js css其他合併方式 1 nignx可以用combo拼接多個css js等,結構 2015.9.10 最近嘗試了下基於fis的前端工程化實現。等下再吐槽fis3 先列出要實現的功能 1 資源定位,自動匹配portal到cdn伺服器的路徑 2 資源合併,合併多個css js檔案...