[转贴]寄存器传输级的低功耗设计方法

RTL设计:数字芯片的寄存器传输级语言解析 寄存器传输级(RTL)是数字电路设计的核心抽象层次,它通过硬件描述语言(HDL)如Verilog/VHDL精确描述数据在寄存器间的传输行为。RTL设计遵循时钟同步原则,每个时钟周期控制数据的流动与处理,其本质是对硬件行为的周期精确建模。在工程实践中,RTL需要满足可综合编码规范,并采用数据路径与控制路径分离的架构设计。随着芯片复杂度提升,RTL验证技术如VCD波形分析和形式验证变得至关重要。现代设计还涉及低功耗优化和时序收敛等挑战,而高层次综合(HLS)和Chisel等新方法正在改变传统RTL设计流程。掌握 阅读详情

除了芯片的速度和面积等,人们对低功耗的期望也越来越高,因而在IC设计中加入低功耗设计非常必要。寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法,经验证对动态功耗的降低很有效。

自集成电路问世以来,设计者在单个芯片上集成的晶体管的数量呈现出令人惊讶的增长速度。近30年,集成电路的发展一直遵循着“摩尔定律”:集成在芯片上的晶体管的数量每18个月就翻一番,芯片成本也相应下降。

图1:CMOS电路功耗的主要来源是动态功耗,
由开关电流和短路电流造成。

在半导体工艺水平不断进步的同时,以电池供电的手持设备和膝上电脑也迅速普及,系统的功耗有时已经成为系统设计首要考虑的因素,因此,低功耗设计成为发展移动系统必然要解决的问题。

集成电路的低功耗设计分为系统级、寄存器传输级、门级、电路级四个层次,而在这其中,寄存器传输级的低功耗设计对优化整个系统功耗的贡献达到20%-50%,这是非常巨大的比例。因而,在寄存器传输级进行低功耗设计是非常值得,也是很有必要的。

集成电路中功耗的来源

目前,CMOS工艺在集成电路特别是数字IC中应用得很普遍。由于CMOS电路在输入稳定的时候总有一个管子截止,所以它的静态功耗在理想情况下应该是零,但这并不代表静态功耗真的为零,实际上CMOS电路的静态功耗就是指电路中的漏电流(这里不考虑亚阈值电流)。

CMOS电路功耗的主要来源是动态功耗,它由两部分组成:开关电流和短路电流。所以,整个CMOS电路的功耗为:

P=PTurn+Pleakage+Pshort

其中,PTurn是开关电流ITurn产生的动态功耗;Pshort是动态情况下P管和N管同时导通时的短路电流Ishort产生的动态功耗;而Pleakage 是由扩散区和衬底之间的反向偏置漏电流Ileakage产生的静态功耗。如图1所示。

图2a:传统的设计。
图2b:增加了门控时钟的设计。

在这三项中PTurn大约占电路功耗的80% ,因而这里就只考虑开关电流ITurn所产生的动态功耗PTurn。ITurn是这样产生的:在CMOS电路,当输入为“0”时,PMOS导通,电源通过PMOS向负载电容充电;而当电路输入为“1” 时,负载电容又会通过NMOS向地放电。ITurn就是不断对负载电容充放电所产生的开关电流。

一个CMOS反相器由开关电流引起的平均动态功耗是:PTurn=CLVDD2f

其中,CL是负载电容,VDD是电路的电压,f是时钟频率。所以,要想降低电路的功耗就应该降低电路的电压和频率。

寄存器传输级的低功耗设计

图3a:最基本的加法器设计。
图3b:采用操作数隔离方法设计的加法器。

寄存器传输级的低功耗设计方法有很多种,本文只列举三种最为常用的设计方法:门时钟、操作数隔离及存储器分区访问。

1.门控时钟

从上面的讨论知道,CMOS电路的功耗是和频率有着密切关系的,因此动态的关闭处于空闲状态的时钟具有明显的节电效果。

图2a是传统的设计:系统的时钟直接接到D触发器的时钟输入端,不管什么情况,只要输入的Clock翻转,触发器就会工作,整个系统也一直不断的运行。而图2b是增加了门控时钟的设计:当系统正常工作时,译码出来的En信号为高,则触发器可以正常锁存数据;当系统处于空闲状态时,把En信号清零,这样,由于给触发器的Clock一直保持零,不会发生翻转,所以触发器不会锁存新的数据,整个系统被挂起,系统将进入低功耗模式。

在电路中加入门控时钟很容易,可以用Verilog直接在描述中加入,也可以通过Synopsys的工具PowerCompile自动加入。通过加入门控时钟,系统可以有选择的停止不相关模块的时钟,以最大程度的节省动态功耗。

