功耗越低,同等电量下电子产品工作时间越长,便携性设备的电池容量和体积设计的困难度也会降低。例如,手机越做越薄,性能还不受影响,就是因为低功耗设计发挥了至关重要的作用。
功耗越大,耗能越多,产生的热量越多,各器件的工作性能就会受到影响。例如,手机使用时间较长时,会感觉手机发热,而且各应用软件也会出现卡顿的现象。
不考虑低功耗设计时,一个功能的实现方法可能较为繁琐,实现的器件增多,产品面积增大;同时,功耗过大时,就要考虑散热装置,这又增加了组装成本。 总之,低功耗设计有很多的优点,也是以后数字设计的发展趋势。
功耗类型一般可分为动态功耗、静态功耗和浪涌功耗。
动态功耗主要包括开关功耗(又称为翻转功耗)和短路功耗(又称为内部功耗)。
1、开关功耗
在 CMOS 数字电路中,对负载电容进行充放电时消耗的功耗为开关功耗。如下 CMOS 非门:

当 Vin = 0 时,上面的 PMOS 导通,下面的 NMOS 截止;VDD 对负载电容 Cload 进行充电。充电完成后,Vout 的电平为高。
当 Vin = 1 时,上面的 PMOS 截止,下面的 NMOS 导通,负载电容通过 NMOS 进行放电。放电完成后,Vout 的电平为低。
这样一开一闭的变化,即电源的充放电,就形成了开关功耗。开关功耗的计算公式如下所示:

其中,VDD 为供电电压,Cload 为后级电路等效的负载电容,Tr 为输入信号的翻转率。
2、短路功耗
信号的翻转不是在瞬时完成的。因此,在输入信号进行翻转时,PMOS 和 NMOS 总有一段时间是同时导通的,那么从电源 VDD 到地 VSS 之间就有了通路,形成短路电流,产生短路功耗。如下反相器电路图所示:

短路功耗的计算公式如下:

其中,Vdd 为供电电压,Tr 为翻转率,Q 为一次翻转过程中从电源流到地的电荷量。
静态功耗
在 CMOS 电路中,静态功耗主要是漏电流引起的功耗,往往与工艺有关。

漏电流的组成主要为:PN 结反向电流 I1、源极和漏极之间的亚阈值漏电流 I2、栅极漏电流(包括栅极和漏极之间的感应漏电流 I3)、栅极和衬底之间的隧道漏电流 I4。
一般情况下,漏电流主要是指栅极泄漏电流和亚阈值电流。对于超深亚微米工艺,隧道漏电流成为主要电流之一。
静态功耗的计算公式如下:

