99在线精品免费视频九九视-99在线精品视频-99在线精品视频免费观里-99在线精品视频在线观看-99在线免费播放



官方論壇
官方淘寶
官方博客
微信公眾號
點擊聯系吳工 點擊聯系周老師
您的當前位置:主頁 > FPGA原創 >

運用至簡設計法進行呼吸燈設計(附設計表)

發布時間:2019-12-24   作者:魚丸粗面 瀏覽量:

本文為明德揚原創文章,轉載請注明出處!

呼吸燈是指燈光在微電腦的控制之下完成由亮到暗的逐漸變化,感覺好像是人在呼吸。其廣泛應用于手機、電腦等電子產品之上,并成為各大品牌新款手機的賣點之一,起到一個通知提醒的作用。每個人都應該使用過帶有呼吸燈的手機,看著燈光由暗淡逐漸一點點變亮,繼而在最亮的時刻開始逐漸變暗、熄滅最后歸于虛無,就像酣睡中隨著人的呼吸而起伏的胸膛。每當看到手機屏幕上的呼吸燈閃爍時,你是否想過,如何自己設計一個呼吸燈,讓它伴隨著你的呼吸變亮變暗。沒有做過呼吸燈的同學不要緊,我將會為大家展示一個使用清晰整潔的代碼設計出來的呼吸燈。認真看完這篇文章,我可以保證你能夠真正了解呼吸燈是使用怎樣的原理設計的,并且可以自己獨立設計出自己的呼吸燈。快去點亮它吧!

介紹一下呼吸燈設計的基本原理:

呼吸燈是通過控制led燈閃爍的頻率來控制其亮度的。什么是閃爍的頻率?比如我們讓led燈在1s內持續為亮,那么這個led燈將會一直以最大的亮度閃亮,亮的頻率就是1;當我們讓led燈在1s內持續為暗,那么led燈將會一直熄滅,亮的頻率就是0;若是我們讓led燈在1s中前0.5s內為亮、后0.5s內為滅,那么led燈將會一直一閃一滅,持續下去...我們可以大膽的想象一下,如果我們能夠控制led燈在1s內一開始亮的頻率為0,然后一點一點的增大亮的頻率直至為1,那么led燈是否就可以由暗慢慢變到最亮。道理已經明白了,那么我們要怎樣控制led燈亮的頻率?通過控制led燈亮的時間長度。怎樣控制燈亮的時間?通過計數FPGA的時鐘個數。該怎樣計數FPGA的時鐘個數?

下面講一下本設計的基本思想:

我們讓led燈在1s內由暗慢慢點亮,那么我們不妨將1s先分成1000等份,每一等份就是1ms,用一個計數ms個數的計數器cnt_ms來計數。1ms分成1000等份,每一等份就是1us,用計數器cnt_us來標示。由于MP801開發板的FPGA時鐘頻率是20ns,那么我們就將1us分成50份,每一份就是20ns,即一個時鐘周期。通過計數時鐘周期的個數,計數到第50個時,就到達了1us,計數器cnt_us就開始加1;cnt_us計數到1000個時,就到達了1ms,接著計數到1s...時間已經劃分好了,那么我們該怎么控制led燈亮的時間?

通過PWM原理來控制led亮滅。不了解PWM原理不重要,只要能讀懂下面一句話即可:

0-1S內:讓led燈在第0-1ms之間亮的時間為0us;在第1-2ms內亮1us,在第2-3ms內亮2us...在第999-1000Ms內亮999us。

思路已經很清晰了,接下來我們就可以進行電路設計。

信號列表:

信號名稱

信號類型

位寬

功能描述

clk

I

1

時鐘信號

rst_n

I

1

復位信號

led

O

1

輸出led信號

 

led_bright

wire

1

控制led亮滅

cnt_ns

reg

10

用來計數20ns的時鐘周期數,計數到50個即到達1us,計數器清零

add_cnt_ns

wire

1

計數器cnt_ns加一指示信號,一直為1

end_cnt_ns

wire

1

計數器cnt_ns清零指示信號,當cnt_ns計數到第50時為1

cnt_us

reg

10

用來計數產生1us的個數

add_cnt_us

wire

1

計數器cnt_us加一指示信號,end_cnt_ns拉高時有效

end_cnt_us

wire

1

計數器cnt_us清零指示信號,cnt_us計數到第1000個時拉高

cnt_ms

reg

10

用來計數1ms的個數,加一條件是end_cnt_us有效

add_cnt_ms

wire

1

cnt_ms加一指示信號,end_cnt_us拉高時有效

end_cnt_ms

wire

1

計數器cnt_ms清零指示信號,當cnt_ms計數到第1000個時拉高

cnt_s

reg

1

用來計數1s的個數

cdd_cnt_s

wire

1

cnt_s加一指示信號,當end_cnt_ms拉高有效

cnd_cnt_s

wire

1

計數器Cnt_s清零指示信號,cnt_s計數到2拉高

計數us信號:

計數ms信號:

控制led亮的指示信號:

按照我上面的設計思想,在100ms內,控制亮的時間不大于100us;在200ms內,控制亮的時間不大于200us。

led輸出信號:

在亮的時間區域內led給低電平,led亮;其他時間給led高電平,led滅。

OK,將工程綜合編譯,分配好管腳,燒錄到MP801開發板中,即可觀察到屬于你自己的呼吸燈。

可以看出,使用至簡設計法設計出的代碼,思路清晰,代碼簡潔干凈、有跡可循,只要設計的思路清晰,設計出的代碼也同樣是易讀易懂,每個信號都有其特定的功能。因此FPGA設計的核心是設計思路,而不是設計代碼,代碼只是用來告訴編譯器我們的設計思路,再由編譯器綜合成硬件電路。使用一種規范簡潔的代碼設計方法可以幫助我們更好的表現出我們的設計思路,這在我們進行FPGA設計過程中可以極大提高我們的設計效率。

以上就是設計呼吸燈的思考與步驟,需要此工程明德揚設計的源碼的朋友可以加我的QQ:3358622769無償獲取,也歡迎大家與我進行深入討論,期待與大家一起學習進步!

  •   
  •   
  •   
  •  
  • FPGA教育領域第一品牌
  • 咨詢熱線:020-39002701
  • 技術交流Q群:544453837
主站蜘蛛池模板: 午夜高清免费观看视频| 久久久鲁| xxxxx18日本hd| 国产成人在线观看网站| 亚洲综合套图| 亚洲一区二区三区在线观看蜜桃| 欧美综合色区| 91精品国产91久久久久久| 久爱www免费人成福利播放| 99日韩精品| 四虎黄色| 欧美日韩国产高清精卡| 做a网站| 久久久久久网址| 色噜噜狠狠一区二区三区| 久久久久99| 亚洲精品一区二区久久| 国产永久一区二区三区| 精品一区二区国语对白| 国产日本亚洲欧美| 婷婷色中文| 亚洲欧美视频网站| 日韩在线精品视频| 在线成人免费视频| 国产99视频精品免费观看9e| 国产精品自在线拍| 黄色a级免费网站| 九九视频只有精品六| 青娱乐黄色| 污污网站免费入口链接| 亚洲精品丝袜在线一区波多野结衣| 日韩免费观看一级毛片看看| 免费观看黄色a一级录像| 国产精品公开免费视频| 涩涩免费网站| 麻豆久久| 黄色免费网络| 黄色一级免费| 成人午夜影院在线观看| 久久国产亚洲高清观看5388| 亚洲成人午夜影院|