参考文献
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-1、建立时间与保持时间
- 建立时间:触发器在时钟上升沿到来之前,数据输入端保持不变的最小时间
- 保持时间:触发器在时钟上升沿到来后,其数据输入端数据保持不变的最小时间
- 建立时间和保持时间是由器件的特性决定的,当决定使用那款芯片时,就意味着建立时间和保持时间也就确定了。
1-2 数据到达时间与数据需求时间(数据需求时间 and 时序需求时间)
1-3时序路径
二、时序分析理论
2-1数据到达时间分析
- T_clk1(即从时钟源到源寄存器的时钟pin的延迟,Source Clock Delay)
时钟信号从起点(一般是PLL输出或者外部时钟输入引脚)到达启动寄存器(或说启动触发器)的相应clk端口所耗的时间; - T_CO, 启动寄存器内部延时,是寄存器REG1在接收到有效的上升沿后,到数据真正从从REG1的Q输出之间延时,这是内部寄存器的固有属性,一般取最小值,即文档中的μtCO;请注意:上述所谓的有效的上升沿,就是REG1.CLK,而不是CLK;所以实际的有效数据输出的时序如上图的REG1.Q;
- T_data(即Register-to-Register Delay),可以视为组合逻辑延时与布线延时
数据从上级寄存器输出Q(经过所有其他组合逻辑以及FPGA内部走线)到下级寄存器的数据输入D之间的延时;如图所示,数据从从REG1的Q流向了REG2的D,所以REG2.D实际接收到的数据时序是REG2.D,注意这里没有涉及到REG2的锁存 - 启动沿时间:Launch Edge
由上诉可知数据到达时间公式为
2-2 数据需求时间分析(时序需求时间)
但是为了保证采样数据正确,需要考虑触发器的建立时间,因此实际的数据需求时间要减去建立时间
三、建立裕量与保持裕量
建立裕量与保持裕量的目的:数据到达目的寄存器的时间不能太晚,否则难以满足触发器的建立时间,导致这次数据传输失败;数据到达目的寄存器的时间也不能太快,否则会冲掉上一时钟的数据,导致上一时钟数据难以满足触发器的保持时间,导致上次数据传输失败;
四、建立时间与保持时间不满足的解决办法
由建立裕量的公式可见解决办法:
1.增大时钟周期,降低时钟频率
2.减小Tco,采用更好的器件
3.减小组合逻辑延迟
4.增大时钟歪斜Tskew----->双刃剑,对保持裕量不好
由保持裕量的公式可见解决办法:
1.增大组合逻辑延时,插入Buffer,拉长布局布线
2.减小时钟歪斜
五、考虑输入输出延时情况
六、由时序分析衍生的问题
6-1 跨时钟域问题
异步时序定义
异步时序设计指的是在设计中有两个或以上的时钟, 且时钟之间是同频不同相或不同频率的关系。而异步时序设计的关键就是把数据或控制信号正确地进行跨时钟域传输。
6-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,是随机的,与输入没有必然的关系。
亚稳态发生的场合:
- 异步元器件
- 异步信号检测、跨时钟域信号传输、复位电路
亚稳态的危害:
- 数字器件逻辑值发生混乱
- 复位电路中亚稳态会导致复位失败。
信号传输过程中的亚稳态:->跨时钟域信号+异步信号采集
- 在跨时钟域信号传输时,由于源寄存器时钟和目的寄存器时钟相移未知,所以源寄存器数据发出数据,数据可能在任何时间到达异步时钟域的目的寄存器,所以无法保证满足目的寄存器Tsu和Th的要求->目的寄存器在进行数据采集时,采到的数据不稳定
- 在异步信号采集中,由于异步信号可以在任意时间点到达目的寄存器,所以也无法保证满足目的寄存器Tsu和Th的要求
- 总而言之:数据在目的寄存器Tsu-Th时间窗口发生变化,也即当数据的建立时间或者保持时间不满足时,就可能发生亚稳态现象
复位电路中的亚稳态:
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增长
消除亚稳态的办法:
- 对复位电路
采取异步复位、同步释放
- 对异步信号
- 同步:多级寄存器进行寄存后进行边沿提取。如果是两个,则考虑传递,多级则考虑信号延时
- fifo
6-3 系统最高工作频率
同步电路的速度是指同步系统时钟的速度,同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大。
假设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个时钟周期实现,因此系统的工作速度可以加快,吞吐量加大。注意,流水线设计会在原数据通路上加入延时,另外硬件面积也会稍有增加。