FPGA中的时钟域问题

一、时钟域的定义

所谓时钟域,就是同一个时钟驱动的区域。这里的驱动,是指时钟刷新D触发器的事件,体现在verilog中就是always的边沿触发信号。单一时钟域是FPGA的基本组成部分,但是随着设计规模扩大,多时钟域的设计是必要的。维持庞大的单时钟域对时钟源的要求是极为苛刻的。数字电路系统一般采用时钟分区和时钟网络来保证时钟到达每个单元的时间基本一致,但是,随着设计规模的扩大,时钟网络也变得极为复杂,且同步效果变差。所以,进行多时钟域设计是必要的。

二、Altera中PLL的时钟管理

Altera中可以使用PLL将输入时钟分为多个时钟域,以便实现不同时钟域的驱动。门控时钟也可以产生不同的时钟域(虽然不推荐,但是在简单的设计中是可以实现的)。在TimeQuest中默认所有时钟都是关联的,对于无数据交换的时钟域,需要设置伪路径来满足时序条件。对于PLL的输出时钟,可以使用多周期路径约束,就是对输入时钟约束后对PLL所有输出时钟进行约束。

三、单比特信号跨时钟域

(1)跨时钟域(CDC)技术

在不同的时钟域之间设计需要使用CDC技术,其难点在于EDA工具无法发现这个问题,STA进行独立的时钟域分析,需要伪路径或者多周期路径实现关联后才能实现跨时钟域的分析。这就要求设计者在设计之初就很好的考虑这个问题。

(2)亚稳态及其危害

时钟边沿前有建立时间,后有保持时间,一旦违反两个要求之一,就发生时序违规。违规的后果就是产生亚稳态,即电平处于逻辑0和1之间的状态,可能产生逻辑错误。亚稳态持续的时间和具体的时钟有关。

(3)亚稳态的解决方法1-双触发

在跨时钟域的设计中,有两种情况:

保证数据精确识别,牺牲部分数据;

保证数据完整识别,牺牲部分时间。

两种情况都需要同步器。常用的同步器就是两级级联寄存器。第一级寄存器将采样变化数据的信号缓存,有第二级寄存器读出亚稳态的信号。实际上,亚稳态并没有由于同步器消除,只不过降低了亚稳态出现逻辑错误的可能。

(4)三级触发器

亚稳态出现错误的间隔时间(MTBF)是对同步器性能的描述。故障间隔时间越长,同步效果越好。使用三级触发器要比二级触发器的效果要好。

(5)如何同步快速信号到慢速信号

前面的多级触发器同步器可以有效处理从低速信号传输到高速信号,但是对于高速信号传输到低速信号,则需要其他的结构实现同步。

1️⃣开环方案,即将高速信号展宽,大于低速信号的1.5倍为好。该方案无需握手,是用于时钟频率固定且信号可分析的设计中。

2️⃣闭环方案,将时钟域之间做成握手通信模型,优势在于保证信号采样正确,缺点在于时间等待长,需要信号保持足够长的时间。

四、多比特信号跨时钟域

(1)融合多比特信号为单比特信号

某些多比特信号之间存在关联性,使用单比特信号即可满足设计的要求。这时候对信号进行融合,可以有效地保证信号的稳定性。

(2)多周期路径规划

就是加入同步信号,保证数据完整读取的时机是正确的,进而确保数据完整。是一个单向握手模型。

五、使用fifo处理多比特跨时钟域信号

异步fifo支持不同周期的时钟写入和读取,可以将多比特信号暂存后在读取,保证数据完整。使用异步fifo需要考虑写入速率、读取速率和最大序列尺寸。

六、多时钟域设计分区

设计分区,就是将不同时钟域划分为不同的区域,分别进行时序分析。同步器单独作为一个分区,不做时序分析(存在时序违规,但是可以自我调整的模块)。这样可以加快时序分析的效率和时序报告的明确性。

分区后的时序分析也是基于这个方案的,注意在设计时忽略同步器的路径时序。

七、门控时钟行波时钟的处理

(1)行波时钟和门控时钟

行波时钟:寄存器驱动的时钟

门控时钟:组合逻辑生成的时钟

(2)处理原则

尽量不适用衍生时钟,使用PLL锁相环或者数字锁相环实现时钟产生。

实在使用了就尽量不要有跨派生时钟域的数据同步。

Altera器件出现保持时间问题可以利用软件自动布线延时来保证保持时间的合理。

Altera中可以使用ALTCLKCTRL这类的时钟处理IP实现时钟的派生,可以避免派生时钟的时序问题。

