04_基于FPGA的PWM控制灯的亮暗

04_基于FPGA的PWM控制灯的亮暗

实验原理

PWM的全称为Pulse-Width Modulation(脉冲宽度调制,),实际就是调节脉冲的占空比。当输出的脉冲频率一定时,输出脉冲的占空比越大,相当于输出的有效电平越大,这样也就简单实现了由FPGA来控制模拟量。由一个独立按键key来控制FPGA输出脉冲的占空比,用该脉冲去直接驱动发光二极管LED,随着占空比不同,LED的亮度将不同。

设计原理框图:

硬件原理图

实验代码

/********************************版权声明**************************************

** 大西瓜团队

**

**----------------------------文件信息--------------------------

** 文件名称: pwm.v

** 创建日期:

** 功能描述:按键控制led的亮度

** 硬件平台:大西瓜第三代开发板,http://daxiguafpga.taobao.com

** 版权声明:本代码属个人知识产权,本代码仅供交流学习.

**---------------------------修改文件的相关信息----------------

** 修改人:

** 修改日期:    

** 修改内容:

*******************************************************************************/

module pwm(clk,reset,key,led);

input clk,reset,key;

output led;

 

reg pwm_out;

 

reg key_out;

parameter s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;

reg [1:0] state;

 

reg [31:0] clk_counter;

reg [9:0] pwm_counter;

reg flag;

/******************按键消抖**************************/

always @(posedge clk)

begin

case (state)

s0:

begin

key_out<=1'b1;

     if(key==1'b0)

         state<=s1;

     else

     state<=s0;

     end

     s1:

     begin

     if(key==1'b0)

         state<=s2;

     else

     state<=s0;

     end

     s2:

     begin

     if(key==1'b0)

         state<=s3;

     else

     state<=s0;

     end

     s3:

     begin

     if(key==1'b0)

     begin

         key_out<=1'b0;

         state<=s3;

         end

        else

         begin

         key_out<=1'b1;

         state<=s0;

     end

     end

     default:

     state<=s0;

endcase

end

always @(posedge clk)

begin

clk_counter<=clk_counter+1'b1;

    if (clk_counter[13:4]<pwm_counter)

        pwm_out=1;

    else

        pwm_out=0;

 

    if (clk_counter[15]==1'b1)

    begin

        if (flag==1'b1)

        begin

            flag<=1'b0;

            if (key_out==1'b0)

                pwm_counter<=(pwm_counter+10'b0000000011);

            else

             pwm_counter<=pwm_counter;

        end

    end

    else

    flag<=1'b1;

end

assign led=pwm_out;

endmodule

 

实验操作

实验效果

 

大西瓜FPGA-->https://daxiguafpga.taobao.com

配套开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-24211932856.3.489d7241aCjspB&id=633897209972

博客资料、代码、图片、文字等属大西瓜FPGA所有,切勿用于商业! 若引用资料、代码、图片、文字等等请注明出处,谢谢!

   

每日推送不同科技解读,原创深耕解读当下科技,敬请关注微信公众号"科乎"。

posted @ 2022-02-20 17:13  logic3  阅读(503)  评论(0编辑  收藏  举报