全站数据
8 4 2 0 5 8 1

同步和异步时钟之间是如何联系

唯拉心理 | 简单学习,快乐成才!         
问题更新日期:2024-10-15 00:47:52

问题描述

同步和异步时钟之间是如何联系求高手给解答
精选答案
最佳答案

同步时钟是彼此联系的时钟。例如,由MMCM或PLL生成的两个相同周期的时钟是典型的同步时钟。如果MMCM或PLL生成了不同周期的时钟,那么我们最好把他们当作异步时钟处理,需要用到相应的同步技术。你可以通过运行report_clock_interaction生成报告,然后看报告中的“Path Req (WNS)”列、“Clock Pair Classification”列和 “Clock Pair Classification”列可以容易的辨别出同步时钟。下面是3个场景,你需要使用合适的时钟约束处理异步时钟之间的关系。

1. 如果时钟互联报告有很多(或者一个)红色的

"Timed (unsafe)

" 或者还有桔色的

"Partial False Path (unsafe)

"方框,那你应该是没有正确地对异步时钟约束。如果你的设计中有大量的跨时钟域的异步时钟,那么你需要对那些时钟互联约束。

2. 在时钟互联报告中看

"Clock Pair Classification

" 和

"Inter-Clock Constraints

"这两列。如果时钟对类型是

"No Common Clock

" 或者

"No Common Period

"或者Inter-clock约束显示

"Timed (unsafe)

",就要把这种互联当作异步时钟。

3. 如果“Path Requirement (WNS)”列显示时序非常紧,典型的是小于1ns,或者“Inter-Clock Constraints”列标记为时序“Unsafe”,或者“Partial False Path (unsafe)”,那么你需要把这种时钟互联看作异步时钟。如果“WNS Path Requirement (ns)”这一列的值是合理的(>1 ns), 并且

"Inter-Clock Constraints”是满足的,同时,“Clock Pair Classification”是“干净”的,那么这样的时钟互联可以被看作是同步的,你不需要添加任何时序约束。时序工具会自动的把那些路径当作同步路径处理。为了正确约束跨时钟域的路径,需要考虑以下4个方面:

1. 如果两个时钟之间没有路径,在两个时钟之间可以简单的使用set_clock_groups 或者set_false_path约束2. 如果跨时钟域路径都是一位的,那么你可以在两个时钟之间使用set_clock_groups 或者 set_false_path。

3. 如果路径都是多位的路径,你需要考虑延迟和数据位的偏移,然后使用set_max_delay –datapath_only 和set_bus_skew约束。

4. 如果在两个时钟域之间存在单位和多位混合的跨时钟域路径,那么对于单位的跨时钟域路径要明确的对每一条路径设置伪路径来约束,对于多位的跨时钟域路径,使用set_max_delay –datapath_only 和 set_bus_skew约束。如果时钟是同步的,不需要任何约束。vivado的静态时钟分析工具会自动的设定路径的时序。

其他回答

同步和异步时钟之间的联系在于它们都是用来测量时间的工具,只是它们的工作原理不同。

同步时钟通过接收来自外部源的准确时间信号,以确保与外部时间源同步。而异步时钟则是根据自身的内部振荡器来测量时间,不依赖外部时间信号。尽管两者工作方式不同,但它们都可以用来测量时间,并在需要时进行调整,以保持准确的时间记录。