7数字逻辑设计基础(第3版)

异步时序电路

无时钟的世界

异步电路竞争冒险脉冲模式

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第7章 异步时序电路(无时钟的世界)

一、导读

1.1 本章学习目标

理解异步时序电路与同步时序电路的本质区别及其各自的应用场景

掌握异步电路的基本分析方法和流程表(Flow Table)的使用

深入理解竞争(Race)现象的成因、分类和影响

掌握冒险(Hazard)的类型(静态冒险和动态冒险)及其消除方法

理解临界竞争(Critical Race)和非临界竞争(Non-Critical Race)的区别

了解脉冲模式(Pulse Mode)异步电路的设计方法

认识异步电路在现代数字系统中的特殊应用(如异步接口、低功耗设计)

理解为什么现代大规模数字系统主要采用同步设计而非异步设计

1.2 为什么本章如此重要

异步时序电路代表着数字设计中最原始、也最本质的时序模型。在时钟信号被广泛使用之前,早期的数字系统都是异步的——状态变化由输入信号直接触发,没有统一的时序参考。理解异步电路的工作原理,有助于我们深入认识时序逻辑的本质特性,而不仅仅停留在"时钟边沿触发"的层面。

虽然现代大规模数字系统几乎全部采用同步设计,但异步电路的知识和概念仍然具有重要的实际意义。首先,在任何数字系统中,都存在异步信号与同步电路交互的场景:外部按键输入、异步通信接口、跨时钟域信号传输等。理解异步行为对于正确处理这些场景至关重要。

其次,异步设计在特定领域具有独特的优势。在低功耗设计中,异步电路只在需要时才消耗功率(事件驱动),没有时钟树的动态功耗开销。在高性能设计中,异步电路的某些模块可以以"按需完成"的方式运行,不受全局最慢路径的限制。在接口设计中,异步握手协议(Handshake Protocol)是实现可靠跨时钟域数据传输的基础。

此外,异步电路中遇到的竞争和冒险问题,在同步电路中同样存在,只是表现形式和影响程度不同。在同步电路中,组合逻辑的冒险可能被时钟"掩盖"(只要冒险在下一个时钟边沿之前消失),但在异步电路中,任何冒险都可能导致错误的状态转移。因此,学习异步电路的分析方法,有助于培养对时序问题的敏感性。

1.3 核心问题引导

异步时序电路和同步时序电路在结构和工作原理上有什么根本区别?

什么是流程表(Flow Table)?它与同步时序电路中的状态表有什么异同?

竞争现象是如何产生的?临界竞争和非临界竞争有什么区别?

静态冒险和动态冒险各自的表现形式是什么?如何检测和消除?

为什么异步电路的设计比同步电路更困难?主要的挑战是什么?

脉冲模式异步电路是如何工作的?它如何克服基本模式异步电路的局限性?

在现代数字系统中,异步设计在哪些场景下仍然有应用价值?


二、核心概念详解

2.1 异步时序电路的基本模型

异步时序电路(Asynchronous Sequential Circuit)没有全局时钟信号,状态的变化由输入信号的变化直接驱动。电路的核心仍然是存储元件(通常是带有反馈回路的组合逻辑),但触发状态转移的不是时钟边沿,而是输入信号的改变。

异步电路的分析工具是流程表(Flow Table),它在形式上类似于同步电路的状态表,但含义有本质不同。流程表的行代表稳定状态(Stable State),列代表输入组合。每个单元格包含次态和输出信息。与同步电路不同的是,异步电路的"次态"可能不是立即到达的——电路可能经过一系列中间状态(不稳定状态)才最终到达稳定状态。

稳定状态和不稳定状态的区分是异步电路分析的关键。如果一个状态在给定输入下,次态等于当前状态,则该状态是稳定的。如果次态不等于当前状态,则该状态是不稳定的,电路将自动转移到次态,直到达到稳定状态为止。一个输入变化可能引发一系列状态转移(称为状态链),最终电路收敛到某个稳定状态。

基本模式(Fundamental Mode)是异步电路分析的基本假设:一次只有一个输入信号发生变化,且在下一次输入变化之前,电路必须已经到达稳定状态。这个假设简化了分析过程,但在实际电路中可能难以严格遵守。

2.2 竞争现象

竞争(Race)是异步电路中最核心的问题。当电路的状态转移需要多个状态变量同时改变时,由于不同路径的传播延迟不同,各变量的实际变化时间可能不一致。这种变化的不确定性就是竞争。

