51上TOP

栏目

← 返回面试知识库

高频问法 · 保研 / 考研复试

数字电子技术面试题库

围绕逻辑门、组合与时序逻辑、触发器、状态机、时钟复位、接口电路、数据转换和数字系统实现的面试题库。

发布 2026/8/9核验 2026/8/9来源 数字电子技术

30 秒回答

数字电路用离散逻辑状态和时序关系处理信息,回答时应同时说明逻辑功能、时钟边沿、建立保持时间、复位策略以及实现和验证风险。

适用范围
招生代码

通用面试内容

使用方式

题型范围:名词解释、30 秒简答、概念辨析、原理说明、工程判断和常见追问。回答优先准备 30 秒版本,再根据追问展开到时序图、逻辑表达式或验证方案。

本题库只保留可迁移的数字电路知识,不保留个人、教师、学校、地点、联系方式或具体资料信息。遇到设计题,建议按“逻辑功能 - 时序关系 - 电气约束 - 实现与验证”的顺序回答。

一、组合逻辑与电气基础

1. 组合逻辑和时序逻辑有什么根本区别?

问题意图:检查是否理解组合逻辑没有记忆、时序逻辑依赖状态和时钟。

30 秒回答:组合逻辑的输出只由当前输入决定,理想情况下输入稳定后经过传播延迟就得到输出;时序逻辑的输出还取决于存储的历史状态,通常由触发器、锁存器和时钟更新。设计时组合逻辑重点看功能和毛刺,时序逻辑还要看建立保持、时钟和复位。

展开逻辑:组合逻辑可以写成布尔函数或真值表,时序逻辑要描述状态转移。组合环路可能产生振荡或不确定,时序环路则通过存储元件打断传播并形成可控状态。同步系统通常让状态只在规定边沿更新,便于约束和验证。

常见追问:为什么组合逻辑输出不能直接作为另一个模块的时钟?

易错点:把“没有时钟”理解成没有传播延迟,或认为所有带时钟的代码都一定综合成触发器。

2. 为什么 NAND 和 NOR 都可以实现任意组合逻辑?

问题意图:检查逻辑完备性、德摩根定律和门级变换能力。

30 秒回答:NAND 和 NOR 都是通用门,可以分别构造非门、与门和或门,再组合出任意布尔函数。比如把 NAND 的两个输入并接可得到非门,多个 NAND 可以实现与和或;NOR 也可用同样方式完成。工程上选哪一种还要看工艺单元库、延迟、面积和功耗。

展开逻辑:布尔函数可以先化为与或非形式,再用德摩根定律把结构转换成 NAND-NAND 或 NOR-NOR。门数越多通常传播延迟和功耗越大,综合工具会根据约束重新映射到更合适的标准单元。

常见追问:为什么 NAND-NAND 结构适合实现积之和,而 NOR-NOR 结构适合实现和之积?

易错点:只会背通用门结论,却不能写出非门、与门或或门的具体连接。

3. TTL 和 CMOS 逻辑电平有什么主要差异?

问题意图:检查接口电平、功耗和输入特性的基本判断。

30 秒回答:TTL 通常以双极型器件为基础,输入电流和静态功耗相对明显,速度和电平范围有自己的约束;CMOS 主要靠互补 MOS 管工作,静态输入电流很小,但动态功耗随开关频率、负载电容和电源电压增加。两者不能只看逻辑 0/1,还要核对高低电平阈值、电流能力和电源兼容性。

展开逻辑:接口匹配要比较发送端的 VOH/VOL、IOH/IOL 和接收端的 VIH/VIL、输入漏电流。不同电源域之间可能需要电平转换,开漏或三态结构还要考虑上拉、电阻和总线争用。

常见追问:为什么 5 V TTL 输出有时不能直接驱动 3.3 V CMOS 输入?

易错点:只看电压绝对值,不检查输入允许电压、过压保护和源端输出电流。

4. 什么是噪声容限?为什么接口设计必须留余量?

问题意图:检查数字电平不是理想 0/1,以及抗干扰的工程意识。

30 秒回答:噪声容限是接收端仍能正确识别逻辑电平时允许叠加的最大噪声范围,高电平容限约为发送端最小高电平减接收端最小高电平阈值,低电平容限约为接收端最大低电平阈值减发送端最大低电平。留有余量才能应对串扰、地弹、供电波动和器件温度变化。

展开逻辑:真正的接口还要考虑传输线反射、边沿速度、输入滞回和接地电位差。降低驱动强度、放慢边沿、增加终端或使用差分信号可能改善完整性,但会牺牲速度、功耗或布线资源。

常见追问:施密特触发器为什么适合处理慢变化或带噪声输入?

易错点:把逻辑阈值当作唯一可靠范围,忽略最坏条件和正负噪声方向。

5. 扇入和扇出分别表示什么?如何处理驱动能力不足?

问题意图:检查门级负载、延迟和驱动能力的关系。

30 秒回答:扇入是一个逻辑门接收的输入数量,扇出是一个输出能够可靠驱动的输入数量。扇入过大可能增加门延迟,扇出过大则会增大负载电容、减慢边沿并增加功耗。需要时可拆分逻辑、插入缓冲器、使用更强驱动单元或重新分配负载。

展开逻辑:扇出不仅由输入数量决定,还受输入电容、互连电容、线长和工艺库驱动模型影响。综合和布局布线工具会根据时序约束自动做 buffer tree,但高扇出控制信号仍要特别检查复位、使能和时钟网络。

常见追问:为什么时钟网络不能简单按照普通数据信号插几个缓冲器?

易错点:把扇出当作固定数字,或只看逻辑数量而不看互连和边沿时间。

6. 什么是竞争冒险?静态冒险和动态冒险如何区分?

问题意图:检查逻辑延迟差异导致毛刺的原因和消除方法。

30 秒回答:竞争是不同信号路径传播延迟不同,冒险是这种差异在输出形成不应有的瞬态变化。静态冒险表现为输出本应保持 1 或 0 却短暂翻转,动态冒险则是本应翻转一次却多次振荡。可以用增加冗余项、改变逻辑结构、同步采样或在时序边界前留足时间来降低风险。

展开逻辑:卡诺图可帮助发现相邻覆盖项缺失导致的静态冒险。异步控制、异步接口和组合逻辑直接驱动时钟时风险最大;同步设计通常让毛刺在下一个有效边沿前消失,但不能因此忽略复位和异步输入。

