硬件架构的艺术总结

前言:本篇文章是基于《硬件架构的艺术》这本书进行的简略总结,内容比较精简,适合已经学习过数字IC的详细知识后进行简单的回顾,因为它将其中较重点且常用的内容包含在书内,是一本很好的构建好知识框架的一本书。也适合想要学习数字IC但不知道要学哪些内容的同学,找好重点,一一细学,还有很多不到位的地方,后续一旦发现再继续改进。

学习时间(2023.09.02——2023.09.12)

第一章 亚稳态的世界

1.1 简介

1.2 亚稳态理论

        并不是所有不满足建立时间和保持时间的输入变化都会导致亚稳态输出,触发器是否进行亚稳态和返回稳态所需时间取决于生产器件的工艺技术与外界环境,一般触发器会在一个或者两个时钟周期内返回稳态。

1.3 亚稳态窗口

1.4 计算MTBF

        MTBF(Mean/Average Time Between Failure)是故障率的倒数。亚稳态事件的发生率可以用建立、保持时间窗口和时钟周期的比值乘以信号触发器频率来计算。(P4)

1.5 避免亚稳态

        1)使用多级同步器;(缺点是系统需要花费较长的时间去响应异步输入)

        2)使用时钟倍频电路的多级同步器;(将N级同步器的时钟输入频率变为原来的N倍,改善了MTBF,但偏移量较大)

1.6 亚稳态测试电路(P7)

1.7 同步器的类型(?)

1.8 亚稳态/综合性建议

        只能减少亚稳态发生的概率,如采用同步器、用响应更快的触发器(缩短亚稳态窗口Tw)、使用亚稳态硬化触发器、使用级联触发器和减少采样速率等。


第二章 时钟和复位

2.1 概述

2.2/3 同步设计

        避免的行为有:

      • 使用行波计数器;
      • 使  器;

2.4 时钟方案

2.4.1 内部产生的时钟

        尽可能避免在内部产生时钟,组合逻辑所导致的延迟会导致时序方面的问题,一般来说,数据输入端的毛刺不会引起问题,但时钟输入端的毛刺会产生明显的影响。

2.4.2 分频时钟

        设计中要保证大多数时钟来自于PLL,且总是由寄存器直接产生分频时钟信号,在对主时钟进行分频时,应该使用同步计数器或状态机。

2.4.3 行波计数器

        相较于其他同步计数器,使用的资源更少,常用于对时钟进行幂为2的分频 ,但级联会导致各种问题。

2.4.4 多路时钟

        是带有选择器的多时钟,使用前提是在初始化配置后时钟多路逻辑就不再改变、在时钟切换时寄存器始终处于复位状态和在时钟切换时产生的短暂错误没有负面影响。

2.4.5 同步时钟使能和门控时钟

2.5 门控时钟方法学

2.5.1 不含锁存器的门控时钟电路

        与门、或门、与非门、或非门等。

2.5.2 基于锁存器的门控时钟电路

2.5.3 门控信号

        与门控时钟的概念相似,减少与时钟无关信号的变化,最常见的例子是解码器使能。

2.5.4 重组数据路径以减少转换传播

2.6 复位信号的设计策略

2.6.1 用同步复位进行设计

        优点:确保电路是100%同步的;复位只发生在时钟有效沿,可以作为过滤毛刺的一种手段;

        缺点:可能需要脉冲展宽器,以保证复位信号出现在时钟有效沿处;复位信号依赖于时钟,如采用低功耗设计时钟使用门控信号会导致复位失效;

2.6.2 用异步复位进行设计

        优点:保证数据路径纯粹,复位信号无须额外资源;不依靠时钟,随时可复位;

        缺点:存在撤销时间与恢复时间的影响,会导致亚稳态的发生;需要考虑毛刺的影响与消除;DFT时若复位信号不能被I/O引脚驱动,则需要额外的步骤;

2.6.3 带异步复位和异步置位的触发器

        异步信号只对复位和置位的有效沿有反应,后面的撤销顺序影响会被忽略,尽量避免复位和置位信号同时发出;

2.6.4 移除异步复位的问题

        同步复位移除时,信号的前沿与尾沿必须原理时钟的有效边沿;异步复位移除时,要考虑到复位恢复时间和时钟有效沿的影响。

2.6.5 复位同步器  

        对于异步复位信号来说,使用同步器是移除复位最常用的方法,即复位开始时是立即的,释放跟随时钟有效沿,加了同步器有效避免亚稳态问题。