非临界竞争(Non-Critical Race):无论各状态变量以什么顺序变化,电路最终都到达同一个稳定状态。在这种情况下,竞争虽然存在但不影响电路的正确功能。例如,状态从00转移到11,如果经过01或10的中间路径都能到达同一个稳定状态11,则竞争是非临界的。

临界竞争(Critical Race):不同的变量变化顺序导致电路到达不同的稳定状态。这种情况下,电路的最终行为取决于不可预测的传播延迟差异,是不可接受的。例如,状态从00转移到11,如果经过01到达稳定状态A,而经过10到达稳定状态B,则存在临界竞争。

消除临界竞争的方法包括:(1) 状态编码时确保相邻状态之间的转移只涉及一个变量的变化(类似格雷码编码),从根本上避免多变量同时变化的情况。(2) 添加冗余的状态转移路径,引导电路在竞争情况下也能到达正确的稳定状态。(3) 使用特殊的编码方案,如单位距离码(Unit Distance Code),确保任何两个相邻状态之间的编码距离为1。

2.3 冒险问题

冒险(Hazard)是组合逻辑中由于信号传播延迟差异导致的输出短暂错误现象。在异步电路中,冒险的影响比同步电路更为严重,因为异步电路的状态转移直接由输入变化触发,冒险脉冲可能被误认为是有效的输入变化,导致错误的状态转移。

静态冒险(Static Hazard):输出本应保持不变,但由于不同路径的延迟差异,输出出现了短暂的跳变。静态-1冒险:输出应保持1但出现短暂0脉冲。静态-0冒险:输出应保持0但出现短暂1脉冲。静态冒险可以通过在卡诺图中添加冗余的质蕴涵项来消除。

动态冒险(Dynamic Hazard):输出从0变为1(或从1变为0)的过程中出现了多次跳变。动态冒险通常发生在多级电路中,当信号从输入到输出存在三条或更多不同延迟的路径时。消除动态冒险比静态冒险更困难,通常需要限制电路的逻辑层级数或插入同步元件。

功能冒险(Function Hazard)是由于多个输入信号同时变化引起的,属于电路固有特性,无法通过修改逻辑结构来消除。功能冒险只能通过控制输入变化的方式(如确保每次只有一个输入变化)来避免。

2.4 脉冲模式异步电路

脉冲模式(Pulse Mode)异步电路是对基本模式异步电路的一种改进。在脉冲模式中,输入信号不是持久的电平变化,而是窄脉冲信号。电路中的存储元件使用脉冲触发的方式工作,类似于同步电路中的边沿触发器。

脉冲模式的主要优势在于:(1) 窄脉冲信号天然地提供了时间隔离,减少了竞争和冒险的影响。(2) 脉冲信号可以作为内部时序控制的"准时钟",使得电路的行为更加可预测。(3) 脉冲模式允许使用更复杂的电路结构,因为脉冲信号可以在电路内部产生和传播。

脉冲模式电路的设计通常包括两个部分:组合逻辑部分和脉冲存储部分。组合逻辑部分处理输入信号并产生控制脉冲;脉冲存储部分(通常是SR锁存器的变体)在脉冲的控制下更新状态。

脉冲模式电路的一个典型应用是异步串行通信接口。接收器检测到起始位后产生一系列定时脉冲,在每个脉冲的边沿采样输入数据位。这里的定时脉冲由内部的RC振荡器或延迟线产生,不需要外部时钟信号。

2.5 异步握手协议

异步握手协议(Handshake Protocol)是异步系统中实现可靠数据传输的标准方法。最基本的握手协议使用两根信号线:请求(Request)和确认(Acknowledge)。

发送方通过将Request信号置为有效来发起数据传输。接收方检测到Request后,读取数据。如果数据已被正确接收,接收方将Acknowledge信号置为有效。发送方检测到Acknowledge后,可以将Request撤销。接收方检测到Request撤销后,也将Acknowledge撤销,完成一次完整的握手周期。

握手协议有几种变体:(1) 全握手(Full Handshake):每次数据传输需要4个信号跳变(Request上升、Ack上升、Request下降、Ack下降)。(2) 半握手(Half Handshake / Bundled Data):使用一根有效信号线和一根数据线,有效信号上升表示数据有效,下降表示数据无效。(3) 微流水线(Micropipeline):将握手协议与流水线技术结合,实现异步流水线处理。

握手协议的优势在于其自定时(Self-Timed)特性:数据传输的速度由实际的电路延迟决定,而非预设的时钟周期。这意味着每个操作都可以在最短时间内完成,不受全局最慢路径的限制。


三、深入分析与讨论

3.1 同步设计 vs 异步设计:工程权衡

