基于FPGA的數字電子鐘設計
摘要:采用FPGA進(jìn)行的數字電路設計具有更大的靈活性和通用性,已成為目前數字電路設計的主流方法之一。本文給出一種基于FPGA的數字鐘設計方案。該方案采用VHDL設計底層模塊,采用電路原理圖設計頂層系統。整個(gè)系統在QuartusⅡ開(kāi)發(fā)平臺上完成設計、編譯和仿真,并在FPGA硬件實(shí)驗箱上進(jìn)行測試。測試結果表明該設計方案切實(shí)可行。
本文引用地址:http://dyxdggzs.com/article/201610/308512.htmEDA(Electronic Design Automation)又名電子設計自動(dòng)化,其基本特征是:以超大規??删幊踢壿嬈骷?,如FPGA,為設計載體,以硬件描述語(yǔ)言,如VHDL,為系統邏輯描述的主要表達方式,以計算機、大規??删幊踢壿嬈骷拈_(kāi)發(fā)軟件及實(shí)驗開(kāi)發(fā)系統為設計工具,完成電子系統的設計。使用EDA進(jìn)行電子系統設計具有以下特點(diǎn):1)用軟件方式設計硬件;2)用軟件方式設計的系統到硬件系統的轉換是由有關(guān)開(kāi)發(fā)軟件自動(dòng)完成的;3)設計過(guò)程中可用有關(guān)軟件進(jìn)行各種仿真;4)系統可現場(chǎng)編程,在線(xiàn)升級;5)整個(gè)系統可集成在一個(gè)芯片上,體積小、功耗低、可靠性高;6)設計的移植性好、效率高;7)適合分工設計、團隊協(xié)作。因此,EDA技術(shù)是現代電子設計的發(fā)展趨勢。
1 數字鐘的設計方案
本文以FPGA平臺為基礎,采用VHDL語(yǔ)言在QuartusⅡ開(kāi)發(fā)環(huán)境下設計開(kāi)發(fā)多功能數字鐘,具有計時(shí)、校時(shí)、蜂鳴鬧鈴的功能,具體功能為:1)能夠對秒、分、小時(shí)進(jìn)行正常計時(shí),每日按24小時(shí)計時(shí)制,能用八個(gè)七段數碼管進(jìn)行友好界面的顯示;2)具有復位功能,可以對當前時(shí)間進(jìn)行清零;3)能夠對電子時(shí)鐘進(jìn)行時(shí)分秒設置,方便在時(shí)鐘跑錯時(shí)進(jìn)行校正;4)能夠設定電子鬧鐘,在指定的時(shí)間驅動(dòng)蜂鳴器等外設工作,引起使用者注意;5)電子鐘具有溢出警報功能,當小時(shí)數超過(guò)24時(shí),用一個(gè)LED小燈進(jìn)行溢出警報說(shuō)明,然后從00—00—00開(kāi)始從新計時(shí),此功能可以使電子鐘很方便的擴展為萬(wàn)年歷。
我們采用自頂向下的層次化設計方法進(jìn)行設計,其輸入為狀態(tài)選擇信號(使用一個(gè)2位二進(jìn)制表示選擇,00正常運行或顯示鬧鈴信息,01設置秒,10設置分,11設置時(shí))、復位信號、鬧鈴開(kāi)關(guān)(配合狀態(tài)選擇信號進(jìn)行鬧鈴的設置)、1 Hz的計時(shí)時(shí)鐘信號和1 kHz的掃描時(shí)鐘信號;輸出為時(shí)、分、秒數字顯示(這里使用了8個(gè)共陰極的七段數碼管作為顯示輸出)、鬧鐘蜂鳴、溢出信號。系統由狀態(tài)選擇模塊、時(shí)、分、秒計時(shí)校時(shí)模塊、顯示與鬧鈴模塊組成。數字鐘的系統框圖圖如圖1所示。