2.操作数隔离

这种方法主要是对系统中的算术、逻辑运算模块进行低功耗设计,其主要思想就是:在不进行算术、逻辑运算的时候,使这些模块的输入保持“0”,不让操作数进来,输出结果不会翻转;而如果进行这方面的运算时,再将它们打开。

图4:存储器分块访问实例。

这种方法在很多人看来是理所当然的,认为就应该是这样设计。然而在实际中,设计者一方面关心模块的功能,另一方面迫于设计时间的压力,所以很多设计中的细节没有考虑。如图3a,一个加法器的两个输入端没有经过任何逻辑直接进入加法器,系统不管是否需要加法运算,加法器都一直工作着,输出不断翻转着,这对系统的动态功耗是很大的浪费,而且数据总线越宽浪费的功耗越多;图3b 则用操作数隔离的方法进行设计:当系统不需要加法运算的时候,Adder_en信号为“0”,则加法器的两个输入端都保持“0”, 其输出不会发生任何翻转,不会产生动态功耗,而如果需要进行加法运算时,Adder_en变成“1”,加法器正常工作。

当对系统里所有的算术、逻辑运算单元都用上这种方法必然会对系统的动态功耗有很大的优化,在芯片面积方面,如图3b所示的,所增加的逻辑仅仅是几个多路器而已。

3.存储器分块访问

一个系统里少不了存储器,存储器的功耗在整个系统里所占的比例不可忽视。因而降低存储器的功耗,对于整个芯片系统的功耗优化很有帮助。

这里提出一种叫做存储器分块访问的方法来降低存储器的功耗。主要思想是:将系统所需要一定容量的存储器分成两块,然后用高位地址线进行片选译码。结合下面的实例:

假设一个系统需要128K的RAM,如图4所示,我们选用两块64KB的RAM。CPU给出了17位地址线,其中低16位地址线直接提供给两个RAM,最高位地址线接到下面RAM的片选端CS,而这根地址线经过一个反相器接到另一个RAM的片选端。通过这种方法,不管从CPU 出来的什么样的地址,则每次只会选中一个64KB的RAM。如果采用单块128KB的RAM,则每次都要选中一块128KB的RAM。众所周知,一块64KB RAM的功耗要远小于一块128KB RAM的功耗。这样从存储器这一方面,又为系统节省了功耗。

表1:一款SIM卡芯片设计优化
前后功耗及芯片面积的对比。

功耗和面积永远是相矛盾的,如果想要降低系统的功耗,必然要加上一些控制逻辑来进行功耗优化,而这部分逻辑会增加芯片的面积,所以在功耗和面积之间就要有个折衷。上面的三种寄存器传输级的低功耗设计,不会增加很多逻辑,因而对芯片面积的影响不大。而经过了这三种低功耗设计,使整个系统动态功耗的改善很明显。例如,使用功耗仿真工具powermill对一款SIM卡芯片设计进行管级功耗仿真,这里采用的是华杰的0.25um的标准单元库,表1是优化前后功耗及芯片面积的对比。

从表1可以看到,经过低功耗设计后的芯片平均动态电流比优化前降了16%,然而优化前后芯片的面积没有发生改变,因而,上面的三种设计方法对于降低系统动态功耗是非常有效的。

本文小结

本文首先分析了CMOS电路功耗的来源,基于这个理论基础介绍了三种寄存器传输级的低功耗设计方法,最后,通过一款手机SIM卡芯片的功耗优化并进行仿真,得出结论:这三种方法对降低系统功耗有很大的帮助,而且几乎没有增加芯片的面积。

作者:周江瑜,赵育新
北京中电华大电子设计有限责任公司

数字 IC 前端设计 13 项技能拆解:从 Verilog 到 EDA 工具的 3 个月学习规划 本文详细拆解数字IC前端设计的13项核心技能,提供从Verilog基础到EDA工具实战的3个月系统学习规划。涵盖数字电路原理、Verilog编程规范、EDA工具链协同及AMBA总线协议等关键技术,帮助初学者高效掌握硬件描述语言与芯片设计流程,快速提升数字IC前端设计能力。 阅读详情

相关推荐

2-11、秋招年6月晋升期——《硬件架构的艺术-数字电路的设计方法与技术》

2-11、秋招年6月晋升期——《硬件架构的艺术-数字电路的设计方法与技术》

HoneyIC的博客 328

一文详解存储器访问和总线

这一篇主要来介绍存储区——K9K8G08U0E-SIB0,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的。 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数。   1. 存储器   前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据。 在这个简单的模型中,存储器是一个线性...

q695532839q的博客 3618

Conformal low power-2.电源感知等效性检查