同步设计和异步设计代表了数字系统设计的两种哲学。同步设计以全局时钟为参考,所有状态变化在时钟边沿发生;异步设计没有全局时钟,状态变化由事件(输入变化)驱动。

同步设计的优势:(1) 设计简单,时序行为可预测,EDA工具支持完善。(2) 所有模块共享统一的时序参考,接口设计简单。(3) 静态时序分析可以高效地验证全芯片的时序正确性。(4) 对工艺偏差和温度变化的鲁棒性较好(通过时钟裕量吸收)。

同步设计的劣势:(1) 时钟树消耗大量功耗(在高性能处理器中,时钟树的功耗可占总功耗的30-40%)。(2) 系统速度受限于最慢的功能模块(关键路径决定时钟频率)。(3) 时钟偏差(Clock Skew)在大规模芯片中难以完全消除。(4) 电磁干扰(EMI)问题:全局时钟信号在芯片上产生强烈的周期性电磁辐射。

异步设计的优势:(1) 无时钟树功耗,平均功耗低(事件驱动,只在有活动时消耗功率)。(2) 模块化设计,每个模块以自身最快速度运行。(3) 天然模块化,易于增量设计。(4) 电磁辐射分散,EMI问题较轻。

异步设计的劣势:(1) 设计复杂度高,缺乏成熟的EDA工具支持。(2) 竞争和冒险问题使验证更加困难。(3) 接口标准化程度低,不同异步模块之间的互操作需要精心设计。(4) 测试和调试更加困难,因为没有统一的时序参考。

在现代工业实践中,绝大多数数字系统采用同步设计。但在特定领域(如超低功耗传感器节点、高性能异步处理器原型、安全芯片的抗侧信道攻击设计),异步技术仍然具有独特的价值。

3.2 亚稳态在异步系统中的特殊挑战

在同步系统中,亚稳态主要出现在跨时钟域传输的场景中,可以通过双触发器同步器来管理。但在异步系统中,亚稳态是一个更加普遍和根本的问题。

异步系统中的存储元件(如SR锁存器)在输入信号变化时可能进入亚稳态,因为没有时钟信号来确保输入在采样时刻是稳定的。如果锁存器进入亚稳态,其输出可能在较长时间内保持在非法电压范围内,导致下游电路的行为不可预测。

解决异步系统亚稳态问题的策略包括:(1) 使用互锁(Interlocking)设计,确保在任何情况下至少有一个信号是稳定的。(2) 增加冗余的存储元件,通过多数表决来消除单个元件的亚稳态影响。(3) 使用特殊的亚稳态安全(Metastability-Safe)触发器,其内部结构经过优化,可以更快地从亚稳态中解析出来。


四、实践案例

4.1 异步SRAM的接口控制

异步静态随机存取存储器(SRAM)是异步电路的经典应用。SRAM没有时钟输入,所有的读写操作由控制信号(片选CS、输出使能OE、写使能WE)和地址信号直接控制。

读操作流程:CPU将地址信号放到地址总线上,然后将CS和OE置为有效。SRAM内部的地址译码器选择对应的存储单元,数据通过读出放大器放大后输出到数据总线。从地址有效到数据输出稳定的时间称为访问延迟(Access Time),典型的异步SRAM访问延迟为10-100ns。

写操作流程:CPU将地址和数据放到总线上,然后将CS和WE置为有效。SRAM内部的写驱动器将数据写入指定的存储单元。写操作需要满足地址建立时间、数据建立时间和写脉冲宽度等时序约束。

这个接口完全基于异步握手思想:地址和控制信号作为"请求",数据输出作为"响应"。CPU通过等待足够长的时间(大于访问延迟)来确保数据已经稳定。更高级的异步SRAM使用数据有效(Data Valid, DV)信号作为显式的"完成"指示,实现更精确的握手协议。

4.2 异步FIFO的格雷码指针同步

在跨时钟域数据传输中,异步FIFO是最常用的解决方案。异步FIFO的核心挑战在于:写指针在写时钟域中更新,读指针在读时钟域中更新,但判断FIFO空/满需要比较两个指针——这两个指针属于不同的时钟域。

解决方案是使用格雷码编码指针。格雷码的关键特性是相邻值之间只有一位变化。当格雷码指针在跨时钟域传输时,即使接收端的触发器进入亚稳态,最多只有一位是不确定的,因此指针值最多偏差1——这在FIFO的空/满判断中是可以容忍的(通过保守设计,牺牲一个存储位置)。

