基于FPGA的三相PWM发生器

最新更新时间:2006-05-07来源: 电子技术应用 手机看文章 扫描二维码
随时随地手机看文章

    摘要:介绍了基于FPGA设计+的三相PWM发生器。该发生器具有灵活和可编程等优点,可应用于交流电机驱动用的三相电压源逆变器。实验结果验证了本设计的有效性。

    关键词:脉宽调制  现场可编程门阵列

随着现代工业的要求和微电子技术的进步,交流传动已经迅速地从模拟控制转向数据控制,其中PWM技术与方法是其核心内容。但数字化PWM电路一直是设计中的难点,除了集成三相PWM发生器的80C196MC、TMS320F240等微处理器外,均采用中小规格集成电路设计感想 PWM,这是非常复杂的,往往使电路复杂、可靠性差。本文介绍了一种用单片大规模FPGA实现的三相PWM发生器,它具有三相脉冲中心对称、PWM周期和死区时间可编程等特点,且性能优异、灵活性和可靠性高。

1 基本原理

本设计的目的是产生三相逆变器的PWM信号波形。图1是用FPGA实现的PWM部分设计框图,它主要由脉宽寄存器、缓冲寄存器、周期寄存器、死区寄存器、死区发生器、数值比较器、控制逻辑等几部分构成。脉宽寄存器,决定三相PWM信号的脉宽;缓冲寄存器,实现对脉宽数据的双缓冲;周期寄存器,决定PWM的斩波周期;死区寄存器,决定上下桥臂的死区时间。脉宽寄存器在每个开关周期中由微处理器与更新一次,其输出数据经缓冲以后与基准计数器进行数值比较,得到三相PWM信号PA、PB、PC。再经过死区电路处理,最后产生6个中心对称的PWM驱动信号,驱动三相逆变器的6个功率器件。PWM算法可采用SPWM(正弦PWM)或者SVPWM(空间矢量PWM)。

FPGA中的基准计数器,用来产生类似模拟电路中的三角波基准,是一个最小计数值为0、最大计数值为周期寄存器中保存的数值、计数方向交替变化的可逆计数器。基准计数器单元在最大计数值时产生一个同步信号SYN,当它有效时将三个脉宽寄存器的数据存入各自的缓冲寄存器,实现双缓冲,使三个脉宽寄存器在SYN无效时可依次由微处理器更新而不影响最终的三相同步关系。同时基准计数器单元产生一个方向信号DIR,可作为微处理器的外部中断源(边缘触发方式),在PWM开关周期的起始点产生中断。

微处理器软件设计较简单,在初始化阶段设置好周期寄存器、死区寄存器,以后只需在PWM中断服务程序中将计算好的三相脉宽数据分别送到各自的脉宽寄存器,然后退出中断服务程序,等待控制器在SYN脉冲控制下将三个脉宽寄存器的数据锁存到各自的缓冲寄存器中。在下一个PWM周期中输出相应的脉冲,同时中断被触发,便开始了下一个PWM中断服务程序。程序要求PWM中断服务程序运行时间小于PWM周期,由此决定了PWM最高运行频率。图2为PWM波形图。

2 内部设计

以A相为例,基准计数器由加减计数器构成。加计数和减计数交替执行,计数周期由周期寄存器决定,DIR指示计数方向,同步信号SYN用来加载A相缓冲器。PA是缓冲器与基准计数器的数值比较结果,死区发生器由死区计数器和一些组合逻辑组成,使同相的上下桥臂驱动信号错开一个死区时间,防止功率器件短路。死区时间由死区寄存器决定,最后输出A上下桥臂驱动信号AH和AL。

死区计数器采和饱和计数器,饱和计数器的特性类似于电容的充放电过程,规则为:

(1)当输入为0时,如果计数值等于0,则计数值保持不变,否则作减1计数;

(2)当输入为1时,如果计数值等于max,则计数值保持不变,否则作加1计数;

(3)当输入为1且死区计数器数值为max时,AL=0,AH=1,上桥臂导通;

(4)当输入为0且死区计数器数值为0时,AL=1,AH=0,下桥臂导通;

(5)当死区计数器数值在0~max之间时,AL=0,AH=0,上下桥臂都截止,形成死区。

其中,max等于死区寄存器的数值。

周期寄存器和脉宽寄存器为14位,死区寄存器为8位,在20MHz时钟,开关频率为610Hz~10MHz,死区时间为0~12.8μs,脉冲分辨率为50ns。

FPGA采用VHDL硬件描述语言进行设计,上面给出死区发生器的VHDL设计:

Entity dead is

Port(clk,px:in std_logic;

Xh,xl:out std_logic;

Dead_time:in std_logic_vector(7 downto 0);

Q:inout std_logic_vector(7 downto 0));

End dead;

Architecture dead of dead is

Begin

Process(clk)

Begin

If (clk'EVENT and clk='1') then

If ((px='1') and (q/=dead_time)) then

Q<=Q+1;

Elsif ((px='0') and (q/="00000000")) then q<=q-1;

End if;

If ((px='1') and (q=dead_time)) then

Xh<='1';

Else

Xh<='0';

End if;

If ((px='0') and (q="00000000")) then

Xl<='1';

Else

Xl<='0';

End if;

End if;

End process;

End dead;

3 试验与结构

FPGA采用ACTEL公司反熔丝工艺的42MX16,应用在所研制的交流主轴驱动器中,图3是其6个基极驱动信号波形。在实际应用中,除PWM外,在同一片FPGA中还设计了光电编码器计数单元、输入脉冲计数器、I/O接口、保护电路、译码器等全部外围数字逻辑电路,它与DSP、A/D芯片和接口电路构成非常简洁的交流电机驱动器的控制部分。采用FGPA构成三相PWM发生器的方案,具有低成本、高灵活性、高集成度、高可靠性等优点。

编辑: 引用地址:基于FPGA的三相PWM发生器

上一篇:同步数字体制(SDH)数字交叉连接(SDXC)矩阵的设计原理
下一篇:在MATLAB环境下实现对硬件资源的访问

小广播
最新半导体设计/制造文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 市场动态 半导体生产 材料技术 封装测试 工艺设备 光伏产业 平板显示 EDA与IP 电子制造 视频教程

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved