立即注册
查看: 488|回复: 4

[资料] 基于FPGA的三相PWM发生器的实现方法探讨

已绑定手机
发表于 2023-6-5 11:46:37 | 显示全部楼层 |阅读模式 来自 广东省深圳市
本设计的目的是为了应用微处理器(通常为高速的微处理器, 如TM S320VC33) 给出的信息,结合来自IGBT IPM 智能模块的故障输出信号产生三相逆变器的PWM 信号波形. 工业应用中两种典型的逆变器是三相两电平和三相三电平逆变器. PWM 发生器在整个逆变器中扮演着重要角色[ 1 ] , 因此它的设计致关重要. 本设计适用于三相两电平逆变器, 经增加适当的脉宽寄存器与缓冲寄存器, 就可应用于三相三电平逆变器, 以及三相多电平逆变器. 现在市场上主要有LA TT IC、X IL INX、AL TERA 三家公司的CPLDöF PGA 芯片产品, 这些产品各有所长, 可挑选的范围很大.根据实际情况选用AL TERA 公司的芯片以及该公司的MAX+ PLU S Ê 软件, 用VHDL 语言编程[ 2 ] , 在FPGA 内实现整个PWM 发生器的功能.

1 整个发生器的基本结构
对PWM 信号产生的原理不作赘述, 具体参看文献[3 ], 整个设计的内部结构如图1 所示.
通过控制寄存器掌控FPGA 内部各个模块的运行, 设计中控制寄存器ct r_ reg () 为16 位, 其中仅低6 位有效, 对应功能见表1

图1 FPGA 内部设计结构图

图1 FPGA 内部设计结构图

图1 FPGA 内部设计结构图

表1 控制寄存器有效位的功能
Table 1 The funct ion of effect ive bits in cont ro l register
Table 1 The funct ion of effect ive bits in cont ro l register.png
 通过微处理器对控制寄存器进行赋值, 可灵活控制FPGA 内部各大模块的正确运行, 且便于调试, 使PWM 输出信号更灵活可靠、可控性增强. 另外在FPGA 里面完成利用IGBT IPM 模块的故障输出信号封锁IGBT IPM 的控制信号通道的功能, 弥补IPM 自身保护的不足, 更有效地保护器件. 用VHDL 编程, 将整个程序分成接口模块、缓冲与比较模块、死区发生模块和保护模块四个部分.

1. 1 FPGA 与微处理器的接口模块
主要完成微处理器对FPGA 的读写功能. 其中写功能主要完成对死区寄存器、周期寄存器、控制寄存器、ABC 三相的脉宽寄存器的赋值; 读功能主要完成微处理器对FPGA 内部保护寄存器值的读取. 实际应用中通常选用高速微处理器来完成前端复杂的控制运算, 微处理器将FPGA 作为一个普通外设来进行数据交换, 调试时要熟悉
高速微处理器对速度不匹配的外设读写时序. 这一部分作为一个独立的功能模块, 需要注意的是:在程序上电第一次运行时需要先写各相的脉宽寄存器, 再写死区寄存器及周期寄存器, 最后写控制寄存器, 这样可以同时自动将脉宽寄存器的值装入缓冲寄存器, 否则缓冲寄存器的初始值为零, 导致在第一个开关周期内无PWM 波形输出.

1. 2 缓冲与比较模块
这一部分是基本的PWM 波形产生的核心部分. 基本的过程可以参看文献[ 3 ], 但是比较的过程有所不同, 可以参看图2, 选择在计数器的计数值为最小时三相缓冲寄存器对三相脉宽寄存器的值进行加载, 当计数器的计数值非最小时, 微处理器可以更新脉宽寄存器的值而不影响最终的三相同步关系. 在上电第一个周期内让寄存器的值自动进入缓冲器, 然后在正确的时间启动计数器. 并不是一上电程序就立即启动计数器, 控制寄存器中的B it0 位用来控制计数器. 只有当控制寄存器
的值已经加载了, 并且在B it0 位允许的情况下才启动计数器.

1. 3 死区模块
死区模块是最独立的一个模块. 为了避免同一相上下桥臂直通现象, 必须在上下桥臂的触发信号中加入延时. 这段延时时间里上下桥臂都无驱动信号, 也就是所谓的死区. 死区时间的选择必须符合一定条件. 另外若原始信号比较宽, 死区时间比较短, 则死区对PWM 影响不大, 但是若原始信号变窄死区时间过长, 则会使上下管在整个PWM 输出周期中没有输出, 为此应保证原始脉宽不小于三倍的死区时间. 这里选用的死区寄存器为8 位, 所以死区时间为0~ 256 倍的FPGA的基本时钟周期. 可以通过程序在微处理器里面进行灵活调整.

图2 三相基本脉冲产生原理图

图2 三相基本脉冲产生原理图

图2 三相基本脉冲产生原理图
F ig. 2 The p roduce p rincip le of th ree phase based

1. 4 保护模块
来自IGBT IPM 模块的6 路故障输出信号经过光耦后(1 为正常, 0 为有故障) 直接进入FPGA 与“1111111111”进行并位处理构成16 位存入保护寄存器内. 设计要求是在6 路的IGBTIPM 故障输出信号中, 只要其中有一路为0, 立即封锁所有的IGBT IPM 触发信号, 同时由f lag信号线向微处理器发一个信号, 微处理器确认后,利用软件关断IGBT IPM 的控制信号, 并对保护存器内的值进行读取, 然后判断是哪一路管子故障, 做出相应的处理, 以待故障消除后, 装置重新投入运行. 考虑可以输出单相或是两相电压, 结合控制寄存器与保护寄存器的值, 单独给出了三相PWM 输出使能信号. 在6 路故障输出信号都正常的情况下, 通过修改控制寄存器的值, 可随意选择输出的单相、两相或是三相波形. 这部分的实现比较简单, 但它监控着所有的IGBT 管的正常运行, 下面给出了它作为一个子进程的完整程序.
游客,如果您要查看本帖隐藏内容请回复


已绑定手机
已实名认证
发表于 2023-6-5 16:37:28 | 显示全部楼层 来自 广东省深圳市宝安区
专业,很好!
已绑定手机
发表于 2023-6-5 16:40:02 | 显示全部楼层 来自 波兰
有趣的话题。感谢
已绑定手机
发表于 2023-6-7 08:52:20 | 显示全部楼层 来自 广东省深圳市
谢谢资料分享。。。。。。。。。。。。。
已绑定手机
发表于 2023-6-7 21:04:49 来自手机 | 显示全部楼层 来自 陕西省咸阳市
不错的帖子,学到了学到么
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表