基于FPGA的數字日歷設計

發(fā)布時(shí)間:2014-12-17 15:42    發(fā)布者:designapp
關(guān)鍵詞: 數字日歷 , VHDL , FPGA

        基于FPGA 設計數字日歷可以實(shí)現以軟件方式設計硬件的目的,無(wú)需購買(mǎi)專(zhuān)用數字芯片,從而克服了傳統利用多片數字集成電路設計數字日歷存在焊接麻煩、調試繁瑣、成本較高等問(wèn)題。而且,基于FPGA 的數字日歷與傳統系統相比,在設計靈活、開(kāi)發(fā)速度、降低成本、計時(shí)精度、功能實(shí)現上都得到大幅度提升,能夠更好地滿(mǎn)足人們日常生活的需要。
本文介紹如何利用VHDL 硬件描述語(yǔ)言設計一個(gè)具有年、月、日、星期、時(shí)、分、秒計時(shí)顯示功能,時(shí)間調整功能和整點(diǎn)報時(shí)功能的數字日歷。在Quartus Ⅱ開(kāi)發(fā)環(huán)境下,采用自頂向下的設計方法,建立各個(gè)基本模塊,再構建成一個(gè)完整的基于FPGA 設計的數字日歷的頂層模塊,然后對其進(jìn)行編譯、仿真、引腳鎖定,最終下載到可編程邏輯器件上進(jìn)行結果驗證。
1 數字日歷整體設計方案
基于FPGA 的數字日歷設計分為硬件設計和軟件設計兩大部分。其原理框圖如圖1所示。整個(gè)數字日歷由六個(gè)部分組成:顯示控制部分,時(shí)分秒部分,年月日部分,定時(shí)與整點(diǎn)報時(shí)部分,星期部分,調整控制部分。秒、分、時(shí)分別由兩個(gè)60進(jìn)制的計數器和一個(gè)24進(jìn)制的計數器組成。當個(gè)計數器達到進(jìn)位的條件時(shí)向下一計數器進(jìn)位。同樣日、月、年也是由不同的計數器組成,當達到所需進(jìn)位的條件時(shí)向下一計數器進(jìn)位,各計數器在進(jìn)位的同時(shí)分別把各自的結果輸出給顯示部分進(jìn)行實(shí)時(shí)顯示。


圖1 數字日歷原理框圖


2 數字日歷的工作原理
首先由外部振蕩器產(chǎn)生穩定的高頻脈沖信號,作為數字日歷的時(shí)間基準,然后經(jīng)過(guò)分頻器輸出標準秒脈沖,輸入到FPGA的CLOCK端,實(shí)現計數。當秒計數器滿(mǎn)60后向分計數器進(jìn)位,分計數器滿(mǎn)60后向小時(shí)計數器進(jìn)位,小時(shí)計數器按照“24進(jìn)1”規律計數。計滿(mǎn)后各計數器清零,重新計數。日部分由于日有28天、29天、30天、31天4種情況,故日由年和月共同判斷其天數,日計滿(mǎn)后向月進(jìn)位,月滿(mǎn)后向年進(jìn)位。計數器的輸出分別經(jīng)譯碼器送數碼管顯示。計時(shí)出現誤差時(shí),可以用校時(shí)電路校時(shí)、校分、校秒和校年、校月、校日。
設計中用到了6 個(gè)按鍵K1,K2,K3,K4,ZHENG,NAO。其中K1用于切換顯示,剛開(kāi)始時(shí)顯示日期,按兩次K1顯示星期+時(shí)間,再按兩次K1顯示定時(shí)時(shí)間,再按兩次重新顯示日期,以此循環(huán)。K2、K3和K4配合進(jìn)行調節:開(kāi)始正常顯示不進(jìn)行調節;當按兩下K2 鍵切換到對分鐘進(jìn)行調節,此時(shí)每按兩下K3 鍵分鐘加1;再按兩下K2 鍵切換到對小時(shí)進(jìn)行調節,此時(shí)每按兩下K3 鍵小時(shí)加1;依照分鐘→小時(shí)→星期→天→月→年→定時(shí)→正!昼姷拇涡蜓h(huán)調節,每按兩下K2 鍵切換到調節相應顯示,此時(shí)每按下K3鍵兩次,對應顯示加1;當切換到定時(shí)調節時(shí),每按兩下K3鍵,定時(shí)的分鐘加1,此時(shí)按兩下K4 鍵,切換到定時(shí)小時(shí)調節,每按兩下K3 鍵,定時(shí)的小時(shí)加1。按鍵ZHENG和NAO為整點(diǎn)報時(shí)和定時(shí)鬧鐘的使能端(低電平有效)。
3 軟件設計
軟件設計分為秒分時(shí)、年月日、按鍵調整、控制顯示、鬧鐘等幾大模塊。設計好各子模塊,然后在原理圖編輯窗口創(chuàng )建頂層原理圖文件shuzirili.bdf,將各子模塊按照邏輯關(guān)系連接起來(lái)得到數字日歷電路核心部分的原理圖。下面對各子模塊設計及仿真進(jìn)行介紹。




       

