1.异步时序设计\同步时序设计
- 异步电路特点
- 电路的核心是核心逻辑用组合逻辑实现
- 电路的主要信号,输出信号等不依赖于任何一个时钟信号,不是由时钟信号驱动触发器(FF)发生
- 异步时序电路最大的缺点是容易产生毛刺
- 不利于器件移植
- 不利于静态时序分析(STA),和验证设计时序性能
- 同步时序电路特点
- 电路的核心逻辑用各类触发器实现
- 电路主要信号, 输出信号由时钟边沿驱动触发器发生,同步时序电路可以较好的避免毛刺
- 有利于器件移植,STA,验证设计时序性能
- 同步设计原则:
- 使用时钟边沿触发所有操作
- 数据采样基本原则
- 有效时钟到达前输入已稳定时间 > 采样寄存器的Setup时间
- 有效时钟到达后输入还将至少稳定时间 > 采样寄存器的hold时间
- 注意
- 异步时钟域的数据转换
- 组合逻辑的设计方法
- 同步时序电路的时钟设计
- 同步时序电路的延迟
- 使用分频 \ 倍频的时钟或者同步计数器
- 较大的延迟使用计数器
- 较小延迟用D触发器打一拍以延迟一时钟周期同时还完成信号与时钟的初步同步,常用于信号采样或增加时序余量时使用
- Behavior Levelde的 #x行为级描述之鞥呢用于仿真激励,综合时会被优化
2.亚稳态
- 异步时钟域的数据转换核心为保证下级时钟对上级数据采样的setup时间和hold时间
- hold时间和setup时间不能满足是D触发器可能会产生亚稳态,输出端Q处于不稳定状态,会产生毛刺和振荡,最终会固定于一个不确定值, 这个稳定的时间成为决断时间(resolation time)
- 亚稳态输出结果 : 毛刺 \ 振荡 \ 固定一电压值 => 产生逻辑误判和亚稳态传播
- 减少由亚稳态导致的错误 => 依靠同步实现
- 使系统对产生的错误不敏感 => 需据设计应用而定
- 使用两级以上寄存器采样可以有效降低亚稳态传播概率
- 当亚稳态输出状态为不确定值时多级采样不能保证正确性, 此时需要采用纠错码等业务手段
3.异步时钟域数据同步
- 异步时钟域数据同步 : 两个时钟不同步的数据域之间的可靠数据交换
- 同频异相 : 时钟频率相同,相位差固定但是不可预测,或相位差不固定
- 异频 : 时钟频率不同
- 不建议使用
- 增加Buffer等组合逻辑延迟线调整采样时间,
- 盲目使用时钟正负沿调整数据采样
- 建议使用
- 同频异相
- 用后级时钟对前级数据采样两次即打两拍,可以有效减少亚稳态的传播,使后级数据均有效,这种做法并不能保证两级寄存器采样后的数据是正确的电平值,当setup / hold时间不满足,采样发生亚稳态,经过决断时间还是会判决到错误值,所以仅适用于对少量错误不敏感的功能单元
- 用DRAM , FIFO或者一段寄存器Buffer完成一部时钟域的数据转换
- 异频问题
- 使用DRAM \ FIFO 需要注意异频两端数据吞吐率不一致,设计时序开足缓冲区,并进行状态监控
- 同频异相