1功能概述
萬年歷是記錄一定時間范圍內的年歷,其名稱只是一種象征,表示時間跨度大。由于其功能非常常用,且極為方便人們查詢使用,因此廣泛應用于鐘表、歷書出版物、電子產品、電腦軟件和手機應用等行業(yè)中。
與傳統(tǒng)計時工具如鐘表日歷等相比,數(shù)字萬年歷具備精確度高、成本低廉、運行穩(wěn)定、功能多樣等眾多優(yōu)點,因此國內外許多設計人員先后進行了相關設計開發(fā)。其中,基于FPGA開發(fā)除設計簡便、開發(fā)成本低、電路簡潔等,更具備功能設計靈活方面的優(yōu)勢。只需要在軟件上做簡單修改即可添加不同功能,如鬧鐘、陰陽歷對照等。
在FPGA設計中,數(shù)字萬年歷屬于小規(guī)模集成電路。從原理上來講,是典型的數(shù)字電路,包括組合邏輯電路和時序電路。在本案例中具體功能要求如下:
1. 上板復位后從元年1月1號開始計數(shù),為方便上板調試,將一天的時間壓縮為1秒;
2. 按鍵用于設置日歷,按下按鍵0進入設置狀態(tài),再次按下按鍵0退出設置狀態(tài);
3. 按鍵1用來選擇想要設置的年月日的各個位;
4. 按鍵2在設置狀態(tài)時進行計數(shù)設置,每按一次數(shù)碼管顯示數(shù)字加1;
5. 平年365天(52周+1天),閏年366天(52周+2天),其中平年2月28天,閏年2月29天。
6. 閏年:每400年整一閏,或每4年且不為百年的一閏。即能被400整除,或不能被100整除但能被4整除的年份為閏年。
2 設計思路
首先根據(jù)所需要的功能,列出工程頂層的輸入輸出信號列表。如下表:
我們可以把工程劃分成三個模塊,分別是萬年歷計數(shù)模塊、按鍵模塊和數(shù)碼管顯示模塊。
1. 計數(shù)模塊——實現(xiàn)的是萬年歷計數(shù)功能,為方便觀看,將一天時間設置為1秒;日計數(shù)器dat_cnt、月份計數(shù)器mon_cnt_h、mon_cnt_1、mon_2_h、mon_2_1分別為大月小月以及平年閏年的2月計數(shù)器、年份計數(shù)器yea_one、yea_ten、yea_hun、yea_tho分別為年份的個十百千位,由yea_cnt_tol 《= yea_cnt1000 + yea_cnt100 + yea_cnt10 + yea_one得到年份。本模塊還自動計算當年是否是平閏年。
信號列表如下:
2. 按鍵模塊——4x4矩陣鍵盤,實現(xiàn)了矩陣鍵盤的掃描并使用按鍵消抖功能。
信號列表如下:
3. 數(shù)碼管模塊——實現(xiàn)將年月日的信息顯示在數(shù)碼管上。
信號列表如下:
? ?3、程序設計
評論