当前位置: 首页 > news >正文

FPGA时序分析与约束(3)——时钟不确定性

一、前言

        在之前的文章中,我们介绍了组合电路的时序和时序电路的时序问题,在阅读本文章之前,强烈推荐先阅读完本系列之前的文章,因为这是我们继续学习的理论的理论基础,前文链接:

FPGA时序分析与约束(2)——时序电路时序

        本文我们将介绍时钟相关的时序问题

二、时钟定义

        大家对于时钟肯定并不陌生,没有了时钟信号,时序电路就无法运行。时钟信号如果不规律,或伴随噪声,就有可能打乱电路的运行秩序,使得设计无法正常实现。FPGA设计最基本的时钟通常来源于时钟外部时钟晶振,它能够提供相对稳定的周期性波形,FPGA内部也集成了PLL,MMCM等时钟管理模块,能够对于基准时钟做分频和倍频。FPGA的时序分析中,数据路径的起始和结束都是时钟边沿,时钟周期作为一个标准的时钟基准,它的准确性尤为重要。

        理想的时钟模型是一个占空比为50%且周期固定的方波。

        如上图所示,Tclk为一个时钟周期,时钟周期的倒数1/Tclk就是时钟频率。T1为高脉冲时间宽度,T2为低脉冲时间宽度, Tclk = T1+T2 。时钟信号的高脉冲宽度与周期之比T1/Tclk即为这个时钟信号的占空比。

三、时钟抖动Clock Jitter        

        理想的时钟是一个完全稳定的方波,但是实际的方波是存在一定波动的。时钟抖动(clock jitter)指的在某一个给定的点上时钟周期发生短暂性变化,使得时钟周期在不同的周期上可能加长或者缩短。(两个时钟周期存在差值,是时钟发生器内部产生的,和晶振或者PLL内部电路有关,一般可能是晶振源固有的噪声和干扰,布线对其没有影响);它是频率上的不确定。

  时钟边沿的变化不可能总是理想的瞬变,它总会有一个从高到低或者从低到高的变化过程;这就导致某一个给定的点上时钟周期发生短暂性变化,使得时钟周期在不同的周期上可能加长或者缩短,产生时钟抖动。时钟抖动可以通过改进时钟信号源和减少电磁干扰来减少。一般来说,高精度的时钟信号源可以减少时钟抖动。

        虽然时钟抖动一般都是(ps)级别的,但是对于几百MHZ的时钟频率来说,时钟抖动的占比还是不能忽视的。所以FPGA时序分析中,也会把时钟抖动作为时钟不确定性的一部分加以约束。

四、时钟偏移Clock Skew 

        我们之前讨论过组合电路和时序电路的时序问题,但是其实时钟本身在传播过程中也是存在时延的,刚刚讨论的时钟抖动是时钟自身产生的,而这里的时钟偏移,是由于时钟在传播过程中无法保证同时到达芯片上每一个部分造成的。

        考虑到时偏移的存在,针对之前文章中的建立时间和保持时间时序要求就要进一步优化

        对于建立时间来说,我们考虑最差的时钟偏移情况:时钟先到达了R2

        对于保持时间来说, 同样考虑最差的时钟偏移情况:时钟先到达R1

五、时钟不确定性Clock Uncertainty

          Clock Uncertainty,即时钟的不确定性。时钟的不确定性主要是由时钟偏移Clock Skew和时钟抖动Clock Jitter构成。所以Clock Uncertainty = Clock Skew + Clock Jitter。大家搞明白什么是Skew和Jitter,那么也就明白什么是Clock Uncertainty。

       一般来说,由FPGA内部集成的PLL产生的时钟信号,FPGA编译工具在做时序分析的时候可以直接套用既有的模型给出时钟的时序参数,作为一部分需要预留的时序余量计算在内。而外部晶振所提供的时钟信号,设计者需要指定相关的时钟时序参数,以时序约束的方式告知FPGA编译工具。

六、总结

        本文主要介绍了FPGA中时钟的不确定性问题,FPGA中的时钟不确定性由2部分组成,时钟抖动和时钟偏移,时钟抖动由时钟内部产生,是时钟的固有参数,时钟偏移是由于时钟到达不同部分的时间不一致导致的,与FPGA的设计结构,布局布线等有关。

相关文章:

FPGA时序分析与约束(3)——时钟不确定性

一、前言 在之前的文章中,我们介绍了组合电路的时序和时序电路的时序问题,在阅读本文章之前,强烈推荐先阅读完本系列之前的文章,因为这是我们继续学习的理论的理论基础,前文链接: FPGA时序分析与约束&…...

【Java-HDFS】使用Java操作HDFS获取HDFS指定目录下的数据量大小

Maven依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>RELEASE</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId>…...

协议定制 + Json序列化反序列化

