001-霧盈FPGA筆記之一呼吸燈簡(jiǎn)單實(shí)驗(yàn)(Verilog)_第1頁(yè)
001-霧盈FPGA筆記之一呼吸燈簡(jiǎn)單實(shí)驗(yàn)(Verilog)_第2頁(yè)
001-霧盈FPGA筆記之一呼吸燈簡(jiǎn)單實(shí)驗(yàn)(Verilog)_第3頁(yè)
001-霧盈FPGA筆記之一呼吸燈簡(jiǎn)單實(shí)驗(yàn)(Verilog)_第4頁(yè)
001-霧盈FPGA筆記之一呼吸燈簡(jiǎn)單實(shí)驗(yàn)(Verilog)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的呼吸燈簡(jiǎn)單實(shí)驗(yàn)程序(Verilog )2016-07-27 霧盈1 .呼吸燈呼吸燈最早是由蘋(píng)果公司發(fā)明并應(yīng)用于筆記本睡眠提示上,一經(jīng)展出, 立刻吸引眾多科技廠(chǎng)商爭(zhēng)相效仿。將其廣泛用于各種電子產(chǎn)品中,尤其是智 能手機(jī)。呼吸燈其實(shí)是微電腦控制下,由暗漸亮,然后再由亮漸暗,模仿人呼吸 方式的LED燈2 .呼吸燈原理LED的亮度與流過(guò)的電流成正比。在一定的頻率之下,如果占空比 是0,則LED不亮;如果占空比是100%,則LED最亮;如果占空比剛 好是50%,則LED亮度適中。如果我們讓占空比從 0100%變化,再 從100%0不斷變化,就可以實(shí)現(xiàn)LED一呼一吸的效果。其波形占空比示意圖如

2、下所示:1Clk丁力丁丁手Rst_n_|led u i n n n n n n i lj u lTimeGen呼吸燈占空比示意圖3 .呼吸燈程序設(shè)計(jì)思路(1)首先確定PWM的頻率為1Khz(2)由頻率算出周期T = 1/f = 1ms(3)根據(jù)每次呼1s,吸1s,算出計(jì)數(shù)值1s/1ms=1000(4)然后將1ms分成1000份,每一份是1us(5)寫(xiě)三個(gè) 1us、1ms、1s 的 3 個(gè)計(jì)數(shù)器 count1、count2、Count3 , 最后count2和count3進(jìn)行比較4 .程序框圖Clk 50史LED5 .狀態(tài)機(jī)設(shè)計(jì)可以將呼吸燈運(yùn)行過(guò)程歸為兩個(gè)狀態(tài):S0:由滅漸亮;S1:由亮漸滅。這

3、里就會(huì)有兩個(gè)問(wèn)題需要我們解決,1 .狀態(tài)的翻轉(zhuǎn)2 .在一個(gè)狀態(tài)里如何使pwm波的占空比實(shí)現(xiàn)逐增或逐減。先說(shuō)第一個(gè)問(wèn)題,兩個(gè)狀態(tài)的翻轉(zhuǎn)由下面的時(shí)序圖可以看出來(lái),兩個(gè)狀態(tài)的翻轉(zhuǎn)只是由時(shí)間決定的,S0狀 態(tài)和S1狀態(tài)分別持續(xù)1s,可以將它看成周期為2s的時(shí)鐘信號(hào),每當(dāng)flag_1s 信號(hào)到來(lái)一次,狀態(tài)就翻轉(zhuǎn)一次。1flag_1s 1I II II 1I Istate LTimeGenif (flagls)state <= statej elsestate <= state;然后再來(lái)說(shuō)第二個(gè)問(wèn)題,在一個(gè)狀態(tài)下如何實(shí)現(xiàn)PWM波占空比逐增逐減的 過(guò)程。以S0狀態(tài)下,LED由滅漸亮,PWM波占空

4、比由百分之百逐漸減小至零為 例:我們發(fā)現(xiàn)讓count2與count3比較,其結(jié)果clk_out會(huì)出現(xiàn)這種占空比逐 漸減小的結(jié)果。此段代碼如下:case(state)6: begin / 1 rJ + 其beginif(counts < caunt3) beginelk out <= 1'b0; end else beginelk out <= 1'bl;i = i endendelse begintate <= 11 bl; endi end于是,由反邏輯可以輕易知道在S1狀態(tài)下,如何使其輸出的clk_out占空比由 小到大的方法,這樣就可以實(shí)現(xiàn) LED

5、的由亮漸滅。t己:整個(gè)呼吸燈程序設(shè)計(jì)主要內(nèi)容大致如此,末尾附上源代碼及其仿真波 形,以下為程序設(shè)計(jì)中我所遇到的問(wèn)題,給可能出現(xiàn)同樣問(wèn)題的童鞋提供一些參 考。注:在用modelsim 仿真波形時(shí),我為了加快仿真速度和方便查看波形,我將 所有的count的計(jì)數(shù)最大值都改為了 9。當(dāng)countl計(jì)數(shù)10拍后,count2 波形從9跳為0 ,但是仔細(xì)一看就會(huì)發(fā)現(xiàn), count2 波形的9跳為0時(shí),countl只計(jì)數(shù)了一拍,中間少了 9拍。錯(cuò)誤的代碼如下:/* if(flag_lus)begini if(count2 = C0UNTJ1AX)Iibegin| count2 <= 10'd0

6、;iiendI else begin|count2 <= count2 十 1rbljIII endendelse begin! I count2 <= 19'd0: I*i i end*/修改后的代碼:if(flag_lus & count2 < COUNT_MAX) begin| count? <= count? + 1rbi§I endel&e if(count2 = COLNT_MAX & countl = COUNT,”)| begin| count2 <= 11b0;I ! endIIend加入那部分代碼的意思

7、是當(dāng)(count2 = 9 & countl = 9)時(shí),count2 才計(jì)入下一拍。正確的波形如下:r£t_n卜 coufit2工led oountljht3同理,在count3歸零時(shí)也應(yīng)如此Q 2:flag_1ms和flag_1s兩個(gè)尖峰脈沖信號(hào),高電平保持時(shí)間 不是一個(gè)時(shí)鐘周期。如下圖所示:PLTLT_rLrLLTLrL_n_ru-L_rq_n_TL-L_nd rst_n1led1515IDcount 1°一匚工h:3 H 正6 )7 :a 91 12 :5 4C0Lint2Ia r1D-/ CDuntJ。0Fm m 甲飛昭方b阻 1+ flag_hj&oJL0ri1flaq_ls0_1 1* mtate11這里介紹一個(gè)老師講的技巧,讓flag_1ms的波形與flag_1us的 波形相與,就可以得到flag_1ms的波形為一個(gè)時(shí)鐘周期的尖峰脈沖。 代碼如下:assign 千1白= (countZ = COUNT_MAX)? (I'bl & flag_lus):l'assign flag_ls = (counts = COUMT-MAX)?(11 bl & f

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論