我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2313|回复: 4

[技术文章] 揭开为拓展的时钟秘密

[复制链接]

该用户从未签到

64

主题

792

回帖

2030

积分

二级逆天

努力学习,努力工作

积分
2030

社区居民终身成就奖

QQ
发表于 2014-1-19 14:31:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
时钟扩展对使用赛灵思Vivado设计套件的工程师来说是一个很大的挑战,但不是一个不可逾越的障碍。


随着越来越多的赛灵思用户开始使用Vivado®设计套件,部分用户对未扩展时钟表示困惑。那么什么是未扩展时钟呢?他们是如何进行关联和计时的?应对未扩展时钟的标准方法又是什么呢?下面让我们来详细探讨一下这个问题,重点是探讨确保设计人员使用正确的同步技术安全地穿越未扩展时钟之间的跨时钟域(clock domain crossing)的方法。


随着Vivado工具的推出,赛灵思现在能够支持采用业界标准Synopsys设计约束(SDC)格式的时序约束。这是ISE设计套件工具处理时序方式上的重大转变。Vivado套件最根本的区别在于所有时钟在默认条件下都彼此关联。这样在ISE中处于无约束状态的时序路径在Vivado设计套件中则处于受约束状态。如果两个时钟之间不存在周期性关系,这种约束会造成非常严格的时序要求。


未扩展时钟是指在1,000个时钟周期内与另一个时钟之间不存在周期性关系的时钟。Vivado BFT 内核范例设计即是体现未扩展时钟工作方式的良好途径。


发起和捕获

时序路径从发起事件开始,由捕获事件终止。发起事件发生在同步单元的时钟从非工作状态转入工作状态的时候。捕获事件发生在下游的或者负责捕获的同步单元的时钟从非工作状态转入工作状态的时候。从发起事件到捕获事件之间所需的时间被称为“路径要求”,它代表自事件发起后到捕获单元引脚处出现有效数据之间所需的时间。


如果发起时钟和捕获时钟同时位于同一物理时钟网中,路径要求仅指时钟周期。以250MHz时钟为例,如果发起单元和捕获单元的工作沿相同(上升沿对上升沿或下降沿对下降沿),那么发起事件和捕获事件之间的时间间隔则恰好为4纳秒。如果发起单元和捕获单元的工作沿不同,路径就必须按一半的时钟频率进行时间计算。这就是时钟的上升沿对下降沿或下降沿对上升沿转换的情况,对一个250MHz的时钟来说,对应的就是2纳秒的路径要求。


在时钟源(source clock)和时钟目标端(destination clock)非同一个时钟的情况下,时序问题就变得更加复杂。具有不同时钟源和时钟目标端的时序路径被称为跨时钟域(CDC)路径。



                               
登录/注册后可看大图

图1:扩展时钟的TCL脚本


如果发起时钟和捕获时钟之间的相位关系未知,就无法计算路径要求。由于不确定相位关系,则无法准确确定路径时序。不安全时钟在Vivado设计套件生成的时钟交互报告中会突出显示。在发起时钟和捕获时钟之间的相位关系已知的情况下,只要两个时钟之间存在周期性关系,就可以用数学方法推导出路径要求。用于判断给定发起时钟和捕获时钟之间最低路径要求的方法称为时钟扩展。不过确定两个时钟之间是否存在周期性关系需要用实际限制加以约束,因为一般情况下两个不同时钟之间不存在共同的周期性特征。Vivado设计套件使用的实际限制条件是1,000个时钟周期,以两个时钟中较小的时钟周期为测量标准。如果在扩展两个时钟到超过1,000个时钟周期后没出现周期性关系,那么这两个时钟就被称为“未扩展”时钟。Vivado设计套件对两个未扩展时钟之间的路径要求为发起时钟和捕获时钟相邻工作沿之间相隔的最少时间。但需要注意的是对超过1,000个时钟周期的情况有更加严格的路径要求,这就是Vivado设计套件将这种类型的两个时钟之间的关系称之为未扩展的原因。



                               
登录/注册后可看大图

图2:125MHz和156.25MHz时钟的时钟扩展


Vivado BFT内核可为测试不同时钟速率提供理想设置,从而判定两个时钟是否为扩展时钟

为更好地理解Vivado设计套件计算未扩展时钟的方法,先以图1中的TCL脚本来对扩展任意两个时钟速率之间的上升沿对上升沿路径要求的方法进行详细说明。图2是这个脚本的输出,即两个分别运行在125MHz和156.25MHz的时钟的扩展。


为确认上述TCL脚本得出的结果,我们来观察一下Vivado BFT 内核范例设计。BFT 内核可为测试不同时钟速率提供理想设置,从而判定两个时钟是否为扩展时钟。该内核有两个独立的时钟源,分别命名为wbClk和bftClk。时序约束可将wbClk和bftClk的频率分别设置为100MHz和200MHz。用户可可对任意两个时钟速率的此类约束进行修改,以便确定由Vivado时序引擎判别的扩展关系。图3是将bftClk设置为125MHz,将wbClk设置为156.25MHz时所显示的结果,并提供了相关的时序(report_timing –from [get_clocks bftClk] -to [get_clocks wbClk])。请注意,由发起沿、捕获沿和时序要求共同确认TCL脚本的预测结果。


表1是使用图4中的TCL脚本获得的几种时钟速率的发起沿、捕获沿和路径要求。



                               
登录/注册后可看大图

图3:125MHz发起时钟到156.25MHz捕获时钟的时钟扩展


表1:时钟扩展实例


                               
登录/注册后可看大图



                               
登录/注册后可看大图

图4:时钟扩展Tcl 脚本


处理未扩展时钟

人们常常把未扩展时钟视为异步时钟,并通过FIFO、边沿检测器或同步器电路等适当的同步技巧来进行处理。如果用户使用此类技巧,应在约束中使用时序例外来处理未扩展时钟(一般使用set_false_path或set_max_delay例外)。


理解和说明未扩展时钟具有重要的意义,因为时钟之间的边沿关系将决定Vivado设计套件中时序引擎所使用的路径要求。赛灵思希望对设计中的所有未扩展时钟进行详查,以确保使用适当的同步技巧安全地穿越未扩展时钟之间的跨时钟域。
没有做不到的,只有想不到的
回复

使用道具 举报

该用户从未签到

16

主题

286

回帖

170

积分

二级逆天

积分
170

社区居民原创达人社区劳模新人进步奖终身成就奖灌水天才奖优秀斑竹奖

QQ
发表于 2014-1-19 16:36:25 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

12

主题

1740

回帖

3780

积分

二级逆天

积分
3780

社区居民忠实会员社区劳模优秀斑竹奖终身成就奖最爱沙发原创达人

QQ
发表于 2014-1-20 06:44:28 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

126

主题

1201

回帖

3万

积分

三级逆天

积分
36313

终身成就奖社区居民忠实会员灌水天才奖新人进步奖幽默大师奖贴图大师奖优秀斑竹奖宣传大使奖金点子奖社区明星

QQ
发表于 2014-1-20 08:48:28 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

16

主题

227

回帖

0

积分

二级逆天

积分
0

终身成就奖

QQ
发表于 2017-4-1 08:25:34 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

每日签到,有金币领取。


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表