【FPGA】时序约束与分析

设计约束


设计约束所处环节:

约束输入

分析实现结果

设计优化

设计约束分类:

物理约束:I/O接口约束(例如引脚分配、电平标准设定等物理属性的约束)、布局约束、布线约束以及配置约束

时序约束:设计FPGA内部的各种逻辑或走线的延时,反映系统的频率和速度的约束

时序约束的目的:让FPGA编译工具合理地调配FPGA内部有限的布局布线资源,尽可能地满足设计者设定的所有时序要求(主要是将走线、逻辑电路等产生的延时限制在指定的范围内)

时序约束的定义

设计者根据实际的系统功能,通过时序约束的方式提出时序要求;FPGA编译工具根据设计者的时序要求,进行布局布线;编译完成后,FPGA编译工具还需要针对布局布线的结果,套用特定的时序模型(FPGA器件厂商能够使用这样的模型,对FPGA布局布线后的每一个逻辑电路和走线计算出延时信息),给出最终的时序分析和报告;设计者通过查看时序报告,确认布局布线后的时序结果是否满足设计要求

时序过约束和时序欠约束

没有任何设计约束的工程,编译器的工作就如同“脱缰的野马”般漫无目的且随意任性;

任何的时序过约束(over-constraining,时序约束过于严格,超过实际设计的要求)或时序欠约束(under-constraining,时序约束过于松散,低于实际设计的要求),都可能导致时序难以收敛(即难以达到设计要求)。因此,为了达到特定应用的设计要求,设计者必须设定合适的时序约束

设计约束实例

设计需求:din1<10ns , din2<10ns , din3<20ns , din4<20ns

没有时序约束的情况(可能满足,也可能不满足,不确定)

合理的时序约束

时序欠约束(din1和din2欠约束):din1<20ns , din2<20ns , din3<20ns , din4<20ns

din1或din2若被分配到>10ns的两条普通走线,则时序违规

时序过约束(din3和din4过约束):din1<10ns , din2<10ns , din3<10ns , din4<10ns

受到实际资源限制,时序报告总是时序违规(Fail)

基于Vivado的时序约束方法

时序约束基本步骤

.xdc   引脚分配

Edit Constraints Sets...

Make active

右键constrs_2,选择Add Sources...,add or create constraints

at7_pins  物理约束、引脚约束

at7_timing  时序约束

Vivado界面

SYNTHESIS

Run Synthesis

Constraints Wizard ,Define Target(存到哪个文件),再次点击Constraints Wizard,识别时钟,Frequency(MHz)可以设置,或使用默认

Edit Timing Constraints,Timing Constraints,Period(ns)时钟周期

切换xdc保存文件,右键要保存的文件,Set as Target Constraint File,此时该文件后面就会出现(target)

Vivado也提供xdc约束脚本模版:

PROJECT MANAGER

Setting

Language Templates

时钟与时钟偏差

时序逻辑:输出在时钟沿的触发下才能更新输入的变化

组合逻辑:无需时钟沿的触发,输出立刻更新输入的变化

主要差异:

组合逻辑的输出与输入直接相关,时序逻辑的输出和原有状态也有关

组合逻辑立即反应当前输入状态,时序逻辑还必须在时钟上升沿触发后输出新值

组合逻辑容易出现竞争、冒险现象(组合逻辑中,同一信号经不同的路径传输后,到达电路中的某一会合点的时间有先有后,这种现象称为逻辑竞争,而因此产生输出干扰脉冲的现象称为冒险),时序逻辑一般不会出现竞争、冒险现象

组合逻辑的时序较难保证,时序逻辑更容易达到时序收敛,时序逻辑更可控

组合逻辑只适合简单的电路,时序逻辑能够胜任大规模的逻辑电路

基本时钟模型

Tclk为一个时钟周期(单位:秒,FPGA的时钟周期一般为纳秒级别,即ns)

时钟的倒数1/Tclk即为时钟频率(单位:Hz,FPGA的时钟频率一般为MHz级别,1MHz=1,000,000Hz)

T1为高脉冲时间宽度,T2为低脉冲时间宽度,Tclk=T1+T2

时钟信号的高脉冲宽度与周期之比T1/Tclk即该时钟信号的占空比

时钟频率是FPGA设计性能一个很重要的指标,但是,单纯的时钟频率并不是衡量设计性能好坏的唯一指标。FPGA设计中,还有并行结构、流水线结构等体系架构方式也是设计性能的重要影响因素。

时钟偏差

无论是来自外部晶振的时钟信号,还是在FPGA内部经过PLL产生的时钟信号,它们的周期都无法保证绝对的精准,影响时钟周期准确性的因素有很多,比如材料、工艺、温度以及各种噪声等。这些对时钟周期的准确性产生的影响导致了时钟的偏差。

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