文章目录 协议定制 Json序列化反序列化1. 再谈 "协议"1.1 结构化数据1.2 序列化和反序列化 2. 网络版计算器2.1 服务端2.2 协议定制(1) 网络发送和读取的正确理解(2) 协议定制的问题 2.3 客户端2.4 代码 3. Json实现序列化反序列化3.1 简单介绍3.2 使用 协议定制 J…...

系统架构设计师(第二版)学习笔记----系统架构概述

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----系统架构概述 文章目录 一、系统架构的定义与发展历程1.1 架构的定义1.2 架构设计的作用1.3 架构设计产生的背景1.4 软件架构的发展历程1.5 模块化开发方法1.6 模块法方法分解模块遵循的原则1.7 软件工程…...

FPGA基本算术运算

FPGA基本算术运算 FPGA基本算术运算1 有符号数与无符号数2 浮点数及定点数I、定点数的加减法II、定点数的乘除法 3 仿真验证i、加减法验证ii、乘除法验证 FPGA基本算术运算 FPGA相对于MCU有并行计算、算法效率较高等优势&#xff0c;但同样由于没有成型的FPU等MCU内含的浮点数运…...

Linux Input子系统

一、基本概念 按键、鼠标、键盘、触摸屏等都属于输入(input)设备&#xff0c;Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。本质属于字符设备。 1. input子系统结构如下&#xff1a; input 子系统分为 input 驱动层、input 核心层、input 事件处理层&…...

commet与websocket

commet与websocket Comet 前言 Comet是一种用于web的技术&#xff0c;能使服务器能实时地将更新的信息传送到客户端&#xff0c;而无须客户端发出请求&#xff0c;目前有两种实现方式&#xff0c;长轮询和iframe流。 实现方式 长轮询 长轮询是在打开一条连接以后保持&…...

python3 简易 http server:实现本地与远程服务器传大文件

在个人目录下创建新文件httpserver.py &#xff1a; vim httpserver.py文件内容为python3代码&#xff1a; # !/usr/bin/env python3 import datetime import email import html import http.server import io import mimetypes import os import posixpath import re import…...

Microsoft Edge 主页启动diy以及常用的扩展、收藏夹的网站

一、Microsoft Edge 主页启动diy 二、常用的扩展 1、去广告&#xff1a;uBlock Origin 2、翻译&#xff1a; 页面翻译&#xff1a;右键就有了&#xff0c;已经内置了划词翻译 3、超级复制 三、收藏夹的网站...

文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式&#xff0c;并给…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR启动时打印starting server:listen tcp,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、H.265自动转码H.264、平台级联等。为了便于用户二次开发、调用与集成&#xff0c;…...

【Linux从入门到精通】通信 | 管道通信(匿名管道 命名管道)

本派你文章主要是对进程通信进行详解。主要内容是介绍 为什么通信、怎么进行通信。其中本篇文章主要讲解的是管道通信。希望本篇文章会对你有所帮助。 文章目录 一、进程通信简单介绍 1、1 什么是进程通信 1、2 为什么要进行通信 1、3 进程通信的方式 二、匿名管道 2、1 什么是…...

实践和项目:解决实际问题时,选择合适的数据结构和算法

文章目录 选择合适的数据结构数组链表栈队列树图哈希表 选择合适的算法实践和项目 &#x1f389;欢迎来到数据结构学习专栏~实践和项目&#xff1a;解决实际问题时&#xff0c;选择合适的数据结构和算法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT…...

上线检查工具(待完善)

根据V11《CEBPM系统上线CheckList》整理而得&#xff0c;适用于V11&#xff0c;DHERP&#xff0c;Oracle和MSSQL数据库&#xff0c;检查内容还不完善。 上图&#xff1a; 1&#xff09;数据库连接 2&#xff09;双击[连接别名]&#xff0c;可选择历史连接 3&#xff09;主界面…...

PE文件格式详解

摘要 本文描述了Windows系统的PE文件格式。 PE文件格式简介 PE&#xff08;Portable Executable&#xff09;文件格式是一种Windows操作系统下的可执行文件格式。PE文件格式是由Microsoft基于COFF&#xff08;Common Object File Format&#xff09;格式所定义的&#xff0c…...

【Alibaba中间件技术系列】「RocketMQ技术专题」RocketMQ消息发送的全部流程和落盘原理分析

RocketMQ目前在国内应该是比较流行的MQ 了&#xff0c;目前本人也在公司的项目中进行使用和研究&#xff0c;借着这个机会&#xff0c;分析一下RocketMQ 发送一条消息到存储一条消息的过程&#xff0c;这样会对以后大家分析和研究RocketMQ相关的问题有一定的帮助。 分析的总体…...

关于vue首屏加载loading问题

