当前位置:首页 > 技术学院 > 技术前线
[导读]只要FPGA设计中的所有资源不全属于一个时钟域,那么就可能存在跨时钟域问题,因为异步逻辑其实也可以看做一种特殊的跨时钟域问题。

只要FPGA设计中的所有资源不全属于一个时钟域,那么就可能存在跨时钟域问题,因为异步逻辑其实也可以看做一种特殊的跨时钟域问题。发生跨时钟域问题的必要条件是不同时钟域之间存在信息交互,如果一个FPGA设计中存在多个时钟域的话,这几乎是无法避免的,否则各个时钟域互不相关,那么就相当于把原设计分解为多个独立的小设计,这样的话FPGA设计的功能就无法通过协作来扩展。

那么当两个不同时钟域之间进行信息交互的时候,到底会存在什么问题呢?

首先介绍亚稳态:

触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器的数据输入端口上数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规。存在这个时序违规是因为建立时间要求和保持时间要求被违反了,此时触发器内部的一个节点(或者要输出到外部的节点)可能会在一个电压范围内浮动,无法稳定在逻辑0或者逻辑1状态。换句话说,如果数据在上述窗口中被采集,触发器中的晶体管不能可靠地设置为逻辑0或者逻辑1对应的电平上。所以此时的晶体管并未处于饱和区对应的高或者低电平,而是在稳定到一个确定电平之前,徘徊在一个中间电平状态(这个中间电平或许是一个正确值,也许不是)。

在 FPGA 设计 中,如果一个工程包含多个时钟,正确的时钟匹配和跨时钟域处理至关重要,否则可能会导致亚稳态问题、数据损坏或系统错误。以下是几种常见的方法来处理多个时钟:

1. 确定各个时钟的关系

首先,需要分析时钟之间的关系:

同步时钟(有共同的时钟源,如 PLL 产生的不同时钟):可以直接在时序约束中定义多时钟域。异步时钟(无共同源,例如不同模块由不同时钟驱动):需要跨时钟域处理。2. 处理多个时钟的方法

方法 1:使用 PLL / MMCM 进行时钟同步

适用于多个时钟频率相关的情况(如 100MHz 和 50MHz 来源于同一 200MHz PLL)。

使用 PLL(Phase-Locked Loop)或 MMCM(Mixed-Mode Clock Manager) 生成多个相关时钟,并确保它们是同步的。在时序约束(SDC 文件或 XDC 文件)中正确指定多时钟域。使用 时钟缓冲器(BUFG, BUFGCE, BUFHCE) 以减少时钟偏斜(Clock Skew)。方法 2:跨时钟域信号处理(CDC 处理)

适用于异步时钟(不同来源)的情况

① 单比特信号:使用双/多级寄存器同步

用于跨时钟域的单个信号(如复位、使能信号等)

原理:使用两个或多个级联的 D 触发器(DFF) 进行同步,以消除亚稳态。② 多比特数据:使用 FIFO 进行数据缓冲

适用于异步时钟域之间的数据传输

FIFO(First-In-First-Out 缓冲器) 具有独立的 写时钟 & 读时钟,适用于跨时钟域传输数据。例子:写端口 用 clk_A 作为时钟,写入数据。读端口 用 clk_B 作为时钟,读取数据。FPGA 里常用的 FIFO:Xilinx: xpm_fifo_asyncIntel (Altera): scfifo③ 跨时钟域握手机制(Handshake)

适用于小数据量但需高可靠性的跨时钟通信

双时钟握手协议:发送方等待接收方的 ack 信号,确保数据已被正确接收。Gray Code(格雷码):用于跨时钟域的 地址传输,避免跳变时数据错误。3. 时序约束(Timing Constraints)

在 FPGA 设计中,必须正确设置多时钟的时序约束,否则可能会导致不稳定的行为。

处理时钟域跨越问题的方法

1. 同步器

双边沿触发器同步器:将异步信号转换为与目标时钟对齐的双边沿触发器信号。

三态同步器:通过三态门实现信号跨域同步。

2. 握手协议:使用握手协议确保数据在跨越时钟域传输时的正确性,如使用握手信号来控制数据的有效性和接收阶段。

3. FIFO缓冲区:在不同时钟域之间使用FIFO缓冲区进行数据传输,以平衡不同时钟频率带来的速度不匹配。

4. 时钟插补:使用时钟插补技术,通过插入额外的时钟周期来调整不同时钟域之间的时序关系,缓解时钟域跨越问题。

5. 异步FIFO:异步FIFO可以在不同时钟域之间进行高效的数据传输,通过自适应的方式解决不同时钟频率之间的速度差异。

6. 严格的规范约束:制定严格的时序分析和布线规则,避免设计中出现时序失真,减少时钟域跨越问题的可能性。

应用举例

串口通信:处理串口数据传输时,需要处理串口接收和处理时钟信号的时钟域跨越问题。

多核处理器:在多核处理器系统中,不同核心的时钟频率可能不同,需要处理时钟域跨越问题。

深度学习加速器:在人工智能领域的FPGA设计中,处理神经网络计算单元与整体时钟域的同步问题。

时钟域跨越问题是复杂FPGA设计中常见的挑战之一,需要仔细设计和有效的解决方案来确保系统的稳定性和正确性。通过合理的设计和采用适当的技术手段,可以有效地处理时钟域跨越问题,提高FPGA系统的可靠性和性能。

在实际应用中,工程师需要深入理解各种时钟域跨越问题的原因和可能导致的后果,结合具体的设计需求和约束条件选择合适的解决方案。同时,进行严格的时序分析、仿真验证和布局布线规划也是避免时钟域跨越问题的重要步骤。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