时钟主要参数


时钟精度(Frequency tolerance)、时钟温漂(Frequency versus temperature characteristic)和时钟抖动(jitter)

以SiTime公司的SiT8021系列晶振规格书为例

精度Initial Tolerance  -15~+15  ppm(part per million百万分率或百万分之几)

100MHz也就是10ns,每个时钟周期会产生的时钟偏差为+-15*10的-6次方

抖动RMS Period Jitter 75~110ps   (1皮秒=1000,000纳秒,1万亿分之一秒,10的-12次方秒)

温漂Frequency Stability

时钟抖动

晶振源固有的噪声和干扰通常会带来时钟信号的周期性的偏差,称之为始终抖动(jjitter),其单位一般是ps

FPGA时序约束分析中,也会将时钟抖动作为时钟不确定性(uncertainty)的一部分加以约束

建立时间和保持时间

建立时间(Setup Time,Tsu),是指在时钟上升沿到来之前数据必须保持稳定的时间

保持时间(Hold Time,Th),是指在时钟上升沿到来以后得数据必须保持稳定的时间

一个数据需要在时钟的上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳定;换句话说,就是在这段时间内传输的数据不能发生任何的变化

建立时间违规

保持时间违规

时序分析中路径、沿和关系的定义

数据到达路径(data arrival path),是指数据在两个寄存器间传输的实际路径,由此路径可以算出数据在两个寄存器间传输的实际时间

数据需求路径(data require path),是指为了确保稳定、可靠且有效的传输(即满足相应的建立时间和保持时间要求),数据在两个寄存器间传输的理论所需时间的计算路径

时钟启动沿和锁存沿、建立时间关系和保持时间关系

时钟启动沿:传输到源寄存器的时钟沿

时钟锁存沿:传输到目的寄存器的时钟沿

建立时间关系:

当前数据从源寄存器的时钟启动沿,经过一定的延时,最终到达目的寄存器的时钟锁存沿,保证当前数据被锁存的建立时间得到满足

启动沿从时间上看就要比锁存早一个时钟周期,即他们之间通常是相差一个时钟周期的关系

保持时间关系:

当前数据从源寄存器的时钟启动沿,经过一定的延时,最终达到目的寄存器的时钟锁存沿,保证上一个数据的保持时间得到满足

启动沿和锁存沿所分别对应的时钟其实是同一个时钟周期由时钟源传输过来的时钟信号

寄存器到寄存器的时序路径分析

时钟共同路径

系统同步接口与源同步接口

系统同步接口

FPGA与外部芯片之间的通信时钟都由外部同一时钟源(系统时钟)产生时,我们称之为系统同步接口

源同步接口

FPGA与外部芯片之间的通信时钟都由源寄存器所在一侧(输出端)产生时,我们称之为源同步接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952029.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker搭建atlassian-confluence:7.2.0

文章目录 引言I 部署前准备数据库镜像准备自己构建镜像dockerhub第三方镜像II 安装启动容器基础配置(获取服务器ID)授权码获取集群选择设置数据库配置管理员账号引言 准备数据库、镜像启动容器获取服务器ID根据服务器ID等信息,基于atlassian-agent.jar 授权I 部署前准备 数…

征战越南电商直播,SD - WAN 专线赋能企业带货新征程

在当今数字化商业浪潮中&#xff0c;越南电商市场正经历着蓬勃发展与激烈变革。根据 Sapo Technology Joint Stock Company 对全国 15,000 名卖家的深度调查&#xff0c;2024 年零售业务的直播领域呈现出多元竞争态势。Facebook Live 强势占据多渠道或仅在线销售卖家总直播会话…

软件测试之黑盒测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 概念与定义 黑盒测试&#xff1a;又称功能测试、数据驱动测试或基于需求规格说明书的测试。通过黑盒测试来检测每个功能是否都能正常使用。黑盒测 试把测试对象看…

熵与交叉熵:从不确定性角度理解 KL 散度

从不确定性减少视角理解KL散度 【 Transformer 系列&#xff0c;故事从 d k \sqrt{d_k} dk​ ​说起】 LLM这么火&#xff0c;Transformer厥功甚伟&#xff0c;某天心血来潮~&#xff0c;再去看看&#xff01; 它长这个样子&#xff1a; 深入浅出 Transformer 看完后&#xff…

【Unity3D】导出Android项目以及Java混淆

Android Studio 下载文件归档 | Android Developers Android--混淆配置&#xff08;比较详细的混淆规则&#xff09;_android 混淆规则-CSDN博客 Unity版本&#xff1a;2019.4.0f1 Gradle版本&#xff1a;5.6.4&#xff08;或5.1.1&#xff09; Gradle Plugin版本&#xff…

vue3 + ts + element-plus(el-upload + vuedraggable实现上传OSS并排序)

