<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Altera MAX10: LED呼吸燈

          Altera MAX10: LED呼吸燈

          作者: 時間:2023-11-16 來源:電子森林 收藏

          呼吸燈的設計較為簡單,我們使用12MHz的系統(tǒng)時鐘作為高頻信號做分頻處理,調(diào)整占空比實現(xiàn)PWM,通過LED燈LD1指示輸出狀態(tài)。

          本文引用地址:http://www.ex-cimer.com/article/202311/452959.htm

          LED電路連接

          脈沖信號有效值

          實現(xiàn)原理如上圖所示,脈沖信號的周期為T,高電平脈沖寬度為t,占空比為t/T。為了實現(xiàn)PWM脈寬調(diào)制,我們需要保持周期T不變,調(diào)整高電平脈寬t的時間,從而改變占空比。

          • 當t = 0時,占空比為0%,因為我們的LED硬件為低電平點亮,所以為最亮的狀態(tài)。

          • 當t = T時,占空比為100%,LED燈為最暗(熄滅)的狀態(tài)。

          結(jié)合呼吸燈的原理,整個呼吸的周期為最亮→最暗→最亮的時間,即t的值的變化:0→T→0逐漸變化,這個時間應該為2s

          呼吸燈程序設計

          呼吸燈設計要求呼吸的周期為2s,也就是說LED燈從最亮的狀態(tài)開始,第一秒時間內(nèi)逐漸變暗,第二秒的時間內(nèi)再逐漸變亮,依次進行。

          本設計中需要兩個計數(shù)器cnt1和cnt2,cnt1隨系統(tǒng)時鐘同步計數(shù)(系統(tǒng)時鐘上升沿時cnt1自加1)范圍為0~T,cnt2隨cnt1的周期同步計數(shù)(cnt1等于T時,cnt2自加1)范圍也是0~T,這樣每次cnt1在0~T的計數(shù)時,cnt2為一個固定值,相鄰cnt1計數(shù)周期對應的cnt2的值逐漸增大,我們將cnt1計數(shù)0~T的時間作為脈沖周期,cnt2的值作為脈沖寬度,則占空比 = cnt2/T,占空比從0%到100%的時間 = cnt2*cnt1 = T^2 = 1s = 12M個系統(tǒng)時鐘,T = 2400,我們定義CNT_NUM = 2400作為兩個計數(shù)器的計數(shù)最大值。

          PWM呼吸燈原理

          // ********************************************************************
          // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
          // ********************************************************************
          // File name    : breath_led.v
          // Module name  : breath_led
          // Author       : STEP
          // Description  : 
          // 
          // --------------------------------------------------------------------
          // Code Revision History : 
          // --------------------------------------------------------------------
          // Version: |Mod. Date:   |Changes Made:
          // V1.0     |2017/03/02   |Initial ver
          // --------------------------------------------------------------------
          // Module Function:呼吸燈
          module breath_led(clk,rst,led); 
          input clk;             //系統(tǒng)時鐘輸入
          input rst;             //復位輸出
          output led;            //led輸出 
          reg [24:0] cnt1;       //計數(shù)器1
          reg [24:0] cnt2;       //計數(shù)器2
          reg flag;              //呼吸燈變亮和變暗的標志位 
          parameter   CNT_NUM = 2400; //計數(shù)器的最大值 
          period = (2400^2)*2 = 24000000 = 2s
          //產(chǎn)生計數(shù)器cnt1
          always@(posedge clk or negedge rst) begin 
          if(!rst) 
          begin
          cnt1<=13'd0;
          end 
                          else begin
               if(cnt1>=CNT_NUM-1) 
                                  cnt1<=1'b0;
               else 
                                  cnt1<=cnt1+1'b1; 
                              end
          end  //產(chǎn)生計數(shù)器cnt2
          always@(posedge clk or negedge rst) 
          begin 
          if(!rst) begin
          cnt2<=13'd0;
          flag<=1'b0;
          end 
                          else begin
               if(cnt1==CNT_NUM-1) begin              //當計數(shù)器1計滿時計數(shù)器2開始計數(shù)加一或減一
          if(!flag) begin                     //當標志位為0時計數(shù)器2遞增計數(shù),表示呼吸燈效果由暗變亮
          if(cnt2>=CNT_NUM-1)         //計數(shù)器2計滿時,表示亮度已最大,標志位變高,之后計數(shù)器2開始遞減
                                              flag<=1'b1;
          else
                                              cnt2<=cnt2+1'b1;
          end else begin                     //當標志位為高時計數(shù)器2遞減計數(shù)
          if(cnt2<=0)                //計數(shù)器2級到0,表示亮度已最小,標志位變低,之后計數(shù)器2開始遞增
                                              flag<=1'b0;
          else 
                                              cnt2<=cnt2-1'b1;
          end
          end
                                      else cnt2<=cnt2;              //計數(shù)器1在計數(shù)過程中計數(shù)器2保持不變
          end
          end  //比較計數(shù)器1和計數(shù)器2的值產(chǎn)生自動調(diào)整占空比輸出的信號,輸出到led產(chǎn)生呼吸燈效果
          assign led = (cnt1<cnt2)?1'b0:1'b1; 
          endmodule

          引腳分配如下:

          管腳名稱clkrstled
          FPGA管腳J5J9N15

          脈寬調(diào)制是一種值得廣大工程師在許多應用設計中使用的有效技術(shù),你也可以根據(jù)本節(jié)介紹的流水燈程序,實現(xiàn)RGB三色燈的呼吸。在下一小節(jié)我們會學習狀態(tài)機的使用方法:交通燈的設計。



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();