呼吸燈的效果是燈逐漸由暗變亮再逐漸由亮變暗,FPGA的引腳電壓只有“0”和“1”兩個等級。
因此通過改變引腳單位時間內高電平的輸出時間來實現呼吸燈,也就是讓FPGA引腳輸出一系列PWM波信號并不斷改變PWM波的占空比。
PWM(Pluse Width Modulation)脈沖寬度調制,是一種對模擬信號電平進行數字編碼的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。
占空比(Duty Cycle or Duty Ratio),可以解釋為,在一脈沖序列中(方波),正脈沖序列的持續時間與脈沖總周期的比值。也可理解為,電路釋放能量的有效時間與總釋放時間的比值。
我們將led從亮到滅(從滅到亮)的過程設為1S.將周期設為1MS.就是有1000個周期,然后每相鄰兩個周期改變的差值為1us;如下圖所示
波形圖繪制如下:
按照這個撰寫代碼,因為50M時鐘,一個周期是20ns,故50個單位為1us.
在框1中為1us模塊;
在框2中為1ms模塊,這里有個細節需要注意一下,第24行只有微妙的計數完成同時ms到達溢出值時,才進行置零。若當前ms為999,但us處于計數0-48時,ms仍不改變。
在框3中為1s模塊,與框2同理;
在框4中為控制從亮到滅,從滅到亮的一個標志信號;
在框5中,當en為0,且當前ms小于S對應的時間段就是低電平時刻;同理當en為1,且當前ms大于S對應的時間段就是低電平時刻.
測試代碼編寫如下:
測試圖如下:
注這里為消除前綴。CRTL+G為分組。CRTL+w為添加信號。
-
FPGA
+關注
關注
1630文章
21802瀏覽量
606365 -
計數器
+關注
關注
32文章
2276瀏覽量
95051 -
脈沖寬度調制
+關注
關注
7文章
81瀏覽量
13796 -
PWM波
+關注
關注
0文章
99瀏覽量
16957 -
呼吸燈
+關注
關注
10文章
111瀏覽量
42824
發布評論請先 登錄
相關推薦
PWM實現呼吸燈效果
怎么通過PWM來實現呼吸燈的
STM32_PWM呼吸燈
![STM32_<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32 使用PWM實現呼吸燈
![STM32 使用<b class='flag-5'>PWM</b>實現<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
proteus仿真stm32控制呼吸燈
![proteus<b class='flag-5'>仿真</b>stm32控制<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論