注意&#xff1a;网上搜索出来的都是教你在index.html里面<div id"app"><div class"loading"></div>或者在app.vue Mounte生命周期函数控制app和loading的显示和隐藏,这里会有一个问题&#xff0c;就是js渲染页面需要时间&#xff0c;一…...

数据库性能测试实践:慢查询统计分析

01、慢查询 查看是否开启慢查询 mysql> show variables like %slow%’; 如图所示&#xff1a; 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志启用log_slow_extra系统变量 &#xff08;从MySQL 8.0.14开始提供&a…...

windows wsl ssh 配置流程 Permission denied (publickey)

wsl ssh连接失败配置流程 1、wsl2 ifconfig的网络ip是虚拟的ip&#xff0c;所以采用wsl1 2、wsl1的安装教程。 3、openssh-server重装 sudo apt-get update sudo apt-get remove openssh-server sudo apt-get install openssh-server4、修改ssh配置文件 sudo vim /etc/ss…...

OpenCV(五):图像颜色空间转换

目录 1.图像颜色空间介绍 RGB 颜色空间 2.HSV 颜色空间 3.RGBA 颜色空间 2.图像数据类型间的互相转换convertTo() 3.不同颜色空间互相转换cvtColor() 4.Android JNI demo 1.图像颜色空间介绍 RGB 颜色空间 RGB 颜色空间是最常见的颜色表示方式之一&#xff0c;其中 R、…...

一图胜千言!数据可视化多维讲解(Python)

数据聚合、汇总和可视化是支撑数据分析领域的三大支柱。长久以来&#xff0c;数据可视化都是一个强有力的工具&#xff0c;被业界广泛使用&#xff0c;却受限于 2 维。在本文中&#xff0c;作者将探索一些有效的多维数据可视化策略&#xff08;范围从 1 维到 6 维&#xff09;。…...

Hbase相关总结

Hbase 1、Hbase的数据写入流程 由客户端发起写入数据的请求, 首先会先连接zookeeper 从zookeeper中获取到当前HMaster的信息,并与HMaster建立连接从HMaster中获取RegionServer列表信息 连接meta表对应的RegionServer地址, 从meta表获取当前要写入的表对应region被那个RegionS…...

C++ Primer Plus第二章编程练习答案

答案仅供参考&#xff0c;实际运行效果取决于运行平台和运行软件 1.编写一个C程序&#xff0c;它显示您的姓名和地址。 #include <iostream> using namespace std;int main() {cout << "My name is sakuraaa0908 C Primer Plus." << endl;cout &…...

Web后端开发(请求响应)上

请求响应的概述 浏览器&#xff08;请求&#xff09;<--------------------------(HTTP协议)---------------------->&#xff08;响应&#xff09;Web服务器 请求&#xff1a;获取请求数据 响应&#xff1a;设置响应数据 BS架构&#xff1a;浏览器/服务器架构模式。…...

LeetCode 338. Counting Bits【动态规划,位运算】简单

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

解释 Git 的基本概念和使用方式。

Git 是一种分布式版本控制系统&#xff0c;它可以跟踪文件的修改历史、协调多个人员的工作、将分支合并到一起等。下面是 Git 的一些基本概念和使用方式。 - 仓库&#xff08;Repository&#xff09;&#xff1a;存储代码、版本控制历史记录等的地方。 - 分支&#xff08;Bran…...

计算机网络初识

目录 1、计算机网络背景 网络发展 认识 "协议" 2、网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 3、网络传输基本流程 网络传输流程图 数据包封装和分用 4、网络中的地址管理 认识IP地址 认识MAC地址 1、计算机网络背景 网络发展 在之前呢&…...

python 笔记(2)——文件、异常、面向对象、装饰器、json

目录 1、文件操作 1-1&#xff09;打开文件的两种方式&#xff1a; 1-2&#xff09;文件操作的简单示例&#xff1a; write方法: read方法&#xff1a; readline方法&#xff1a; readlines方法&#xff1a; 2、异常处理 2-1&#xff09;不会中断程序的异常捕获和处理…...

Meta AI的Nougat能够将数学表达式从PDF文件转换为机器可读文本

大多数科学知识通常以可移植文档格式&#xff08;PDF&#xff09;的形式存储&#xff0c;这也是互联网上第二突出的数据格式。然而&#xff0c;从这种格式中提取信息或将其转换为机器可读的文本具有挑战性&#xff0c;尤其是在涉及数学表达式时。 为了解决这个问题&#xff0c…...

【Python爬虫笔记】爬虫代理IP与访问控制

一、前言 在进行网络爬虫的开发过程中&#xff0c;有许多限制因素阻碍着爬虫程序的正常运行&#xff0c;其中最主要的一点就是反爬虫机制。为了防止爬虫程序在短时间内大量地请求同一个网站&#xff0c;网站管理者会使用一些方式进行限制。这时候&#xff0c;代理IP就是解决方…...