浪涌功耗
浪涌功耗是浪涌电流引起的功耗。浪涌电流是指开机或者唤醒时,器件流过的最大电流,因此浪涌电流也称为启动电流。浪涌功耗不是本次所讨论的内容。
下面是一种 library 工艺的前几行代码描述,包含功耗有关的参数,具体含义在注释中说明。
library (xxx) {
/* library head: xxx */
technology (cmos) ;
simulation : true ;
nom_process : 1 ;
nom_temperature : -40; //默认温度
nom_voltage : 0.81; //默认电压
voltage_map(VDD, 0.81); //定义lib中多个电压,包括以下几行
voltage_map(TVDD, 0.81);
voltage_map(VDDDST, 0.81);
voltage_map(VDDGR, 0.81);
voltage_map(VDDSRC, 0.81);
voltage_map(VSS, 0);
operating_conditions("ssg0p81vm40c"){ //一种corner定义
process : 1; /* SSGlobalCorner_LocalMC_MOS_MOSCAP-SSGlobalCorner_LocalMC_RES_BIP_DIO_DISRES */
temperature : -40;
voltage : 0.81;
tree_type : "balanced_tree";
}
default_operating_conditions : ssg0p81vm40c ;
capacitive_load_unit (1,pf) ; //定义电容单位
voltage_unit : "1V" ; //定义电压单位
current_unit : "1mA" ; //定义电流单位
time_unit : "1ns" ; //定义时间单位
pulling_resistance_unit : "1kohm";
define_cell_area (pad_drivers,pad_driver_sites) ;
……
一个 library 中会有多个基本功能单元,用关键字 cell 声明,也包含了多种功耗信息。
cell (AN2D0BWP7T40P140) {
area : 0.392;
cell_footprint : "an2d1";
pg_pin (VDD) { //电源引脚
pg_type : primary_power;
voltage_name : VDD;
}
……
pin(A1) { //输入信号引脚
driver_waveform_fall : "tcbn22ullbwp7t40p140ssg0p81vm40c:fall";
driver_waveform_rise : "tcbn22ullbwp7t40p140ssg0p81vm40c:rise";
direction : input;
related_ground_pin : VSS; //输入引脚地端
related_power_pin : VDD; //输入引脚电压
capacitance : 0.000418924 ; //输入引脚电容
……
}
pin(Z) {
direction : output;
power_down_function : "!VDD + VSS";
function : "(A1 A2)";
related_ground_pin : VSS; //输出引脚地端
related_power_pin : VDD; //输出引脚电压
max_capacitance : 0.04182; //输出引脚最大电容
min_capacitance : 0.00013; //输出引脚最小电容
……
}
此时,如果再知道翻转率,就可以计算出动态功耗。
翻转率(Toggle rate,Tr),指单位时间内信号(包括时钟、数据等信号) 的翻转次数。如下所示,信号在 40ns 时间内跳转了 4 次,则翻转率为 Tr = 4/4ns = 0.1GHz。

cell 定义中,内部功耗会有如下定义。
internal_power() {
related_pin : "A1" ;
related_pg_pin : VDD ;
rise_power(power_template_8x8) { //内部功耗查找表
index_1("0.0026, 0.0101, 0.0252, 0.0553, 0.1155, 0.236, 0.4769, 0.9587");
index_2("0.00013, 0.00046, 0.00112, 0.00243, 0.00506, 0.01031, 0.02081, 0.04182");
values ( \
"0.000249215, 0.000254481, 0.000262354, 0.000261007, 0.00026381, 0.000277799, 0.000304295, 0.000345046", \
"0.000239751, 0.000248667, 0.000255454, 0.0002551, 0.000268563, 0.000275995, 0.000294669, 0.000336529", \
……
);
}
fall_power(power_template_8x8) { //内部功耗查找表
index_1("0.0026, 0.0101, 0.0252, 0.0553, 0.1155, 0.236, 0.4769, 0.9587");
index_2("0.00013, 0.00046, 0.00112, 0.00243, 0.00506, 0.01031, 0.02081, 0.04182");
values ( \
"0.000577367, 0.000584652, 0.000589472, 0.000591623, 0.000592223, 0.000591943, 0.00059185, 0.000592132", \
"0.000563896, 0.000570743, 0.000576589, 0.000579818, 0.000580794, 0.00057962, 0.000579997, 0.000579136", \
"0.000550059, 0.000555794, 0.00056188, 0.000565568, 0.000567663, 0.000567231, 0.000567712, 0.00056745", \
……
);
}
}
cell 的内部功耗与其转换时间和输出电容负载有关。根据输入转换时间和输出电容的大小,在工艺库中进行查表,得到上升功耗和下降功耗,再根据下面公式进行计算,可得到总的内部功耗:

cell 定义中,静态功耗(漏电功耗)会有如下定义。
leakage_power () {
value : 0.059561;
related_pg_pin : VDD;
}
leakage_power () {
value : 0.048082;
when : "!A1 !A2 !Z";
related_pg_pin : VDD;
}
leakage_power () {
value : 0.053318;
when : "!A1 A2 !Z";
related_pg_pin : VDD;
}
……
静态功耗跟 cell 的状态有关,也就是输入输出信号在不同的状态下,功耗也会有所差异。通过状态进行查表,就可以得到相应的静态功耗了。 实际分析功耗时,不会手动的去查找相关参数来计算功耗,否则工作量会大到难以估计。往往是借助一些功耗分析工具,提取这些标准单元库的功耗信息进行整合计算。
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法 实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电
昨晚看到IDEA官推宣布IntelliJIDEA2023.1正式发布了。简单看了一下,发现这次的新版本包含了许多改进,进一步优化了用户体验,提高了便捷性。至于是否升级最新版本完全是个人意愿,如果觉得新版本没有让自己感兴趣的改进,完全就不用升级,影响不大。软件的版本迭代非常正常,正确看待即可,不持续改进就会慢慢被淘汰!根据官方介绍:IntelliJIDEA2023.1针对新的用户界面进行了大量重构,这些改进都是基于收到的宝贵反馈而实现的。官方还实施了性能增强措施,使得Maven导入更快,并且在打开项目时IDE功能更早地可用。由于后台提交检查,新版本提供了简化的提交流程。IntelliJIDEA
介绍pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等测试用例的skip和xfail处理可以很好的和jenkins集成
📝学技术、更要掌握学习的方法,一起学习,让进步发生👩🏻作者:一只IT攻城狮。💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看,更准确、更专业。💐学习建议:2、然后记住每个技术最关键的特性(通常一句话或者几个字),从主线入手,由浅入深学习。❤️《SpringCloud入门实战系列》解锁SpringCloud主流组件入门应用及关键特性。带你了解SpringCloud主流组件,是如何一战解决微服务诸多难题的。项目demo:源码地址👉🏻SpringCloud入门实战系列不迷路👈🏻:SpringCloud入门实战(一)什么是SpringCloud?SpringCloud入门实战
当引用此block时,此弃用消息对我来说意味着什么?defjson_response(object,status=:ok)renderjson:object,status:statusend编辑讯息:Rails6.1willreturnContent-Typeheaderwithoutmodification…use#media_typeinstead 最佳答案 当我将我的应用程序从Rails5.2.3升级到Rails6.0.0-rc1时,我收到了同样的错误消息config/application.rb#thiswastheline
文章目录一,什么是kaliPurle(卡利紫)二,如何安装kaliPurple。(有步骤没图片直接是默认)1,复制它的下载链接到迅雷可以让你下镜像变得更快。2,打开你的虚拟机创建新的虚拟机3,点击后面浏览然后找到镜像的所在地选中确定,下一步4,这里默认就可以,因为Ubuntu和这个差不多架构。5,然后,名字自己改一下,然后把他安到你想要装的盘,容量默认。之后一直下一步就可以**6,打开它,然后第一个图形界面安装,直接回车,然后选中文点continue之后没有图片的直接点继续。7,密码想设什么设什么。然后一直继续到我的图片那里改一下就可以了。8,软件默认就行。9,耐心等待。然后点手动配置dvc然
目录关于MPU6050芯片关于小板关于厂家和DATASHEET关于漂移关于角加速度还是角速度关于精度和量程(可调,可选)关于功耗,陀螺仪+加速器工作电流:3.8mA(全功率,陀螺仪在所有速率下,在1kHz采样率下加速)采样率高,功耗也高可以参考 MPU6050陀螺仪与Processing和匿名上位机飞控联动实录-知乎关于MPU6050芯片MPU6050传感器模块是6轴运动跟踪设备。包含3轴陀螺仪、3轴加速度计、运动处理器、温度传感器。I2C总线接口,可与微控制器进行通信。通过辅助I2C总线与其他传感器设备通信,如3轴磁力计、压力传感器等。如果3轴磁力计连接到辅助I2C总线,则MPU6050可
MySQL为您提供了一个有用的字符串函数REPLACE(),它允许您用新的字符串替换表的列中的字符串。REPLACE()函数的语法如下:REPLACE(str,old_string,new_string);SQLREPLACE()函数有三个参数,它将string中的old_string替换为new_string字符串。注意:有一个也叫作REPLACE的语句用于插入或更新数据。所以不要将REPLACE语句与这里的REPLACE字符串函数混淆。REPLACE()函数非常方便搜索和替换表中的文本,例如更新过时的URL,纠正拼写错误等。在UPDATE语句中使用REPLACE函数的语法如下:UPDATE
工欲善其事,必先利其器。应该没有多少人会使用Quartus和vivado这些软件自带的编辑器吧,原因在于这些编辑器效率很低,VerilogHDL代码格式比较固定,通常可以利用代码片段补全加快书写。基本上代码写完之后才会打开Quartus或者vivado建立工程,这其实要求编辑器需要有代码检错的功能,否则可能编译时一直报错,什么信号没定义,信号定义错误之类的。Vscode利用插件可以实现此功能,可以达到一次设计就通过编译和仿真。1、vscode安装及解决下载速度慢 首先通过VisualStudioCode-CodeEditing.Redefined安装vscode软件,如图1下载64位vs