常见追问:为什么增加一个共识项可以消除某些静态 1 冒险?

易错点:把任何短脉冲都称为冒险,或认为加寄存器后所有异步毛刺都自动安全。

二、锁存器、触发器与时序约束

7. 锁存器和边沿触发器有什么区别?

问题意图:检查电平敏感和边沿敏感存储元件的时序语义。

30 秒回答:锁存器在使能有效的整个电平窗口内透明,输入变化可能持续传到输出;边沿触发器只在时钟有效边沿附近采样输入,其他时间保持状态。锁存器可以提供时间借用,但时序分析和验证更复杂;边沿触发器结构直观,更适合同步流水线。

展开逻辑:锁存器的透明窗口会影响数据到达和下一阶段的时间预算,设计中必须避免非预期的 latch 推断。触发器也不是瞬时采样,仍然需要满足建立时间、保持时间和时钟到输出延迟。

常见追问:为什么组合块中条件不完整会综合出锁存器?

易错点:认为锁存器就是“没有时钟的触发器”,或忽略透明期间输入变化的影响。

8. SR、D、JK、T 触发器分别适合表达什么功能?

问题意图:检查基本触发器功能方程和结构选择。

30 秒回答:SR 触发器用 S/R 直接表达置位和复位,但要避开禁止组合;D 触发器在有效边沿把 D 采入,适合寄存器和流水线;T 触发器在 T 为 1 时翻转,适合计数和分频;JK 触发器在 J、K 不同组合下保持、置位、清零或翻转,功能更通用。实际 RTL 设计通常直接描述目标行为,由综合工具映射到工艺库中的触发器。

展开逻辑:选择器件时不能只看逻辑功能,还要考虑复位、使能、扫描和时序库支持。T 或 JK 的翻转功能可以由 D 触发器配合异或或组合反馈实现,但额外逻辑会影响延迟和功耗。

常见追问:如何用 D 触发器实现 T 触发器?SR 触发器的禁止输入组合为什么不能作为正常状态?

易错点:把触发器类型名称当成实现限制,或把异步置位清零误当成同步数据输入。

9. 什么是建立时间和保持时间?违反后会发生什么?

问题意图:检查同步时序最基本的约束概念。

30 秒回答:建立时间是数据在有效时钟边沿到来前必须稳定的最短时间,保持时间是边沿到来后仍需保持的最短时间。如果违反,触发器可能采到错误值、输出延迟异常或进入亚稳态。修复通常从缩短数据路径、增加时钟周期、调整时钟偏斜、优化单元或改变采样结构入手。

展开逻辑:建立违例常与数据路径过长、时钟频率过高有关,保持违例常与数据路径过短、时钟偏斜或布局变化有关。两者都要结合时钟到 Q、组合延迟、偏斜、抖动和不确定度分析,不能只看 RTL 仿真。

常见追问:为什么降低时钟频率通常能改善建立时间,却不一定改善保持时间?

易错点:把建立和保持都理解成“数据必须在边沿后稳定一个周期”。

10. 什么是亚稳态?为什么不能从逻辑上消除它?

问题意图:检查对异步采样和触发器模拟行为的理解。

30 秒回答:当输入在采样边沿附近变化,触发器可能暂时处于 0 和 1 之间的亚稳态,经过一段不可预测时间后才收敛。它源于器件物理和有限建立保持窗口,不能靠布尔逻辑完全消除,只能通过降低发生概率和隔离影响来控制风险。

展开逻辑:单比特控制信号可使用两级或多级同步器,增加分辨时间;多比特数据要用握手、异步 FIFO 或稳定快照协议。同步器要靠近接收寄存器放置,并设置适当的时序约束,不能把普通组合逻辑插在同步级之间。

常见追问:两级同步器为什么能降低风险,但不能宣称绝对可靠?

易错点:认为仿真里没有出现 X 就说明不存在亚稳态,或直接对多位总线逐位加两级同步器。

11. 时钟偏斜、时钟抖动和占空比失真有什么区别?

问题意图:检查时钟质量对时序预算的影响。

30 秒回答:时钟偏斜是同一时钟到达不同寄存器的时间差,时钟抖动是某个时钟边沿相对理想位置的短期或长期变化,占空比失真是高、低电平持续时间偏离目标比例。它们都会减少有效时序裕量,但影响路径和分析方式不同。

展开逻辑:偏斜可能帮助建立时间却伤害保持时间,或者反过来;抖动通常直接增加时钟不确定度;占空比对双边沿电路、门控时钟和脉宽要求敏感。时钟树、PLL、布线和电源噪声都可能改变这些参数。

常见追问:为什么不能简单把所有时钟问题都归结为降低频率?

易错点:把偏斜理解成整个系统统一变慢,或忽略保持时间和最小脉宽约束。

12. 复位释放为什么需要同步器?

问题意图:检查复位对时序、可靠性和启动行为的影响。

30 秒回答:同步复位只在时钟有效边沿改变状态,时序分析更规整,但没有时钟时不能立即复位;异步复位不依赖时钟,可以快速把系统拉到安全状态,但释放必须与时钟同步,否则可能造成不同寄存器在不同周期退出复位。工程上常采用异步断言、同步释放的结构。

展开逻辑:复位网络要考虑扇出、脉宽、噪声、复位顺序和局部时钟是否已经稳定。异步释放同步器的每级寄存器通常使用专用复位属性,且要检查复位恢复和移除时间。

常见追问:为什么“异步复位、同步释放”比直接异步释放更可靠?

易错点:只讨论复位拉低,不讨论复位释放;或在组合逻辑中随意门控复位信号。

三、计数器、状态机与接口逻辑

13. 同步计数器和异步计数器有什么区别?

问题意图:检查级联触发器、时序延迟和可用输出的判断。

30 秒回答:同步计数器的各级触发器由同一时钟同时更新,延迟和时序更容易控制;异步计数器让前一级输出作为后一级时钟,结构简单但翻转会逐级传播,输出在过渡期间可能出现短暂错误码。高速或需要直接译码的系统通常优先使用同步计数器。

展开逻辑:异步计数器的波纹延迟会限制最高频率,并可能导致译码冒险。同步计数器的组合逻辑可能更复杂,但可通过并行进位、预计算和时序优化换取可靠性。

常见追问:为什么异步计数器某个中间状态不适合直接驱动片选或地址译码?

