SVPWM信号发生器的VHDL实现

时间:2007-04-29

SVPWM信号发生器的VHDL实现

引言

近年来,DSP在SVPWM(空间矢量脉宽调制)控制领域得到了广泛应用。但是使用DSP单的控制方法仍然存在一些缺陷:基于软件的DSP在实现SVPWM触发信号时需要较长的时钟周期;微处理器中不确定的中断响应会导致PWM脉冲的相位抖动。针对以上问题,本文提出了一种利用FPGA实现的SVPWM信号发生器,系统结构如图1所示。作为DSP的外围接口电路,该信号发生器能够屏蔽DSP内部错误中断对输入时间信号的影响,保证输出完整的SVPWM触发信号波形,其三相并行处理结构还能够有效提升系统的动态响应速度。

SVPWM简介

SVPWM的主要思想在于利用逆变器空间电压矢量的切换合成参考电压矢量。具体方法如下:在桥式电路中,同一桥臂上两个开关的工作状态在任意时刻都是互补的,所以可以用二值逻辑函数表示6个开关的工作状态:

k=(A,B,C) (1)

由式1可见,3组开关的工作状态共有23=8种,不同的开关工作状态对应着不同的三相输出电压。这8种工件状态分别对应着8条基本空间电压矢量,任意区域内的空间电压参考矢量都可以由2条非零矢量以及2条零矢量合成。在进行电压矢量合成时,规定每开关动作只能有一相桥臂的工作状态发生转换,目的是为了降低电路中的谐波含量,确定基本电压矢量的切换顺序。

SVPWM信号发生器的设计

基本原理

图1中DSP采集逆变器交流侧输出电压值,并通过计算得到桥式电路开关的状态保持时间,SVPWM信号发生器将DSP的输入时间信号转换为开关触发信号,在结构上可以分为数据锁存器和有限状态机两个模块,其顶层文件原理图如图2所示。

在状态机的一个工作周期内,输入时间信号的突变会使状态机的工作状态发生不规则跳变,对输出信号造成巨大影响,无法得到所需要的SVPWM触发信号。因此,图2中LATCH锁存器模块的作用就是锁存输入时间数据TIME1_A,TIME0_A、TIM1_B、TIM0_B、TIME1_C、TIME0_C,直至状态机的当前工作周期结束(即"ORDER"命令有效)从而避免外界对状态机的工作状态的影响,保证状态机按照输入时间数据要求完成工作状态的转换。

利用有限状态机的方法设计FPGA,只须控制三相桥臂开关状态的保持时间,就可以实现SVPWM触发信号。图2中FSMS主要由1个基准计数器和3个比较器构成,输入时间数据预存在3个比较器内,通过比较基准计数器当前值和比较器中的预存数据控制FSMS工作状态的转换,同时根据不同的比较结果生成不同的三相桥臂开关驱动信号。如果基准计数器当前值等于预存输入时间,说明状态机当前工作状态已经完成,要转入下一个工作状态,相应的触发信号也要改变;如果基准计数器当前值不等于预存输入时间,说明状态机当前工作状态尚未完成,需要继续保持当前工作状态,相应的触发信号也保持不变。状态机按照输入时间信号的要求转换自身工作状态,使触发信号产生相应变化,从而实现时间信号向SVPWM触发信号的转变。另外,由于FSMS内部比较器参照同一基准计数器,因此三相触发信号之间不存在时间延迟,得到的是并行的三相触发信号。

设计方法

本设计采用自顶向下、层次化、模块化的设计思想。

LATCH锁存器模块由6个并行的6位数据锁存器构成,所有锁存器均使用图2中的"0RDER"作为数据锁存信号,具体规定如下:
1)"ORDER"信号作为锁存器工作进程的敏感信号参量,只有其信号值发生变化时才会启动锁存器的工作进程,否则锁存器不做出任何相应;

2)当"ORDER"信号发生变化,且当前值为1时,锁存器中的存储数据得以释放,被输入FSMS,新的时间数据同时输入锁存器;

3)当"ORDER"信号发生变化,且当前值为0时,锁存器锁存已输入的时间数据,保持FSMS的时间输入数据不变,同时拒绝新数据输入;

4)锁存器的数据锁存时间等于FSMS中基准计数器的一个工作周期。当基准计数器的一个工作周期时,"ORDER"信号将被置"1",其余时间,"ORDER"信号将被置"0"。

为了得到三相并行输出的SVPWM触发信号,FSMS模块内部设计了3个状态机分别控制A、B、C相输出。根据式1,假设上桥臂每个开关在一个周期内工作状态的转换顺序都是"1-0-1"因此可以将每个状态机都设计为3种状态,分别代表每一相开关在一个周期内的3个工作状态,工作状态的保持时间由输入时间决定。当输入时间信号发生变化时,FSMS工作进程启动。具体流程如图3所示。

以A相桥臂为例(另外两相桥臂的控制方法与A相桥臂类似),状态机进程启动后,基准计数器开始计时,比较器实时比较计数器当前值和比较器内部预存的时间。计数器的一个工作周期可以分为三个阶段:

1)计数器当前值小于输入时间TIME1_A时,状态机处于"00"态,A相上桥臂输出为"1";

2)计数器当前值大于等于输入时间TIME1_A而小于TIME1_A与TIME0_A的和时,状态机处于"01"态,A相上桥臂输出为"0";

3)计数器当前值大于等于TIME1_A与TIME0_A的和时,状态机处于"10"态,A相上桥臂输出为"1"。

如果状态机处于非法状态"11",则图2中管脚A和NOTA输出为高阻态。

仿真结果

利用MUX+PLUS Ⅱ软件对本设计的逻辑功能进行仿真验证,仿真时间为0-120μs,时钟频率为1MHz。

采用EPM3256ATC144-7FPGA芯片进行逻辑编程后,共占用166个逻辑单元,芯片利用率为64%,具有较大的扩展空间。仿真结果如图4所示。

图4中输出信号A和NOTA、B和NOTB,C和NOTC分别代表桥式电路3组互补开关的驱动命令,输入信号time1_A、time1_B、time1_C和time0_A、time0_B、time0_C分别代表各开关高低电平状态的保持时间,通过仿真波形可以看到,FPGA实现了空间矢量的转换,开关的状态保持时间取决于输入信号time0_A、time0_B、time0_C和time1_A、time1_B、time1_C,完全实现了时间信号到触发信号的转换。而且,A相桥臂有效地抵抗了外界干扰,没有受到输入时间信号突变的影响,表明SVPWM信号发生器具有良好的抗干扰能力。

结语

本文用VHDL硬件描述语言设计了一种由锁存器阵列和有限状态机构成的SVPWM信号发生器,该信号发生器不仅成功实现了输入时间信号到SVPWM触发信号的转换,而且具有良好的抗干扰能力。此外,其并行处理结构可以保证三相桥臂开关同时动作,有效地提升了控制系统的整体性能。由于SVPWM信号发生器是用VHDL硬件描述语言实现的IP核,因而可简便地应用于逆变器控制系统中。

  
上一篇:实时时钟DS1302与超级电容
下一篇:基于ARM-μClinux的无线家庭网关设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料