具体实现:写指针和读指针都使用格雷码编码。写指针在写时钟域中更新,经过两级触发器同步后传递到读时钟域。读指针在读时钟域中更新,经过两级触发器同步后传递到写时钟域。空标志在读时钟域中生成(同步后的写指针等于读指针),满标志在写时钟域中生成(同步后的读指针与写指针满足满条件)。

这个设计巧妙地结合了异步传输(跨时钟域同步)和同步设计(各时钟域内的指针更新)的优点,是现代SoC中跨时钟域数据传输的标准方案。


五、常见误区与注意事项

认为异步电路就是"没有时钟的电路":异步电路虽然没有全局时钟,但可能有内部的定时机制(如延迟线、振荡器产生的脉冲)。"异步"指的是状态转移不由全局时钟控制,而非完全没有时序控制。

忽视基本模式假设的局限性:基本模式要求一次只有一个输入变化,且电路必须到达稳定状态后才能接受下一个输入。在实际电路中,这些约束可能难以严格遵守,导致分析结果与实际行为不符。

混淆竞争和冒险:竞争是状态变量之间的时序不确定性(涉及存储元件),冒险是组合逻辑输出的短暂错误(不涉及存储元件)。虽然两者都由传播延迟差异引起,但分析方法和消除手段不同。

认为异步设计一定比同步设计更快:异步电路的某些模块可以以"按需完成"的方式运行,但握手协议的开销(请求-确认的往返延迟)可能抵消这种优势。在大多数情况下,同步设计的整体性能更优,因为时钟频率可以覆盖绝大多数操作。

在同步设计中忽视异步输入的处理:即使系统整体是同步的,外部输入信号(如按键、传感器、通信接口)通常是异步的。这些异步输入必须经过同步处理(至少两级触发器)才能安全地用于同步逻辑。忽视这一点是导致现场故障的常见原因。


六、本章小结

本章介绍了异步时序电路的基本概念、分析方法和设计挑战。异步电路没有全局时钟信号,状态变化由输入信号直接驱动,使用流程表作为分析工具。竞争是异步电路的核心问题,分为临界竞争和非临界竞争两种类型。临界竞争会导致不确定的状态转移,必须通过合理的状态编码来消除。冒险是组合逻辑中传播延迟差异导致的输出错误,在异步电路中可能造成更严重的后果。脉冲模式异步电路使用窄脉冲信号作为内部控制机制,在一定程度上克服了基本模式的局限性。异步握手协议是异步系统中实现可靠数据传输的标准方法。虽然现代大规模数字系统主要采用同步设计,但异步电路的知识对于处理跨时钟域传输、异步接口和低功耗设计等实际问题仍然具有重要价值。理解异步电路的本质特性,有助于更全面地认识数字系统的时序行为。


七、思考题与练习

分析以下异步电路的流程表,找出所有稳定状态和不稳定状态。流程表如下:

| 状态 | AB=00 | AB=01 | AB=11 | AB=10 |

|------|-------|-------|-------|-------|

| a | a,0 | b,0 | d,0 | a,0 |

| b | a,0 | b,0 | c,0 | d,1 |

| c | b,1 | a,0 | c,1 | d,0 |

| d | a,0 | c,1 | d,1 | b,0 |

解释以下概念的区别:(a) 临界竞争与非临界竞争 (b) 静态冒险与动态冒险 (c) 功能冒险与逻辑冒险。每种情况各举一个例子。

设计一个异步SR锁存器,使用NOR门实现。分析当S和R同时从1变为0时的竞争情况,解释为什么这种行为是不可预测的。

对于一个3变量的异步电路,状态编码为S0=00, S1=01, S2=11, S3=10(格雷码)。如果状态转移发生在S0和S2之间(需要两位都变化),分析是否存在临界竞争,并提出解决方案。

设计一个异步脉冲模式电路,实现一个2位二进制计数器。输入为计数脉冲(窄脉冲),输出为2位计数值。画出电路结构并说明工作原理。

分析异步握手协议的效率。如果请求信号的传播延迟为10ns,确认信号的返回延迟为15ns,计算握手协议的最大数据传输速率。与同步方案(时钟周期为30ns)相比,哪种方案更快?

讨论以下说法是否正确:"在同步电路中,组合逻辑的冒险不会影响电路的正确性,因此不需要考虑。"如果说法不完全正确,请说明在什么情况下同步电路中的冒险也可能导致问题。

比较同步设计和异步设计在以下方面的差异:(a) 功耗特性 (b) 设计复杂度 (c) EDA工具支持 (d) 可测试性 (e) 对工艺偏差的敏感度。分析为什么同步设计在工业实践中占据主导地位。

7/8异步时序
0%