Verilog 之《设计与验证VerilogHDL》- 同步设计原则, 多时钟处理

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 需要注意异频两端数据吞吐率不一致,设计时序开足缓冲区,并进行状态监控
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值