易错点:把“异步”理解成不需要时钟,或只按稳定终值分析而忽略过渡状态。

14. 移位寄存器有哪些常见用途?

问题意图:检查串并转换、延迟线和序列处理的基本理解。

30 秒回答:移位寄存器可以实现串并转换、并串转换、可编程延迟、序列检测、简单乘除二和伪随机序列生成。每次移位由时钟触发,必须明确数据进入方向、输出位置、清零方式以及空闲时是否保持。

展开逻辑:线性反馈移位寄存器通过异或抽头生成周期序列,周期和初始状态由反馈多项式决定。作为延迟线时,寄存器级数、时钟频率和复位值会直接决定延迟和吞吐率。

常见追问:为什么线性反馈移位寄存器不能使用全零初始状态?

易错点:把逻辑左移、右移方向与位编号方向混淆,或忘记序列发生器的锁死状态。

15. Moore 型和 Mealy 型状态机有什么区别?

问题意图:检查状态机输出依赖关系、延迟和毛刺风险。

30 秒回答:Moore 型输出只由当前状态决定,输入变化通常要等状态更新后才影响输出,输出更稳定;Mealy 型输出由当前状态和输入共同决定,响应可以更快但输入变化可能直接造成输出毛刺。实际选择取决于响应延迟、输出同步性和逻辑复杂度。

展开逻辑:状态机通常拆成状态寄存器、次态组合逻辑和输出逻辑三部分。对外部接口,常把关键控制输出再寄存一次,避免组合输入直接传播到引脚或另一个时钟域。

常见追问:如何把一个 Mealy 输出改成同步稳定的接口信号?

易错点:认为 Moore 一定比 Mealy 少一个周期,或只看状态图不检查输出时序。

16. 状态机为什么要处理非法状态?

问题意图:检查复位异常、单粒子翻转和容错设计意识。

30 秒回答:状态寄存器可能因复位不完整、噪声、单粒子翻转或未知值进入未定义编码。如果没有恢复路径,状态机可能永久卡死或产生危险输出。设计时应为非法状态指定安全回退,必要时增加冗余编码、看门狗或错误标志,并在验证中覆盖这些路径。

展开逻辑:二进制、独热和格雷编码的非法状态数量不同。默认分支不能替代完整的状态覆盖,还要检查恢复后是否会重复触发动作,以及输出在恢复周期是否安全。

常见追问:为什么独热编码通常更容易做状态译码,但非法状态处理更值得关注?

易错点:只在仿真中初始化状态而没有设计硬件恢复逻辑。

17. 多路选择器、译码器和编码器分别解决什么问题?

问题意图:检查基本数据选择、地址译码和优先级逻辑。

30 秒回答:多路选择器从多个输入中选择一个送到输出;译码器把较少位的编码转换成多个互斥选择信号;编码器把多个输入状态压缩成编码,优先编码器还要规定多个输入同时有效时的优先级。它们是数据通路和控制通路中最常见的组合模块。

展开逻辑:选择器级联会增加逻辑深度,宽总线可以考虑树形结构或专用资源。译码器输出是否互斥、是否需要使能和是否允许全零要先定义,编码器还应明确无效输入时的输出和 valid 标志。

常见追问:为什么优先编码器通常需要同时输出 valid 信号?

易错点:把编码器和译码器的输入输出方向记反,或忽略多输入同时有效的情况。

18. 三态输出和开漏输出有什么区别?

问题意图:检查共享总线、电气连接和冲突风险。

30 秒回答:三态输出可以驱动 0、1 或高阻态,多个设备通过使能控制分时使用同一条总线;开漏或开集电极通常只能主动拉低,逻辑高依靠外部上拉,适合线与、告警和某些共享接口。两者都必须避免多个驱动源同时产生冲突。

展开逻辑:芯片内部 FPGA 逻辑通常不建议使用真正的三态网络,而是综合成多路选择器;芯片引脚和板级总线仍可能需要三态。开漏上拉电阻决定上升时间、静态电流和总线速度。

常见追问:为什么开漏总线的上升沿通常比下降沿慢?

易错点:把高阻态当成逻辑 0,或认为只要有输出使能就绝不会发生总线争用。

四、时钟域 crossing 与数据转换

19. 单比特控制信号跨时钟域应如何处理?

问题意图:检查 CDC 的基本同步结构和事件丢失风险。

30 秒回答:单比特电平信号通常在接收时钟域使用两级或多级同步器,降低亚稳态传播概率。若传递的是窄脉冲或事件,不能只把脉冲直接送入同步器,还要用脉冲展宽、toggle、握手或计数方式确保事件不丢失。

展开逻辑:同步器只解决采样可靠性,不保证事件被接收。发送端和接收端频率关系、脉冲宽度、允许延迟和复位顺序都要明确,CDC 工具还需要正确的时钟和异步路径约束。

常见追问:为什么源时钟比目标时钟快时,直接同步一个脉冲可能完全采不到?

易错点:对多位总线逐位加两级触发器,或把同步器输出再用于组合反馈形成不受控环路。

20. 多位数据跨时钟域为什么不能逐位同步?

问题意图:检查总线一致性和数据采样协议。

30 秒回答:多位数据的各位可能在不同周期收敛,接收端可能拼出从未存在过的组合值。常用方案是握手加稳定数据寄存器、异步 FIFO、Gray 编码计数器或源同步接口,核心都是保证数据在被采样期间稳定并有明确的有效标志。

展开逻辑:握手协议要定义 req/ack 的方向、保持时间和异常超时;异步 FIFO 用独立读写指针和存储阵列解耦速率;高速接口还要分析位宽、吞吐、背压和复位后的空满状态。

常见追问:为什么握手信号可以逐位同步,而数据本身要保持稳定?

易错点:认为只要每一位都没有亚稳态,拼成的总线就一定是同一个时刻的数据。

21. 异步 FIFO 如何判断 empty 和 full?

问题意图:检查跨时钟域存储结构和 Gray 指针思想。

30 秒回答:异步 FIFO 用读时钟和写时钟分别维护指针,指针跨域时通常转换成 Gray 码并同步到另一侧。写侧比较本地写指针和同步后的读指针判断 full,读侧比较本地读指针和同步后的写指针判断 empty。还要处理额外的地址回绕位。

展开逻辑:Gray 码相邻计数值只变化一位,降低多位指针跨域时同时变化造成的错误判断。full 通常表现为下一写指针与读指针在高位回绕关系上相等,empty 则是读指针与同步写指针完全相等。实现时需明确 FIFO 深度是否为 2 的幂。

