简易计时器的设计与实现-DE2|VHDL|EDA|FPGA/CPLD
基于VHDL的簡易計時器的設(shè)計與實現(xiàn)
傳送門:
- 本項目地址:Gitee | GitHub
- 其他相關(guān)項目
- DE2-VHDL計時器:Gitee | GitHub
- DE2-VHDL實驗:Gitee | GitHub
前言
該設(shè)計是筆者大二時的硬件課實踐作品,如今2年過去了,計算機基礎(chǔ)和邏輯電路的知識已經(jīng)忘得七七八八了,借著剛畢業(yè)還有點空閑時間,簡單整理一下大學期間做過的東西,以記錄自己的學習過程,也是對曾經(jīng)不重視整理、總結(jié)和分享的自己的彌補和再激勵。
設(shè)計概述
本設(shè)計簡易電子計時器能順序計時和倒計時,數(shù)據(jù)范圍為1天,即00:00:00 - 23:59:59,同時具有時間設(shè)置功能,能從外部設(shè)置當前的小時數(shù)、分鐘數(shù)和秒數(shù)。
本設(shè)計使用VHDL語言開發(fā),開發(fā)與仿真 IDE 為Quartus II 9.0,在DE2-115開發(fā)板上測試運行。
設(shè)計內(nèi)容
1)本設(shè)計簡易電子計時器具有四種工作模式:正常計時、從外部設(shè)置當前的小時數(shù)、從外部設(shè)置當前的分鐘數(shù)、從外部設(shè)置當前的秒數(shù),同時具有可逆的計時功能;
2)在設(shè)置當前某位時間的時候,顯示該時間的兩個七段數(shù)碼管按1Hz的頻率進行閃爍,提醒當前設(shè)置的是哪個時間數(shù),其余的數(shù)碼管則處于暫停/不變/靜止狀態(tài);
設(shè)計說明
本設(shè)計共有12個模塊組成,包括:
1) 一個分頻模塊clk_1hz,主要使用DE2-115版的27MHz的晶振脈沖分頻產(chǎn)生一個1Hz的時鐘周期,即每秒/個時鐘周期(f=1Tf=\frac{1}{T}f=T1?);
2) 一個狀態(tài)發(fā)生器(模式選擇)mode_sel,主要用來產(chǎn)生四種工作模式的控制信號和秒計數(shù)模塊的計數(shù)使能控制信號;
3) 一個二選一的數(shù)據(jù)選擇器模塊mux21,用來選擇當前輸入的是手動脈沖還是1Hz的標準秒脈沖,選擇信號由mode_sel進行控制;
4) 兩個60進制的可逆計數(shù)模塊counter60_min_sec,并帶有暫停功能,分別用來對秒和分鐘進行計數(shù);
5) 一個24進制的可逆計數(shù)模塊counter24_hour,并帶有暫停功能,用來對小時進行計數(shù);
6) 六個帶有閃爍控制端的七段數(shù)碼管譯碼驅(qū)動模塊fbcd7seg,用來顯示對應(yīng)時間數(shù)的計數(shù)值,并在外部輸入時間數(shù)的時候?qū)?yīng)的數(shù)碼管進行頻率為1Hz的閃爍。
頂層設(shè)計
頂層設(shè)計圖:
描述:
1)SW[0]用于切換計數(shù)器是順序計數(shù)還是倒計時
2)KEY[0]用于切換模式,可以循環(huán)切換正常計時、設(shè)置小時數(shù)、設(shè)置分鐘數(shù)和設(shè)置秒數(shù)四個模式。
3)KEY[1]用于產(chǎn)生一個手動脈沖,用于設(shè)置當前時間數(shù)。
模塊設(shè)計
1)mode_sel 和 mux21
mode_sel內(nèi)部維護了一個循環(huán)計數(shù)的4進制計數(shù)器(0、1、2、3),其中SEL_EN輸出腳位控制mux21,當計數(shù)器為0時選擇A(1Hz脈沖),其他選擇B(手動脈沖)。
2)counter24_min_sec 和 counter60_hour
計時模塊中,輸入腳位CLK_SEL接收是正常模式還是設(shè)置模式的信號,輸入腳位UP_DWN接收順序計時還是倒計時的控制信號,腳位CNT_EN、Co為進位輸入、輸出信號。
3)fbcd7seg
輸入腳位FLASH接收閃爍信號,高電平時激活,每個時鐘周期的低電平黑燈,高電平亮燈。
總結(jié)
以上是生活随笔為你收集整理的简易计时器的设计与实现-DE2|VHDL|EDA|FPGA/CPLD的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring批处理教程
- 下一篇: 循环结构的数据流分析方法