2.6.6 过滤复位毛刺

        异步复位对毛刺很敏感,易受到毛刺的影响,设计中常用延迟装置来过滤毛刺;

2.7 控制时钟偏移

2.7.1 短路径问题

        在两个相邻触发器之间的数据传播延迟比时钟偏移还短时,就会出现问题。

2.7.2 时钟偏移和短路径

2.7.3 使时钟偏移最小化

        方法有:

  • 在数据路径上增加延迟而使整个数据的延迟大于时钟延迟(相当于保持时间考虑);
  • 时钟反转方法,将时钟相对于数据反转使用,使得接收触发器比源触发器先接收到有效时间沿,这是牺牲建立时间来满足保持时间的方法;
  • 使用交替相位时钟,其中交替使用时钟沿是指顺序上相邻的触发器使用相反的时钟沿触发,二交替使用时钟相位是指相邻的触发器组分别由同一时钟的两个不同相位驱动;
  • 平衡线路长度,调整路径延时;

第三章 处理多个时钟

3.1 介绍

3.2 多时钟域

        分清同步时钟与异步时钟的定义。

3.3 多时钟域设计的难题

3.3.1 违背建立时间和保持时间

        建立时间与保持时间的定义。

3.3.2 亚稳态

3.4 多时钟设计的处理技术

3.4.1 时钟命名法

3.4.2 分块化设计

        遵守:每个模块只在单个时钟下工作;信号跨时钟域传播时用两级同步器;同步器模块的规模尽可能的小。

3.4.3 跨时钟域

        分为单bit和多bit信号的传输,对于单bit信号来说,两级同步器可有效降低亚稳态发生的概率,但这也增加了电路的延时和资源,对于频率较高的时钟,有时可能需要三级同步器;而多bit信号的跨时钟域传输常用的两种方式是:1)使用握手信号;2)使用异步FIFO。

3.5 跨时钟域

3.5.1 同频零相位差时钟

3.5.2 同频恒定相位差时钟

3.5.3 非同频、可变相位差时钟

        分为整数倍和非整数倍的时钟频率比,保持时间检查是在相离最近的相同有效沿进行检查,建立时间检查是在相离最近的差一个有效时钟沿进行检查;而对于非整数倍的情形,考虑三种分类,第一种是源时钟沿与目的时钟沿之间有足够的相位差,不会有亚稳态的产生;第二种是源时钟与目的时钟有效沿之间的相位差特别小时,此时无法满足,但下一周期的裕度足够大,满足STA的要求,用FSM实现这种周期性的始终边沿采样;第三种是无论何时源时钟与目的时钟的有效沿相位差都非常小,与异步时钟的行为类似。

3.6 握手信号方法(P64)

3.6.1 握手信号的要求

        数据应在发送时钟域内稳定至少两个时钟有效沿;请求信号的宽度应该超过两个时钟有效沿,避免由高到低的信号传递失效。

3.6.2 握手信号的缺点

        可以完成跨时钟域数据的传输要求,但是延时过大。

3.7 使用同步FIFO传输数据

3.7.1 同步FIFO架构

        通过读写指针产生各自的读写地址,送到读写端口。

3.7.2 同步FIFO的空满方式

        一是根据指针之间的关系判断FIFO的空满信号;二是通过设置计数器判断FIFO的空满信号(写操作加1,读操作减1)。

3.8 异步FIFO

3.8.1 避免使用二进制计数器实现指针

        二进制相邻位变换较多,容易出现亚稳态。

3.8.2 使用格雷码取代二进制计数

        每次变换只有一个bit的值发生改变。

3.8.3 用格雷码实现FIFO指针

        要用到二进制与格雷码之间的相互转换,读/写指针以格雷码的形式存在,而所有的比较和递增操作以二进制码形式进行。

3.8.4 FIFO满和FIFO空的产生

        空满信号的产生一种是对最高位进行扩展,还有一种是使用格雷码计数器(涉及到N位格雷码到N-1位格雷码的转换)。

3.8.5 双时钟FIFO设计

        空条件的产生:在读时钟域内进行判断,将同步过来的写指针对应的格雷码转换成二进制码后进行比较,读写指针二者相等时为空;

        满条件的产生:在写时钟域内进行判断,将同步过来的读指针对应的格雷码转换成二进制码后进行比较。


第四章 时钟分频器

