原创 提高FPGA-PWM计数器性能的位交换

2014-2-18 11:32 1539 22 22 分类: FPGA/CPLD

  当你需要一些模拟输出,并且系统中有一片FPGA时,你可能选择采用一个PWM模块和一个简单的低通滤波器,如图1所示。FPGA的输出通常是一种固定频率、可变占空比的波形,由一个计数器和一个数字比较器生成(表1)。

图1用一个简单的低通滤波器将FPGA的PWM数字输出转化为一个模拟电压最大纹波出现在50占空比时


  假定Enable(使能端)为高电平,计数器对每个时钟周期增量计数,而PWM输出的频率等于时钟频率除以2个计数位。你可以将Enable接到一个预分频器来降低输出频率。由于输出频率是固定的,滤波器也容易计算,因为我们知道最差的纹波出现在50%占空比时。将所需最大纹波和稳定时间相结合,就决定了滤波器的种类和RC(电阻/电容)值。

表1


  对表1中的代码作少许修改,就可以改善PWM电路的性能。在原系统中,最大纹波电流出现在50%占空比时,而最小纹波电流出现在最小占空比时,改进的版本则使最大纹波等于标准版的最小纹波。巧妙之处在于产生了尽可能高的频率,但保持平均占空比不变。输出端的脉冲频率越高,滤波器完成的工作也越好。

表2

表3


  对表1的修改包括重新布线二进制比较器,将所有位从左至右作交换。MSB(最高有效位)成为LSB(最低有效位),LSB成为MSB,等等(表2)。你只要重新布线,不需要

额外的寄存器或逻辑电路。

  表3给出了一个4位PWM发出的脉冲串。在表3中,你看到在50%占空比时(Value=8,第二列),频率为最大,等于时钟频率除以2。在一些纹波出现的第一点(Value=1,第二列),纹波与普通PWM系统完全相同,即脉冲串是相同的。

文章评论0条评论)

登录后参与讨论
我要评论
0
22
关闭 站长推荐上一条 /2 下一条