APP下载

一种新型分段延时型DPWM的设计与实现

2020-06-19许立新

关键词:选择器计数器延时

程 心,许立新,陈 亮,张 章

(1.合肥工业大学 电子科学与应用物理学院,安徽 合肥 230601; 2.安徽省科学技术研究院,安徽 合肥 230001)

0 引 言

近年来,DC-DC开关变换器的数字控制技术以其良好的可重构性、适应性等优点,受到广泛关注。作为数字控制系统的关键模块,数字脉宽调制模块(digital pulse width modulator, DPWM)的性能直接决定整个控制环路的控制精度[1-3]。传统控制系统中DPWM通常位宽不高,控制策略相对简单,时间分辨率也不高,因此难以应用于高精度控制场合。另一方面,随着DPWM位宽增加,其线性度往往由于电路不对称性、时序不佳或逻辑故障而变差,使得DPWM的精度大大降低。因此,设计高位宽、高时间分辨率、高线性度的DPWM成为提高数字电源性能的关键挑战之一。基于此,本文提出一种分段延时型DPWM结构,能够在高位宽的条件下具有高时间分辨率和高线性度。

1 分段延时型DPWM

1.1 DPWM工作原理

计数器型DPWM结构如图1所示,传统的DPWM结构基于计数器设计,在计数器置0时与0比较,产生RS锁存器的置位信号,进而产生脉宽调制(pulse width modulator, PWM)信号的上升沿;当计数器计数至计数阈值时,比较器产生复位信号,将RS锁存器复位,获得PWM的下降沿。

图1 计数器型DPWM结构

此时,DPWM的位宽NDPWM表达式为:

NDPWM=lb(fclk/fsw)

(1)

其中,fclk为计数器的计数频率;fsw为DPWM的工作频率。这是一种最简单的结构,但由于该结构的时间分辨率(即最小可控脉宽)等于计数器的计数周期,因此能实现的分辨率十分有限。假设需要实现100 ps的时间分辨率,就需要10 GHz的时钟频率,这不仅非常消耗时钟资源,大大提高成本,而且通常情况下时钟频率也无法达到这个

级别。因此,很多研究者为了节省资源、降低成本且达到更高的性能,尝试了多种不同的DPWM结构。

在这些设计中,分频型DPWM结构是一种较好的解决方案。这种结构利用现场可编程门阵列(field programmable gate array,FPGA)中的数字时钟管理单元(digital clock manager, DCM),将计数器的时钟倍频为4个相位,并将这些相位叠加到计数器产生的延时中,从而形成时间分辨率更高的PWM信号。文献[4-7]将DCM与计数器结合,通过DCM的级联不断提高DPWM的时间分辨率与位宽。然而,随着工作频率的提高,尤其是在实现高位宽的情况下,想要保证每一级DCM不出现时序违规是非常困难的。

另一种较好的结构是延时链型DPWM,利用延时单元来构建一条延时链,并通过二进制序列来控制延时链不断重构其长度,从而实现高时间分辨率。文献[8-9]使用FPGA中的加法器来形成延时链,然而在FPGA中,每个逻辑单元中仅有一个加法器,单一的延时链结构所能实现的位宽有限,当需要增加位宽时,其占用的资源将呈指数增长。文献[10-12]通过振荡器驱动反相器链或者独立设计的延时单元,并采用多路选择器根据输入数值不断重构延时链的长度,进而实现一个受控的延时链。这种设计方法虽然很容易实现延时链的重构,但需要对多路选择器的内部结构进行详尽的对称设计,否则会由于选择器内部不对称导致延时链的线性度下降,从而影响DPWM的整体线性度。

1.2 分段延时型DPWM

为了解决上述结构的局限性,本文提出一种新型的基于FPGA实现的分段延时型DPWM结构,该结构如图2所示。

图2分段延时型DPWM结构

图2主要包含以下部分:数据同步接口与占空比分段译码模块、用来产生时钟信号与相位信号的锁相环(phase locked loop, PLL)、基于计数器的第1级延时模块、基于相移电路的第2级延时模块、基于快速进位链的第3级延时模块以及基于触发器的输出电路。

该DPWM的工作原理描述如下:

(1) DPWM接收到从上一级传输过来的输入信号D后,首先对该数据进行跨时钟域处理以避免后续不同模块之间时钟频率不一致导致的数据传输失效。经过双端口RAM与分段寄存器组处理的信号D分成d1、d2、d33段,其中d3在进入快速进位链前先由独热码译码器对其进行译码,使之以独热码的形式传输到快速进位链中。

(2) 在DPWM开始工作时,计数器产生一个置位信号,该信号作为输出触发器的时钟信号,使其产生PWM信号的上升沿,此时计数器开始计数。当经过若干周期计数器的计数值等于d1时,计数器产生一个触发信号T1,用于驱动第2级延时模块,即相移电路开始工作。

(3) 当触发信号T1有效时,第2级延时模块开始工作,此时d2进入第2级延时模块,该模块根据d2信号来选择一个相位信号(CLK0、CLK90、CLK180或CLK270)作为第2级延时,该延时结束后将产生T2信号,以触发第3级延时模块的快速进位链。

(4) 当触发信号T2有效时,进位链根据d3信号对其长度进行重构,从而产生一个极小的延时信号,该延时结束后,进位链产生的进位结束信号T3将作为输出触发器的复位信号,从而产生PWM信号的下降沿。

为了更直观地描述输出PWM信号与每一段延时的关系,接下来给出具体实例进行说明。

以14 bit位宽设计为例,假设输入信号D在某一时刻为0011100-01-11000,将其中的高7位数据0011100作为计数器的计数阈值,计数器将产生28Tcnt的延时(Tcnt为计数器周期);中间2位数据01作为相移模块的选择信号,选择90°相位的延时,即1Tphase(00~11分别对应0°~270°,Tphase为每90°相位所提供的延时);低5位数据11000则作为快速进位链的重构信号,构成24个加法器级联的进位链,产生24Tc的进位延时(Tc为快速进位链中单个加法器的进位延时)。因此,所产生的PWM输出信号占空比W表达式为:

(2)

为了使该设计满足高线性度的要求,时钟频率与每个90°相位所产生的延时都应等于整条进位链的延时,且每个90°相位严格等于1/4的计数器周期。而通过(2)式可以看出,对于该结构,设计者可以根据实际需求,对每一级延时处理的信号位宽进行调整,再对PLL分频后的时钟频率进行相应的修改,即可完成位宽调整。

因为本设计对时钟信号的稳定性要求极高,所以利用PLL来对外部时钟分频产生4个相位相差90°的时钟信号(CLK0、CLK90、CLK180、CLK270),并将这4个时钟信号接入全局时钟总线,使之成为FPGA的全局时钟,以保证时钟信号进入各模块的延时一致。其中,CLK0还被用作全局同步时钟,驱动各模块工作,而另外3个相位的时钟仅用于相移电路。

2 关键模块的设计与实现

2.1 相移电路的时序故障与逻辑故障分析

相移电路的功能是根据控制信号从4个不同相位的信号中选择对应的一个,该过程通常由4选1选择器来实现,其工作时序如图3所示。从图3可以看出,如果不对信号进行任何处理,0°相位信号的前半段高电平时间与上一周期的270°相位信号后半段高电平时间将发生重叠,那么会导致d2无论等于00还是11,都会在这段重叠的时间内选择0°相位信号。

图3 工作时序

针对此问题,一些学者对信号的高电平持续时间进行修改,尽可能减少重叠的区域。如文献[4]将每一个相位时钟的高电平持续时间减小到原有的1/4,理想上可以将0°相位与270°相位重叠的部分完全消除。然而,当DPWM的频率随着设计的需求增高时,其时序宽容度会大大降低,这4个相位信号会由于到达选择器的延时不一致,而难以保证相邻两信号之间的相位差严格等于90°,此时依然存在重叠的风险。

