赞
踩
(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门,作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真(前提是安装了modelsim),降低了初学者的门槛。如需整个工程请留言(WX:Blue23Light),不收任何费用,但是仅供参考,不建议大家获得资料后从事一些商业活动!)
脉冲宽度调制PWM(Pulse Width Modulation)就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值)。
我们知道,在模拟电路中,模拟信号的值可以连续进行变化,在时间和值的幅度上都几乎没有限制,基本上可以取任何实数值,输入与输出也呈线性变化。所以在模拟电路中,电压和电流可直接用来进行控制对象,例如家用电器设备中的音量开关控制、采用卤素灯泡灯具的亮度控制等等。
与模拟电路不同,数字电路是在预先确定的范围内取值,在任何时刻,其输出只可能为ON和OFF两种状态,所以电压或电流会通/断方式的重复脉冲序列加载到模拟负载。PWM技术是一种对模拟信号电平的数字编码方法,通过使用高分辨率计数器(调制频率)调制方波的占空比,从而实现对一个模拟信号的电平进行编码。其最大的优点是从处理器到被控对象之间的所有信号都是数字形式的,无需再进行数模转换过程;而且对噪声的抗干扰能力也大大增强(噪声只有在强到足以将逻辑值改变时,才可能对数字信号产生实质的影响),这也是PWM在通讯等信号传输行业得到大量应用的主要原因。
举个例子,要调节设备的音量,对于模拟信号,我们可以通过调节电压或者电流来实现;但是现在是数字信号的天下,那数字信号怎么调节设备的音量呢?这就要用到PWM技术,通过调节PWM的频率或者占空比来实现音量的调节。PWM技术在直流电机的无极调速,开关电源、逆变器等有广泛的应用。
FPGA本身处理的就是数字信号,所以用FPGA来实现PWM非常的简单,只需要通过简单的计数就可以实现不同频率和不同占空比PWM波形的生成,如下所示。
FPGA设计如下所示,假设系统时钟是100MHz,那使用FPGA就可以设计出任何的小于50MHz的PWM的波形。模块输出的信号有PWM开始信号pwm_start,PWM结束信号pwm_end,PWM一个周期的计数值pwm_period,就是系统时钟的频率除以要产生的PWM的频率,假设PWM频率是100KHz,那pwm_period=100M/100K,取值1000。pwm_high是一个PWM周期中的高电平的计数值,用于调节占空比。pwm_domain用来标识产生PWM波形的时间区域,计数器pwm_cnt进行简单的计数就可以产生期望的PWM波形。
在仿真的tb文件中,通过参数定义了要产生的PWM0(频率100K,占空比50%)和PWM1(频率500K,高占空比25%)相关的计数值。
新建了一个task,用来产生一次的PWM波形。
直接调用task,用来产生PWM0和PWM1的波形。
双击sim目录下的top_tb.bat文件,完成系统的自动化仿真。
mdelsim的仿真波形如下所示,符合设计的预期,功能正常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。