2 核心模塊設計
2.1 狀態(tài)選擇模塊設計
該模塊主要功能其實(shí)是對輸入端的匯總,然后根據設置方法對不同的模塊進(jìn)行使能和參數傳遞,輸出不同的信令signaling控制到各個(gè)模塊,使每個(gè)模塊工作在一個(gè)有序的狀態(tài)。狀態(tài)選擇模塊的電路描述如圖2所示,具體說(shuō)明如下:當輸入一個(gè)脈沖到復位鍵reset時(shí),數字鐘啟動(dòng)并對時(shí)間清零。鬧鈴鍵clock=0時(shí),模塊根據狀態(tài)選擇鍵IS_SET輸出不同秒、分、時(shí)信令到秒、分、時(shí)計時(shí)校時(shí)模塊,控制這些模塊的運行狀態(tài)。此時(shí),當IS_SET=00時(shí)為正常計時(shí)狀態(tài),秒、分、時(shí)的輸出信令均為80;IS_SET=01時(shí)為秒校時(shí)狀態(tài),輸出秒信令S_signaling為時(shí)間輸入Time(顯然該輸出小于60),而輸出分信令M_signaling和時(shí)信令H_signaling均為100,表示暫停分、時(shí)計時(shí);IS_SET=10和11時(shí)則分別為分和時(shí)的校時(shí)狀態(tài)。鬧鈴鍵clock=1時(shí),當IS_SET=10和11時(shí)分別設置鬧鈴的分、時(shí)為時(shí)間輸入Time并將設置的鬧鈴時(shí)間輸出到“顯示與鬧鈴模塊”中保存;當IS_SET=00時(shí),輸出out_clock=1,控制顯示與鬧鈴模塊顯示設置的鬧鈴時(shí)間。注意,當鬧鈴鍵clock=1時(shí),計時(shí)正常運行,不論IS_SET如何設置,秒、分、時(shí)的輸出信令均為80。

2.2 計時(shí)校時(shí)模塊設計
該模塊用于時(shí)、分、秒的計時(shí)校時(shí),根據狀態(tài)選擇模塊傳輸過(guò)來(lái)的信令signaling分別進(jìn)行計時(shí)和校時(shí)。時(shí)、分、秒計時(shí)校時(shí)模塊是一樣的,只是分秒的進(jìn)位為60,而小時(shí)的進(jìn)位為24。我們在實(shí)體聲明中的使用generic變量定義一個(gè)numn,該值設置進(jìn)制為60或24,通過(guò)修改numn值就完成分、秒計時(shí)模塊到小時(shí)計時(shí)模塊的轉換。模塊的輸入為掃描時(shí)鐘、計時(shí)時(shí)鐘和信令signaling,輸出為輸出時(shí)間高位time_h和輸出時(shí)間低位time_l,以及進(jìn)位clk_jin。

計時(shí)校時(shí)模塊的電路描述如圖3所示,具體說(shuō)明如下:每當掃描時(shí)鐘上升沿時(shí),啟動(dòng)進(jìn)程,并根據信令signaling執行不同操作,1)當signaling
2.3 顯示、鬧鈴模塊設計
本模塊是數字鐘系統中的輸出模塊,用于輸出LED數字顯示和鬧鈴,其輸入為掃描時(shí)鐘,從計時(shí)校時(shí)模塊輸出的秒低位、秒高位、分低位、分高位、時(shí)低位、時(shí)高位信號和狀態(tài)選擇模塊輸出的鬧鈴顯示Nao_En鬧鈴時(shí)間Nan_In。如果Nao_En=0則正常顯示時(shí)間,當Nao_En=1時(shí),在LED數碼管上顯示鬧鐘時(shí)間。當當前時(shí)間與保存的鬧鈴時(shí)間Nan_In相同時(shí),蜂鳴器鳴響1 min。這里我們使用了八個(gè)共陰極的七段數碼管顯示時(shí)間,當選位信號sel=“01111111”時(shí),第一個(gè)數碼管顯示數字,其他七位不顯示。我們通過(guò)動(dòng)態(tài)掃描,輪流顯示秒低位sec_ge、秒高位sec_shi、分低位min_ge、分高位min_shi、時(shí)低位hour_ge、時(shí)高位hour_shi共6路信號,當掃描時(shí)鐘sanc_clk頻率高于28 Hz時(shí),由于人眼的視覺(jué)殘留效果,使得這6路信號看上去是同時(shí)顯示在6個(gè)七段數碼管上。顯示、鬧鈴模塊電路描述如圖4所示。

3 結束語(yǔ)
在QuartusⅡ軟件開(kāi)發(fā)平臺上,采用“自頂向下設計,自底向上實(shí)現”的方法完成了數字鐘的設計與實(shí)現。其基本過(guò)程如下:1)完成數字鐘的總體設計;2)完成各個(gè)底層模塊的設計和波形仿真:底層模塊采用VHDL語(yǔ)言編寫(xiě),在編譯和仿真成功后,對其進(jìn)行封裝;3)完成數字鐘的頂層電路設計:根據數字鐘的系統框圖(圖1)在QuartusⅡ中采用電路原理圖方式,調用封裝好的底層模塊,完成頂層電路圖的設計;4)對頂層電路進(jìn)行編譯和仿真,結果表明仿真波形符合設計要求;5)進(jìn)行引腳分配,再編譯后,將下載文件下載到FPGA開(kāi)發(fā)板中進(jìn)行驗證和調試。測試結果表明數碼管能正確的顯示計時(shí)時(shí)間,能通過(guò)按鍵調整時(shí)間,能實(shí)現整點(diǎn)報時(shí),完全符合設計要求。
評論