0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

时钟同步的总线电路方案

CHANBAEK 来源:老戚的硬件笔记 作者:老戚的硬件笔记 2023-06-23 17:53 次阅读

高速数字电路模块通常以 同步 (synchronous)电路的形式实现,它们由一个或者多个时钟驱动(触发)。对于 单一时钟(域) 的同步电路而言,只要输入和时钟的关系满足 建立(setup)时间 、保持(hold)时间的时序关系,电路的输出(布尔值)就是可预测的,这是数字逻辑电路设计的基础。如果 不能满足建立保持时间 ,我们认为输入是 异步 (asynchronous) 信号 。一个时钟域的同步信号输出到另一个时钟域通常被认为是异步信号。

本文从同步电路的时序模型出发,探讨了两种时钟同步的总线电路方案:

共同时钟 (common clock)总线

源同步 (source synchronous)总线

共同时钟总线的收发端使用同一时钟,结构简单,由于物理限制和PVT效应,局限于时钟速率比较低的应用;源同步总线增加 接口时钟 ,并以 与数据相同的方式发送 ,大大提升了接口时钟速率,由于引入了 不同的时钟域 ,也增加了接口设计的复杂程度。

1. 时钟同步电路的时序模型

wKgaomSRLJmAdlsvAABt7uLNKaE952.jpg

<图1>

寄存器A在时钟(launch clock)的上升沿打出数据,经过两段飞行时间(传输延时)和组合逻辑电路延时之后,在下一个时钟沿(capture clock)被寄存器B抓取,这里假设A、B的时钟完全相同 - 频率相同相位相同。在两个时钟上升沿之间,按照时间顺序,发生了下列事件:

寄存器A打出输出(QA)。QA在上升沿之后一段时间才能有效(valid),这个时间是tco(clock to output);

传输延时tflight1,组合逻辑电路引起的延时tlogic,传输延时tflight2;

寄存器B抓取输入。输入在时钟上升沿之前必须提前稳定(建立时间tsetup),在时钟上升沿之后保持一段时间(保持时间thold)。假如不满足建立、保持时间的要求,那么B的输出可能会非0非1的亚稳态(Metastability)。

wKgZomSRLJmAL345AAClCV0S1-E092.jpg

<图2>

把这些事件衔接在一起,形成了时序预算(timing budget)分配图。注意,‘X’表示不确定区间,通常是由PVT(制程电压温度)效应引起的偏差。

tsetup_margin = Period - tco(max)- tflight1 - tlogic(max) - tflight2 - tsetup

thold_margin = tco(min) + tflight1 + tlogic(min) + tflight2 - thold

tsetup_margin和thold_margin为 时序裕量 (margin),它>=0代表满足建立保持时间要求。

2. 共同时钟(common clock)系统总线

共同时钟系统其实可以借用<图1>,只需要把寄存器换成芯片(系统)。

共同时钟系统只有一个时钟(域),无论发送端还是接收端。

回到时序计算公式,要使tsetup_margin >=0,可以得到:

Period >= tco(max) + tflight1 + tlogic(max) + tflight2 + tsetup

右边这些参数代表了真实的物理局限,它们决定了时钟可以跑多快(时钟周期最小是多少)。

tflight1、tflight2来自于PCB走线,连接器芯片封装等等。

tco、tsetup、tlogic代表芯片的 物理特性参数 。不同的芯片在不同的温度/电压下由于PVT效应表现会有变化,形成了时序图上的 不确定区间 。我们必须计算最恶劣(worst case)的情况,这会吃掉时序裕量。

而且,我们也做不到理想的单一同步时钟。出于信号质量的考量,时钟信号通常是点对点(point to point)的连接。不同模块的时钟,通常是连接同一个时钟buffer的不同扇出(fanout)。在工程实践上,理想的同步很难做到,只能把相位偏差(skew)控制在一定范围内。

所有这些,都限制了时钟速度或者数据吞吐量的提升,而优化参数常常意味着成本的抬升。老戚看到的共同时钟系统的时钟没有超过100MHz的。实现更高速总线的解决办法是源同步时钟方案。

3. 源同步(source synchronous)系统

