基于FPGA的HRPWM发生器

HRPWM based on FPGA


Background

现代功率器件的发展带来了越来越高的开关频率以及更低的开关损耗.但是同样带来了如何产生高频PWM波的问题,纯模拟方案下,往往会于导较高的失调电压/噪声等带来的问题,进而引发输出时钟的振动,对输出带来一定的影响(目前来说个人未对输出的影响进行详细的分析).

在数字电源领域,经常会遇到的问题是PWM频率与PWM精度的矛盾,由于对于传统的PWM发生器方案有

f_{clk}=2^n\times f_{pwm}

越高的等效精度(n bit)会带来越低的PWM频率,对于常见的控制器,例如170MHz主频来说,如果要产生一个10M的PWM信号,那么其等效分辨率只有17,也就是不到5bit的分辨率,在48V的输入电压下,将会带来2.8V的电压跳动(针对Buck而言),最终反映在低频纹波上.

但是如果采用了目前常见的High-Resolution技术,则可以较为轻松的提升PWM的分辨率,例如对于常见的G4系列单片机,能够提供最高32倍的等效倍频,进而使得PWM的等效分辨率提升5bit,达到接近12bit的分辨率.

对于这个应用来说,目前常见的产品包括Ti C2000系列DSP带有的HRPWM功能,STM32G4等面向数字电源/电机控制设计的基于Cortex-M处理器的HRTIM等产品,其等效分辨率往往可以做到数百个皮秒到数十个皮秒的数量级

需要注意并强调的一点是,虽然等效频率达到了数GHz甚至10GHz,但是并不意味着其内部时钟能够达到这样搞的频率,也并不意味着其输出能够达到这样高的频率,更加不意味着其内部的逻辑能够达到如此高的频率,往往来说,其内部的逻辑频率等依然与MCU的主频在同一数量级,High-Resolution技术带来的只是分辨率的提高

Typical Design

对于常见的High-Resolution的典型技术,是采用程控延时线进行控制,提供对输出不同时间长度的延时来进行触发.

如来自REF[1]的方案,NXP选择采用提供一个几个bit的延时线,来提供总计一周期的延时,通过控制延时线的延时长度,来最终获得上升或下降的延时,进而产生高精度的PWM.(具体工作原理详见REF[1])

这种发生方式同样的存在于Ti的HRPWM技术与Cortex-M的HRTIM技术当中,但是这个技术在使用FPGA进行搭建的时候会遇到这种问题:如何产生准确的延时?由于延时线的准确程度直接意义上的控制了输出的稳定性和精度,对于常见的商业方案来说,会采用定时校准等方式去增强DTC(data-time-converter)的精度,但是对于FPGA来说,其内部的门延时随着PVT等参数会有着较大的变化,最终会影响到输出的延时的精度与稳定度,而添加一个环的方式相对来说会比较复杂,但是能获得更高的性能

This Design

几乎完全照抄了下2018年PEMD的一篇文章(REF[3]),原文是面向GaN PFC的一种控制方法,其参考了2012年IEEE Trans on PE的一篇文章(REF[4]),REF[4]提出了如下的一种结构

对REF[4]提出的结构进行分析,首先对于一个m bit的PWM发生器而言,我们首先定义duty_code的低2bit位延时产生,而高m-2bit为正常的PWM发生.其工作过程分析如下:

counter置零触发SETD,进而同步的触发输出PWM拉高,完成PWM输出的置位,而当counter达到duty_code的高m-2bit设定值的时候,触发CLRD脉冲,进入多相电路,CLR0到CLR3分别为延时0度到延时270度的CLRD脉冲,通过低2bit选通RESET信号,触发PWM的复位,实现了复位脉冲的延时.

整个方案有着较好的可重复性与可实现性,在Anlogic EG4S20平台上验证能够做到1.15G的等效频率,在9MHz的PWM输出时有着128分度的分辨率,即7bit的占空比分辨率.

来自REF[3]的典型波形图如下所示

Things need to be considered

在设计的时候,有以下几个问题需要特别的注意:

PLL本身的相移

部分的FPGA厂家提供的PLL核可能并不支持足够多的输出(理想情况下单个PLL输出所有的时钟,解决移相的问题),需要多个PLL共同输出,一般将第一个PLL配置为倍频功能的PLL,将外部的REF-CLOCK倍频到100M到200M,进入到第二个PLL,第二个PLL输出其他的相位,最终产生所需要的所有的移相后的时钟.

但是在这种情况下要注意的是,第二个PLL的输出相位与其输入相位的关系,需要配置合理的模式来补偿这样的一个相位差,在Anlogic的平台上,我个人将其配置为了Source Synchronous模式能够较好的实现功能(没看手册咋个说,但是Normal模式肯定不得行,会炸)

移相后时钟线的延时问题

各位需要注意一个关键的问题,我们希望的是CK时钟之间的相位维持完全的同步,但是FPGA本身的布线问题会带来较为明显的非线性,例如对于144MHz来说,45°的相移对应了868ps的时延,当一路的延时在内部超过19ps时,就会引入1°的相位非线性,因此需要尽可能的使所有的CK到触发器的时钟有着相同的延时,以此来降低其非线性.

Things need to be done in the future

更为丰富的触发功能

参考Cortex-M的HRTIM功能,应当能够根据需要设置不同的触发源来实现对HRPWM的任意位置的触发,来实现更为丰富的控制,这部分功能需要以后进行解决.

Reference

最后修改日期:2021年12月7日