常见追问:为什么异步 FIFO 的深度和指针位宽通常有特定关系?

易错点:直接同步二进制多位指针,或把当前指针相等同时解释成 full 和 empty。

22. ADC 的分辨率、采样率和量化误差如何区分?

问题意图:检查数字电路与模数接口的基本指标。

30 秒回答:分辨率表示量化等级的细密程度,N 位 ADC 理想情况下有约 2^N 个码;采样率表示单位时间采样次数,决定可处理的频率范围;量化误差是连续幅值映射到离散码时产生的误差,理想均匀量化通常落在半个 LSB 附近。实际还要看有效位数、噪声、非线性和采样保持。

展开逻辑:采样率足够只是必要条件,输入前还要有抗混叠滤波。ADC 接口需要考虑参考电压、输入驱动、转换延迟、数据格式和溢出码;有效位数可能低于标称位数,因为噪声和非线性会消耗理想精度。

常见追问:为什么提高标称位数不一定能提高系统有效精度?

易错点:把分辨率直接等同于精度,或用采样率单独判断 ADC 能否处理某个输入信号。

23. DAC 的建立时间和毛刺能量为什么重要?

问题意图:检查数模转换器动态指标和数字码切换行为。

30 秒回答:建立时间是 DAC 码改变后输出进入规定误差范围所需的时间,决定快速更新时的有效吞吐;毛刺能量是码切换期间因各位开关不同步而产生的瞬态偏差,可能影响控制、通信或波形输出。工程上要结合更新速率、输出保持、滤波和下游带宽评估。

展开逻辑:多位同时翻转时更容易出现毛刺,温度计码、分段结构、寄存器同步和输出滤波可以降低影响。数字端还应检查码序列、补码/偏移二进制格式和满量程边界。

常见追问:为什么从一个码切换到相邻码也可能产生较大毛刺?

易错点:只看静态 INL/DNL,不考虑动态建立和码切换瞬间。

五、系统实现、功耗与验证

24. FPGA 和 ASIC 的主要差异是什么?

问题意图:检查数字系统实现平台的取舍能力。

30 秒回答:FPGA 依靠可编程查找表、触发器、片上存储和互连实现,开发快、可重配置,但面积、速度和功耗通常不如专用 ASIC;ASIC 经过定制版图和制造,适合大批量和高性能低功耗产品,但前期成本、周期和验证要求更高。选择要看数量、性能、功耗、灵活性和风险。

展开逻辑:FPGA 设计还要关注 LUT、BRAM、DSP、时钟资源和布线拥塞;ASIC 要考虑标准单元、功耗网格、时钟树、DFT、版图和流片验证。相同 RTL 在两种平台上的时序和复位假设也不一定完全相同。

常见追问:为什么 FPGA 上能跑通的 RTL 不能直接认为适合流片?

易错点:只按“可编程”和“不可编程”区分,忽略工艺、库、物理实现和验证流程。

25. 数字电路的动态功耗和静态功耗来自哪里?

问题意图:检查功耗来源及常见优化方法。

30 秒回答:动态功耗主要来自节点充放电、短路电流和信号翻转,通常随电容、频率和电源电压变化;静态功耗主要来自漏电流,在先进工艺和高温下更明显。降低翻转率、减小负载、降低电压、时钟门控、功耗门控和选择合适阈值电压都可能有效,但会影响速度、面积或唤醒时间。

展开逻辑:无效翻转、毛刺和过大的时钟树会放大动态功耗。门控时钟必须使用专用单元或经过可靠的门控结构,不能用普通组合逻辑直接与时钟相与;电源门控还要处理状态保持、浪涌和复位顺序。

常见追问:为什么降低电源电压通常对动态功耗特别有效?

易错点:把所有功耗都叫开关功耗,或为了省功耗直接关闭时钟而没有检查门控毛刺。

26. 什么是时钟门控?如何避免门控时钟产生毛刺?

问题意图:检查低功耗设计中的时钟完整性。

30 秒回答:时钟门控在模块空闲时停止时钟翻转,以降低时钟树和寄存器功耗。使能信号不能在时钟高电平期间直接改变,否则可能产生窄脉冲;通常用集成时钟门控单元,在安全电平窗口锁存使能,再生成完整时钟脉冲。

展开逻辑:还要考虑门控后的时钟约束、启动延迟、复位和测试旁路。对 FPGA 通常优先使用时钟使能而不是用逻辑门生成新时钟,以便继续使用专用时钟网络。

常见追问:为什么 FPGA 里用 clock enable 往往比自己与门出一个新时钟更合适?

易错点:把时钟门控当作普通数据逻辑优化,或忘记测试模式下需要强制打开时钟。

27. 如何判断一个 RTL 模块是否真正可综合?

问题意图:检查从行为描述到硬件实现的边界。

30 秒回答:可综合 RTL 必须能映射到明确的组合逻辑、触发器、存储器或专用硬件资源。要检查过程块敏感关系、完整赋值、循环是否有确定边界、延时和文件操作是否仅用于仿真,以及多驱动、锁存器和不可综合系统任务。综合报告、网表和时序报告要与原设计意图对照。

展开逻辑initial#delay、动态内存、任意系统调用等通常不能直接用于通用硬件;某些 FPGA 厂商支持特定初始化或 IP,但必须遵循目标平台规则。可综合不等于功能正确,还要做等价检查、仿真和上板验证。

常见追问:为什么仿真能运行的 testbench 代码不能直接综合成硬件?

易错点:把“工具没有报错”当作可综合且实现正确,或忽略综合后推断出的锁存器和多驱动。

28. 仿真、形式验证和上板调试分别擅长发现什么问题?

问题意图:检查验证手段的边界和组合使用方法。

30 秒回答:仿真适合用具体激励观察功能、波形和时序关系;形式验证可以在约束范围内穷举状态,检查断言、等价性和不可达情况;上板调试能发现真实时钟、复位、电源、引脚、电气和软件协同问题。三者互补,不能用一次仿真替代全部验证。

展开逻辑:仿真要覆盖正常、边界、异常和复位场景,形式工具要保证假设与真实环境一致,上板则要用片上逻辑分析、外部仪器和可观测寄存器缩小问题范围。发现问题后应先定位层级,再判断是规格、RTL、约束还是硬件连接错误。