FPGA中的时钟域问题的更多相关文章

  1. 基于FPGA的跨时钟域信号处理——专用握手信号

    在逻辑设计领域,只涉及单个时钟域的设计并不多.尤其对于一些复杂的应用,FPGA往往需要和多个时钟域的信号进行通信.异步时钟域所涉及的两个时钟之间可能存在相位差,也可能没有任何频率关系,即通常所说的不同 ...

  2. 【转】关于FPGA中建立时间和保持时间的探讨

      时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...

  3. FPGA中亚稳态相关问题及跨时钟域处理

    前言 触发器输入端口的数据在时间窗口内发生变化,会导致时序违例.触发器的输出在一段时间内徘徊在一个中间电平,既不是0也不是1.这段时间称为决断时间(resolution time).经过resolut ...

  4. FPGA跨时钟域处理方法

    文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使 ...

  5. FPGA基础学习(3) -- 跨时钟域处理方法

    文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使 ...

  6. FPGA跨时钟域握手信号的结构

    FPGA跨时钟数据传输,是我们经常遇到的问题的,下面给出一种跨时钟握手操作的电路结构.先上图 先对与其他人的结构,这个结构最大的特点是使用 req 从低到高或者高到低的变化 来表示DIN数据有效并开始 ...

  7. 三叔学FPGA系列之一:Cyclone V中的时钟资源

    之前的项目中更多的是有师兄提供经验和帮助,追求的是快速上手,所以不管对于硬件电路设计,还是verilog电路编程,甚至是FPGA内部的资源,都没来得及系统地学习,最近在做算法到电路的实现,正好系统学习 ...

  8. 跨时钟域设计【一】——Slow to fast clock domain

    跨时钟域设计是FPGA设计中经常遇到的问题,特别是对Trigger信号进行同步设计,往往需要把慢时钟域的Trigger信号同步到快时钟域下,下面是我工作中用到的慢时钟域到快时钟域的Verilog HD ...

  9. 异步FIFO跨时钟域亚稳态如何解决?

    跨时钟域的问题:前一篇已经提到要通过比较读写指针来判断产生读空和写满信号,但是读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO的读写时钟域不同,是异步的,要是将读时钟域的读指针与写时钟域 ...

  10. FPGA中亚稳态——让你无处可逃

    1. 应用背景 1.1         亚稳态发生原因 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery ti ...

随机推荐

  1. 【Unity3D】卷轴特效

    1 原理 ​ 当一个圆在地面上沿直线匀速滚动时,圆上固定点的运动轨迹称为旋轮线(或摆线.圆滚线).本文实现的卷轴特效使用了旋轮线相关理论. ​ 以下是卷轴特效原理及公式推导,将屏幕坐标 (x) 映射到 ...

  2. Java Socket编程系列(二)开发带回声功能的Server和Client

    服务器端: package com.dylan.socket; import java.io.*; import java.net.ServerSocket; import java.net.Sock ...

  3. Lucene介绍与使用

    Lucene介绍与使用 原文链接:https://blog.csdn.net/weixin_42633131/article/details/82873731 不选择使用Lucene的6大原因? 原文 ...

  4. 为产品的一堆Visual Studio解决方案引入Directory.Build.props

    为什么需要Directory.Build.props? 一个产品有了多个甚至几十个解决方案之后,每个解决方案里面的项目可能会引用一个dll包的不同版本,因此需要集中管理dll包的版本号. .NET的D ...

  5. 浅入 ABP 系列(7):对象映射

    目录 基础 DTO和实体 麻烦的映射 AutoMapper 集成 IObjectMapper/ObjectMapper 对象拓展 写博客的过程中,发现很多基础理论太薄弱,因此很多专业词汇可能会解释错误 ...

  6. Anaconda与Python环境在Windows中的部署

      本文介绍在Win10电脑中,安装Anaconda环境与Python语言的方法.   在这里需要注意,本文介绍的方法是在电脑自身原本不含有Python的情况下进行的:如果大家电脑中原本就下载.安装过 ...

  7. 关于 LLM 和知识图谱、图数据库,大家都关注哪些问题呢?

    自 LLM 系列文章<知识图谱驱动的大语言模型 Llama Index>.<Text2Cypher:大语言模型驱动的图查询生成>.<Graph RAG: 知识图谱结合 L ...

  8. uniapp+定时云函数保活replit

    在replit中运行起来后,如果没有请求,则会在5分钟后关机,所以需要一个进程来定时访问一下,以达到保活的目的.replit是什么?我的理解是:它是一个在线的IDE,前端项目可以直接跑起来,且repl ...

  9. 记一次 .NET某设备监控自动化系统 CPU爆高分析

    一:背景 1. 讲故事 先说一下题外话,一个监控别人系统运行状态的程序,结果自己出问题了,有时候想一想还是挺讽刺的,哈哈,开个玩笑,我们回到正题,前些天有位朋友找到我,说他们的系统会偶发性CPU爆高, ...

  10. 国内RPA融资年终大盘点:19起投资总额破34亿估值近230亿,垂直落地之年开启

    2021国内RPA融资年终盘点:15家厂商融资总额破34亿,估值近230亿 2021RPA融资年终大盘点:19起投资估值近230亿,垂直落地之年开启 2021国内RPA融资年终盘点:15家厂商19起投 ...