FPGA基础学习(4) -- 时序约束(理论篇) - 肉娃娃 - 博客园
时序约束--基础入门(一) - 知乎
FPGA 设计技巧与案例开发详解(第二版)
跨时钟域处理方法总结--最终详尽版 - love小酒窝 - 博客园
亚稳态的产生机理、消除办法_明天20度的博客-CSDN博客_消除亚稳态
数字IC设计——跨时钟域篇1(时钟域)_摆渡沧桑的博客-CSDN博客_数字电路跨时钟域
Xilinx FPGA设计与实践教程 教学课件 ppt 作者 赵吉成 第1-5章 第5章-金锄头文库
建立时间、保持时间与系统最高时钟频率_yc2020021699的博客-CSDN博客_最高时钟频率
时序优化的几种方法-IC学习笔记(七)_Paul安的博客-CSDN博客_时序优化
静态时序分析STA公式推导以及本质分析(基础概念、多角度公式推导、本质分析)_CLL_caicai的博客-CSDN博客
由上诉可知数据到达时间公式为
但是为了保证采样数据正确,需要考虑触发器的建立时间,因此实际的数据需求时间要减去建立时间
建立裕量与保持裕量的目的:数据到达目的寄存器的时间不能太晚,否则难以满足触发器的建立时间,导致这次数据传输失败;数据到达目的寄存器的时间也不能太快,否则会冲掉上一时钟的数据,导致上一时钟数据难以满足触发器的保持时间,导致上次数据传输失败;
由建立裕量的公式可见解决办法:
1.增大时钟周期,降低时钟频率
2.减小Tco,采用更好的器件
3.减小组合逻辑延迟
4.增大时钟歪斜Tskew----->双刃剑,对保持裕量不好
由保持裕量的公式可见解决办法:
1.增大组合逻辑延时,插入Buffer,拉长布局布线
2.减小时钟歪斜
异步时序设计指的是在设计中有两个或以上的时钟, 且时钟之间是同频不同相或不同频率的关系。而异步时序设计的关键就是把数据或控制信号正确地进行跨时钟域传输。
亚稳态问题——>设计中信号在一段时间内不能达到稳定的0或者1的现象
由图可知,当产生亚稳态后Tco时间后会有Tmet(决断时间)的振荡时间段,当振荡结束回到稳定状态时为“0”或者“1”,这个是随机的。因此,会对后续电路判断造成影响。
在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。
复位电路中的亚稳态:
1.异步复位电路:
如果异步复位信号的撤销时间在Trecovery(恢复时间)和Tremoval(移除时间)之内,那势必造成亚稳态的产生,输出在时钟边沿的Tco后会产生振荡,振荡时间为Tmet(决断时间),最终稳定到“0”或者“1”,就会可能造成复位失败。
2.同步复位电路中的亚稳态
当输入端Din为高电平,而且复位信号的撤销时间在clk的Tsu和Th内时候,亚稳态就随之产生了。如图3.5时序所示,当复位撤销时间在clk的Tsu和Th内,输入数据为“1”,通过和输入数据相与后的数据也在clk的Tsu和Th内,因此,势必会造成类似异步信号采集的亚稳态情况
亚稳态产生的概率:
概率 = (建立时间 + 保持时间)/ 采集时钟周期
例如,为系统采用100M时钟对一个外部信号进行采集,采集时钟周期为10ns,那采集产生亚稳态的概率为:1ns/10ns = 10%
同理采用300M时钟对一个外部信号进行采集,那产生亚稳态的概率为:1ns/3.3ns = 30%
如果采用三相相位差为120°的时钟对一个外部信号进行采集,那产生亚稳态的概率接近90%
所以在异步信号采集过程中,要想减少亚稳态发生的概率:
(1) 降低系统工作时钟,增大系统周期,亚稳态概率就会减小;
(2) 采用工艺更好的FPGA,也就是Tsu和Th时间较小的FPGA器件
亚稳态发生串扰概率:
问题:当对异步信号进行同步时,对异步信号进行打拍
当决断时间过长,Tmet时间长到大于一个采集周期后。Tmet影响因素包括:器件的生产工艺、温度、环境以及寄存器采集到亚稳态离稳定态的时刻等。甚至某些特定条件,如干扰、辐射等都会造成Tmet增长
采取异步复位、同步释放
同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。
假设Tco是触发器的输入数据被时钟打入到触发器到数据到达触发器输出端的延时时间(Tco=Tsetpup+Thold);
Tdelay是组合逻辑的延时;
Tsetup是D触发器的建立时间。
假设数据已被时钟打入D触发器,那么数据到达第一个触发器的Q输出端需要的延时时间是Tco,经过组合逻辑的延时时间为Tdelay,然后到达第二个触发器的D端,要希望时钟能在第二个触发器再次被稳定地打入触发器,则时钟的延迟必须大于Tco+Tdelay+Tsetup,也就是说最小的时钟周期Tmin =Tco+Tdelay+Tsetup,即最快的时钟频率Fmax =1/Tmin。
FPGA开发软件也是通过这种方法来计算系统最高运行速度Fmax。因为Tco和Tsetup是由具体的器件工艺决定的,故设计电路时只能改变组合逻辑的延迟时间Tdelay,所以说缩短触发器间组合逻辑的延时时间是提高同步电路速度的关键所在。由于一般同步电路都大于一级锁存,而要使电路稳定工作,时钟周期必须满足最大延时要求。故只有缩短最长延时路径,才能提高电路的工作频率。可以将较大的组合逻辑分解为较小的N块,通过适当的方法平均分配组合逻辑,然后在中间插入触发器,并和原触发器使用相同的时钟,就可以避免在两个触发器之间出现过大的延时,消除速度瓶颈,这样可以提高电路的工作频率。
这就是所谓"流水线"技术的基本设计思想,即原设计速度受限部分用一个时钟周期实现,采用流水线技术插入触发器后,可用N个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。