4.1 介绍

4.2 同步整数分频器

        可以用Moore状态机实现。

4.3 具有50%占空比的奇数整数分频

        对于N整数分频,创建由时钟上升沿触发的0到(N-1)的计数器,两个使能信号,一个在计数为0时是有效态(输出信号1由上升沿触发),一个在计数为(N+1)/2时是有效态(输出信号2由下降沿触发),对产生的信号进行异或得到最终信号。

4.4 非整数分频(非50%占空比)

没懂 ?

4.5 N分频的替换方法


第五章 低功耗设计

5.1 介绍

5.2 功耗源

        浪涌、静态功耗和动态功耗是三个主要的功耗源,浪涌电流指器件上电时产生的最大瞬时输入电流(也叫启动电流);待机电流是指在关断主电源或系统进入待机模式下产生的电流,产生的功耗称为待机功耗,也叫静态功耗;动态功耗或开关功耗是门电路输出切换时,由逻辑转换所引起的功耗。

Pdynamic = S · CL · Vdd · fclk

5.3 在各设计抽象层次降低功耗

        降低功耗应该在所有层次上进行,在系统级、逻辑级和物理级,层次越高对功耗降低就可能越有效。

5.4 系统级低功耗技术

    1. 片上系统方法,关注芯片间的连线,主要关注降低功耗、缩减面积和降低成本的手段;
    2. 硬件/软件划分,功能可以用硬件实现,也可以用软件实现,事实上10%的代码花费了90%的执行时间,将部分转成硬件实现会节省大量功耗;
    3. 低功耗软件,使用高级语言,但要避免使用复杂原语导致高功耗;
    4. 选择处理器,要采用适合所要求的数据宽度的处理器;

5.5 体系结构级降低功耗技术

    1. 高级门控时钟,组合门控时钟和时序门控时钟,后者在使用时其后续的流水线阶段也使用同样的条件进行门控操作,此时最大的挑战就在于识别出流水线上“多余的”或“不关心”的状态;
    2. 动态电压频率调节(DVFS),在对频率不敏感的应用阶段降低时钟频率(DFS)和供电电压(DVS);
    3. 基于缓存的系统体系结构,使用增强FFT;
    4. 对数FFT体系结构,优于线性系统,负面影响是加法器和减法器的宽度会增加;
    5. 异步(无时钟)设计,同步时钟消耗大量能量且存在时钟偏斜等一系列问题,使用异步时钟可有效解决,异步电路本质上进行自我控制,又叫自定时电路,其基于依赖延迟不敏感编码的信号交换接口,最流行的是双轨道编码;
    6. 电源门控,与电压门控类似,它是指在芯片上加入开关以根据应用要求以切断供电电流,分为细粒度电源门控和粗粒度电源门控,前者在每一个门和地之间存在一个开关晶体管,使得在不使用某些功能时关闭与它的连接,而后者的电源门控晶体管是供电网络的一部分,本质上是创建一个电源开关网络,各组开关晶体管能并行的将整个模块打开或者关闭;
    7. 多阈值电压,高阈值较慢但是功耗较小,低阈值较快但是功耗较大,先用低阈值进行设计达到时序要求后吗,对其中不需要最高性能的单元增加阈值,这是最常用的方法,就是功耗与时序/面积之间的平衡;
    8. 多电压供电,根据每个区域的要求使用不同的供电电压;
    9. 存储器电源门控;

5.6 在寄存器传输级降低功耗

    1. 状态机编码和解码,其中最适合低功耗设计的是格雷码,它同时也消除了依赖于状态的组合等式中存在毛刺的风险;
    2. 二进制数表示法,用补码来表示二进制数往往比符号数更常使用;
    3. 门控时钟基础;
    4. 独热码多路器;
    5. 除掉多余的转换;
    6. 资源共享;
    7. 使用行波计数器来降低功耗,但会对时序带来负面影响;
    8. 总线反转,当前数据和下一个数据之间的汉明距离大于N/2(N位总线宽度)时,就将下一个数据反向后传输,以减少总线上出现的转换位数量;
    9. 高度活跃网络,将活跃度高和低的网络区分开;
    10. 启用和禁用逻辑云;

5.7 寄存器级低功耗技术

    1. 技术水平,如更先进的硅处理技术;
    2. 衬底偏压,能减少漏电功耗;
    3. 减少氧化层厚度,越薄时晶体管打开时沟道的导电性和性能会得到增加;
    4. 多氧化层器件;
    5. 利用定制设计减少电容;

