5141|4

16

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

如何实现上下管pwm互锁??? [复制链接]

本帖最后由 hmf1235789 于 2018-2-2 17:53 编辑

请教大家一个问题,如何实现igbt上下管的pwm互锁,防止上下管同时出现高电平而导通。要求:上管PWMA=1的时候,下管失效PWMB=0;下管PWMB=1的时候,上管失效PWMA=0。用门极或锁存电路实现,因为我最后要用Verilog来写程序。
正常情况下或者在cpld里面分频后是互补的pwm波,加上死区就可以用了。但是如果是外来pwm的情况,为了防止出现同时为高,需要做一个这样的处理。
我自己写了的如下:
  1. //pwm_up_in pwm_dw_in互锁输出always @(posedge clk)
  2.         if(rst)
  3.                 pwm_up <= 1'b0;
  4.         else
  5.                 if(pwm_up_in && pwm_dw)
  6.                         pwm_up <= 1'b0;                                                                                                        //
  7.                 else
  8.                         pwm_up <= pwm_up_in;
  9.                
  10. always @(posedge clk)
  11.         if(rst)
  12.                 pwm_dw <= 1'b0;                                                                                                                //
  13.         else
  14.                 if(pwm_dw_in && pwm_up)
  15.                         pwm_dw <= 1'b0;                                                                                                        //
  16.                 else
  17.                         pwm_dw <= pwm_dw_in;
复制代码

这段代码出现的问题是,在复位时刻pwm_up,pwm_dw都是为0的,程序会进入全1或全0的循环当中。
我也画了这个图,不知道可不可以?


QQ图片20180202174623.jpg (74.17 KB, 下载次数: 0)

QQ图片20180202174623.jpg
此帖出自FPGA/CPLD论坛

最新回复

1、该功能用语言描述的话应该没那么复杂,只要把一路的导通条件加到另一路的复位(注意:须非同步复位)条件里,立马封死另一路的导通即可。 2、写逻辑时还可考虑避免实际器件ON、OFF延迟时间不等,切换时存在瞬间上下同时的问题。比如用A路封杀B路时,再or上一点延迟什么的,这些小技巧在FPGA上做比画电路容易得多。   详情 回复 发表于 2018-3-6 09:04
点赞 关注
 

回复
举报

2万

帖子

0

TA的资源

超级版主

沙发
 
我也画了这个图,不知道可不可以?

可以。
不过,从实际应用考虑,采用四二输入与非门更适当。
此帖出自FPGA/CPLD论坛
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
最后这样行不行。
  1. //pwm_up_in pwm_dw_in互锁输出
  2. always @(posedge clk or posedge rst or posedge pwm_dw)
  3.         if(rst)
  4.                 pwm_up <= 1'b0;                                                                                                               
  5.         else
  6.                 if(pwm_dw)
  7.                         pwm_up <= 1'b0;                                                                                                        //异步触发,当dw为1时,up恒为0
  8.                 else
  9.                         pwm_up <= pwm_up_in;                                                                                                //当dw为0时,up无限制

  10. always @(posedge clk or posedge rst or posedge pwm_up)
  11.         if(rst)
  12.                 pwm_dw <= 1'b1;                                                                                                                //复位时dw锁定,防止出现up_in=dw_in=1
  13.         else
  14.                 if(pwm_up)
  15.                         pwm_dw <= 1'b0;                                                                                                        //异步触发,当up为1时,dw恒为0
  16.                 else
  17.                         pwm_dw <= pwm_dw_in;                                                                                                //当up为0时,dw无限制
复制代码

搜狗截图20180206112157.jpg (51.84 KB, 下载次数: 0)

搜狗截图20180206112157.jpg
此帖出自FPGA/CPLD论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

4
 
用两个d触发器进行互锁,其中一路在变成1之前监测另一路的输出,如果另一路输出为1,则本路强制输出0;如果另一路输出为0,则本路=输入变化。另一路也做相同的判断。这样在任意时刻都只有一路为1,但是如果是在复位时刻, pwm_up和pwm_dw都会被清为0,然后寄存器保持,如果复位后两路pwm_in=1,则会出现误判,所以只要将其中一路 pwm_dw <= 1'b1; 就可以避免复位导致同时为0。另外d触发器用异步清零和置位。
此帖出自FPGA/CPLD论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

5
 
1、该功能用语言描述的话应该没那么复杂,只要把一路的导通条件加到另一路的复位(注意:须非同步复位)条件里,立马封死另一路的导通即可。

2、写逻辑时还可考虑避免实际器件ON、OFF延迟时间不等,切换时存在瞬间上下同时的问题。比如用A路封杀B路时,再or上一点延迟什么的,这些小技巧在FPGA上做比画电路容易得多。
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表