基于FPGA的數(shù)字電子鐘設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
EDA(Electronic Design Automation)又名電子設(shè)計(jì)自動(dòng)化,其基本特征是:以超大規(guī)??删幊踢壿嬈骷?,如FPGA,為設(shè)計(jì)載體,以硬件描述語(yǔ)言,如VHDL,為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開(kāi)發(fā)軟件及實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具,完成電子系統(tǒng)的設(shè)計(jì)。使用EDA進(jìn)行電子系統(tǒng)設(shè)計(jì)具有以下特點(diǎn):1)用軟件方式設(shè)計(jì)硬件;2)用軟件方式設(shè)計(jì)的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)開(kāi)發(fā)軟件自動(dòng)完成的;3)設(shè)計(jì)過(guò)程中可用有關(guān)軟件進(jìn)行各種仿真;4)系統(tǒng)可現(xiàn)場(chǎng)編程,在線升級(jí);5)整個(gè)系統(tǒng)可集成在一個(gè)芯片上,體積小、功耗低、可靠性高;6)設(shè)計(jì)的移植性好、效率高;7)適合分工設(shè)計(jì)、團(tuán)隊(duì)協(xié)作。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計(jì)的發(fā)展趨勢(shì)。
1 數(shù)字鐘的設(shè)計(jì)方案
本文以FPGA平臺(tái)為基礎(chǔ),采用VHDL語(yǔ)言在QuartusⅡ開(kāi)發(fā)環(huán)境下設(shè)計(jì)開(kāi)發(fā)多功能數(shù)字鐘,具有計(jì)時(shí)、校時(shí)、蜂鳴鬧鈴的功能,具體功能為:1)能夠?qū)γ搿⒎?、小時(shí)進(jìn)行正常計(jì)時(shí),每日按24小時(shí)計(jì)時(shí)制,能用八個(gè)七段數(shù)碼管進(jìn)行友好界面的顯示;2)具有復(fù)位功能,可以對(duì)當(dāng)前時(shí)間進(jìn)行清零;3)能夠?qū)﹄娮訒r(shí)鐘進(jìn)行時(shí)分秒設(shè)置,方便在時(shí)鐘跑錯(cuò)時(shí)進(jìn)行校正;4)能夠設(shè)定電子鬧鐘,在指定的時(shí)間驅(qū)動(dòng)蜂鳴器等外設(shè)工作,引起使用者注意;5)電子鐘具有溢出警報(bào)功能,當(dāng)小時(shí)數(shù)超過(guò)24時(shí),用一個(gè)LED小燈進(jìn)行溢出警報(bào)說(shuō)明,然后從00—00—00開(kāi)始從新計(jì)時(shí),此功能可以使電子鐘很方便的擴(kuò)展為萬(wàn)年歷。
我們采用自頂向下的層次化設(shè)計(jì)方法進(jìn)行設(shè)計(jì),其輸入為狀態(tài)選擇信號(hào)(使用一個(gè)2位二進(jìn)制表示選擇,00正常運(yùn)行或顯示鬧鈴信息,01設(shè)置秒,10設(shè)置分,11設(shè)置時(shí))、復(fù)位信號(hào)、鬧鈴開(kāi)關(guān)(配合狀態(tài)選擇信號(hào)進(jìn)行鬧鈴的設(shè)置)、1 Hz的計(jì)時(shí)時(shí)鐘信號(hào)和1 kHz的掃描時(shí)鐘信號(hào);輸出為時(shí)、分、秒數(shù)字顯示(這里使用了8個(gè)共陰極的七段數(shù)碼管作為顯示輸出)、鬧鐘蜂鳴、溢出信號(hào)。系統(tǒng)由狀態(tài)選擇模塊、時(shí)、分、秒計(jì)時(shí)校時(shí)模塊、顯示與鬧鈴模塊組成。數(shù)字鐘的系統(tǒng)框圖圖如圖1所示。
2 核心模塊設(shè)計(jì)
2.1 狀態(tài)選擇模塊設(shè)計(jì)
該模塊主要功能其實(shí)是對(duì)輸入端的匯總,然后根據(jù)設(shè)置方法對(duì)不同的模塊進(jìn)行使能和參數(shù)傳遞,輸出不同的信令signaling控制到各個(gè)模塊,使每個(gè)模塊工作在一個(gè)有序的狀態(tài)。狀態(tài)選擇模塊的電路描述如圖2所示,具體說(shuō)明如下:當(dāng)輸入一個(gè)脈沖到復(fù)位鍵reset時(shí),數(shù)字鐘啟動(dòng)并對(duì)時(shí)間清零。鬧鈴鍵clock=0時(shí),模塊根據(jù)狀態(tài)選擇鍵IS_SET輸出不同秒、分、時(shí)信令到秒、分、時(shí)計(jì)時(shí)校時(shí)模塊,控制這些模塊的運(yùn)行狀態(tài)。此時(shí),當(dāng)IS_SET=00時(shí)為正常計(jì)時(shí)狀態(tài),秒、分、時(shí)的輸出信令均為80;IS_SET=01時(shí)為秒校時(shí)狀態(tài),輸出秒信令S_signaling為時(shí)間輸入Time(顯然該輸出小于60),而輸出分信令M_signaling和時(shí)信令H_signaling均為100,表示暫停分、時(shí)計(jì)時(shí);IS_SET=10和11時(shí)則分別為分和時(shí)的校時(shí)狀態(tài)。鬧鈴鍵clock=1時(shí),當(dāng)IS_SET=10和11時(shí)分別設(shè)置鬧鈴的分、時(shí)為時(shí)間輸入Time并將設(shè)置的鬧鈴時(shí)間輸出到“顯示與鬧鈴模塊”中保存;當(dāng)IS_SET=00時(shí),輸出out_clock=1,控制顯示與鬧鈴模塊顯示設(shè)置的鬧鈴時(shí)間。注意,當(dāng)鬧鈴鍵clock=1時(shí),計(jì)時(shí)正常運(yùn)行,不論IS_SET如何設(shè)置,秒、分、時(shí)的輸出信令均為80。
2.2 計(jì)時(shí)校時(shí)模塊設(shè)計(jì)
該模塊用于時(shí)、分、秒的計(jì)時(shí)校時(shí),根據(jù)狀態(tài)選擇模塊傳輸過(guò)來(lái)的信令signaling分別進(jìn)行計(jì)時(shí)和校時(shí)。時(shí)、分、秒計(jì)時(shí)校時(shí)模塊是一樣的,只是分秒的進(jìn)位為60,而小時(shí)的進(jìn)位為24。我們?cè)趯?shí)體聲明中的使用generic變量定義一個(gè)numn,該值設(shè)置進(jìn)制為60或24,通過(guò)修改numn值就完成分、秒計(jì)時(shí)模塊到小時(shí)計(jì)時(shí)模塊的轉(zhuǎn)換。模塊的輸入為掃描時(shí)鐘、計(jì)時(shí)時(shí)鐘和信令signaling,輸出為輸出時(shí)間高位time_h和輸出時(shí)間低位time_l,以及進(jìn)位clk_jin。
計(jì)時(shí)校時(shí)模塊的電路描述如圖3所示,具體說(shuō)明如下:每當(dāng)掃描時(shí)鐘上升沿時(shí),啟動(dòng)進(jìn)程,并根據(jù)信令signaling執(zhí)行不同操作,1)當(dāng)signaling
2.3 顯示、鬧鈴模塊設(shè)計(jì)
本模塊是數(shù)字鐘系統(tǒng)中的輸出模塊,用于輸出LED數(shù)字顯示和鬧鈴,其輸入為掃描時(shí)鐘,從計(jì)時(shí)校時(shí)模塊輸出的秒低位、秒高位、分低位、分高位、時(shí)低位、時(shí)高位信號(hào)和狀態(tài)選擇模塊輸出的鬧鈴顯示Nao_En鬧鈴時(shí)間Nan_In。如果Nao_En=0則正常顯示時(shí)間,當(dāng)Nao_En=1時(shí),在LED數(shù)碼管上顯示鬧鐘時(shí)間。當(dāng)當(dāng)前時(shí)間與保存的鬧鈴時(shí)間Nan_In相同時(shí),蜂鳴器鳴響1 min。這里我們使用了八個(gè)共陰極的七段數(shù)碼管顯示時(shí)間,當(dāng)選位信號(hào)sel=“01111111”時(shí),第一個(gè)數(shù)碼管顯示數(shù)字,其他七位不顯示。我們通過(guò)動(dòng)態(tài)掃描,輪流顯示秒低位sec_ge、秒高位sec_shi、分低位min_ge、分高位min_shi、時(shí)低位hour_ge、時(shí)高位hour_shi共6路信號(hào),當(dāng)掃描時(shí)鐘sanc_clk頻率高于28 Hz時(shí),由于人眼的視覺(jué)殘留效果,使得這6路信號(hào)看上去是同時(shí)顯示在6個(gè)七段數(shù)碼管上。顯示、鬧鈴模塊電路描述如圖4所示。
3 結(jié)束語(yǔ)
在QuartusⅡ軟件開(kāi)發(fā)平臺(tái)上,采用“自頂向下設(shè)計(jì),自底向上實(shí)現(xiàn)”的方法完成了數(shù)字鐘的設(shè)計(jì)與實(shí)現(xiàn)。其基本過(guò)程如下:1)完成數(shù)字鐘的總體設(shè)計(jì);2)完成各個(gè)底層模塊的設(shè)計(jì)和波形仿真:底層模塊采用VHDL語(yǔ)言編寫(xiě),在編譯和仿真成功后,對(duì)其進(jìn)行封裝;3)完成數(shù)字鐘的頂層電路設(shè)計(jì):根據(jù)數(shù)字鐘的系統(tǒng)框圖(圖1)在QuartusⅡ中采用電路原理圖方式,調(diào)用封裝好的底層模塊,完成頂層電路圖的設(shè)計(jì);4)對(duì)頂層電路進(jìn)行編譯和仿真,結(jié)果表明仿真波形符合設(shè)計(jì)要求;5)進(jìn)行引腳分配,再編譯后,將下載文件下載到FPGA開(kāi)發(fā)板中進(jìn)行驗(yàn)證和調(diào)試。測(cè)試結(jié)果表明數(shù)碼管能正確的顯示計(jì)時(shí)時(shí)間,能通過(guò)按鍵調(diào)整時(shí)間,能實(shí)現(xiàn)整點(diǎn)報(bào)時(shí),完全符合設(shè)計(jì)要求。