源同步在芯片(系统)接口上 同时输出数据和(接口)时钟 ,数据和时钟采用完全相同的IO结构,从而最大程度的抵消tco,tflight等等。通常认为,同一个芯片上的PVT效应也是一致的。

wKgaomSRLJmAVx4-AACHKcgr_uk307.jpg

<图3>

<图3>是典型的中心对齐(center aligned)的源同步DDR输出。内部PLL的输出两路相位相差90度的时钟,经过同等的传输延时,到达接收端的时候,时钟刚好处在数据的中心(假定接收端建立保持时间的要求也是对等的)。接收端使用接口时钟clock_out抓取数据data_out,紧接着把数据同步到本地时钟。 接口时钟和本地时钟并不一致 ,属于 不同的时钟域 。

现有的高速并行接口无一例外都是源同步,最典型的当然是内存接口。以DDR4为例,地址/命令/片选信号和主时钟形成了一组源同步总线,内存数据DQ每8位就会有一个DQS信号作为接口时钟,形成源同步的数据时钟总线。在接收端,数据会先被抓取到相应DQS的时钟域,然后同步到主时钟。

源同步很好的解决了接口总线的速度问题,却也引入了不同的时钟域, 增加了收发接口设计的复杂度 。(系统攻城狮成功甩锅给了芯片)

4.跨时钟域(clock domain crossing)

实现跨时钟域的信号传递要回到时钟域C0的输出到时钟域C1的输入的建立保持时间的基本问题。

假如时钟C0/C1 同源 (不同频,例如分频/倍频关系)而且相位差固定的 可以直接用本地时钟抓取 ;同频(源)但是不知道相位关系不确定的可以以FIFO的方式解决;有频差的也可以用 FIFO解决 ,但要防止溢出(overrun,underrun)。

还是以DDR4内存接口为例,假设主时钟是1600MHz,那么DQS则是倍频 --- 3200MHz。由于时钟(包括地址/命令/片选)信号的fly-by拓扑,时钟到达不同内存颗粒存在先后顺序。对于写操作(write),控制器通过write leveling侦测到未经调整的DQS和主时钟的相位关系,相应的调整输出DQS的相位,保证内存颗粒接收的DQS和主时钟保持 特定的相位关系 ,从而在颗粒内部能够以最简单的方式(同时延时latency最小)完成跨时钟域。对于读操作,似乎有read leveling来实现相似的功能(这方面资料不详)。有趣的是,在DDR4内存接口,控制器(通常逻辑更为复杂)承担了所有时序调整的责任,内存(存储厂商的逻辑设计能力要差一些)接口则以最简化的方式工作。

以太网领域,处理跨时钟域更常用的方法是FIFO(First In First Out)。FIFO不仅能够处理同频时钟的跨时钟域数据转换,也能处理不同频率(有限频差)的跨时钟域处理,从而获得了广泛的应用。PCIe协议和以太网协议都运用基于FIFO的 弹性缓冲 (elastic buffer)来处理系统时钟的PPM偏差问题,这个话题咱们下回分解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • DDR
    DDR
    +关注

    关注

    9

    文章

    677

    浏览量

    64240
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87214
  • 数字电路
    +关注

    关注

    192

    文章

    1396

    浏览量

    79750
  • 时钟同步
    +关注

    关注

    0

    文章

    72

    浏览量

    12617