常见追问:为什么 RTL 仿真通过但上板可能完全不工作?

易错点:认为形式验证可以自动替代所有模拟电气测试,或只在上板后才开始设计可观测性。

29. 断言和覆盖率在数字电路验证中分别解决什么问题?

问题意图:检查验证是否同时关注“不能发生”和“确实发生”。

30 秒回答:断言描述必须满足或禁止发生的时序、协议和状态关系,用于及时报告错误;覆盖率衡量状态、分支、转移、交叉场景或功能点是否被激励到。高覆盖率不代表没有 bug,断言也不能替代对需求完整性的检查。

展开逻辑:协议断言应明确采样时钟、禁用条件、复位行为和允许延迟,避免把设计假设写成错误约束。覆盖率要与功能计划对应,低覆盖可能是激励不足,也可能是不可达状态,需要分析原因而不是盲目追求数字。

常见追问:为什么代码覆盖率高但功能覆盖率仍然可能不足?

易错点:只统计代码行数,或把未覆盖的异常路径简单排除而不说明理由。

30. 数字电路上板后出现偶发错误,应该如何定位?

问题意图:检查从现象到根因的工程排查顺序。

30 秒回答:先确认复位、时钟、电源、引脚约束和输入电平,再用最小可复现条件区分功能错误、时序错误、CDC 问题和电气完整性问题。查看综合后时序报告和片上逻辑波形,记录错误发生的频率、温度、负载和数据模式,逐步缩小到具体模块或路径。

展开逻辑:偶发错误常与亚稳态、边界时序、未初始化状态、竞争冒险、信号串扰或供电波动有关。调试逻辑应尽量观察关键握手、状态、计数器和错误标志,并避免为了观测而改变关键时序;修复后要回归仿真、约束检查和不同条件下的实测。

常见追问:为什么把时钟频率降下来后错误消失,仍不能直接断定问题已经解决?

易错点:只重复刷写程序或只看最终输出,不保留触发条件、内部状态和时序证据。

31. 半加器、全加器和超前进位加法器有什么关系?

问题意图:检查算术组合逻辑和进位传播延迟的理解。

30 秒回答:半加器处理两个一位输入并产生和与进位,全加器还要加入低位进位输入。多位加法器可以把全加器串接形成行波进位结构,面积小但延迟随位数增长;超前进位通过提前计算产生和传播条件缩短等待,但会增加逻辑、扇出和布线复杂度。

展开逻辑:进位生成 G 表示本位必然产生进位,进位传播 P 表示能够传递输入进位。前缀加法器、分组超前进位和专用算术资源都是速度与面积之间的折中,不能简单认为超前进位没有传播延迟。

常见追问:为什么超前进位位数继续增大后仍需要分组或树形结构?

易错点:把半加器当成带输入进位的全加器,或认为超前进位可以消除所有逻辑和布线延迟。

32. SRAM、DRAM、ROM 和 Flash 的主要区别是什么?

问题意图:检查存储器的存储单元、刷新、易失性和使用场景。

30 秒回答:SRAM 用触发器或锁存结构保存数据,速度快、无需刷新但面积较大;DRAM 用电容存储电荷,密度高但需要刷新;ROM 泛指按固定或可编程方式保存内容的非易失存储,Flash 属于可擦写的非易失存储。选型要看容量、速度、功耗、写入寿命和掉电保持。

展开逻辑:存储器接口还要考虑地址译码、片选、读写时序、字节使能和输出高阻。片上 RAM 可能是同步读写,也可能有双口结构,不能只按名称假设读数据在同一周期返回。

常见追问:为什么 DRAM 需要刷新,SRAM 通常不需要?

易错点:把 ROM 绝对理解为不可改写,或把 RAM 与“掉电一定丢失”简单等同而忽略非易失 RAM。

33. 原码、反码和补码在表示负数时有什么差异?

问题意图:检查数字编码、负零、溢出和符号扩展。

30 秒回答:原码用符号位和数值绝对值表示,反码对负数的数值位取反,补码在反码基础上加一。原码和反码存在正负两个零,补码只有一个零;N 位补码的负数范围比正数多一个,运算时要关注符号扩展和溢出。

展开逻辑:补码把减法转成加法,硬件只需统一的加法器和溢出判断。符号扩展要复制最高位,截断高位可能改变数值;两个同符号数相加得到相反符号通常提示有符号溢出,但进位本身不等同于溢出。

常见追问:为什么 N 位补码不能表示正负对称的最大绝对值?

易错点:把补码按位取反就当成负数,或把无符号进位和有符号溢出混为一谈。

34. 施密特触发器、单稳态和多谐振荡器分别有什么用途?

问题意图:检查波形整形、阈值滞回和脉冲产生的基础认识。

30 秒回答:施密特触发器带有不同的上、下阈值,可把慢变化或带噪声输入整形成稳定数字边沿;单稳态只有一个稳定状态,触发后产生规定宽度的脉冲;多谐振荡器没有稳定状态或通过反馈持续翻转,可产生周期波形。它们的频率、脉宽和阈值都受 RC、供电和器件参数影响。

展开逻辑:滞回可以避免输入在阈值附近抖动造成多次翻转。工程上还要检查触发沿、恢复时间、负载和输出占空比;晶体振荡器提供高稳定参考频率,但需要满足起振条件和负载电容要求。

常见追问:为什么普通反相器处理慢斜率输入时可能产生多次边沿,而施密特触发器不容易?

易错点:把单稳态和多谐振荡器都描述成“稳定输出一个方波”,或忽略滞回的两个阈值。

35. 数字信号为什么仍然是物理上的模拟电压或电流?

问题意图:检查数字抽象与真实电路之间的边界意识。

30 秒回答:数字系统把连续变化的电压、电流映射为有限个逻辑状态,但芯片引脚上的信号仍受带宽、噪声、上升下降时间、串扰和负载影响,是连续的物理量。数字设计依赖阈值和噪声容限完成抽象,接口问题最终仍要用电气和时序指标验证。

展开逻辑:采样信号可以时间离散但幅度未量化,经过 ADC 后才同时具有离散时间和离散幅值。数字电路的逻辑正确不代表波形完整,长线、高速边沿和不同电源域还要检查反射、终端和电平转换。

常见追问:为什么示波器上看到的数字波形可能有过冲、振铃或慢边沿,但逻辑分析仪仍显示正确?

