傻白入门芯片设计,如何降低CPU功耗?(八)

低功耗芯片设计是本世纪以来最重要的新兴设计方法。可以说没有低功耗设计,就没有今天的智能手机,移动设备,物联网,及高性能计算等产业。随着芯片图形尺寸越来越小,低功耗设计在现在及未来的芯片中会起到越来越重要的作用。低功耗技术也贯穿整个SoC设计的流程,可以预见的是低功耗设计也将越来越重要,所以深入理解低功耗技术是我们芯片设计进阶的必经之路

目录

一、为什么要降低芯片功耗

二、集成电路的功耗来源

(1)动态功耗可以分为:

(2)静态功耗:

(3)动态和静态功耗总结:

三、不同结构的功耗组成

四、如何降低功耗

(1)从算法优化的角度:

(2)从模块级角度:

五、总结


一、为什么要降低芯片功耗

功耗(Power)和能量(Energy)是两个完全不同的概念,但是生活中很多人会把他们混淆起来。功耗是一个瞬时的概念,而能量是一个时间内的消耗。能量=功耗*时间。

这事儿其实好理解,原因很多,比如电源网络不好设计,芯片容易失效等等。但是最重要的我认为就三点(敲黑板):

续航太短,散热太大,成本太高。

1.提高电池供电的电子产品的使用时间(针对续航太短)。

这个是大家最直观的感受。比如手机,现在“充电五分钟,通话两小时”已经是标配了。如果是“充电两小时,通话五分钟”那场景不忍直视了。还有,电动汽车,现在的电池容量和续航里程已经是直接的竞争指标了。记得最深刻的是,当年高通骁龙820就是功耗没做好,输给了麒麟920,给了华为麒麟崛起的机会。现在华为手机电池耐用已经深入人心了。可以看到,低功耗技术直接决定商业竞争的成败,这是“几千亿的大生意”啊(手动狗头)!

2. 提高设备的可靠性(针对散热太大)

随着设备消耗能量,会产生热量。功耗越大,产生热量越快。如果不能及时散热,那么设备温度就会升高。温度升高可能导致设备不能正常工作甚至损坏。所以有些芯片会在温度升高时候,把频率降低,本来能跑2GHz的CPU,温度高了就只能跑1G,这个以前在用手机玩游戏的时候体验比较明显。你肯定不乐意用个核显还非要上个水冷。

3. 降低成本(针对成本太高)

功耗越大,产生热量越快,对封装,散热系统等要求越高。比如,低功耗的只需要塑料封装就能保证正常功能,高功耗的就可能需要陶瓷封装,成本自然就高很多。再比如,低功耗的可能自然散热就能保证正常功能,高功耗的可能需要水冷,加铜片等等,这些都会导致成本上升。成本的高低直接决定商业的成败,可能你能做出功能很强的产品,但是如果做出来没人买的起,或者同等功能下,别的公司成品低很多,那也是一个失败的产品。

所以综上所述,功耗要尽量做小就是了。

二、集成电路的功耗来源

既然要优化功耗,我们先看看功耗是怎么造成的。现代大规模集成电路里面广泛用的是CMOS, Complementary Mosfet, 互补的晶体管。原理上上下两个晶体管不同时导通,应该没有功耗,妥妥的永动机(狗头)。但实际上有非理想因素在,功耗就是这么产生的。芯片的功耗=动态功耗+静态功耗动态功耗是设备运行时或者说信号改变时所消耗的功耗;静态功耗是设备上电但是信号没有改变时所消耗的功耗;这里要注意的是:在设备运行时,也需要消耗静态功耗的,因为设备运行时也是上电状态。功耗分类把静态功耗单独拿出来,只是为了理论分析方便。

(1)动态功耗可以分为:

  • 翻转功耗(有的地方称为开关功耗,但是笔者认为这个名字不准确,因为开关包含的功耗很多,其实是从英文switching power翻译过来,从switching可以看到,名称想表现是动作。所以称为翻转功耗比较准确)。Switching power 是一个门电路对输出电容进行充电和放电需要的功耗。简单的说就是一个门电路输出从0变到1和从1变到0所需要消耗的功耗。Switching power 是动态功耗最主要的组成部分。
  • 短路功耗(或者称为内部功耗,英文是internal power)。内部功耗又可以称为短路功耗,因为主要原因是由于短路造成的。短路功耗是因为在输入信号进行翻转时,信号的翻转不可能瞬时完成,因此PMOS和NMOS不可能总是一个截止另外一个导通,总有那么一段时间是使PMOS和NMOS同时导通,那么从电源VDD到地VSS之间就有了通路,就形成了短路电流。由于传输中短路持续的时间特别短,短路功耗相比翻转功耗来说小很多。所以一般情况下会忽略短路功耗,把翻转功耗就当作动态功耗,那么动态功耗的简化公式就是:

Power=NACV_{DD}^2F(1)

N是晶体管数量,A是翻转因子,C寄生电容V是电源电压,F是频率。所以power和VDD二次方成正比,和频率一次方成正比。主要降低功耗也就是围绕这几个因子来转。

(2)静态功耗:

静态功耗是由于漏电流引起的,在CMOS 门中,漏电流主要来自4个源头:

  • 亚阈值漏电流(Sub-threshold Leakage, ISUB): 亚阈值泄漏电流是晶体管应当截止时流过的电流。亚阈值泄漏电流随温度呈指数增长(Vth)。这大大增加了设计低功率系统的复杂性。即使在室温下的泄漏是可以接受的,在最坏的情况下,温度会超过芯片的设计目标。
  • 栅极漏电流(Gate Leakage, Igate): 由于栅极氧化物隧穿和热载流子注入,从栅极直接通过氧化物流到衬底的电流。泄漏电流与介质厚度有极强的关系。工艺中通过选择合适厚度的介质将栅泄漏电流限制到一个可接受的水平上。泄漏电流还取决于栅极电压。通过使晶体管堆叠起来并使截止晶体管靠近电源/地线可以使栅泄漏电流减小。
  • 栅极感应漏电流(Gate Induced Drain Leakage, IGIDL): 结泄漏电流发生在源或漏扩散区处在与衬底不同电位的情况下。结泄漏电流与其他泄漏电流相比时通常都很小。电流占比比较小,所以一般不做分析。
  • 反向偏置结泄漏(Reverse Bias Junction Leakage ,IREV):由少数载流子漂移和在耗尽区产生电子/空穴对引起。电流占比比较小,所以一般不做分析。

Mos管图示

 漏极电流组成图示

综上,可以把静态功耗统一为一个公式:

P_{peak}=V_{DD}*I_{peak}(2)

Ipeak为泄露电流,减少静态功耗的方法就是减小VDD和Ipeak。

(3)动态和静态功耗总结:

电容充放电和短路电流是动态功耗,漏电流是静态功耗。动态功耗一般来讲远大于静态功耗。抓大放小,我们这个地方主要记住大头充放电功耗怎么算的。

  • 电容充放电电流。看图a, 实际上晶体管与地之间是有点容的。所以输入从0到1变化的时候会导致这个电容充放电。当input为0的时候能量从VDD冲到了电容, input 为1的时候能量直接流到地。
  • 短路电流由于晶体管非理想,存在某个电压,NMOS和PMOS都导通,导致直接有VDD到VSS的通路。产生电流。
  • 漏电流漏电流是input稳定的时候,其实VDD和VSS之间也有细微的电流流过产生功耗。

补充:

1.在电路里:

  • VDD的意思:电源电压(单极器件);电源电压(4000系列数字电路);漏极电压(场效应管)。
  • VCC的意思:电源电压(双极器件);电源电压(74系列数字电路);声控载波(Voice Controlled Carrier)。
  • VSS的意思:通常指电路公共接地端电压或电源负极。
  • VEE的意思:负电压供电;场效应管的源极(S)。

2.在电路里的晶体管上:

  • VSS表示连接到场效应管的源极(Source)的电源。
  • VDD表示连接到场效应管的漏极(Drain)的电源。
  • VEE表示连接到三极管发射极(Emitter)的电源。
  • VCC表示连接到三极管集电极(Collector)的电源

三、不同结构的功耗组成

SoC芯片中不同结构的对功耗的消耗是不一样的。有几个功耗大户如下:

  • 时钟树功耗:时钟树的功耗通常占整个SOC功耗的40%左右,这是因为时钟是一直在翻转的信号,所以动态功耗特别大。所以门控时钟技术就特别重要。
  • CPU: CPU是SOC主控制器,工作时CPU一般都必须要打开,随着CPU频率越来越高,功耗也越来越大。所以现在的多核,大小核就比较流行,不同场景下用不同功耗的CPU核;
  • GPU: GPU是并行处理单元,由于其算力主要来自多个模块并行计算,为了正常工作,通常需要很多模块同时运算,功耗也很大,所以很多SOC都不带GPU或者默认关掉;
  • 存储器:DDR这些存储器作为SOC主存也需要时刻使用,也是功耗消耗的大户。