这里创建项目就不多说了 安装element-plus npm install element-plus 安装vuedraggable npm install vuedraggable 安装ali-oss npm install ali-oss 这里是封装一下&#xff1a;在components创建文件夹jc-upload>jc-upload.vue 在封装的过程中遇到了一个问题就是dr…

如何在 Linux系统用中挂载和管理磁盘分区

在 Linux 系统中&#xff0c;挂载和管理磁盘分区是系统管理的基本任务之一。以下是详细步骤&#xff0c;帮助你完成这一过程。 1. 查看现有磁盘和分区 首先&#xff0c;使用以下命令来查看系统中的磁盘和分区&#xff1a; bash 复制 lsblk或者使用&#xff1a; bash 复制…

Opencv图片的旋转和图片的模板匹配

图片的旋转和图片的模板匹配 目录 图片的旋转和图片的模板匹配1 图片的旋转1.1 numpy旋转1.1.1 函数1.1.2 测试 1.2 opencv旋转1.2.1 函数1.2.2 测试 2 图片的模板匹配2.1 函数2.2 实际测试 1 图片的旋转 1.1 numpy旋转 1.1.1 函数 np.rot90(kl,k1)&#xff0c;k1逆时针旋转9…

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结&#xff1a; 农作物幼苗与杂草检测系统&#xff1a;基于YOLOv8深度学习框架&#xff0c;通过2822张图片训练了一个目标检测模型&#xff…

vue3 react使用高德离线地图,最新解决内网情况首次不能加载离线地图2025年1月10日

下载离线资源 下载地址 https://download.csdn.net/download/u010843503/90234612 2、部署私有化瓦片资源 ngxin中配置如下 server{listen 18082;server_name localhost;location / {root D:/GisMap/_alllayers;#try_files $uri $uri/ /index.html;#index index.html;} }下载…

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录

1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件&#xff0c;此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…

Unity中 Xlua使用整理(二)

1.Xlua的配置应用 xLua所有的配置都支持三种方式&#xff1a;打标签&#xff1b;静态列表&#xff1b;动态列表。配置要求&#xff1a; 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录&#xff08;如果是H…

【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现

实验二 交换机基本配置和VLAN 间路由实现 一、实验目的 1&#xff0e;了解交换机的管理方式。 2&#xff0e;掌握通过Console接口对交换机进行配置的方法。 3&#xff0e;掌握交换机命令行各种模式的区别&#xff0c;能够使用各种帮助信息以及命令进行基本的配置。 4&…

【数据结构:前缀树Trie】

目录 前言前缀树介绍和应用一、前缀树的定义前缀树的问题和思考前缀树的映射思想前缀树三大性质 二.前缀树节点结构三. 前缀树接口介绍和实现四个接口API1. insert(String word)2. search(String word)3. startsWith(String pre)4. delete(String word) API实现1. 查询操作sear…

Jenkins触发器--在其他项目执行后构建

前言&#xff1a; jenkins中有多种触发器可用&#xff0c;可以方便的控制构建的启动 这里简单介绍下项目后构建的配置方法 1. 解释&#xff1a; Build after other projects are built Set up a trigger so that when some other projects finish building, a new build is…

Linux(18)——提高命令行运行效率

目录 一、创建和执行 shell 脚本&#xff1a; 1、命令解释器&#xff1a; 2、执行 Bash Shell 脚本&#xff1a; 3、从 shell 脚本提供输出&#xff1a; 二、对特殊字符加引号&#xff1a; 1、反斜杠 &#xff08;\&#xff09;&#xff1a; 2、单引号 &#xff08; &…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中&#xff0c;我们逆向分析时候通常都不能直接看到软件的明文源代码&#xff0c;或多或少存在着混淆对抗的操作。下面&#xff0c;我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

计算机网络 (33)传输控制协议TCP概述

一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层&#xff0c;即传输层&#xff0c;为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议&#xff0c;但两者在设计上有明显的不同&…

【从0带做】基于Springboot3+Vue3的高校食堂点餐系统

大家好&#xff0c;我是武哥&#xff0c;最近给大家手撸了一个基于SpringBoot3Vue3的高校食堂点餐系统&#xff0c;可用于毕业设计、课程设计、练手学习&#xff0c;系统全部原创&#xff0c;如有遇到网上抄袭站长的&#xff0c;欢迎联系博主~ 详细介绍 https://www.javaxm.c…

一文说清dockerfile编写

docker用的时间比较久了&#xff0c;关于怎样把jar打成镜像&#xff0c;怎样基于已有mysql镜像添加额外初始化后封装成新的镜像&#xff0c;进行简单的说明。 1.jar封装镜像 from centos # 设置本地为中文&#xff0c;解决中文乱码问题 RUN localedef -i zh_CN -f UTF-8 zh_CN…