自己上課時(shí)候?qū)懙男∽鳂I(yè),主要用FPGA和VHDL實(shí)現(xiàn)了一小鬧鐘,由于我的Altera的開發(fā)板資源有限
數(shù)碼管用了4個(gè),點(diǎn)陣用了一個(gè)。
主要功能:1.能正常跑表,設(shè)置跑表時(shí)間
2.鬧鈴聲音可以由高到底,三種頻率(你可以在我的基礎(chǔ)上加)
3.懶人起床模式
4.多人使用模式
還有些小功能在我的論文里,有興趣的可以看看(請(qǐng)用Quartus 12.0以上版本打開,不然備注沒法看)
不足之處:if用的太多導(dǎo)致邏輯單元爆炸了,你們 需要優(yōu)化的的話,多用case代替if
0.png (40.09 KB, 下載次數(shù): 52)
下載附件
2019-1-12 16:23 上傳
基于FPGA的智能鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)
序言: 本FPGA的智能鬧鐘的是基于Altera Cyclone IV EP系列芯片開發(fā)設(shè)計(jì)的。由于實(shí)驗(yàn)平臺(tái)的限制,外設(shè)設(shè)備選擇了一個(gè)4管數(shù)碼管,蜂鳴器,獨(dú)立按鍵4個(gè),撥碼開關(guān)4個(gè)和8X8的Led點(diǎn)陣一個(gè)。
1.帶有設(shè)置功能的時(shí)鐘表(設(shè)置時(shí)間用Led點(diǎn)陣顯示字母S來(lái)表示)。 2.帶有設(shè)置功能的鬧鈴(設(shè)置時(shí)間用Led點(diǎn)陣顯示數(shù)字1或2來(lái)表示)。 3.多人使用模式(這里設(shè)置了用戶1,用戶2,使用狀態(tài)用Led點(diǎn)陣來(lái)顯示)。 4.自然醒的鈴音(在鬧鈴響的時(shí)候,使用蜂鳴器的聲音逐漸變大的模式,符合人體規(guī)律,任意獨(dú)立按鍵可以關(guān)閉鬧鈴)。 5.懶人起床模式(通過(guò)撥碼開關(guān)設(shè)置,開啟時(shí),會(huì)在60秒內(nèi),響3次,每次10秒。兩次之間間隔10秒,可以通過(guò)任意的獨(dú)立按鍵關(guān)閉本次響鈴,但是,下次仍會(huì)響,直到3次結(jié)束)。 設(shè)計(jì)方案
整體設(shè)計(jì)的流程圖如下
本系統(tǒng)使用的50MHz的晶振,故此,用一個(gè)Process進(jìn)行分頻,1Hz用于正常的時(shí)間記時(shí)間。此外生成一個(gè)1000Hz用于時(shí)鐘時(shí)間在數(shù)碼管上顯示時(shí)選管。(運(yùn)用動(dòng)態(tài)掃描的方式來(lái)驅(qū)動(dòng)數(shù)碼管)。而使用者,只需要通過(guò)把撥碼開關(guān)1撥到ON且撥碼開關(guān)2在OFF的時(shí)候,才能對(duì)時(shí)鐘的時(shí)間進(jìn)行設(shè)置。 鬧鈴模式的基本實(shí)現(xiàn)邏輯是:使用一個(gè)IF語(yǔ)句,當(dāng)設(shè)置的秒,分的所有值與正常時(shí)鐘跑表時(shí)間一致的時(shí)候讓邏輯標(biāo)志值為真,驅(qū)動(dòng)鬧鈴的process。使用者,只需要把撥碼開關(guān)2撥到OFF,其余的隨意設(shè)置,才能對(duì)鬧鈴的時(shí)間進(jìn)行設(shè)置。鬧鈴時(shí),按任意的獨(dú)立按鍵可以關(guān)閉鬧鈴。 通過(guò)撥碼開關(guān)3,在ON時(shí)表示用戶1在使用鬧鐘,在OFF時(shí)表示用戶2在使用鬧鐘。 通過(guò)使用分頻器分出3種不同的頻率,設(shè)置3種頻率驅(qū)動(dòng)蜂鳴器的總時(shí)間為10秒,每種頻率分別占用3.333秒左右。 通過(guò)撥碼開關(guān)4,撥碼開關(guān)撥到ON的時(shí)候,開啟懶人模式,徹底的關(guān)閉懶人模式只有將撥碼開關(guān)撥到OFF或等3次鬧鈴結(jié)束的時(shí)候。如果在鬧鈴的期間,隨意的按一下獨(dú)立按鍵開關(guān)會(huì)終止本次鬧鈴,但是下次鬧鈴仍會(huì)繼續(xù)。
- 各模塊硬件實(shí)現(xiàn)結(jié)果圖
 用戶1在正常使用時(shí)的硬件效果圖
圖1 表示用戶1設(shè)置鬧鈴中 圖2 表示用戶1正常使用中
圖3 表示用戶2正常使用中 圖4 表示用戶2設(shè)置鬧鈴中
圖5 表示用戶1或者2再設(shè)置時(shí)鐘時(shí)間中
- 設(shè)置時(shí)鐘時(shí)間時(shí)的硬件效果圖
圖6 表現(xiàn)用戶2鬧鈴中
通過(guò)這次FPGA的課程設(shè)計(jì),我對(duì)FPGA的整體認(rèn)識(shí)上了一個(gè)新的臺(tái)階,以前的實(shí)驗(yàn)課只是從事單個(gè)的邏輯功能芯片的實(shí)現(xiàn),而此次基于FPGA的智能鬧鐘的設(shè)計(jì)與實(shí)現(xiàn)寫了足足600行的代碼,大大的提高了我的編程和邏輯分析能力。也初步具備分析和設(shè)計(jì)一個(gè)較為復(fù)雜的項(xiàng)目的能力。此外,在這次課程設(shè)計(jì)中我也認(rèn)識(shí)到我的不足之處,首先,在編程風(fēng)格上的缺陷,自己對(duì)FPGA的寄存器和邏輯單元這兩個(gè)最重要的資源理解不到位,導(dǎo)致自己在編程的過(guò)程中沒有節(jié)約這兩項(xiàng)資源。例如,過(guò)多的使用IF-ELSE語(yǔ)句而不用CASE語(yǔ)句導(dǎo)致產(chǎn)生大量的優(yōu)先級(jí)的編碼器從而使得只寫了600行代碼后發(fā)現(xiàn)邏輯單元不夠用了。其次,本次設(shè)計(jì)中,時(shí)序和邏輯比較復(fù)雜,后期的自學(xué)中才發(fā)現(xiàn),應(yīng)對(duì)復(fù)雜的邏輯設(shè)計(jì),VHDL中的有限狀態(tài)機(jī)(Finite State Machine)能很好的應(yīng)對(duì),遠(yuǎn)比不斷地使用邏輯標(biāo)志方便和高效。可以說(shuō),這次課程設(shè)計(jì)收益頗多,需要進(jìn)一步的學(xué)習(xí)和總結(jié)。才能早日在FPGA的設(shè)計(jì)與開發(fā)中取得一定的成績(jī)。
全部資料51hei下載地址:
SmartAlarm.rar
(2.03 MB, 下載次數(shù): 22)
2019-1-12 14:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|