3.1 時(shí)分秒模塊
分和秒都是60進(jìn)制的計數器,小時(shí)則是24進(jìn)制的計數器,先對各個(gè)子模塊進(jìn)行設計編譯,驗證無(wú)誤后再將其組織到一起。外部時(shí)鐘信號通過(guò)秒模塊的clk 輸入,產(chǎn)生的進(jìn)位信號輸送到分模塊的clk,分模塊產(chǎn)生的進(jìn)位信號輸送到小時(shí)模塊的clk,構成時(shí)分秒模塊。其結構圖如圖2所示。


圖2 時(shí)分秒原理圖


3.2 星期模塊
星期模塊為七進(jìn)制計數器。其計數時(shí)鐘信號來(lái)自于調時(shí)電路產(chǎn)生的星期進(jìn)位脈沖信號,計數至6 瞬間,計星期模塊返回0 重新開(kāi)始計數。
3.3 年月日模塊
年月日模塊有daycounter 模塊、days-control 模塊、monthcounter模塊、yearcounter模塊組成,具有大小月判斷和閏年判斷功能,其結構圖如圖3所示。


圖3 年月日連接框圖


下面以年月日模塊為例,連接好之后進(jìn)行編譯并仿真,閏/平年的2月仿真結果如圖4,圖5所示,年進(jìn)位如圖6所示。


圖4 仿真結果(2008年2月)



圖5 仿真結果(2005年2月)



圖6 仿真結果(2004年12月)


年月日模塊計數設定為2000年~2999年,從圖4中可以看出2008年2月,計數到29天;從圖5得到2005年2 月計數到28天;從圖6看出2004年12月計數到31天,設計正確。



       
3.4 定時(shí)模塊
定時(shí)模塊通過(guò)按鍵K4來(lái)切換調節定時(shí)的分鐘和小時(shí),調整功能由調時(shí)模塊的按鍵K3來(lái)完成,每按兩下K3對應的顯示加1。
3.5 調時(shí)模塊
調時(shí)模塊設計思想是:通過(guò)把整個(gè)設計中的上一個(gè)模塊(比如:分的上一個(gè)模塊是秒;年的上一個(gè)模塊是月,等等)的進(jìn)位輸出接到本模塊的輸入in,out接到下一個(gè)模塊的時(shí)鐘輸入。正常狀態(tài)下sout=fin,fout=hin,hout=din,dout=min,mout=yin ,win=hout;當每按下兩次K2鍵,產(chǎn)生一個(gè)上升沿分別對fin,hin,win,din,min,yin,dingshi調節,調節信號由K3 給出。其中定義一個(gè)信號w,計數到7 返0,對應正常狀態(tài),fin,hin,win,din,min,yin,dingshi 7個(gè)狀態(tài)。
當K2 每來(lái)一個(gè)上升沿時(shí),分別對分,時(shí),星期,天,月,年以及定時(shí)調整,調整信號由K3 給出,經(jīng)仿真調時(shí)模塊結果與系統設計要求符合。
3.6 控制模塊
控制模塊通過(guò)K1按鍵進(jìn)行切換顯示調整,起初顯示年月日,按下2次K1顯示時(shí)間,再按下2次顯示定時(shí)時(shí)間。
若仿真參數設置數值為:2013 年05 月15 日,星期三,15:28(33 s),定時(shí)為07:19。仿真后結果如圖7所示。
從圖7可以看出,通過(guò)K1 按鍵控制顯示,開(kāi)始顯示年月日:20130515,當按下K1 兩下,顯示星期+時(shí)間:03152833;再按兩下顯示定時(shí)時(shí)間:00000719。仿真結果與預期設計一致,設計正確。


圖7 仿真結果


