fpga时序相关概念与理解

一、基本概念理解

对于数字系统而言,建立时间(setup time)和保持时间(hold time)是数字电路时序的基础。数字电路系统的稳定性,基本取决于时序是否满足建立时间和保持时间。

建立时间Tsu:触发器的时钟信号触发沿到来以前,数据要维持稳定不变的时间。如果D进入Tsu后仍然变化(如图1),就不满足建立时间,可能出现亚稳态。

保持时间Th:触发器的时钟信号触发沿到来以后,数据要维持稳定不变的时间。如果D进入Th后仍然变化(如图1),就不满足保持时间,可能出现亚稳态。

输出时间Tco:触发器的时钟信号触发沿 到 数据从D稳定输出到Q所需时间。

建立时间裕量setup slack:D数据变化已稳定到Tsu之前。

保持时间裕量hold slack:Th之后到D变化之前。

同步信号:和时钟信号有关,实际上输入信号和时钟信号进行了与运算或与非运算,输入信号和时钟信号的运算结果为有效状态时,器件的状态才会改变。

异步信号:信号和时钟信号无关,输入信号变为有效状态时,器件的状态就会立即改变;

恢复时间(Recovery Time):指异步控制信号在下个时钟沿来临之前变无效的最小时间长度。如果保证不了这个最小恢复时间,也就是说这个异步控制信号的解除与下个时钟沿离得太近,没有给寄存器留有足够时间来恢复至正常状态,就不能保证下个时钟沿能正常作用,也就是说这个时钟沿可能会失效。

