前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >低功耗设计 | level shifter

低功耗设计 | level shifter

作者头像
数字芯片社区
发布2022-02-11 08:30:27
5.6K0
发布2022-02-11 08:30:27
举报
文章被收录于专栏:数字芯片

在 multi-voltage design 中,常常用到level shifter; 本文简单介绍: 什么是 level shifter? 何时需要用到level shifter? level shifter的插入位置?

什么是 level shifter?

在multi-voltage design中,将信号从一个power domain到另一个power domain需要一个Level Shifters(电压/电平转换器)。level shifter用作缓冲器,输入端有和输出端的电压域不同,若不进行电压转换,可能无法正常工作;

这种cell在我们使用的IO中也广泛存在,用于将外部的电压与core电压之间进行转换。

此外,如果设计中还采用了Power Gating技术,在不同电压域之间进行通信的情况下,除了需要添加Level Shifter之外还需要用到另外一种cell :低功耗设计 | isolation cell

从高电压到低电压的level shifter,可以是两个反相器的串联:

何时需要用到level shifter?

根据电平转换的方向,Level Shifter可以分为三种:

  • HL -> 高电平转低电平
  • LH -> 低电平转高电平
  • HL_LH -> 双向转换均可

需要在两个Power domain之间插入level shifter的情况有三种:

  • VDD_PD1 < VDD_PD2;
  • VDD_PD1 > VDD_PD2;
  • VDD_PD1 > VDD_PD2且两者相差不多;

情况1和情况2如果不插入level shifter,可能造成功能错误或者芯片不稳定;

情况3虽然VDD_PD1传入VDD_PD2可能能够正确识别逻辑功能,但是由于VDD_PD1和VDD_PD2不是完全相同,为了保证时序,还是需要插入level shifter;

如果是高电平域的信号输出到低电平域,由于低电平域器件的阈值电压低,直接接高电平信号有可能会造成误抖动;

如果是低电平域信号输出到高电平域,由于高电平域器件的阈值电压高,所以高电平域器件很难区分低电平域信号的0/1,如果直接连接会有驱动不足等问题;

建议: 不管是从高到低转换还是从低到高转换,都要加上level shifter。Level shifter通常不具备逻辑功能,只是用于不同电压值之间的信号电平的转换,也就是Level shifter并不会影响逻辑设计,它只是一个电压转换的buffer;所以level shifter不会对功能仿真造成影响,不需要去写验证激励来测试;

level shifter的插入位置?

上面这个列子是一个buffer类型的Level shifter, 逻辑上相当于一个buffer,只是输入输出的电压不一样。

上面这个例子是带ISO的level shifter,将两个cell合成一个,叫做enable level shifter (ELS)

比如当下图中信号从AON block传输到PD1时,需要加Level shifter。 当信号从PD1传输到PD2时,由于PD1是power gating模块,所以需要在PD1和PD2之间加带Isolation 功能的Level shifter cell(ELS:Enable Level shifter)。

又例如: 下图,PD1是可被关断的,PD1与PD2、PD1 与PD3之间用的Level Shifter就是带有Isolation功能的Level Shifter。而PD2是Always On的,所以PD2与PD3的数据只需要用普通的Level Shifter即可。

Level Shifter可以加在信号的源(source)端,也可以加在信号的目的(destination)端。一般推荐加在目的端,因为不需要连secondary pg pin,更加节省资源。 也就是说:

  • 如果是高到低转换,放在低电压域,电源电压由低电压模块提供;
  • 如果是低到高转换,放在高电压域,电源电压由高电压模块提供;

但是这个规则并不绝对,具体要结合实际情况,比如要考虑功耗,时序等。

  • 高到低的level shifter只会引入一个buffer的延迟,对时序的影响较小。
  • 低到高的level shifter会带来比较大的延迟,对于时序影响大,需要更加注意。

Liberty low-to-high level shifter,仅供参考

代码语言:javascript
复制
cell(Buffer_Type_LH_Level_shifter) { 
is_level_shifter : true; 
level_shifter_type : LH ; 
pg_pin(VDD1) { 
voltage_name : VDD1; 
pg_type : primary_power; 
std_cell_main_rail : true; 
} 
pg_pin(VDD2) { 
voltage_name : VDD2; 
pg_type : primary_power; 
} 
pg_pin(VSS) { 
voltage_name : VSS; 
pg_type : primary_ground; 
} 
... 
pin(A) { 
direction : input; 
related_power_pin : VDD1; 
related_ground_pin : VSS; 
input_voltage_range ( 0.7 , 0.9); 
}
direction : output; 
related_power_pin : VDD2; 
related_ground_pin : VSS; 
function : "A"; 
power_down_function : "!VDD1 + !VDD2 + VSS"; 
output_voltage_range (1.1 , 1.3); 
... 
... 
}

参考资料

  • <Synopsys®Low-Power Flow>
  • https://www.eda365.com/thread-452629-1-1.html
  • https://zhuanlan.zhihu.com/p/146526532
  • https://blog.csdn.net/qq_36480087/article/details/111592692
  • https://mp.weixin.qq.com/s/NiNelx9Jm_6l_AjgWJRItA
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字ICer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 level shifter?
  • 何时需要用到level shifter?
  • level shifter的插入位置?
  • Liberty low-to-high level shifter,仅供参考
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档