SVPWM信号发生器的VHDL实现
近年来,DSP在SVPWM(空间矢量脉宽调制)控制领域得到了广泛应用。
本文引用地址:http://www.amcfsurvey.com/article/82816.htm但是使用DSP单核心的控制方法仍然存在一些缺陷:基于软件的:DSP在实现SVPWM触发信号时需要较长的时钟周期;微处理器中不确定的中断响应会导致PWM脉冲的相位抖动。针对以上问题,本文提出了一种利用FPGA实现的SVPWM信号发生器,系统结构如图1所示。作为DSP的外围接口电路,该信号发生器能够屏蔽DSP内部错误中断对输入时间信号的影响,保证输出完整的SVPWM触发信号波形,其三相并行处理结构还能够有效提升系统的动态响应速度。
SVPWM简介
SVPWM的主要思想在于利用逆变器空间电压矢量的切换合成参考电压矢量。具体方法如下:在桥式电路中,同一桥臂上两个开关的工作状态在任意时刻都是互补的,所以可以用二值逻辑函数表示6个 开关的工作状态:
由式1可见,3组开关的工作状态共有23=8种,不同的开关工作状态对应着不同的三相输出电压。这8种工作状态分别对应着8条基本空间电压矢量,任意区域内的空间电压参考矢量都可以由2条非零矢量以及2条零矢量合成。在进行电压矢量合成时,规定每一次开关动作只能有一相桥臂的工作状态发生转换,目的是为了降低电路中的谐波含量,确定基本电压矢量的切换顺序。
SVPWM信号发生器的设计
基本原理
图1中DSP采集逆变器交流侧输出电压值,并通过计算得到桥式电路开关的状态保持时间。SVPWM信号发生器将DSP的输入时间信号转换为开关触发信号,在结构上可以分为数据锁存器和有限状态机两个模块,其顶层文件原理图如图2所示。
在状态机的一个工作周期内,输入时间信号的突变会使状态机的工作状态发生不规则跳变,对输出信号造成巨大影响,无法得到所需要的SVPWM 触发信号。因此,图2中LATCH锁存器模块的作用就是锁存输入时间数据TIME1_A、TIME0_A、TIME1_B、TIME0_B、TIME1_C 、TIME0_C,直至状态机的当前工作周期结束(即"ORDER"命令有效),从而避免外界对状态机工作状态的影响,保证状态机按照输入时间数据要求完成工作状态的转换。
利用有限状态机的方法设计FPGA,只须控制三相桥臂开关状态的保持时间,就可以实现SVPWM 触发信号。图2中FSMS主要由1个基准计数器和3个比较器构成,输入时间数据预存在3个比较器内,通过比较基准计数器当前值和比较器中的预存数据控制FSMS工作状态的转换, 同时根据不同的比较结果生成不同的三相桥臂开关驱动信号。如果基准计数器当前值等于预存输入时间,说明状态机当前工作状态已经完成,要转入下一个工作状态,相应的触发信号也要改变;如果基准计数器当前值不等于预存输入时间,说明状态机当前工作状态尚未完成,需要继续保持当前工作状态,相应的触发信号也保持不变。状态机按照输入时间信号的要求转换自身工作状态,使触发信号产生相应变化,从而实现时间信号向SVPWM 触发信号的转变。另外,由于FSMS内部比较器参照同一基准计数器,因此三相触发信号之间不存在时间延迟,得到的是并行的三相触发信号。
设计方法
本设计采用自顶向下、层次化、模块化的设计思想。
LATCH锁存器模块由6个并行的6位数据锁存器构成,所有锁存器均使用图2中的"ORDER"作为数据锁存信号,具体规定如下:
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所示。
评论