收藏 人收藏

    评论

    相关推荐

    基于D触发器实现时钟电路同步设计

    时钟使能电路同步设计的重要基本电路,在很多设计中,虽然内部不同模块的处理速度不同,但是由于这些时钟是同源的,可以将它们转化为单一的
    发表于 08-06 10:35 4444次阅读
    基于D触发器实现<b class='flag-5'>时钟</b><b class='flag-5'>电路</b><b class='flag-5'>同步</b>设计

    请问什么PSoC组件与系统总线时钟同步

    我已经尝试了一些使用计数器的UDB组件,但看起来它们与ButhLoCH同步。我们的应用需要一个异步时钟,因为数字PLL通常会产生太多的抖动(或者相反地,我们可能想要运行一个慢速的系统总线来节省功率
    发表于 09-11 11:33

    基于CAN现场总线同步控制解决方案

    系统维护和使用。随着机电一体化技术的发展,现场总线技术不断应用到各个领域并得到了广泛的应用。本文针对机组式印刷机械的同步需求,提出了一种基于CAN现场总线同步控制解决
    发表于 01-29 06:37

    总线时钟结构

    总线时钟结构科利登系统有限公司大部分并行总线和高速串行总线的区别主要在于发送端和接收端不同的同步方式。由于其很高的复杂性,
    发表于 12-19 15:25 17次下载

    时钟同步的振荡器电路

    时钟同步的振荡器电路
    发表于 05-16 16:59 732次阅读
    与<b class='flag-5'>时钟</b><b class='flag-5'>同步</b>的振荡器<b class='flag-5'>电路</b>图

    同步时钟及等级

    同步时钟及等级 基准时钟 同步网由各节点时钟和传递同步定时信号的
    发表于 04-03 16:27 3678次阅读

    基于总线同步时钟卡设计与实现(PCI Express)

    中各个设备之间时间的一致性和准确性,系统中配备时钟源进行授时,同步时钟卡从时钟源获取高精度的时间,使系统中各个设备与主机时钟源保持高精度的
    发表于 10-30 13:25 0次下载
    基于<b class='flag-5'>总线</b><b class='flag-5'>同步</b><b class='flag-5'>时钟</b>卡设计与实现(PCI Express)

    嵌入式同步时钟系统的设计方案

    时钟的管理。本文详细介绍了利用嵌入式微控制器MSP430单片机和数字锁相环(DPLL)来实现嵌入式同步时钟系统的方案和设计实例。 系统总体结构 同步
    发表于 11-04 10:21 6次下载
    嵌入式<b class='flag-5'>同步</b><b class='flag-5'>时钟</b>系统的设计<b class='flag-5'>方案</b>

    基于FPGA的高精度同步时钟系统设计

    介绍了精密时钟同步协议(PTP)的原理。本文精简了该协议,设计并实现了一种低成本、高精度的时钟同步系统方案。该
    发表于 11-17 15:57 6360次阅读
    基于FPGA的高精度<b class='flag-5'>同步</b><b class='flag-5'>时钟</b>系统设计

    微波时钟同步设计方案

    微波作为无线和传输设备的重要接入设备,在网络设计和使用中要针对接入业务的类型,提供满足其需求的时钟同步方案。当前阶段,微波主要支持的时钟同步
    发表于 12-07 20:51 588次阅读

    简谈异步电路中的时钟同步处理方法

    大家好,又到了每日学习的时候了。今天我们来聊一聊异步电路中的时钟同步处理方法。 既然说到了时钟同步处理,那么什么是
    的头像 发表于 05-21 14:56 1.3w次阅读
    简谈异步<b class='flag-5'>电路</b>中的<b class='flag-5'>时钟</b><b class='flag-5'>同步</b>处理方法

    总线半握手跨时钟域处理

    总线半握手跨时钟域处理 简要概述: 在上一篇讲了单bit脉冲同步器跨时钟处理,本文讲述控制信号基于脉冲同步机制的
    的头像 发表于 04-04 12:32 2383次阅读
    <b class='flag-5'>总线</b>半握手跨<b class='flag-5'>时钟</b>域处理

    探讨两种时钟同步总线电路方案

    高速数字电路模块通常以同步(synchronous)电路的形式实现,它们由一个或者多个时钟驱动(触发)。
    的头像 发表于 06-27 15:18 1025次阅读
    探讨两种<b class='flag-5'>时钟</b><b class='flag-5'>同步</b>的<b class='flag-5'>总线</b><b class='flag-5'>电路</b><b class='flag-5'>方案</b>

    时钟信号的同步 在数字电路里怎样让两个不同步时钟信号同步

    时钟信号的同步 在数字电路里怎样让两个不同步时钟信号同步? 在数字
    的头像 发表于 10-18 15:23 869次阅读

    异步电路中的时钟同步处理方法

    异步电路中的时钟同步处理方法  时钟同步在异步电路中是至关重要的,它确保了
    的头像 发表于 01-16 14:42 327次阅读