此外,当输入信号的变化范围非常大时,由于上一个脉宽周期中,选择器所选择的相位信号输出时还未来得及复位,其高电平持续时间会持续到下一个脉宽周期中的第1个时钟周期。这意味着在下一个时钟周期的开始,无论第1级延时产生的延时是多少,相移电路都已经有电平输出,可以直接驱动后级电路将PWM信号复位。本文称这个现象为脉宽连续复位现象,如图4所示,相移电路的4个相位输出中,仅有0°相位信号可以在第1个脉宽周期结束时(即第4个CLK0)清空,另外3个信号的高电平均持续到下一个脉宽周期的第1个时钟周期(即第5个CLK0),意味着如果相移电路在上一个工作周期中选择了90°、180°或270°相位,那么在第2个工作周期开始时,相移电路的输出依然是高电平。此时不论第1级延时模块产生多长的延时,DPWM均会马上复位。理想情况下,相移电路可以在大部分工作环境中正常工作,然而当系统算法需要处理大幅度变化的数据时,脉宽连续复位现象就有可能发生。

图4 脉宽连续复位示意图

为了解决相位重叠的问题,本设计在相移同步模块中使用4个触发器,本文设计的相移电路如图5所示。

图5 本文设计的相移电路

图5a所示的相移同步模块工作原理为:触发信号T1在0°信号的上升沿到达时,被触发器1捕获,由于触发器仅在上升沿到达时更新数据,因此90°、180°、270°这3个相位的信号都不会在此时被捕获进对应的触发器2、3、4中,只有当这3个信号相应的上升沿到达,才会从触发器1的输出端捕获T1信号,从而产生对应的相位信号,因此能够避免相位重叠的问题。

另一方面,为了消除脉宽连续复位现象,本文还在相移电路中使用了双缓冲技术,如图5b所示,在2个相移同步模块之间设置乒乓仲裁机制,即在每一个DPWM的工作周期内,仅使用一个相移同步模块作为触发信号T1的触发对象,进而驱动后续电路工作,另一个相移同步模块则进行复位操作;下一个工作周期开始后,2个相移同步模块的功能通过乒乓仲裁机制交换。通过交替复位2个相移同步模块,可以保证在每一个工作周期的开始,所使用的相移同步模块都处于已复位的状态,从而避免信号未及时清零而导致的脉宽连续复位现象。

2.2 快速进位链的实现与优化

为了进一步提高DPWM的时间分辨率,使用延时链来产生小范围的延时是常用的方法。传统的延时链是通过多路选择器来重构延时链的长度,但这种方法运用在FPGA中效果不佳。因为FPGA中的多路选择器并非与专用集成电路中的多路选择器一样,可以在后端流程中进行手动布局布线优化,而是通过设计工具映射在FPGA硬件底层的逻辑单元中实现的,所以其内部结构通常都不对称。而延时链中的延时单元本身延时极小,极小的不对称所带来的延时不一致都会显著降低延时链的线性度。

快速进位链结构如图6所示。

图6 本文设计的快速进位链

本文采用加法器进位端的延时作为延时链的基本延时单元,使加法器的一端持续保持高电平,另一端连接经过独热码译码后的d3信号。当某个加法器的输入端输入1时,其进位端电平拉高,进而触发下一个加法器进行同样的进位运算,以此形成快速进位链。因为加法器的进位延时非常小,通常在10~100 ps之间,并且一旦其工作条件与环境确定以后,延时非常稳定且不易发生抖动,所以将其级联可以形成稳定的延时链。此外,为了保证在每种情况下,d3的独热码信号传输给进位链中每个加法器的延时都尽可能一致,以减小进位链的抖动、提高线性度,本设计利用寄存器组先预同步d3信号,再由触发信号T2驱动其时钟端,将d3的独热码信号送入每一个加法器中。

