2.2三角载波发生器
本设计中通过加减计数器来产生载波三角波,三角波的幅值取256。先从0开始计数到256,再从256减数到0,得到半个周期的三角载波,然后重复前半周期的计数方式,对得到的计数值取负,这样就可以得到一个周期的三角载波。
图3是三角载波模块的仿真图。可通过设定triwave_fp的值来实现三角波的分频,当系统时钟为10 MHz时,图3(a)设triwave_fp为0,此时三角波周期为102.4 μs;图3(b)设triwave_tp为1,其周期变为204.8 μs。通过改变triwave_fp的取值,可以得到不同频率的载波。
2.3 正弦波发生器
本设计利用Matlab软件工具,把正半周期的正弦波512等分后,把数据存人ROM中。调用ROM中的数据,即可实现正半周期正弦波。再对正半周期取反,即可得到负半周期的值。本设计为了使得到的脉冲宽度可调,加上了正弦幅度相乘调节模块,其模块原理图如图4所示。
同样,可以控制模块分频单元,和调幅单元,改变正弦波的频率及幅度。
2.4 比较模块
三角载波和正弦参考波发生模块设计完成后,对其输出的结果进行比较以产生SPWM脉冲信号。可以通过Verilog硬件描述语言实现,比较规则设置为当载波的数值小于正弦波的函数值时,输出‘1’,否则输出‘0’。
2.5 死区时间延时模块
比较模块后,得到两路SPWM序列信号(xl,xh),用于控制电路的上下桥臂的开关。理论上,这两路信号是完全互补的。然而,由于功率器件开通和关断时间不完全相等,器件的关断时间实际上要长于导通时间。因此,为避免上下桥臂上功率器件瞬态短路必须提供一段时间的延时,使功率开关管导通之前确保相应的开关管已经截止。
脉冲延时是通过上升沿实现的,延时时间的实现主要通过一个10位的加减计数器来实现。设死区时间为max,延时计数器计数规则如下:
(1)当输入为0时,若计数值等于0,则计数值保持不变;否则,作减1计数;
(2)当输入为1时,若计数值等于max,则计数值保持不变;否则,作加1计数;
(3)当输入为1且死区计数器数值为max时,xl=0,xh=1,上桥臂导通;
(4)当输入为0且死区计数器数值为0时,xl=1,xh=0,下桥臂导通;
(5)当死区计数器数值在0~max之间时,xl=0,xh=0,上下桥臂均截止,形成死区。