去除时间(Removal Time:是指异步控制信号在有效时钟沿之后变无效的最小时间长度。 这个时间的意义是,如果保证不了这个去除时间,也就是说这个异步控制信号的解除与有效时钟沿离得太近,那么就不能保证这个有效时钟沿能正常作用,也就是说这个有效时钟沿可能会失效。

FAN-OUT某信号扇出值,即驱动几个寄存器。

FPGA组成:

①可编程输入/输出单元:可配置不同阻抗特性,电流大小等。

②基本可编程逻辑单元:由查找表(LUT用于组合逻辑)与寄存器(Register用于时序逻辑)。

③嵌入式块RAMFPGA内嵌的RAM,可配置为单端口/双端口RAMFIFO等。(FPGA还可外挂ram芯片等)。

④布线资源:全局专用布线资源(全局时钟/全局复位)、长线资源(长度、驱动能力仅次于全局资源,可用于高速信号)、短线资源(用于基本的逻辑单元连线)。

⑤底层嵌入功能单元:不固定。

⑥内嵌专用硬核:

FPGA同源时钟:源寄存器和目的寄存器应用同源时钟驱动,同源指源头是同一个时钟,相位差相同(比如由同个PLL输出的俩时钟)。

阻塞:触发器由时钟触发,在时钟触发沿到来之前,输出值不会因为输入值改变,输入值被阻塞,即电路具有维持阻塞作用。(由此理解阻塞赋值与非阻塞赋值,非阻塞即组合逻辑)使用时序逻辑替代组合逻辑可以提高时序性能。

FPGA实现可编程:通过查找表LUT(由与或非等逻辑组成的特定逻辑表达式(真值表))实现任意组合逻辑;通过D触发器与时钟实现时序逻辑。FPGA架构如下图。

一个LUT里面可以实现各种组合逻辑,与、或、非门等,LUT 里面实际有161bit 的基于 SRAM 结构的存储器,能够对应 abcd 四个输入的逻辑组合的所有可能, Quartus 通过向这16bit的存储器里写入不同的初始值,就能使abcd 四个输入在不同的状态下输出不同的逻辑结果,从而实现使用一个LUT实现各种组合逻辑的功能。

最高运行时钟频率Fmax在保证设计时序收敛的情况下,将时钟沿提前Tslack(最小建立时序余量)时间后得到的新时钟的周期,即最小时钟周期,对应最高运行时钟频率。即一个系统最高能跑多少兆而不出错(时序报告看)。

Slow 1200mV 85C Model芯片内核供电电压 1200mV,工作温度85度情况下的慢速传输模型。

Slow 1200mV 0C Model:芯片内核供电电压 1200mV,工作温度0度情况下的慢速传输模型。

Fast 1200mV 0C Model芯片内核供电电压 1200mV,工作温度0度情况下的快速传输模型。

时序分析的对象是网表模型。网表就是 Quartus 软件经过编译,布局布线后得到的实际适配某一个特定型号芯片的电路信息,该电路信息就是对应下载到芯 片中后实际在芯片中呈现的电路。

二、FPGA内部约束条件公式推导

触发器-触发器  /  外部器件-FPGA 的数据传输,示意图:

Comb为组合逻辑时延,pcb为pcb板走线时延

1.建立时间约束条件:

(即满足建立时间数据是稳定的)

Tco + Tcomb+ Tsu <= Tclk + Tskew(时钟偏移)

即:Tco + Tcomb <= Tclk + Tskew(时钟偏移)-  Tsu

由此可知满足建立时间约束条件的Tclk最小值为:

Tclk(min) = Tco + Tcomb + Tsu - Tskew(时钟偏移)

则最高时钟频率为: F(max) = 1 / Tclk(min)

2.保持时间约束条件:

(即满足保持时间数据是稳定的)

Tco + Tcomb >= Th + Tskew(时钟偏移)

3.建立时间约束与保持时间约束联立:

Th + Tskew(时钟偏移)<= Tco + Tcomb <= Tclk + Tskew(时钟偏移)- Tsu

具体电路具体分析,反正就根据给出的时序图和参数,按照建立时间与保持时间的定义来解,保证没有亚稳态。即前一级输出到寄存器的时间 不能进入当前级的建立时间;当前级的保持时间不能超过当前级输出到下一级的时间。

三、题目

总结:求解电路的Tsu和Th,从电路的内部寄存器出发,假设裕量为0,从内层往外层推导。

四、IO延时约束

       IO约束确保外部器件输入到FPGA时满足FPGA输入寄存器的建立时间和保持时间;确保FPGA输出到外部器件时满足外部器件的建立时间和保持时间。

1.输入最大最小延时

       输入延时:外部器件发出数据到FPGA输入端口的时间。(定义)

       表达式:Tin = Tco + Tpcb – Tskew (这里Tskew为什么是-,可以从上面的建立时间约束公式理解)

其中,Tco 为外部器件发出数据的时间,Tpcb为PCB板级走线的延时时间,Tskew为两个器件的时钟边沿延时时间。

       根据表达式和器件物理特性可以确定:

       最大输入延时:Tin(max) = Tco(max) + Tpcb(max) – Tskew(min)

       最小输入延时:Tin(min) = Tco(min) + Tpcb(min) – Tskew(max)

故需估算Tco、Tpcb、Tskew。

       从而对FPGA的IO口进行最大最小延时约束,优化从输入端口到第一级寄存器的路径延迟保证系统时钟可靠采集到从外部来的信号

2.输出最大最小延时

       输出延时:FPGA输出数据后到达外部器件的延时时间。(定义)

       最大输出时延:Tout max = Tpcb(max) + Tsu – Tskew(min)

其中,Tpcb为PCB板级走线的延时时间,Tskew为两个器件的时钟边沿延时时间,Tsu为外部器件的建立时间。

最小输出时延:Tout min = Tpcb(min) - Th – Tskew(max)

其中,Tpcb为PCB板级走线的延时时间,Tskew为两个器件的时钟边沿延时时间,Tsu为外部器件的保持时间。

       约束最大输出延时是为了约束IO口输出,防止输出过慢,使外部器件的数据建立时间裕量为负;约束最小输出延时,是为了约束IO口输出,使IO口输出一个最小延时值,防止输出过快,破坏了外部器件上一个时钟周期的数据保持时间,导致保持时间裕量为负。

即通知编译器FPGA的Ftco最大最小值,根据这个值去综合。

对于一些参数:

PLL产生时钟信号到源寄存器的时钟延时,即使是走全局时钟网路这一延时虽小但是必然存在。 值不知道,但是TimeQuest Timing Analyzer软件可以知道,EDA软件可以一定程度控制其值大小

Tco,值不知道,但这是一个固有的物理参数,其值TTA,EDA软件也知道

数据从寄存器Q端口产生后,到达IO口,在FPGA内部传输所花费的时间。值不知道,但是TTA软件可以知道,EDA软件可以一定程度控制其值大小

在PCB走线传输花费的时间。(可以计算的,5555mil/ns,看器件)

输出时钟到达FPGA引脚的延时,值不知道,但是TTA软件可以知道,EDA软件可以一定程度控制其值大小

输出时钟到达外部器件的走线延时,(可以计算的,5555mil/ns,看器件)

五、时序约束

作用:

1.提高设计的工作频率;告知EDA软件我们的时序标准。指示布局布线器在诸多路径中选择正确的方式,减少时延,保证编译结果能够尽可能稳定运行在你指定的时钟频率下。

2.作为静态时序分析工具的判断标准,提供正确的时序分析报告。

Clock transfer:跨时钟域传输

在高速系统中,时序约束包括:       

1.内部时钟约束

2.IO时序约束

3.时序例外约束

才能实现时序收敛

需要特别指出的一点是:由于时序分析是针对时钟驱动的电路进行的,所以分析的对象一定是“寄存器-寄存器”对。在分析涉及到I/O 的时序关系对时,看似缺少一个寄存器分析对象,构不成“寄存器-寄存器” 对,其实是穿过FPGA 的I/O 引脚,在FPGA 外部虚拟了一个寄存器作为分析对象。

对于源寄存器和目的寄存器中有一个不在 FPGA 内部的情况下,单纯约束 FPGA的时钟是无法让 EDA 软件对这样的路径进行分析。

做时钟约束主要就是告诉EDA软件输入的时钟信号的频率。

IO约束就是通过告知 EDA 软件一些IO传输路径中的已知时间参数,来让 EDA 软件编译并控制 FPGA 内部的各个路径传输延迟,使得总的路径能够满足建立时间余量为正的目的。

1.内部时钟约束

       在代码里,时钟信号你写input CLK_50M,你知道这是50Mhz的时钟,但EDA软件如quartus它不知道,只知道这是个时钟端口,它会根据时钟信号进行时序分析后,生成电路网表,不同的时钟信号会生成不同的优化电路网表。如果不进行时钟约束,EDA软件会自动分配一个时钟信号,编译后可以查看Clocks选项看该信号,频率不一定是我们想要的,所以需要进行时钟约束,告诉EDA软件这个时钟信号的频率,指导其布局布线。

       时钟约束步骤:使用timing analyzer,依照timiequest timing analyzer文件进行即可。

2.IO时序约束

       IO口约束针对最大最小输入时延和最大最小输出时延,可以在constraint-set input delay 以及 set output delay 中设置。

       IO时序分析分为系统同步和源同步两种。

系统同步:基于同一时钟源进行系统同步,器件间的传输延时无法确定,不能进行高速数据的传输。

源同步:源同步输出的信号有时钟和数据信号,输出时钟由FPGA产生,有多种输出方式,如:锁相环;ALTDDIO IP核;状态机;驱动数据的时钟。

2.时序例外约束

2.1伪路径例外:伪路径表示该路径实际存在,但该路径的电路功能无须考虑时序约束。通过定义伪路径,通知vivado等FPGA开发软件无需对这些路径进行时序优化布线。这样FPGA开发软件就会自动跳过这部分路径的优化,可以减少综合布线的优化时间。使用伪路径命令可以有效地减少时序分析的复杂度,同时提高系统性能和可靠性。

六、提高Fmax

影响Fmax的是寄存器到寄存器传输路径中延迟最大(对应的建立时间余量最小)的那一条path,保证目的寄存器能够正确接收数据,所能够运行的时钟信号的最大频率。

1.找最坏路径:在综合报告中,Timequest timing analyzer -> slow 1200mv 85c mode->worst-case timing paths,点击Setup:,就能在slack这一列看到建立时间余量的排序。这个余量以你约束的launch clock时钟作为参考。可以根据这个余量来提升你的工作时钟频率从而提高系统性能。正的表示在参考时钟频率下还有建立时间余量,负的表示无余量,系统Fmax达不到你要的频率。

2.点击最坏路径的To node 的一个信号,右键找到locate->locate in design file。找到该信号的设计逻辑起点与终点,分析设计中是否引入了多层组合逻辑,针对优化。

3.优化的方法可以为:插入寄存器大法。在多层组合逻辑中间插入触发器(即时序逻辑),将原本较长的组合逻辑链路路径切割为了两段较短的组合逻辑路径,便可减小传输延迟。这会带来一个时钟周期的延迟。

4.优化后重新编译,可能性能只提升一点点,因为也许之前的关键路径解决了,但是马上又会有新的路径成为关键路径,需要再对新的关键路径进行分析,直到最后满足设计需求或者再也无法优化。

七、芯片版图

由多个逻辑阵列块组成(Logic Array Block,LAB),浅色为未使用资源,深色为已使用资源,黑色区域为一些固定功能的资源或没有资源,用户不可对其进行任意配置。

(1)逻辑阵列块(Logic Array Block,LAB):每个LAB由16个LE(Logic Element)组成。

(2)逻辑单元(Logic Element,LE):每个LE由一个寄存器和一个查找表组成。

内部结构:

       由查找表、寄存器、进位链、数据选择器组成。查找表大部分采用SRAM工艺,即存储真值表,实现组合逻辑;寄存器可配置成触发器、锁存器、同步/异步复位等模式;进位链方便加法器实现。

       锁相环:PLL 的时钟输入可以是PLL 所在的 Bank 的时钟输入管脚或者其他 PLL 的输出,FPGA 内部产生的信号不能驱动PLL。

       时序分析时可以通过在data path页面右击选择locate到chip planner,从而在芯片版图上看路径连线等情况。

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

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

相关文章

基于BP神经网络+Adaboost的强分类器设计实现公司财务预警

大家好&#xff0c;我是带我去滑雪&#xff01; Adaboost算法的思想是合并多个弱分类器的输出以产生有效分类。其主要步骤是先利用弱学习算法进行迭代运算&#xff0c;每次运算都按照分类结果更新训练数据权重分布&#xff0c;对于分类失败的训练个体赋予较大的权重&#xff0c…

HCIA-单臂路由-VLAN-VLAN间通信-OSPF 小型实验

HCIA-单臂路由-VLAN-VLAN间通信-OSPF 实验拓扑配置步骤第一步 配置二层VLAN第二步 配置VLANIF和IP地址第三步 配置OSPF 配置验证PC1可以ping通PC2 PC3 PC4 实验拓扑 配置步骤 第一步 配置二层VLAN 第二步 配置VLANIF和IP地址 第三步 配置OSPF 第一步 配置二层VLAN SW1 sysna…

Blender vs 3ds Max:谁才是3D软件的未来

在不断发展的3D建模和动画领域&#xff0c;两大软件巨头Blender和3ds Max一直在争夺顶级地位。 随着技术的进步和用户需求的演变&#xff0c;一个重要问题逐渐浮出水面&#xff1a;Blender是否最终会取代3ds Max&#xff1f;本文将深入探讨二者各自的优势和劣势、当前状况&…

SpringMVC使用AOP监听方法推送数据

导入aop的maven依赖 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.12</version> </dependency>创建一个spring的XML文件编写aop配置 <?xml version"1.0" …

pytest+yaml实现接口自动化框架

前言 httprunner 用 yaml 文件实现接口自动化框架很好用&#xff0c;最近在看 pytest 框架&#xff0c;于是参考 httprunner的用例格式&#xff0c;写了一个差不多的 pytest 版的简易框架 项目结构设计 项目结构完全符合 pytest 的项目结构&#xff0c;pytest 是查找 test_.…

【ARM Coresight OpenOCD 系列 1 -- OpenOCD 介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 OpenOCD 介绍1.1.1 OpenOCD 支持的JTAG 适配器1.1.2 OpenOCD 支持的调试设备1.1.3 OpenOCD 支持的 Flash 驱动 1.2 OpenOCD 安装与使用1.2.1 OpenOCD 代码获取及安装1.2.2 OpenOCD 使用1.2.3 OpenOCD 启用 GDB…

互联网金融风控常见知识点

1.怎么做互联网金融风控 首先风险不是都是坏的&#xff0c;风险是有价值的。也就是风险的VaR值(Value at Risk) 对于互联网信贷风控&#xff0c;是要把风险和收益做到更合理的平衡&#xff0c;在控制风险水平的情况下使得收益更高。 所以&#xff0c;做风控的不是一味地追求耕…

【C++进阶】继承

​&#x1f47b;内容专栏&#xff1a; C/C编程 &#x1f428;本文概括&#xff1a; 继承的概念与定义、基类与派生类对象赋值转换、继承中的作用域、派生类的默认成员函数、继承与友元、继承与静态成员、菱形继承与虚继承、继承的总结与反思。 &#x1f43c;本文作者&#xff1…

企业办理CCRC需要多少费用?

近几年&#xff0c;很多企业都在咨询了解CCRC认证&#xff0c;各企业对于办理CCRC资质认证最在意的一个环节就是办理的费用&#xff0c;也有不少企业都在咨询同邦信息科技的小编费用的问题&#xff0c;那今天同邦信息科技的小编就给大家说一下 先来给大家科普一下CCRC认证&…

跨境电商源码独立开发:一次购买,终生使用

随着全球电子商务的快速发展&#xff0c;越来越多的企业开始涉足跨境电商领域。为了在这个竞争激烈的市场中脱颖而出&#xff0c;您需要一个专业的跨境电商解决方案。我们的团队为您提供最优质的源码独立开发服务&#xff0c;让您拥有一个功能强大、安全稳定的跨境电商平台。 一…

web3案例中解决交易所中 ETH与token都是0问题 并帮助确认展示是否成功

可能写了这么久 很多人会发现一个问 我们前面的案例 个人在交易所中的 自定义token 和 ETH 一直是放了个0 大家也不太敢确认是否真的有效 那么 很简单 我们操作 存入一些进交易所 不就ok了 我们 来看之前交易所写的代码 我们写了 depositEther 存入 ETH 和 depositToken 存入…

Kotlin(十) 空指针检查、字符串内嵌表达式以及函数默认值

空指针检查 我们在之前的章节里&#xff0c;有定义一个Study的类&#xff0c;它有两个函数&#xff0c;一个doHomework(),一个readBooks()。然后我们定义个doStudy函数&#xff0c;来调用它们&#xff0c;代码如下&#xff1a; fun doStudy(study: Study) {study.doHomework(…

数字化时代,数据分析的基础是什么?

数字化产品和服务覆盖了社会的方方面面&#xff0c;也让数据成为了构建现代化社会的核心元素&#xff0c;让人们明白数据不只是人类活动产生的附加品&#xff0c;还能够在应用过程中促进人类活动发展、优化和改变&#xff0c;真正成为了个人、机构、企业乃至国家的新型资产&…

佳易王会员管理系统软件如何下载,基本功能有哪些

一、佳易王会员管理软件大众版 部分功能简介&#xff1a; 1、会员信息登记 &#xff1a;可以直接使用手机号登记&#xff0c;也可以使用实体卡片&#xff0c;推荐用手机号即可。 2、会员卡类型 &#xff1a;可以自由设置卡的类型&#xff0c;比如&#xff1a;充值卡、计次卡、…

Docker - 安装

Docker安装 Docker的基本组成 镜像&#xff08;image&#xff09;: ​ Docker镜像就好比是一个模板&#xff0c;可以通过这个模板来创建容器服务&#xff0c;tomcat镜像 -> run -> tomcat01容器&#xff08;提供服务器&#xff09;&#xff0c;通过这个镜像可以创建多个…

SpringCloud——服务网关——GateWay

1.GateWay是什么&#xff1f; gateway也叫服务网关&#xff0c;SpringCloud GateWay使用的是Webflux中的reactor-netty响应式编程组件&#xff0c;底层使用了Netty通讯框架。 gateway的功能有反向代理、鉴权、流量控制、熔断、日志监控...... 2.为什么不使用Zuul&#xff1f…

不止于“初见成效”,阿斯利康要让数据流转,以 AI 带动决策智能

“阿斯利康数字化成果在进博会上引人注目&#xff0c;令我感到非常高兴。”这是阿斯利康代表的感慨。 数字化建设目标是利用先进技术来提高企业运营效率&#xff0c;降低成本。在第六届进博会的7.2 B2-01展区&#xff0c;阿斯利康不仅展示了全球领先的生物医药和医疗器械成果&a…

Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测

目录 一、环境准备二、下载 ONNX 模型文件2.1 Azure 机器学习工作室2.2 Azure 机器学习 Python SDK2.3 生成模型进行批量评分多类图像分类 三、加载标签和 ONNX 模型文件四、获取 ONNX 模型的预期输入和输出详细信息ONNX 模型的预期输入和输出格式多类图像分类 多类图像分类输入…

聊聊 GPU 产品选型那些事

随着人工智能的飞速崛起&#xff0c;随之而来的是算力需求的指数级增加&#xff0c;CPU 已经不足以满足深度学习、大模型计算等场景的海量数据处理需求。GPU 作为一种强大的计算工具&#xff0c;无论是高性能计算、图形渲染还是机器学习领域&#xff0c;在各个领域展现出了巨大…

JS将一个不止深度的对象转换成树结构

JS将一个不止深度的对象转换成树结构 示例数据 {"CODE": 200,"MSG": "SUCCESS","ENT_INFO": {"BREAKLAW": [],"ORGDETAIL": {},"YEARREPORTBASIC": [{"ANCHEYEAR": "2013","…