3.7 鬧鐘模塊
鬧鐘模塊設計為當定時(shí)時(shí)間到或者整點(diǎn)時(shí)鬧鈴響,分別有ZHENG,NAO 兩個(gè)控制端子控制,低電平有效。經(jīng)驗證,定時(shí)和整點(diǎn)報時(shí)仿真結果均符合設計要求。
3.8 頂層模塊
將各個(gè)子模塊設計好之后,并創(chuàng )建各自文件的圖元,以供原理圖設計文件中調用。然后在原理圖編輯窗口創(chuàng )建頂層原理圖文件shuzirili.bdf,即將各圖元的引線(xiàn)端子按照邏輯關(guān)系連接起來(lái),得到如圖8所示的完整原理圖,也即頂層模塊。
對頂層文件分別進(jìn)行時(shí)間、日期、鬧鈴功能的波形仿真,得到的仿真結果和預想設計一致,表明設計正確。


圖8 頂層原理圖





       
4 硬件驗證
在Quartus Ⅱ開(kāi)發(fā)環(huán)境中完成上述軟件設計及仿真后,最后還需將程序下載到FPGA器件中進(jìn)行硬件測試,以進(jìn)一步驗證所設計程序是否正確。硬件驗證時(shí),還需對頂層文件進(jìn)行管腳分配、并編譯,然后將編譯好的目標文件通過(guò)下載電纜下載到FPGA 開(kāi)發(fā)板中進(jìn)行驗證和調試。
采用GW48-SPOC/EDA 實(shí)驗開(kāi)發(fā)系統并設置在工作模式0來(lái)驗證設計結果。下面僅給出部分驗證結果。剛完成下載,數碼管顯示20000000,按兩下K1切換到時(shí)間顯示,才剛剛開(kāi)始計數,同時(shí)揚聲器發(fā)出“滴答滴答”的頻率為1 Hz的響聲(為整點(diǎn)報時(shí))60 s,然后通過(guò)按鍵8(K1)、鍵7(K2)、鍵6(K3)、鍵5(K4)對各個(gè)功能進(jìn)行驗證。首先調整時(shí)間,按兩下K2鍵切換到分的調整,此時(shí)每按兩下K3 鍵,分鐘加1,驗證過(guò)程中看到加到59就變?yōu)?0;再按兩下K2鍵切換到小時(shí)的調整,此時(shí)每按兩下K3鍵,分鐘加1;用同樣的方法調整星期,天,月,年以及定時(shí)的分鐘和小時(shí)。
調整日期為2013年7月31號,當再調整天時(shí),就變?yōu)?013年7月1號,結果如圖9所示。其他月份實(shí)驗結果也符合生活規律,與設計要求一致。
其他的測試結果,數碼管能夠正確顯示計時(shí)時(shí)間,定時(shí)驗證及時(shí)間調節、整點(diǎn)報時(shí)均能夠正常工作,實(shí)驗結果符合設計要求。



圖9 實(shí)際電路驗證


5 結語(yǔ)
本文基于FPGA 環(huán)境設計了一個(gè)具有年、月、日、星期、時(shí)、分、秒計時(shí)顯示功能,時(shí)間調整功能和整點(diǎn)報時(shí)功能的數字日歷系統,并將之下載到FPGA 芯片EP1C3T144-3 上進(jìn)行結果驗證,實(shí)驗驗證表明:數碼管能夠正確顯示計時(shí)時(shí)間,能夠通過(guò)按鍵調整時(shí)間,能夠設定時(shí)間并調整,整點(diǎn)報時(shí)能夠正常工作,實(shí)驗結果符合設計要求。由于設計中利用硬件描述語(yǔ)言和FPGA芯片相結合進(jìn)行數字日歷的研究,即利用EDA 技術(shù)在一定程度上實(shí)現了硬件設計軟件化,使設計過(guò)程變得相對簡(jiǎn)單,易于修改。
另外,隨著(zhù)電子技術(shù)的發(fā)展,數字日歷的功能會(huì )更加多樣化,諸如增加農歷顯示;加入溫度采集系統,能夠顯示每時(shí)每刻的環(huán)境溫度;加入節氣、節日提醒及顯示功能,提醒人們農耕及休息時(shí)間;還可以加入語(yǔ)音識別,方便人們不動(dòng)手實(shí)現對數字日歷的調節等等。相信功能日趨完善多樣化的數字日歷將能更好地滿(mǎn)足人們的各種需要,為人類(lèi)服務(wù)。


本文地址:http://selenalain.com/thread-135946-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页