电源感知等效性检查是一种高级方法,用于从寄存器传输级(RTL)到布局和布线的功能验证。电源感知等效性检查取代了边界检查,后者只能用于验证已经插入隔离的两个网表。电源感知等效性检查提供以下功能:低功耗设计等效性检查状态元素域一致性检查能够处理单元建模、开关建模和保持实例电源意图比较状态保持策略比较注意:在电源感知等效性检查中,不需要移位器、保持单元和开关单元的插入。

QRBQ 367

操作系统14————存储器管理之分段存储&段页存储

操作系统13————存储器管理之分页存储 一.目录 操作系统13————存储器管理之分页存储 一.目录 二.分段存储管理方式的引入 三.分段系统的基本原理 1.分段 2.段表 3.地址变化机构 4.分段和分页的主要区别 四.信息共享 1.分页系统中对程序和数据的共享 2.分段系统中对程序和数据的共享 五.段页式存储管理方式 1.基本原理 2.地址变化过程 六.参考资料 ...

冰炭不投day的博客 3539

4、逻辑综合技术的发展与应用

本文系统介绍了逻辑综合技术的发展历程与核心应用,涵盖从行为级到门级的综合流程,深入探讨了两级与多级逻辑最小化方法、技术无关与技术相关的优化策略,并结合低功耗和高性能设计案例分析实际应用。同时展望了逻辑综合在人工智能融合、新兴工艺适应和系统级综合等方面的发展趋势,展现了其在超大规模集成电路设计中提升设计生产力的关键作用。

44

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1877

处理器设计之低功耗

处理器基础

Christmaso的博客 4491

24GHz雷达DIY呼吸监测仪:用树莓派+TI IWR6843搭建生命体征检测系统(附Python代码)

本文详细介绍了如何利用树莓派和TI IWR6843毫米波雷达模块DIY非接触式呼吸监测仪。通过硬件选型、信号处理流水线设计和实时可视化系统搭建,实现高精度的生命体征检测,特别适合医疗健康和运动监测场景。附带的Python代码帮助开发者快速复现该系统。

rl6adventurer的博客 984

数字IC/FPGA面试宝典--经典60道例题详解

数字IC/FPGA面试笔试题,知识点详细讲解。

lgk1996的博客 1万+

SAP-FICO LSMW实战:批量导入财务凭证与固定资产主数据(AS91)的完整指南

本文详细介绍了SAP-FICO中LSMW工具在批量导入财务凭证与固定资产主数据(AS91)的完整流程与实战技巧。从基础概念、环境准备到财务凭证导入全流程,特别针对AS91历史资产导入的日期逻辑和关键字段映射提供了专项指南,并分享了常见错误排查与性能优化建议,帮助用户高效完成SAP数据迁移任务。

weixin_29230649的博客 505

振动能量采集技术:从原理到实战,破解物联网供电难题

能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考

weixin_42660494的博客 567

rtl低功耗方法总结

功耗来源=动态功耗+静态功耗 低功耗设计技术:时钟门控、电源关断、多电压供电、多电压阈值、动态调压调频/自适应调压 一、Clock Gating时钟门控: 1、模块级时钟门控 对模块整体进行门控,通过例化门控单元,将空闲模块的时钟关断或者降低时钟工作的频率 2、电路级门控 工具根据rtl自动综合出时钟门控电路 always @ (posedge clk or negedge rst_n) begin if(!rst_n) q <= 32'b0; else...

4502

YOLOv8改进 | 注意力机制 | 添加DAttention (DAT)注意力机制实现极限涨点

本文给大家带来的是YOLOv8改进DAT的教程,其发布于2022年CVPR2022上同时被评选为Best Paper,由此可以证明其是一种十分有效的改进机制,其主要的核心思想是:引入可变形注意力机制和动态采样点(听着是不是和可变形动态卷积DCN挺相似)。同时在网络结构中引入一个DAT计算量由8.9GFLOPs涨到了9.4GFLOPs。本文的讲解主要包含三方面:DAT的网络结构思想、DAttention的代码复现,如何添加DAttention到你的结构中实现涨点,下面先来分享我测试的对比图。

Snu77的博客 1万+

寄存器传输级的低功耗设计方法

转载: http://www.21ic.com/app/power/201102/76211_2.htm 除了芯片的速度和面积等,人们对低功耗的期望也越来越高,因而在IC设计中加入低功耗设计非常必要。寄存器传输级的低功耗设计对降低整个芯片的功耗作用非常显著,本文讨论的三种寄存器传输级低功耗设计方法,经验证对动态功耗的降低很有效。 自集成电路问世以来,设计者在单个芯片上集成的晶体管的数量呈现出...