尽管加法器的特性使其非常适于构建进位链,然而在FPGA中,无法对逻辑单元的内部器件进行布局,也就是无法直接手动调取逻辑单元中的加法器去构建快速进位链。为了可以合理地将进位链准确映射到FPGA芯片内部的资源上,在代码撰写时需要根据综合工具的综合规律迭代出合适的代码,以此引导开发工具按照本文的需求来自动布局布线出所需要的进位链结构。常用的实现加法器链接的代码风格中,通常都会用到循环语句。实验证明,使用for循环结合generate语句产生的加法进位链,会引导综合工具将2个全加器链接在一起作为一个延时单元,这会使得所形成的进位链中的基本延时单元由2个逻辑单元中的加法器构成,这样形成的进位链单位延时比单个进位延时高出1倍。本设计采用另一种全加器的代码风格,快速进位链代码如图7所示。采用该代码综合出来的进位链中,每一个加法器便可以形成一个延时单元,并准确、一一对应地与前级触发器连接。

图7 快速进位链代码

3 测试结果及分析

本文使用的设计平台为Altera Quartus Prime,功能仿真使用Modelsim,时序仿真、静态时序分析使用Timequest Timing analyzer,并最终在Altera Cyclone IV系列FPGA芯片平台上验证。本设计的DPWM位宽为14 bit,外部时钟频率50 MHz,经过PLL倍频后为156 MHz,即全局同步时钟信号频率为156 MHz。

测试DPWM的脉宽输出范围,将输入信号调至0并逐渐增加,直至示波器能抓取到完整的输出波形,以得到最小输出脉宽;同理,将输入调至1并逐渐减小,以得到最大输出脉宽。脉宽输出范围测试结果如图8所示,从图8可以看出,本设计的输出脉宽范围达到0.5%~99.5%,非常接近理想的0~100%。这里由于触发器的置位和复位需要一定的建立与保持时间,因此在设计中为了不出现时序违规,预留了足够大的时间余量以满足时序关系,导致脉宽无法达到理想状态下的100%输出范围。

图8 输出脉宽范围测试

为了测试相移电路的性能,取输入信号D为0010100-00-00000,并以此为基准,逐次将相位增加90°(即D每次增加0000000-01-00000),截取部分输出波形并叠加,如图9所示。

从图9可看出,相邻的相移信号之间脉宽变化均匀(在本设计中,每个90°相移产生1.6 ns延时),且在270°相位翻转至0°相位时,脉宽仍能均匀变化,并未出现相位重叠导致的脉宽非线性变化现象。

图9 输出波形叠加图

由于快速进位链的进位延时非常短,只观察一个进位延时所获得的数据可能存在较大的波动,导致分析偏差,因此快速进位链的性能测试需要在下板前先进行仿真,以获取一个大致的理论值,然后以8个延时单位为一次调整幅度,记录每个样本点的脉宽信息。本设计的进位链延时仿真结果为43~73 ps,下板测试时同样以0010100-00-00000为基准,每次增加0010100-00-01000,记录相应脉宽的数值再拟合为曲线。其线性度如图10所示,实际测得的时间分辨率为50 ps,脉宽线性度为99.2%。

图10 线性度测试

从图10可以看出,本文设计的DPWM具有较高的时间分辨率与线性度,同时由于结构灵活,通过信号分段和修改时钟频率,即可应用于不同位宽需求的场合,具有较高的可移植性。

4 结 论

本文针对高精度、高性能的电源管理模块,提出一种高位宽下具有高时间分辨率、高线性度的分段延时型DPWM结构。设计新型同步相移电路,解决了电路时序与逻辑设计的潜在问题。与此同时,采用全加器风格的代码,构建具有高分辨率的快速进位链。测试结果表明,本文设计的DPWM在14 bit 位宽、156 MHz工作频率下,实现了50 ps的时间分辨率,且线性度达到99.2%。

猜你喜欢

选择器计数器延时
采用虚拟计数器的电子式膜式燃气表
五十一进制计数器的设计与仿真实现
一起因分接开关接触不良导致的绕组直阻异常分析及处理
74151在数据选择和组合逻辑电路中的灵活应用
日光灯断电关闭及自动延时开关设计
DIV+CSS网页布局初探
深入理解CSS3结构伪类选择器
基于CD4060 的室内换气系统延时关机电路设计
SR620型与53230A型计数器的性能测试
算盘是个“小气鬼”