標(biāo)題: PWM控制蜂鳴器FPGA源碼與教程+仿真與報(bào)告等資料 [打印本頁]

作者: 牛的你    時(shí)間: 2018-4-17 16:11
標(biāo)題: PWM控制蜂鳴器FPGA源碼與教程+仿真與報(bào)告等資料
fpga播放一首歌


1  實(shí)驗(yàn)?zāi)康?
(1)理解并掌握脈寬調(diào)制(PWM )技術(shù)的控制方法及基本工作原理。   
(2)學(xué)習(xí)并掌握脈寬調(diào)制(PWM )驅(qū)動(dòng)蜂鳴器的實(shí)現(xiàn)方法。
2  實(shí)驗(yàn)原理
2.1  基本概念
脈沖寬度調(diào)制(PWM)是一種對模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法。通過高分辨率計(jì)數(shù)器的使用,方波的占空比被調(diào)制用來對一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM 信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時(shí)候即是直流供電被加到負(fù)載上的時(shí)候,斷的時(shí)候即是供電被斷開的時(shí)候。只要帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。 有源蜂鳴器和無源蜂鳴器的差別: 這里的“源”不是指電源。而是指震蕩源。也就是說,有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會(huì)叫。而無源內(nèi)部不帶震蕩源,所以如果用直流信號(hào)無法令其鳴叫。必須用 2K~5K 的方波去驅(qū)動(dòng)它。  有源蜂鳴器往往比無源的貴,就是因?yàn)槔锩娑鄠(gè)震蕩電路。  無源蜂鳴器的優(yōu)點(diǎn)是:1。便宜,2。聲音頻率可控,可以做出“多來米發(fā)索拉西(1234567)”的效果。3。在一些特例中,可以和 LED 復(fù)用一個(gè)控制口  有源蜂鳴器的優(yōu)點(diǎn)是:程序控制方便  。

    開發(fā)板上的蜂鳴器是有源蜂鳴器。FPGA 輸出低電平,即可讓蜂鳴
器鳴響。

Quartus 工程 qsf 文件管腳約束命令,把以下命令拷貝到新建 quartus
工程的 qsf 文件即可完成管腳約束(注意信號(hào)名必須相同) :
set_location_assignment PIN_23 -to i_50m_clk
set_location_assignment PIN_28 -to i_rst_n
set_location_assignment PIN_187 -to o_pwm


3  實(shí)驗(yàn)步驟
3.1  綜合
(1)運(yùn)行綜合工具。   
(2)打開項(xiàng)目工程,項(xiàng)目工程存放于以軟件開發(fā)工具命名的文件夾
中。   
(3)編譯運(yùn)行或直接點(diǎn)擊下載,下載 FPGA 軟件到目標(biāo)板。   
(4)查看軟件運(yùn)行效果
3.2  仿真
請參考視頻講解。
主要命令:   
切換仿真路徑   cd  { 仿真庫路徑 }    ,如: cd
{F:\Verilog_demo\M01_buzzer_pwm\sim};
  run 100us:仿真運(yùn)行時(shí)間長度 100us ;
do wave.do:運(yùn)行波形文件;
vlog ../src/*.v:編譯 scr路徑下的所有 v文件
vsim:開始仿真命令
quit –sim:退出仿真
4  實(shí)驗(yàn)結(jié)果
4.1  結(jié)果演示
4.1.1  MODELSIM  仿真演示

4.1.2  M ATLAB  數(shù)據(jù)分析
略。
4.1.3  開發(fā)板演示
略。

4.2  特別說明
          PWM 的一個(gè)優(yōu)點(diǎn)是從處理器到被控系統(tǒng)信號(hào)都是數(shù)字形式的,無需進(jìn)行數(shù)模轉(zhuǎn)換。讓信號(hào)保持為數(shù)字形式可將噪聲影響降到最小。噪聲只有在強(qiáng)到足以將邏輯1改變?yōu)檫壿?或?qū)⑦壿?改變?yōu)檫壿?時(shí),也才能對數(shù)字信號(hào)產(chǎn)生影響。   
對噪聲抵抗能力的增強(qiáng)是PWM相對于模擬控制的另外一個(gè)優(yōu)點(diǎn),而且這也是在某些時(shí)候?qū)?PWM 用于通信的主要原因。從模擬信號(hào)轉(zhuǎn)向PWM 可以極大地延長通信距離。在接收端,通過適當(dāng)?shù)?RC 或LC網(wǎng)絡(luò)可以濾除調(diào)制高頻方波并將信號(hào)還原為模擬形式。   
PWM既經(jīng)濟(jì)、節(jié)約空間、抗噪性能強(qiáng),是一種值得廣大工程師在許多設(shè)計(jì)應(yīng)用中使用的有效技術(shù)。


源程序如下:
  1. //==========================================================================
  2. //Filename  :PWM_gen.v
  3. //modulename:PWM_gen
  4. //Author    :a fei
  5. //Date            :2012-5-16
  6. //Function  :PWM產(chǎn)生器,輸出的pwm驅(qū)動(dòng)蜂鳴器
  7. //Uesedfor  :
  8. //Taobao    :
  9. //E-mail    :2352517093@qq.com
  10. //==========================================================================


  11. module PWM_gen(
  12.                   
  13.                  i_fpga_clk  ,
  14.                  i_rst_n     ,
  15.                  
  16.                  i_pwm_with  ,
  17.                  
  18.                  o_pwm      
  19.                                        
  20.                   );


  21. input    i_fpga_clk  ;//50MHz
  22. input    i_rst_n     ;

  23. input [19:0] i_pwm_with  ;//改變數(shù)值可控制PWM的高電平寬度
  24. output reg   o_pwm       ;   
  25.                                        


  26. //=======================================
  27. //分頻計(jì)數(shù)器
  28. //=======================================
  29. reg[19:0] pwm_cnt ;

  30. always @ (posedge i_fpga_clk or negedge i_rst_n)//時(shí)鐘沿加1              
  31.        if(!i_rst_n)
  32.             pwm_cnt <= 20'b0 ;
  33.        else if( pwm_cnt==20'hfffff)
  34.             pwm_cnt <= 20'b0 ;
  35.        else
  36.             pwm_cnt <= pwm_cnt+1'b1 ;
  37.   
  38. always @ (posedge i_fpga_clk or negedge i_rst_n)
  39.          if(!i_rst_n)
  40.               o_pwm <= 1'b0 ;
  41.          else if(pwm_cnt<=i_pwm_with)
  42.               o_pwm <= 1'b1 ;
  43.          else
  44.               o_pwm <= 1'b0 ;  
  45.             
  46.                         
  47. endmodule
復(fù)制代碼

所有資料51hei提供下載(包含完整的設(shè)計(jì)報(bào)告):
M01_buzzer_pwm.zip (2.38 MB, 下載次數(shù): 97)




作者: 菊一文字    時(shí)間: 2019-1-6 20:25
很有幫助

作者: 小白的初心    時(shí)間: 2019-11-23 16:41
剛好學(xué)習(xí)FPGA,用處很大




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1