易错点:把数字信号定义成“只有 0 V 和固定高电压”,或把时间离散、幅度离散和逻辑编码混为一谈。

42. 有符号溢出、无符号回绕和饱和运算有什么区别?

问题意图:检查定宽整数运算中的表示范围和硬件行为。

30 秒回答:无符号整数超出最大值时通常按模 2N 回绕;有符号补码相加超出表示范围会产生溢出,结果位型可能看似合法但数值已错误;饱和运算则把结果限制在最大或最小可表示值。数字信号处理和控制中常用饱和避免回绕造成的大幅失真。

展开逻辑:有符号溢出可由两个同号操作数得到异号结果判断,但进位标志不能直接替代;硬件实现饱和需要检测溢出并选择边界常量。比较时要明确位宽、符号解释和后续截断位置。

常见追问:为什么音频混音中使用回绕加法会产生明显爆音?

易错点:把无符号回绕称为硬件故障,或认为截断高位天然就是饱和。

43. 静态时序分析中的建立时间、保持时间和 slack 如何联系?

问题意图:检查从时钟约束到时序收敛的工程判断。

30 秒回答:建立时间检查要求数据在捕获时钟沿之前足够早到达,保持时间检查要求数据在时钟沿之后继续稳定一段时间。slack 是要求到达时间与实际到达时间的差值,正值表示满足约束,负值表示违例。分析要结合时钟周期、偏斜、抖动、组合延迟和寄存器时序参数。

展开逻辑:建立时间违例通常通过缩短组合路径、降低目标频率或优化时钟偏斜改善;保持时间违例与数据过快、时钟偏斜有关,常插入延迟单元解决。不能只看最长路径而忽略最短路径和不同 PVT 角落。

常见追问:为什么降低时钟频率能缓解建立时间违例,却不一定能解决保持时间违例?

易错点:把 slack 的正负方向记反,或把建立时间和保持时间都当成“周期不够长”。

44. 同步复位和异步复位如何选择?

问题意图:检查复位时序、响应速度和释放安全性的取舍。

30 秒回答:异步复位不依赖时钟,能够快速把寄存器置于安全状态,适合上电或紧急故障;同步复位只在时钟边沿生效,时序更容易约束,但需要时钟正常运行。工程上常采用异步置位、同步释放,避免不同寄存器在释放瞬间产生亚稳态或恢复时间违例。

展开逻辑:复位网络要考虑扇出、延迟、去毛刺、跨电源域和局部时钟停止等情况。同步复位会占用数据路径资源,异步复位则需要专门约束恢复与移除时间,不能只依据“响应更快”决定。

常见追问:为什么异步复位的断言可以异步,而释放通常要同步?

易错点:只给复位输入加一个同步器却不检查每个时钟域的释放关系,或将复位当作普通数据线处理。

45. 流水线为什么能提高吞吐率,却不一定降低单次延迟?

问题意图:检查时序切分、吞吐率和延迟的区别。

30 秒回答:流水线在组合逻辑之间插入寄存器,把一个长路径拆成多个阶段,使时钟周期由最长阶段决定,多个数据可以重叠处理,稳态吞吐率提高。单个数据仍需依次经过所有阶段,寄存器开销和控制冒险还可能使端到端延迟增加。

展开逻辑:阶段划分应尽量均衡,同时考虑寄存器建立保持时间、时钟功耗、旁路和暂停机制。数据相关、分支或跨模块握手可能造成气泡,设计时要明确吞吐率、首结果延迟和背压行为。

常见追问:为什么流水线级数增加后,最高频率可能不再继续提高?

易错点:把吞吐率直接等同于单次响应时间,或忽略流水线寄存器和控制冒险的代价。

46. 状态机采用二进制、独热码或格雷码编码时如何取舍?

问题意图:检查状态编码对面积、时序、功耗和跨域安全性的影响。

30 秒回答:二进制编码使用较少触发器,适合状态数多且逻辑可控的设计;独热码每个状态用一个触发器表示,译码简单、FPGA 上常有更好时序但占用寄存器更多;格雷码相邻状态只变化一位,适合异步 FIFO 指针等跨时钟域场景以降低采样歧义。最终选择取决于目标工艺和约束。

展开逻辑:编码还要规定非法状态的恢复路径,并评估切换位数带来的动态功耗和组合扇出。综合工具可能自动重编码,若接口依赖具体编码需显式约束并在验证中覆盖。

常见追问:为什么异步 FIFO 的读写指针常在跨域前转换成格雷码?

易错点:认为独热码永远更快,或把格雷码的单比特变化误解为“不会产生亚稳态”。

47. 多位数据跨时钟域时,握手、异步 FIFO 和脉冲同步器如何选择?

问题意图:检查 CDC 方案与数据一致性、吞吐量之间的匹配。

30 秒回答:单个脉冲可用展宽、脉冲转电平或请求—应答握手同步;连续多位数据通常用异步 FIFO 保持顺序并吸收速率差;低吞吐且需要一次传输一个字时可使用稳定数据配合握手。逐位加两级触发器不能保证同一字的各位在目标域同时稳定。

展开逻辑:握手方案要保证源端在应答前保持数据不变,并处理超时、复位和背压;异步 FIFO 要验证指针同步、空满判断和深度裕量。选择时同时看数据宽度、峰值吞吐、允许延迟和资源。

常见追问:为什么把总线每一位都用两级同步器仍可能读到“撕裂”的数据?

易错点:只解决亚稳态而不解决数据一致性,或把异步 FIFO 当成普通同步 RAM 使用。

48. 如何估算同步器的亚稳态 MTBF?哪些因素会改善它?

问题意图:检查亚稳态概率与系统可靠性之间的定量联系。

30 秒回答:同步器 MTBF 通常随目标时钟频率、异步事件频率增大而降低,随第一级到第二级之间的解析时间和触发器工艺参数改善而指数增加。增加同步级数、降低源事件率、留出更长解析时间和使用专用同步器单元都能提高 MTBF,但不能让亚稳态概率变成绝对零。

展开逻辑:计算时要采用器件库给出的时间常数和窗口参数,并按最坏时钟、温度、电压和数据切换率评估。多级同步器提高可靠性同时增加延迟,安全关键系统还要结合失效概率预算和功能容错。

常见追问:为什么降低目标时钟频率通常能提高同步器 MTBF?

易错点:把两级同步器理解成完全消除亚稳态,或用普通逻辑门延迟代替器件库参数。