SOC还有很大其他模块,但是时钟树,CPU/GPU, 存储器占了绝大部分的功耗。在AI芯片的时代,CCN IP也是功耗的主要来源,和GPU比较类似。

四、如何降低功耗

综上所述,对芯片的功耗进行控制是十分重要的一环,常见的手段如下:

(1)从算法优化的角度:

降低A和N:减少计算复杂度。算法最有效的做法是直接减少算法的复杂度。比如同样一个人脸识别的AI芯片,在识别精度相同的情况下,使用VGG明显比使用ResNet甚至MobileNet这些轻量化网络费功耗的多。所以算法部门一个永恒的目标是如何在不太损失精度的前提下降低计算复杂度。有时候同样一个任务精度一样计算复杂度可能会降低十倍不止。

降低A:算法优化翻转概率这个事情比较玄学。比如训练一个神经网络,尽量让网络推理的过程中翻转概率最低。再比如算法来个自适应,在信号比较好的时候采用一个比较弱的信道估计,在信号不好的时候启动比较强的信道估计等等。

降低N:降低计算精度对于芯片来讲,除了特殊需求,大多数计算都是定点的。那采用什么精度的定点就很容易影响功耗。比如计算神经网络的时候,由于网络自身就可以容错,算法可以不断压缩定点。比如用个8bit, 4bit看看结果如何。这部分大量运用于各类芯片。尤其神经网络,通信等等。如何降低精度有一系列的办法。采用指数压缩,分组定点化等等。举个简单的例子,可以让神经网络不通层有不同的定点化来降低计算精度。

(2)从模块级角度:

降低A:Clock Gating。一般模块级的clock gating信号都要我们手动根据设计功能加入的。比如在CPU核没有任务的时候要把CPU的clock直接关掉,节省时钟网络的功耗。

降低V:Power Gating。对于能预测长时间不用的模块,要设计power gating, 将不用的模块直接关掉。如下图所示,一个CPU系统,其实Memory可能不能掉电,Core和MAC什么的如果不用都可以power gating。power gating有一定成本(功耗和面积上都有),所以一个模块要不要做power gating要逐个分析。

降低V:Multi-VDD。现在的芯片都比较大,没必要所有模块都跑在一个电压下。比如下面这样,CACHE RAMS电压高一点,SoC部分电压可以低一点。

降低F: Multi-Clock Domain. 和上一条往往有联动关系,这个地方还附带有另一个效果,降低F。可以根据电压域讲芯片分为若干的时钟域,有些部分时钟慢一些来减小功耗。

降低V和F:DVFS。Dynamic Voltage and Frequency Scaling。这个是现代芯片中非常常用的手段。根据业务负载自动的调整电压和频率。如下图所示,一般来讲,电压越高芯片能跑的频率也就越高。DVFS就是反其道行之。比如手机只有2G网,手机芯片就显然不用跑在最高频率。从而可以大量减少功耗。

五、总结

低功耗技术是SoC芯片设计必须掌握的技术,不是之一。因为我们正处在低功耗芯片设计的时代。如果你不懂低功耗技术,那么可能你就很难理解整个芯片设计中各种做法的原因,甚至很难听懂别人讨论时的“行话”,这些才是最致命的,可能会让人觉得你还没“入行”。

参考资料:

一文看懂CMOS集成门电路 - 知乎 (zhihu.com)

(10 封私信 / 80 条消息) 桔里猫 - 知乎 (zhihu.com)