helpbs 928

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛

15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。

qq_42135020的博客 1083

如何给数据添加高斯白噪声?

首先测试集应该是加噪声的,至于训练集需不需要加噪声就见仁见智了。我个人测试的结果是,训练集如果不加噪声的话效果特别差,如果加噪声的话效果就比较好接受,大家可以自己试试看。在轴承故障研究中免不了要涉及到给数据主动加入噪声的情况,一般我们加的是高斯白噪声。由于热噪声是由大量自由电子的运动产生的,其统计特性服从高斯分布,故常将热噪声称为高斯白噪声。的频谱是均匀分布的,好像白光的频谱在可见光的频谱范围内均匀分布那样,所以热噪声又常称为。定义一:如果一个噪声,它的瞬时值服从。又是均匀分布的,则称它为高斯白噪声。

weixin_50642818的博客 5220

笔试|面试|FPGA知识点大全系列(14)FPGA的低功耗设计

嗨,今天来学习关键路径与路径优化相关问题~ 微信关注《FPGA学习者》获取更多精彩内容对于FPGA或IC设计来说,功耗是一个绕不开的话题,今天我们就来看看,什么是FPGA的功耗?功耗包含哪些部分?又该怎么去降低这些功耗呢?总的来说,FPGA的功耗主要包含两大部分:静态功耗和动态功耗;静态功耗:在关断主电源或系统进入待机模式下产生的电流称为待机电流,由待机电流产生的功耗称之为:待机功耗,即静态功耗。当然,静态功耗也包括电路中由晶体管的漏电流所导致的功耗。动态功耗:动态功耗是门电路输出切换时,由逻辑转换所引起的

qq_40491102的博客 2723

【专栏导引贴】100+智能优化算法:从背景原理到代码实战(持续更新)

本专栏系统整理100+种现代优化算法,涵盖粒子群优化(PSO)、遗传算法(GA)、鲸鱼优化(WOA)等经典方法,以及白鲸优化(BWO)、非洲秃鹫优化(AVOA)等新兴算法。每篇详解包含生物启发原理、数学模型、代码实现及工程应用,采用统一编程风格,提供可直接运行的实例代码。专栏持续更新,旨在为研究者提供系统化的智能优化算法参考资料,实现从理论到实践的完整知识链。目前已收录23种算法,包括蚁群系统(ACS)、蝙蝠算法(BA)、天牛须搜索(BAS)等自然启发式优化方法。

qq_42212808的博客 3652

数字IC(SoC)低功耗设计方法总结

常见的低功耗设计方法总结,包括系统级低功耗、体系级低功耗、寄存器级低功耗、晶体管级低功耗

qq_41680066的博客 4664

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【低功耗】数字IC之低功耗设计

【低功耗】数字IC之低功耗设计

xulu1588的博客 1168

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

chapter5——低功耗设计

各种设计抽象级的设计方法学和技术介绍,以减少动态和静态功耗。

Sisyphus415的博客 1863

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

硬件架构的艺术(五)低功耗设计

温度升高->可靠性下降->需要保持低温环境,增加了成本。 功耗源: (1)浪涌:浪涌电流指器件上电时产生的最大瞬时输入电流(启动电流) (2)静态功耗: (3)动态功耗: ...

buzhiquxiang的博客 3096

《硬件架构的艺术》笔记(五):低功耗设计

能量以热量形式消耗,温度升高芯片失效率也会增加,增加散热片或风扇会增加整体重量和成本,在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支,产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。

qq_38156104的博客 2514

降低FPGA功耗的设计技巧

为了降低FPGA(Field-Programmable Gate Array)的功耗并提高其能效,我们需要深入理解FPGA的工作原理和功耗模型。FPGA的功耗主要由静态功耗和动态功耗组成。静态功耗是指电路处于非活动状态时的功耗,而动态功耗则是在电路工作时产生的功耗。

FPGA/MATLAB学习教程/源码/项目合作开发 2920

5 低功耗设计

5.2 功耗源 浪涌、静态功耗、动态功耗 是三个主要的功耗源。浪涌电流指的是期间上电的时候产生的最大输入电流,也称之为启动电流。 电机的启动电流是正常满载电流的数倍。 基于SRAM 的FPGA浪涌电流也很大,因为其初始状态是空白的或者可以理解为复位导通状态,加载配置连接之后就恢复长长电流 待机电流、晶体管漏电流、电容漏电流也就是静态功耗 动态功耗是由逻辑切换的时候造成的额外输出功耗 ...

m0_38053897的博客 327
上一篇: Linker Script 链接器脚本(2)
下一篇: 在mac中使用gitflow
firststp
博客等级 码龄24年 4粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值