49. 扫描链和边界扫描在可测试性设计中解决什么问题?

问题意图:检查量产测试、内部节点可控可观测性和测试开销。

30 秒回答:扫描链把功能触发器串接成可移位寄存器,测试时移入已知状态、施加组合逻辑激励,再移出响应,从而提高内部节点的可控性和可观测性。边界扫描则在 I/O 附近加入测试单元,用于芯片间连线和引脚故障测试。代价是面积、时钟、功耗和测试时间增加。

展开逻辑:需要区分 stuck-at、transition、桥接和时序类故障模型,并用 ATPG 生成测试向量。扫描模式必须隔离模拟宏、存储器和异步逻辑,测试压缩可减少移位时间但会增加解压缩结构和验证复杂度。

常见追问:为什么扫描测试不能完全替代功能验证?

易错点:把扫描链当成系统运行时的数据通路,或认为提高故障覆盖率不需要付出功耗和测试时间。

50. 机械按键或外部脉冲输入为什么需要消抖和同步?

问题意图:检查异步输入、抖动和边沿计数的常见工程问题。

30 秒回答:机械触点在闭合或断开时会产生毫秒级抖动,一个动作可能形成多个边沿;外部脉冲相对系统时钟又是异步的,直接采样可能造成亚稳态或漏计数。常用两级同步器降低亚稳态风险,再用计数器、定时器或状态机确认信号稳定,最后生成单周期脉冲。

展开逻辑:消抖时间应大于预期抖动而不能破坏有效事件间隔;高频脉冲不适合低速轮询,可用异步计数器、捕获寄存器或握手读取。复位和输入极性也要在边界条件中验证。

常见追问:为什么简单地把按键信号延迟一拍不能真正消抖?

易错点:把同步器当成消抖器,或在一个时钟周期内假设所有外部脉冲都能被可靠采样。

51. 建立时间和保持时间为什么会导致时序违例?

问题意图:检查触发器采样窗口。

30 秒回答:建立时间要求数据在时钟有效沿到来前稳定一段时间,保持时间要求有效沿之后继续稳定一段时间。违反任一条件都可能使触发器进入亚稳态或采样错误,需通过时序约束和路径延迟分析保证裕量。

展开逻辑:建立违例通常与数据路径过长有关,保持违例与时钟偏斜和数据过快有关;修复方法不同。板级信号还要考虑走线、抖动和负载。

常见追问:为什么降低时钟频率不能直接修复保持时间违例?

易错点:把建立、保持时间混为一谈,或只看组合逻辑延迟不看时钟偏斜。

52. 如何降低亚稳态传播风险并评估 MTBF?

问题意图:考查亚稳态的工程缓解和可靠性评估。

30 秒回答:异步输入在采样沿附近变化时,触发器可能暂时处于 0 和 1 之间,输出稳定时间不可预测,这就是亚稳态。无法保证完全消除,只能用两级或多级同步器、降低跨域频率和增加解析时间来降低传播概率。

展开逻辑:同步器应放在接收时钟域,避免把第一级输出直接用于复杂逻辑;复位释放也要同步。可靠性要用 MTBF 和实际时钟、工艺参数评估。

常见追问:为什么把异步信号直接接到多个触发器会有风险?

易错点:说“加一个触发器即可完全解决”,或把亚稳态当成逻辑毛刺。

53. 组合逻辑冒险如何产生和抑制?

问题意图:检查门延迟不一致导致的瞬态错误。

30 秒回答:不同路径传播延迟不同,输入同时变化时输出可能短暂出现错误电平,称为冒险。可通过增加共识项、采用同步采样、平衡路径或改用合适的编码和时序结构抑制。

展开逻辑:静态 1、静态 0 和动态冒险的条件不同;用卡诺图识别逻辑覆盖,用仿真和示波器观察真实延迟。异步控制信号尤其要避免未经滤波的冒险脉冲。

常见追问:为什么同步系统中短暂组合毛刺有时不会造成状态错误?

易错点:把毛刺和亚稳态混为一谈,或只看布尔表达式不看门延迟。

54. 同步时序电路和异步时序电路如何取舍?

问题意图:考查时钟约束和响应速度。

30 秒回答:同步电路由统一时钟定义状态变化,易于分析、验证和综合,但受时钟树、功耗和延迟限制;异步电路不依赖全局时钟、响应快且可能低功耗,但对竞争、冒险、握手和延迟更敏感。

展开逻辑:异步设计必须明确互斥、握手和完成检测,不能只去掉时钟线。工程选择取决于性能、功耗、可验证性和工具支持。

常见追问:为什么异步电路并不等于“没有时序问题”?

易错点:把同步理解为所有信号同时到达,或忽略异步电路的最坏延迟。

55. 静态时序分析需要哪些基本约束?

问题意图:检查数字设计验证的输入条件。

30 秒回答:至少需要定义时钟周期和波形、输入输出延迟、时钟不确定度、生成时钟、异步时钟关系和 false path/multicycle path 等例外。工具据此计算建立和保持裕量,而不是靠仿真样例猜测。

展开逻辑:约束必须与真实接口和时钟树一致,例外路径要有设计依据并经过评审。未约束路径不能默认安全。

常见追问:为什么错误的 false path 可能掩盖真实时序问题?

易错点:只设置时钟周期不设置输入输出延迟,或滥用 multicycle path。

56. 时钟抖动、偏斜和占空比失真有什么区别?

问题意图:检查时钟质量指标。

30 秒回答:抖动是同一时钟边沿相对理想位置的时间波动;偏斜是不同接收点之间时钟到达时间差;占空比失真是高、低电平持续时间比例偏离目标。三者都会侵蚀时序裕量,但来源和修复手段不同。

展开逻辑:抖动常由 PLL、噪声和电源引起,偏斜与时钟树和走线有关,占空比失真与缓冲器和负载有关。应在最坏角落叠加分析。

常见追问:为什么偏斜既可能恶化建立时间也可能恶化保持时间?

易错点:把偏斜当作抖动,或只检查上升沿不检查下降沿。

57. 同步 FIFO 如何跨越两个时钟域?

问题意图:考查 CDC 数据缓冲。

30 秒回答:异步 FIFO 通常用双口存储器保存数据,用 Gray 码读写指针跨域同步,并在各自时钟域生成满、空标志。Gray 码每次只变一位,可降低多位指针同时变化造成的采样错误。