芯片设计进阶之路——低功耗深入理解(一) - 知乎 (zhihu.com)

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录1 简介 ............................................................................22 功耗模式......................................................................22.1 功耗模式转换 ......................................................22.2 核心睡眠和唤醒指令............................................42.3 子系统可用性和功耗............................................52.4 示例场景..............................................................52.5 系统电源管理(SysPm)库 ................................53 PSoC 6 MCU 功耗管理技术.........................................83.1 核心电压选择 ......................................................83.2 ULP 模式时钟......................................................93.3 外部 PMIC 控制...................................................94 其它降低功耗技术......................................................104.1 使用 PSoC 6 MCU 控制电流路径 ......................104.2 禁用未使用的模块 .............................................104.3 使用 DMA 移动数据...........................................104.4 周期性唤醒定时器 .............................................114.5 时钟...................................................................114.6 GPIOs ...............................................................135 电源保护系统.............................................................135.1 硬件控制电源保护 .............................................136 总结 ..........................................................................147 相关文档....................................................................14Appendix A. 功耗模式总结..........................................15A.1 功耗模式和唤醒源.............................................15Appendix B. 子系统可用性..........................................16B.1 不同功耗模式下可用资源 ..................................16Appendix C. 回调函数示例..........................................17C.1 寄存器回调函数.................................................17C.2 执行自定义回调函数..........................................17Appendix D. 代码示例.................................................19D.1 CE219881 - PSoC 6 MCU 切换功耗模式..........19D.2 CE218129 -
优秀的处理器配合好的开发工具和工具链成就了单片机的辉煌,这是单片机开发者辛勤劳动的结果。也正因为此,ARM的工具链工程师和CPU工程师强强联手,日日夜夜不停耕耘为ARM7TDMI设计出了精练、优化和到位的内部结构,终于成就了ARM7TDMI的风光无限的辉煌。新的ARMCortex-MB处理器在破茧而出之后,就处处闪耀着ARM体系结构激动人心的新突破。它是基于最新最好的32为ARMv7架构,支持高度成功的Thumb-2指令集,并带来了很多前卫崭新的特性。在它优秀,强大的同时,编程模型也更清爽,因而无论你是新手还是骨灰级玩家都会对这样秀外慧中的小尤物爱不释手。根据ARM的统计,2010年全部Cortex-MMCU出货量为1.44亿片,2008年~2011年第一季度,STM32累计出货量占Cortex-MMCU出货量的45%。也就是说,两个Cortex-M微控制器中有一个就来自ST。”很多市场分析机构也ARM的强劲增长表示认可。2007年在3264bitMCU及MPU架构中,ARM所占市场份额为13.6%,而2010年已经占了23.5%击败了PowerArchitecture,成为市场占有率最多的架构。Cortex-n3内核是ARM公司整个Cortex内核系列中的微控制器系列(M)内核还是其他两个系列分别是应用处理器系列(A)与实时控制处理系列(R),这三个系列又分别简称为A、R、M系列。当然,这三个系列的内核分别有各自不同的应用场合。Cortex-MB内核是为满足存储器和处理器的尺寸对产品成本影响很大的广泛市场和应用领域的低成本需求而专门开发设计的。主要是应用于低成本、小管脚数和低功耗的场合,并且具有极高的运算能力和极强的中断响应能力。Cortex-M3处理器采用纯Thumb2指令的执行方式,这使得这个具有32位高性能的ARM内核能够实现8位和16位的代码存储密度。核心门数只有3K,在包含了必要的外设之后的门数也只有60K,使得封装更为小型,成本更加低廉。Cortex-n3采用了ARMV7哈佛架构,具有带分支预测的3级流水线,中断延退最大只有12个时钟周期,在末尾连锁的时候只需要6个时钟周期。同时具有1.25DMIPS/MHZ的性能和0.19MW/MHZ的功耗。     社会对基于ARM的嵌入式系统开发人员的高需求及给予的高回报,催生了很多的培训机构,这也说明嵌入式系统的门槛较高,其主要原因有以下几点。ARM本身复杂的体系结构和编程模型,使得我们必须了解详细的汇编指令,熟悉ARM与Thumb状态的合理切换,才能理解Bootloader并对操作系统进行移植,而理解Bootloader本身就比较困难,因而对于初学者来说Bootloader的编写与操作系统的移植成了入门的第一道难以逾越的门槛2、ARM芯片,开发板及仿真器的高成本,这样就直接影响了嵌入式开发的普及,使得这方面人才增长缓慢;3、高校及社会上高水平嵌入式开发人员的短缺,现实问题使得我们的大学生和公司职工在入门的道路上困难重重,很多人也因此放弃;培训机构的高费用,虽然有高水平的老师指导,但是高费用就是一道关口,进去的人也只是在短短的几天时间里匆匆了解了一下开发过程,消除了一些畏惧心理而己,修行还是得依靠自己;5、好的开发环境需要资金的支持,也直接影响了入门的进度。基于Cortex-m3内核的ARM处理器的出现,在优秀的Kei开发工具的支持下,可以自动生成启动代码,省去了复杂的Bootloader的编写。Thumb-2指令集的使用,使得开发人员不用再考虑ARM状态与Thumb状态的切换,节省了执行时间和指令空间,大大减轻了软件开发的管理工作。处理器与内存尺寸的减少,大大降低了成本,使得芯片及开发板的价格得以在很大程度降低。Cortex-M3内核通过把中断控制器、MPU及各种调试组件等基础设施的地址固定很大程度上方便了程序的移植。源代码是公开的库函数,使得我们可以摒弃晦涩难懂的汇编语言,在不需要了解底层寄存器的操作细节的情况下,用C语言就可以完成我们需要的功能。所有这些特点使得我们学习ARM处理器的门槛得以降低。同时建议大家尽量去用固件库。而不是避开固件库自己写代码。因为在实际的项目中,代码成百上千个,不可能都自己来写,调用固件库中的函数来完成,才是可行的方案。当然我们在深入的情况下,透彻理解寄存器的操作是必要的,也是值得的,高效编程也必须在这方面努力。
《嵌入式系统设计实战:基于飞思卡尔S12X微控制器》以飞思卡尔半导体公司(原摩托罗拉半导体部)16位S12X系列微控制器中MC9S12XS128为蓝本阐述嵌入式系统的软件与硬件设计。全书共11章,其中第1章阐述嵌入式系统的知识体系、学习误区与学习建议。第2章给出XS128硬件最小系统,并简要介绍S12XCPUCPU12X)。第3章给出第一个样例程序及CodeWai·“or工程组织,完成第一个S12X工程的入门。第4章给出基于硬件构件的嵌入式系统开发方法。第5章阐述串行通信接口SCI,并给出第一个带中断的实例。1~5章介绍了学习一个新MCU完整要素(知识点)的入门。6~12章分别介绍GPIO的应用(键盘、LED及LCD)、定时器(含PWM)、串行外设接口SPI、Flash存储器在线编程、CAN总线、A/D转换及S12XS128其他模块等。附录给出相关资料。《嵌入式系统设计实战:基于飞思卡尔S12X微控制器》涉及的实例源程序、辅助资料、相关芯片资料及常用软件工具,可在北航出版社下载中心或苏州大学飞思卡尔嵌入式系统研发中心网站下载。《嵌入式系统设计实战:基于飞思卡尔S12X微控制器》可供大学有关专业的高年级学生和研究生用作教材或参考读物,也可供嵌入式系统开发与研究人员用作参考和进修资料。 第1章 概述 1 1.1 嵌入式系统定义、由来及特点 1 1.1.1 嵌入式系统的定义 1 1.1.2 嵌入式系统的由来及其与微控制器的关系 2 1.1.3 嵌入式系统的特点 3 1.2 嵌入式系统的知识体系、学习误区及学习建议 4 1.2.1 嵌入式系统的知识体系 4 1.2.2 嵌入式系统的学习误区 5 1.2.3 基础阶段的学习建议 8 1.3 嵌入式系统常用术语 10 1.3.1 与硬件相关的术语 10 1.3.2 与通信相关的术语 11 1.3.3 与功能模块及软件相关的术语 12 1.4 嵌入式系统常用的C语言基本语法 13 第2章 S12X系列MCU硬件最小系统及CPU12X 26 2.1 S12X系列MCU概述及型号标识 26 2.1.1 S12X系列MCU概述 26 2.1.2 S12X系列MCU型号标识 28 2.2 S12X系列MCU的功能及存储器映像 29 2.2.1 S12X系列MCU的功能 30 2.2.2 S12X系列MCU的存储器映像及特点 31 2.3 XS128的引脚功能及硬件最小系统 36 2.3.1 XS128(80引脚QFP封装)的引脚功能 37 2.3.2 XS128的硬件最小系统 40 2.3.3 硬件最小系统的焊接与测试步骤 43 2.4 CPU12X的内部寄存器 44 2.5 CPU12X的寻址方式 47 2.6 CPU12X指令系统概要 51 2.6.1 数据传送类指令 53 2.6.2 算术运算类指令 56 2.6.3 逻辑运算类与位操作类指令 60 2.6.4 程序控制类指令 63 2.6.5 其他类指令 71 2.7 CPU12X汇编语言基础 72 2.7.1 S12X汇编源程序格式 72 2.7.2 S12X汇编语言伪指令 74 第3章 第一个样例程序及CodeWarrior工程组织 77 3.1 通用I/O接口基本概念及连接方法一 77 3.2 XS128的GPIO寄存器与GPIO构件封装 79 3.2.1 XS128的GPIO寄存器 79 3.2.2 GPIO的简单编程方法 83 3.3 CodeWarrior开发环境与S08/S12/ColdFire三合一写入器 84 3.3.1 CodeWarrior开发环境简介与基本使用方法 85 3.3.2 S08/S12/ColdFire三合一写入器 86 3.3.3 MC9S12XS128硬件评估板 87 3.4 CW环境C语言工程文件的组织 87 3.4.1 工程文件的逻辑组织结构 88 3.4.2 工程文件的物理组织结构 90 3.4.3 系统启动及初始化相关文件 91 3.4.4 芯片初始化、主程序、中断程序及其他文件 98 3.4.5 机器码文件(s19文件)的简明解释 101 3.4.6 lst文件与map文件 103 3.4.7 如何在CW环境下新建一个S12工程 105 3.5 第一个C语言工程:控制小灯闪烁 105 3.5.1 GPIO构件设计 106 3.5.2 Light构件设计 113 3.5.3 Light测试工程主程序 115 3.5.4 理解第一个C工程的执行过程 116 3.6 第一个汇编语言工程:控制小灯闪烁 117 3.6.1 汇编工程文件的组织 118 3.6.2 Light构件汇编程序 122 3.6.3 Light测试工程主程序 124 3.6.4 理解第一个汇编工程的执行过程 126 第4章 基于硬件构件的嵌入式系统开发方法 129 4.1 嵌入式系统开发所遇到的若干问题 129 4.2 嵌入式硬件构件的基本思想与应用方法 130 4.3 基于硬件构件的嵌入式系统硬件电路设计 131 4.3.1 设计时需要考虑的基本问题 131 4.3.2 硬件构件化电路原理图绘制的简明规则 133 4.3.3 实验PCB板设计的简明规则 135 4.4 基于硬件构件的嵌入式底层软件构件的编程方法 139 4.4.1 嵌入式硬件构件和软件构件的层次模型 139 4.4.2 底层构件的实现方法与编程思想 140 4.4.3 硬件构件及底层软件构件的重用与移植方法 141 第5章 串行通信接口SCI 144 5.1 异步串行通信的通用基础知识 144 5.1.1 串行通信的基本概念 145 5.1.2 RS-232总线标准 146 5.1.3 TTL电平到RS-232电平转换电路 148 5.1.4 串行通信编程模型 149 5.2 SCI模块的编程寄存器 150 5.3 SCI编程实例 155 5.3.1 SCI初始化与收发编程的基本方法 156 5.3.2 SCI构件设计与测试实例 157 5.4 XS128的中断源与第一个带有中断的编程实例 166 5.4.1 中断与异常的通用知识 166 5.4.2 XS128的中断机制 166 5.4.3 XS128的中断编程方法 171 5.4.4 XS128的中断优先级编程实例 173 第6章 GPIO的应用实例:键盘、LED与LCD 175 6.1 键盘技术概述 175 6.1.1 键盘模型及接口 175 6.1.2 键盘编程的基本问题 177 6.1.3 键盘构件设计与测试实例 178 6.2 LED技术概述 184 6.2.1 扫描法LED显示编程原理 184 6.2.2 LED构件设计与测试实例 186 6.3 LCD技术概述 191 6.3.1 LCD的特点和分类 191 6.3.2 点阵字符型液晶显示模块 193 6.3.3 HD44780 193 6.3.4 LCD构件设计与测试实例 199 第7章 定时器相关模块 207 7.1 计数/定时器的基本工作原理 207 7.2 定时器模块的基本编程方法与实例 208 7.2.1 定时器模块计时功能的基本寄存器 210 7.2.2 定时器构件设计与测试实例 212 7.3 定时器模块输入捕捉功能的编程方法与实例 216 7.3.1 输入捕捉的基本含义 216 7.3.2 输入捕捉的寄存器 217 7.3.3 输入捕捉构件设计与测试实例 218 7.4 定时器模块输出比较功能的编程方法与实例 221 7.4.1 输出比较的基本知识 222 7.4.2 用于输出比较功能的相关寄存器 222 7.4.3 输出比较构件设计与测试实例 224 7.5 定时器模块脉冲累加功能的编程方法与实例 226 7.5.1 脉冲累加的基本知识 226 7.5.2 脉冲累加功能的相关寄存器 227 7.5.3 脉冲累加器构件设计 228 7.6 脉宽调制模块 231 7.6.1 PWM工作原理 231 7.6.2 XS128的PWM的特点及模块框图 232 7.6.3 脉宽调制模块PWM相关寄存器 233 7.6.4 PWM构件设计及测试实例 236 7.7 周期中断定时器模块PIT 243 7.7.1 PIT模块功能描述 243 7.7.2 PIT模块的编程寄存器 245 7.7.3 PIT构件设计与测试实例 248 第8章 A/D与SPI 252 8.1 A/D通用知识 252 8.1.1 A/D的基本问题 252 8.1.2 A/D转换器 253 8.1.3 A/D转换常用传感器简介 254 8.1.4 电阻型传感器采样电路设计 255 8.2 A/D模块的编程寄存器 257 8.3 A/D模块编程方法与实例 264 8.3.1 A/D模块基本编程方法 264 8.3.2 A/D构件设计与测试实例 265 8.4 SPI的基本工作原理 270 8.4.1 SPI基本概念 270 8.4.2 SPI的数据传输 272 8.4.3 SPI模块的时序 272 8.4.4 模拟SPI 276 8.5 SPI模块的编程寄存器 276 8.6 SPI构件设计与测试实例 282 第9章 Flash存储器在线编程 289 9.1 S12X系列MCU的Flash存储器的特点及分页机制 289 9.1.1 S12X系列MCU的Flash存储器的特点 290 9.1.2 XS128的Flash存储器分页机制 290 9.2 Flash存储器编程方法 295 9.2.1 Flash存储器编程的基本概念 295 9.2.2 Flash存储器的编程寄存器 296 9.2.3 FCCOB-NVM命令模式 300 9.2.4 Flash存储器的编程步骤 301 9.3 D-Flash在线编程 303 9.4 P-Flash在线编程 308 9.5 Flash存储器的保护特性和安全性 313 9.5.1 Flash存储器的配置区域 313 9.5.2 Flash存储器的保护特性 314 9.5.3 Flash存储器的安全性 317 第10章 CAN总线 321 10.1 CAN总线通用知识 321 10.1.1 CAN总线协议的历史概况 321 10.1.2 CAN硬件系统的典型电路 321 10.1.3 CAN总线的有关基本概念 324 10.1.4 帧结构 327 10.1.5 位时间 331 10.2 MSCAN模块简介 332 10.2.1 MSCAN特性 333 10.2.2 报文存储结构、标识符验收过滤与时钟系统 334 10.2.3 CAN模块的主要运行模式、低功耗选项、中断与响应 341 10.3 MSCAN模块的内存映射及寄存器定义 345 10.3.1 MSCAN模块内存映射 345 10.3.2 MSCAN模块寄存器 346 10.4 MSCAN模块双机通信测试实例 360 10.4.1 测试模型 360 10.4.2 编程要点 360 10.4.3 CAN模块底层构件设计 361 10.4.4 测试操作要点 374 10.5 MSCAN模块的自环通信实例 374 10.5.1 测试模型 374 10.5.2 编程要点及设计代码 374 第11章 系统时钟与其他功能模块 378 11.1 时钟与复位产生模块概述 378 11.1.1 锁相环技术 378 11.1.2 CRG模块框图 380 11.1.3 CRG模块的工作模式 381 11.1.4 XS128内部锁相环结构 383 11.2 XS128的CRG模块的初始化 384 11.2.1 XS128的CRG模块寄存器 384 11.2.2 初始化编程方法与实例 389 11.3 CRG模块的其他功能 392 11.3.1 CRG产生复位信号 392 11.3.2 中断 397 11.4 XS128的IRQ、XIRQ引脚、RTIBRK及SWI中断 398 11.4.1 IRQ与XIRQ引脚中断 398 11.4.2 实时中断 398 11.4.3 调试模块DBG与软件中断SWI指令 399 附录A XS128的映像寄存器 400 附录B S08/S12/ColdFireBDM简明使用方法 410 附录C 常见实践问题集锦 414 附录D XS128的C语言函数库 417 附录E XS128的中断源与中断向量表 421 参考文献 424

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值