没有网站可以做淘宝客,做网站需要的公司,海外市场推广策略,圆通速递我做网站前言
昨天过于劳累#xff0c;十点睡觉#xff0c;本来想梳理一下PWM#xff0c;今天补上。
PWM内涵
PWM全称#xff1a;Pulse Width Modulation#xff0c;也就是脉宽调制的意思#xff0c;字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…前言
昨天过于劳累十点睡觉本来想梳理一下PWM今天补上。
PWM内涵
PWM全称Pulse Width Modulation也就是脉宽调制的意思字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行控制将连续信号转化为脉冲信号进一步通过调节脉冲的宽度表达原始信号的信息。 组成固定频率的高电平脉冲和一个可变宽度的低电平脉冲。 占空比高电平时间占整个周期时间的比例。 这里有一个面积等效定理 对于使用脉冲信号来表达模拟电压这个过程有一个面积等效原理下面是一个简单的例子 假设PWM信号高电平为5V而低电平为0V周期为1s占空比为50%。那么在1s时间内输出的模拟电压等于5V*0.5s/1s2.5V其实就是将5V下面的面积平均到整个周期1s内就得到了2.5V的模拟电压。理论上调节这个占空比参数可以输出任意的0-5V之间的电压这其实也就是PWM最核心的工作原理。 经常用到得到场合有电机调速舵机控制开关电源控制灯光亮度调节等。 尤其在开关电源的应用场合最后所用到的功率FET的导通时间与总开关时间的比值其实就是所用到的PWM波的占空比。
如何用FPGA生成PWM波实例
手上正好有一个FPGA的板子用FPGA来生成一个PWM波与使用一些常见的开发板还有点不太一样例如arduino,STM32等。这里先介绍一下使用FPGA生成这种波形的核心原理
原理部分 首先还是从PWM生成的过程出发主要就是用一个可以改变的信号值同一个锯齿波进行比较也就是经常听到的载波和调制波。当调制波大于载波时输出高电平反之输出低电平。但是在FPGA中要实现这种功能就需要用到其特有的计数器编程方式。也就是在一个周期内以上面提到的锯齿波为例设置一定的位宽让这个计数器从0开始计数同时比较值信号也设置一个相同位宽的计数器且初始值为0当锯齿波计数器计数到最大值时候这个参考计数器同时开始计数为1并且当第一个计数器大于第二个计数时候第二个计数器开始累加。一大堆文字有些抽象直接上图 具体的程序实现请见下回。