(输出电容由扇出门的输入电容+线电容+寄生电容) : Cout = Cfo + Cw + Cp


第六章 流水线的艺术

6.1 介绍

6.2 影响最大时钟频率的因素

        时钟频率是数据流入系统后在输出端出现的速率。

    1. 时钟偏移,分为正偏移和负偏移,前者对电路是有利的,它增加了数据保持稳定的时间裕度;
    2. 时钟抖动,是指到达电路中某一点的连续时钟边沿之间的间隔变化;

6.3 流水线

        流水线使用存储器件将时钟周期内关键路径分隔开,这减少了关键路径上各阶段延迟并使电路能以更高频率工作。流水线电路增加了各时钟阶段的计算能力,由于使用存储器元件也增加了负载。(P128详例)

6.4 解释流水线的范例

6.5 来自流水线的性能提高

6.6 DLX 指令集的实现

        DLX是32位RISC微处理器,每条DLX指令最多由五个部分组成,指令获取(IF)、指令解码(ID)、执行/有效地址周期(EX)、存储器访问(MEM)和写回操作(WB)。

6.7 流水线对吞吐率的影响

        对DLX指令集的五个操作每级都加一个寄存器,提高工作效率。

6.8 流水线原理

    • 所有共享一条流水线的指令的阶段和阶段次序必须相同;
    • 所有中间值必须在各周期锁存;
    • 不能复用任何功能模块;
    • 一个阶段中的所有操作都应该在一个周期内完成。

6.9 流水线冒险

6.9.1 结构冒险

        是指由于资源冲突而使硬件无法支持所有可能的指令组合同时执行,即多个指令访问同一个地址。

        简单的解决方法是在发生冲突时将流水线停一个时钟周期,这样会产生流水线气泡,此时可以在增加一个时钟延迟的情况下执行同样数目的指令。

6.9.2 数据冒险

        是指指令执行需要之前指令的计算结果,而这个结果在流水线中还没有被计算出来,即当前指令的执行需要依赖前面指令执行的结果。解决这种冒险常用的方法是数据/寄存器转移,还有一种方法是创建垂直气泡。

6.9.3 控制冒险

        分支的流水线和其他指令改变程序计数器的值,即由于分支语句使程序计数器(PC)发生变化的情况。

6.10 ADC中的流水线——范例


第七章 处理字节顺序

7.1 介绍

7.2 定义

        字节顺序定义数据在计算机系统中的存储格式,描述了在存储器中地址的最高有效位(MSB)和最低有效位(LSB)的位置。对于大端模式,它是将MSB保存在最低存储器地址处,而小端模式把LSB保存在最低存储器地址处 。

7.3 小端模式/大端模式

7.4 处理字节顺序不匹配的问题

        在多设备进行通信时,要使用同一种处理字节顺序的模式,

7.5 访问32位存储器

7.6 处理字节顺序不匹配

        最简单的方法是位系统选择一种“字节顺序类型”;还可以地址顺序不变,数据顺序改变;数据顺序不变,地址顺序改变。

        软件字节交换也是一种处理方式,在软件中常用的方法有:交换汇编指令、用于交换字节的软件库宏、协议特定的交换函数和指定的交换函数。

7.7 字节顺序中性代码

        避免由字节顺序所引发问题的最好方式是在设计中使用字节顺序中性,通过两种方式可以完成这一任务:一是将字节顺序选项作为软件可配置的选项;二是在设计(IP)中使用字节使能,并将解码的任务留给系统或者SoC。

7.8 字节顺序中性编码指南

    1. 数据存储和共享存储体;
    2. 字节交换宏;
    3. 数据传送;
    4. 数据类型;
    5. 位域;
    6. 编译器指令。

第八章 消抖技术

8.1 简介

8.2 开关行为

        如果开关是用于开灯或启动风扇马达,则触点抖动不是问题,但如果应用于数字计时器或微处理器时,触点抖动会引起多次计数而不是一次计数。通常的解决方法是消抖设备或软件可以确保在一个给定时间内仅有唯一的数字信号记录。

8.3 开关种类

        开关的种类有许多,如拨动开关、按钮开关、温度开关、压力开关、液位开关和选择开关等。

8.4 消抖

8.4.1 RC消抖

        电容经过电阻充电,开关未使用的默认状态是高电平,当开关闭合时,它慢慢地将电容消耗至低电位,以此来减弱所有小抖动的影响。