展开逻辑:指针同步器仍需两级触发器,满空判断要处理指针高位翻转;复位和指针初始化必须跨域协调。不能直接同步总线数据而不配套握手。

常见追问:为什么二进制计数器直接跨域同步可能读到混合值?

易错点:只同步一位 valid 信号,或忽略 FIFO 深度必须为相应的二次幂条件。

58. 锁存器和触发器的主要区别是什么?

问题意图:检查电平敏感与边沿触发。

30 秒回答:锁存器在使能电平有效期间透明,输入变化可传到输出;触发器只在时钟边沿采样。锁存器可能支持时间借用但时序分析更复杂,触发器边界清晰、工具约束更直接。

展开逻辑:使用锁存器时必须明确透明窗口、非重叠时钟和保持条件,避免意外推导。综合代码中不完整赋值常会意外产生锁存器。

常见追问:为什么组合逻辑代码缺少 else 可能推导出锁存器?

易错点:把锁存器称为“电平触发的触发器”,或认为所有锁存器都不可靠。

59. 多个时钟域的异步复位为什么必须分别同步释放?

问题意图:考查多时钟域复位的恢复/移除时间与同步释放。

30 秒回答:异步复位拉低可快速进入安全状态,但异步释放若靠近时钟沿会使不同触发器恢复时间不同,造成亚稳态或状态机分裂。常用异步置位、同步释放的复位同步器。

展开逻辑:复位树要考虑扇出、延迟、去抖和电源时序;不同外部时钟域应分别同步释放。复位不能替代正常数据 CDC。

常见追问:为什么复位信号也需要时序约束?

易错点:只关注复位拉低速度,忽略释放边沿和恢复/移除时间。

60. 功耗分析中动态功耗和静态功耗如何区分?

问题意图:检查 CMOS 功耗来源和优化方向。

30 秒回答:动态功耗主要来自电容充放电和短路电流,近似随开关活动率、负载电容和电压平方增加;静态功耗来自漏电流等,在无翻转时仍存在。降压、门控时钟、降低翻转率和优化电源域可分别改善不同部分。

展开逻辑:降低电压会显著降低动态功耗但可能影响速度和噪声裕量;功耗门控会引入唤醒延迟和电源完整性问题。测量应区分平均、峰值和瞬态电流。

常见追问:为什么时钟门控能降功耗但不能随意切断所有时钟?

易错点:把 CMOS 静态功耗认为严格为零,或只看平均功耗忽略峰值电流。

61. TTL 逻辑门的响应速度由哪些因素决定?如何在功耗和噪声裕量约束下提速?

问题意图:考查 TTL 延迟的主要来源,以及速度、功耗和可靠性的取舍。

30 秒回答:TTL 的传播延迟主要受晶体管饱和存储时间、输入输出电容、负载电流、扇出、互连和电源温度条件影响,上升沿和下降沿的瓶颈也可能不同。提速可以采用避免深度饱和的器件结构、减小负载与互连、合理提高驱动能力和优化逻辑级数,但会增加功耗、边沿噪声或面积;最终要在规定的噪声裕量、负载和最坏 PVT 条件下验证。

展开逻辑:先区分器件内部存储时间与外部 RC 延迟,再检查高低电平阈值、电流能力和扇出。增大驱动或缩短互连能降低延迟,却可能增加输入电容、动态功耗和地弹;采用钳位或非饱和结构可减少关断恢复时间,但要重新评估电平兼容、静态功耗和噪声裕量。

常见追问:为什么单纯提高驱动电流不一定能得到更快且更可靠的 TTL 接口?

易错点:只把 TTL 延迟归因于门数,或认为速度优化只需要增大晶体管而不用检查扇出、功耗和逻辑电平。

62. 如何用 D 触发器构成四位异步二进制计数器?其时序风险是什么?

问题意图:考查异步计数器的具体搭建、分频关系和波纹延迟风险。

30 秒回答:让每个 D 触发器的 D 端接反相输出,使其在有效边沿翻转;第一级接外部时钟,后三级分别由前一级输出的指定边沿驱动,四级级联后得到四位二进制计数和逐级二分频。具体使用 Q 还是反相输出取决于触发器边沿定义。它的主要风险是各位不会同时改变,波纹延迟会产生短暂中间码、限制最高频率,并使直接译码或驱动时钟变得不安全。

展开逻辑:复位时应把四级置为确定初态,并明确计数方向和有效边沿。异步计数器的结构简单、硬件少,但第 n 级要等待前级传播,输出翻转存在累积延迟;若下游需要无毛刺状态或高速工作,应改用同一时钟驱动的同步计数器和下一状态逻辑。

常见追问:为什么异步计数器的某个中间状态不适合直接作为片选或地址译码信号?

易错点:把异步计数器误认为所有位同时更新,或不先说明触发器边沿就固定写死第一级输出的连接方式。

63. 如何设计五进制计数器并处理非法状态?

问题意图:考查非二进制模值计数器的状态编码、复位和自恢复设计。

30 秒回答:五进制计数器只需覆盖 000、001、010、011、100 五个状态,因此二进制编码至少需要三个触发器;到 100 后下一拍回到 000。还要为 101、110、111 规定恢复路径,通常让它们在下一拍回到 000,并明确复位、计数使能和输出译码。设计完成后要验证正常循环、暂停、复位和非法状态恢复。

展开逻辑:可以用同步下一状态逻辑实现,也可以用一位有效编码换取更简单的译码但增加触发器数量。比较终值时应避免位宽截断和组合毛刺;若输出直接驱动外部控制,应使用寄存器化或同步译码,不能依赖非法状态瞬间被“自然跳过”。

常见追问:如果计数器上电进入 110,怎样保证它最终回到合法循环而不是锁死?

易错点:只写 000 到 100 的正常序列,遗漏非法状态、复位极性或使能保持行为。

回答要点

  • 先区分组合逻辑和时序逻辑,再说明输入、输出和状态的关系。
  • 时序题要交代时钟、建立保持时间、复位和跨时钟域条件。
  • 工程判断要同时考虑电平、噪声、负载、功耗、时序和可验证性。

常见追问

  • 这个结论在不同工艺、电压、频率或负载下还成立吗?
  • 如何用仿真、断言、逻辑分析仪或上板测试验证?

常见误区

  • 把组合逻辑、锁存器和触发器的时序语义混为一谈。
  • 忽略建立保持时间、亚稳态、复位释放和跨时钟域风险。