国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

明德揚FPGA理論與實踐項目:PWM呼吸燈

發布時間:2018-11-8 09:14    發布者:luckyb1
1  項目背景
      隨著LED在照明領域的不斷發展,其控制方式也越來越多樣化,形成不同的視覺效果。相比較的只具備“開”“關”功能的傳統LED照明,能夠實現從0到100%光的亮度的調節的LED燈,在家裝燈飾、舞美燈光等領域的需求更為突出。
      呼吸燈是指燈光由高到暗的逐漸變化,感覺好像是人在呼吸。所謂的“呼吸燈”就是根據人的呼吸頻率通過光的強弱表現出來:呼吸分為兩個過程,一個是“呼”的過程,一個是“吸”的過程。其廣泛應用于手機之上,并成為各大品牌手機的賣點之一。如果你的手機里面有未處理的通知,比如說未接來電,未查收的短信等,呼吸燈就會由暗到亮的變化,像呼吸一樣那么有節奏,起到一個通知提醒的作用。
      呼吸燈的設計方法有很多,有的是用單片機產生PWM(脈沖寬度調制)來驅動LED,也有采用555定時器來做。電路利用電容充放電原理,較為簡單。

      脈寬調制(Pulse WidthModelation,PWM),是利用微處理器/FPGA的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在測量、通信、功率控制與變換等許多領域。PWM數字信號從處理器到被控系統都是數字形式,無需數模轉換。
      航模中的控制信號大多是PWM信號,比如FUTABA,JR等舵機的控制都采用PWM方式。
      發射機給接收機一串脈沖,比如基礎脈寬是100ms,那么發射機的脈寬變大時,比如增大為150ms,那么接收機就控制舵機正向旋轉,發射的脈寬減小時,比如減小為50ms,那么接收機就控制舵機逆向旋轉。
      PWM是一種對模擬信號電平進行數字編碼的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。
      通俗來說,PWM就是連續的、一定比例占空比的脈沖信號。通過控制占空比來實現不同的控制。簡單地,我們可以認為PWM就是一種方波。如圖所示:



      PWM波形圖

      PWM實現呼吸燈的原理
      當輸出為低電平時控制LED燈,當輸出低電平時,燈亮,當輸出高電平時,燈滅。如果一直輸出低電平,則燈一直亮;如果一直輸出高電平,則燈一直暗;如果50%時間輸出低電平,50%時間輸出高電平,則燈會暗一些。所以占空比會影響到LED燈的明暗程度。
      另一個影響LED亮度的是PWM波形的周期。試想一下,如果PWM的周期是2秒,占空比為50%,那我們看到的是將是LED暗1秒、亮1秒,而不是半亮的狀態。只是我們提高PWM的周期,才能看到半亮的狀態。根據經驗值,PWM的周期是10毫秒為宜。
   也就是說,控制高低電平的時間,也就是占空比(高電平占周期的百分比,例如上面是60%),以及控制PWM的周期,就可以控制燈的亮暗程度。
2  設計目標
      本工程實現一個控制LED燈亮度的功能,具體要求:上電后,LED燈顯示接近于滅,然后在10秒內,每隔2秒,亮度變化一次,逐漸變亮。在下一個10秒內,每隔2秒,亮度變化一次,逐漸變暗。總而言之,就是20秒一次循環,每隔2秒變化一次,前10秒亮度增大,后10秒,亮度減小。

      開發板的硬件原理圖


上板效果圖如下圖所示。


​      綜上所述,我們這個工程需要三個信號,時鐘clk,復位rst_n和輸出信號led。將module的名稱定義為pwmled。為此,代碼如下:


      其中clk、rst_n是輸入信號,led是輸出信號,并且三個信號都是1比特的,根據這些信息,我們補充輸入輸出端口定義。代碼如下:


​3.2     信號設計
      我們首先分析一下需求:上電后,LED燈顯示接近于滅,然后在10秒內,每隔2秒,亮度變化一次,逐漸變亮。在下一個10秒內,每隔2秒,亮度變化一次,逐漸變暗。總而言之,就是20秒一次循環,每隔2秒變化一次,前10秒亮度增大,后10秒,亮度減小。
      另外,根據PWM的原理,通過控制PWM的占空比就可以實現亮度控制。占空比越大(高電平時間越長,低電平時間越低),燈的亮度越暗。
      根據這個原理,可以翻譯成:FPGA控制led信號,輸出PWM波形,并調整占空比。調整方法:20秒一次循環,每隔2秒變化led的占空比一次,前10秒占空比變大,后10秒,占空比變小。
      由于需求沒有說明具體的占空比是多少,那我們就自行制定一下占空比,讀者可以在上板時,根據視覺效果,調整占空比的大小。自行制定的占空比如下:
      第1個2秒內,占空比為95%;
      第2個2秒內,占空比為85%;
      第3個2秒內,占空比為70%;
      第4個2秒內,占空比為50%;
      第5個2秒內,占空比為20%;
      第6個2秒內,占空比為20%;
      第7個2秒內,占空比為50%;
      第8個2秒內,占空比為70%;
      第9個2秒內,占空比為85%;
      第10個2秒內,占空比為95%。
      然后按上面的過程循環。
      PWM的波的周期,根據經驗值可以設為10毫秒。
      根據上述分析,這個led信號的變化情況如下:


      第1次持續時間2秒,每10毫秒輸出一個PWM波(9.5毫秒時變低);
      第2次持續時間2秒,每10毫秒輸出一個PWM波(8.5毫秒時變低);
      第3次持續時間2秒,每10毫秒輸出一個PWM波(7.0毫秒時變低);
      第4次持續時間2秒,每10毫秒輸出一個PWM波(5.0毫秒時變低);
      第5次持續時間2秒,每10毫秒輸出一個PWM波(2.0毫秒時變低);
      第6次持續時間2秒,每10毫秒輸出一個PWM波(2.0毫秒時變低);
      第7次持續時間2秒,每10毫秒輸出一個PWM波(5.0毫秒時變低);
      第8次持續時間2秒,每10毫秒輸出一個PWM波(7.0毫秒時變低);
      第9次持續時間2秒,每10毫秒輸出一個PWM波(8.5毫秒時變低);
      第10次持續時間2秒,每10毫秒輸出一個PWM波(9.5毫秒時變低);

      從中我們可以得到有以下幾個計數器:計數10毫秒時間的計數器;計數2秒時間的計數器以及計數第1~10次的計數器。
      計數10毫秒的計數器的設計思路。本工程的工作時鐘是50MHz,即周期為20ns,計數器計數到10_000_000/20=500_000個,我們就能知道10毫秒時間到了。另外,由于該計數器是不停地計數,永遠不停止的,可以認為加1條件一直有效,可寫成: assignadd_cnt==1。該計數器一共要數500_000個。綜上所述,該計數器的代碼如下。


      2秒時間計數器的設計思路。本工程的工作時鐘是50MHz,即周期為20ns,計數器計數到2_000_000_000/20=100_000_000個,我們就能知道2秒時間到了。這是一種設計思路。但我們也可以以10毫秒為基礎,通過數有2_000_000_000/10_000_000=200個10毫秒時間,就能知道2秒時間到了。所以該計數器的加1條件是end_cnt0,一共有數200個。綜上所述,該計數器的代碼如下。



​​​​​​      第1~第10次計數器的設計思路。該計數器是每隔2秒就會加1,也就是end_cnt1的時候,就會加1;該計數器一共要數10個。綜上所述,該計數器的代碼如下。


​       有了這三個計數器,我們來思考輸出信號led的變化。概括起來,led有兩個變化點:變0和變1。變0的原因都是在10毫秒計數器數到一定個數時變0,但這個計數是會變的,那么我們可以假設為x,也就是數到x個時,led變0。變1則是由于10毫秒計數時間到了,也就是end_cnt0時,led變1 。綜上所述,led信號的代碼如下:


​      最后我們再來思考變量x。x是led變0的時間。這個時間在不同的次數時,值會不相同。例如第1次是數到9.5毫秒(cnt0數到475_000個),第2次則是在8.5毫秒(cnt0數到425_000個)。也就是說x的值與第幾次有關,即與cnt2有關。根據題意,可知x的代碼如下:




3.3    信號定義
      接下來定義信號類型。
      cnt0是用always產生的信號,因此類型為reg。cnt0計數的最大值為500_000,需要用19根線表示,即位寬是19位。因此代碼如下:


​      add_cnt0和end_cnt0都是用assign方式設計的,因此類型為wire。并且其值是0或者1,1個線表示即可。因此代碼如下:


      cnt1是用always產生的信號,因此類型為reg。cnt1計數的最大值為200,需要用8根線表示,即位寬是8位。因此代碼如下:


​      add_cnt1和end_cnt1都是用assign方式設計的,因此類型為wire。并且其值是0或者1,1根線表示即可。因此代碼如下:


​      cnt2是用always產生的信號,因此類型為reg。cnt2計數的最大值為9,需要用4根線表示,即位寬是4位。因此代碼如下:


​      add_cnt2和end_cnt2都是用assign方式設計的,因此類型為wire。并且其值是0或者1,1根線表示即可。因此代碼如下:


​      led是用always方式設計的,因此類型為reg。并且其值是0或者1,1根線表示即可。因此代碼如下:


​      x是用always方式設計的,因此類型為reg。并且其值是最大是475_000,需要19根線表示即可。因此代碼如下:


​      至此,整個代碼的設計工作已經完成。下一步是新建工程和上板查看現象。
4 綜合與上板4.1  新建工程
      首先在d盤中創建名為“pwmled”的工程文件夾,將寫的代碼命名為“pwmled.v”,頂層模塊名為“pwmled”。




      然后打開Quartus Ⅱ,點擊File下拉列表中的New Project Wzard...新建工程選項。


      ​3.在出現的界面中直接點擊最下方的“Next”。


​      4.之后出現的是工程文件夾、工程名、頂層模塊名設置界面。按照之前的命名進行填寫,第一欄選擇工程文件夾“pwmled”,第二欄選擇工程文件“pwmled.v”,最后一欄選擇頂層模塊名“pwmled”,然后點擊”Next”,再出現的界面選擇emptyproject。




​      5.之后是文件添加界面。在上方一欄中添加之前寫的”pwmled.v”文件,點擊右側的“Add”按鈕,之后文件還會出現在大方框中,之后點擊“Next”。


       器件型號選擇界面。在“Device family”處選擇Cyclone ⅣE,在“Available devices”處選擇EP4CE15F23C8,然后點擊“Next”​


​      EDA工具界面。該頁面用默認的就行,直接點擊最下方“Next”。


​      8.之后出現的界面是我們前面的設置的總結,確認沒有錯誤后點擊“Finish”。


​4.2  綜合
      1.新建工程步驟完成后,就會出現以下界面。在“Project Navigator”下選中要編譯的文件,點擊上方工具欄中“StartCompilation”編譯按鈕(藍色三角形)。


      2.編譯成功后會出現以下界面。


4.3 配置管腳


​      在菜單欄中,選中Assignments,然后選擇Pin Planner,就會彈出配置管腳的窗口。


​      在配置窗口最下方中的location一列,參考下表中最右兩列配置好FPGA管腳。


​4.4 再次綜合


​      在菜單欄中,選中Processing,然后選擇Start Compilation,再次對整個工程進行編譯和綜合。


​      出現上面的界面,就說明編譯綜合成功。
​4.5  連接開發板
      圖中,下載器接入電腦USB接口,電源接入電源,然后摁下下方藍色開關,看到開發板燈亮。


​4.6  上板
      1.雙擊Tasks一欄中”Program Device”。


      2.會出現如下界面,點擊add file添加.sof文件,在左側點擊“Start”,會在上方的“Progress”處顯示進度。​


​      3.進度條中提示成功后,即可在開發板上觀察到相應的現象。

本文地址:http://m.qingdxww.cn/thread-549727-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 热99久久| 欧美日本在线视频| 色91在线| 青青草一区| 新版bt天堂资源在线| 天堂网色| 四虎影永久在线观看网址| 一级aaaaaa毛片免费同男同女| www.青青草原| 9420高清完整版在线电影免费观看| 国精品产露脸偷拍视频| 善良的女房东味道2在线观看| 一级毛片真人不卡免费播| 色污淫免费| 污污视频在线免费观看| 天天舔天天操天天干| 511麻豆视传媒精品AV| 久久黄色网址| 亚洲视频网站欧美视频网站| 亚色官网| 日夜啪啪| 天天爱综合| 调教玩弄奶头乳夹开乳震动器| 欧美亚洲日韩欧洲不卡| 欧美一级日韩一级亚洲一级va| 五月天婷婷激情视频| 一区二区免费看| 一区二区三区在线观看免费| 国产午夜永久福利视频在线观看 | 无人视频免费观看完整版| a在线视频免费观看| 琪琪see色原网色原网站| 欧美乱子伦videos| 日韩一级影院| 天天狠天天天天透在线| 丰满女朋友在线观看中文| 十次啦中文网| 午夜欧美福利| 性感制服| 在线播放亚洲视频| 精品国产在线国语视频|