图1 RC消抖电路

        逻辑门电路有某个电压阈值,在此阈值要改变输出状态,这对开关抖动提供某些容差,但某些开关抖动可能会漏网;增加的二极管为一个可选组件以保证正确运行,分为下述图3所示两种情形,共同组成了稳定的RC消抖电路。

图2 稳定的RC消抖电路

图3 稳定的RC消抖电路(开关断开/闭合位置)

8.4.2 硬件消抖电路

        使用了一对与非门电路制作的交叉耦合闩。当开关处于位置‘a’时,门电路“1”的输出就是逻辑高,不考虑其他输入值,这使得门电路“2”拉到逻辑低,如果开关在触点见移动并不在这两点间的区域短暂停止,由于门电路"2"将逻辑‘0’回送到‘1’使其保持状态,这样保证了锁存器输出非抖动。

8.4.3 软件消抖电路

解决方案有:

    1. 在足以让抖动停止的时间后读出开关;
    2. 开关启动时中断CPU并在中断服务程序(ISR)中消抖;
    3. 使用计数器消除噪声并验证开关状态。

8.4.4 消抖指南

    • 与消抖相关的CPU开销应当最小化;
    • 非消抖开关必须连接至已编程序的I/O引脚,绝不能连接至CPU的中断;
    • ISR延时不能容忍;
    • 开关输入取样的频率不应该与外界事件同步,否则会产生周期性的EMI;
    • 系统应当对开关(用户)输入立即响应;
    • 使用定时器有规律间隔地中断CPU,而不是用延时来等待输入稳定;

8.4.5 在多重输入下消抖

        在许多情况下,一个系统需要多组开关,单个输入开关消抖的方式对多重输入的单个消抖没有意义。

8.5 现有的解决方案

        对于不含外部输入的消抖电路设计而言,系统可选择使用外部消抖集成电路。在常用集成电路中,MAXIM MAX6816/MAX6817/MAX6818 系列提供了单个、两个、八个开关消抖电路,它们为数字系统提供了机械开关的完全接口技术。


第九章 电磁兼容(EMC)性能设计指南(略)

9.1 简介

        有必要进行电磁兼容(EMC)设计以避免系统内有害的电磁干扰(EMI)。

9.2 定义

        电磁兼容性是指一个系统在预期的电磁环境中运行而不对其他系统产生不利影响或不受其他系统不利影响的能力。

9.3 电磁干扰理论及与电流和频率的关系

9.4 电磁干扰的规程、标准和认证

9.5 影响集成电路抗干扰性能的几个因素

9.6 减少EMC/EMI 的技术

9.7 总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬件架构艺术》是一本关于计算机硬件设计的经典著作。它提供了深入理解和探索计算机硬件架构的方法和原则。这本书的核心思想是将计算机硬件设计视为一门艺术,强调设计师通过创新思维和迭代优化来构建出卓越的硬件系统。 该书从基础的数字电路开始,逐渐引导读者深入学习处理器、内存和存储、输入输出接口等各个方面的硬件设计。它不只是介绍了现有的硬件架构,更重要的是通过解析和评估这些架构的优缺点,指导读者创造出更好的硬件设计。同时,该书还涵盖了性能优化、功耗管理、可靠性设计等实用的设计技巧,使读者能够在面临具体需求时做出明智的决策。 《硬件架构艺术》强调了硬件设计与软件设计之间的紧密关系。它不仅仅关注硬件的功能和性能,还关注与之配套的软件如何充分利用硬件资源。通过深入理解软硬件之间的的互动关系,读者能够在设计过程中更好地权衡硬件与软件资源的利用,进而提高系统的整体性能和可靠性。 这本书的独特之处在于它提供了大量的实例和案例分析,帮助读者将理论知识转化为实践能力。书中还介绍了一些经典的硬件设计项目,如处理器和图形处理器等,以展示设计过程中的挑战和创新点。通过学习这些案例,读者可以更好地理解硬件设计的全过程,掌握解决问题的方法和技巧。 总之,《硬件架构艺术》是一本重要的计算机硬件设计参考书。它通过讲解原理、技巧和案例,帮助读者构建出高效、可靠的硬件系统,并能理解软硬件协同工作的关键。无论是专业的硬件工程师还是对计算机硬件设计感兴趣的读者,都可以从中受益匪浅。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值