色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

明德?lián)PFPGA理論與實(shí)踐項目:PWM呼吸燈

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

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



      PWM波形圖

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

      開發(fā)板的硬件原理圖


上板效果圖如下圖所示。


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


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


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


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

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


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



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


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


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




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


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


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


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


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


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


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


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


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




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


      ​3.在出現(xiàn)的界面中直接點(diǎn)擊最下方的“Next”。


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




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


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


​      EDA工具界面。該頁面用默認(rèn)的就行,直接點(diǎn)擊最下方“Next”。


​      8.之后出現(xiàn)的界面是我們前面的設(shè)置的總結(jié),確認(rèn)沒有錯誤后點(diǎn)擊“Finish”。


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


      2.編譯成功后會出現(xiàn)以下界面。


4.3 配置管腳


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


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


​4.4 再次綜合


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


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


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


      2.會出現(xiàn)如下界面,點(diǎn)擊add file添加.sof文件,在左側(cè)點(diǎn)擊“Start”,會在上方的“Progress”處顯示進(jìn)度。​


​      3.進(jìn)度條中提示成功后,即可在開發(fā)板上觀察到相應(yīng)的現(xiàn)象。

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

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

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表