系统同步接口输入延迟(五)

系统同步接口


文章目录

  • 系统同步接口
  • [📘 FPGA 输入延迟时序分析笔记](#📘 FPGA 输入延迟时序分析笔记)
    • [1 系统同步接口:为什么"同源"还这么难?](#1 系统同步接口:为什么“同源”还这么难?)
    • [2 建立时间裕量(Setup Slack)拆解](#2 建立时间裕量(Setup Slack)拆解)
    • [3 保持时间裕量(Hold Slack)拆解](#3 保持时间裕量(Hold Slack)拆解)

  • 后面一系列分析,均可将外部设备和FPGA想象为在一个设备内种的分析方式。即,片内两个寄存器之间的时序计算时刻0点是在源时钟为起点(源同步两个时钟之间是有相位差偏斜的,而系统同步可当做没有偏斜,即clk1和clk2相减为0)
  • 通过输入input_delay最大最小值,让软件知晓 如何计算建立时间裕量和保持时间裕量,才能正确分析是否违例,免得看着没时序问题,实际上隐藏时序问题不知道
  • 建立时间裕量是再下一个时钟周期进行计算,时刻以源时钟开始为标准。
  • input_delay和output_delay min和max,均是对外部走线源和目的相对延迟 来说(延迟分两个,内部延迟和外部延迟,input的外部是指源到FPGA端口的一段,out的外部是FPGA端口到外部设备端口这一段)。在分析时均以如何试探建立时间和保持时间的极限值来进行计算,以这个思路就好分析公式的用意。总体来说,求的是源到目的到达时间的相对值
  • 再次强调,input_delay和output_delay min和max是计算相对FPGA的外部,是外部,是外部,不管是系统同步还是源同步,要分清楚什么是外部
  • 公式中时序分析中是源减目的还是目的减源,都可以,求出相对值即可,正负的问题,一般是在建立时间分析时是目的减去源,得到一个正值,如果为负值则违例。对于保持时间来说,源减去目的得到一个正值,说明数据来的慢,不会冲坏保持时间裕量中的数据,负值表示违例。因此建立时间和保持时间均以负表示违例,这样就统一了
  • 公式求IO延迟中,求的是外部数据走向相对于时钟的偏差(数据和时钟的关系),因此以原数据路径到FPGA端口或者端口到外部设备的相对于时钟的延迟来计算,即外部原延迟减去时钟之间的偏差。即,数据延迟多少个外部相对时间到达目标设备的外部接口(不包括设备内部延迟)
  • 为什么再分析输出延迟的时候,不计算FPGA内部的时延,之所以计算外部,就是因为内部的,FPGA自己知道,不用再计算,只计算外部时钟和数据之间相对的偏差即可

📘 FPGA 输入延迟时序分析笔记


1 系统同步接口:为什么"同源"还这么难?

  • 定义:FPGA 与外部器件共用同一颗晶振 ,但数据/时钟走线长度不同 → 产生板级 skew
  • 现状:高速场景(>200 MHz)几乎被淘汰,源同步 上位;但成本敏感板卡(MCU+FPGA、工业控制)仍在用。
  • 痛点:PCB 走线 1 cm ≈ 60 ps,正反各跑 5 cm 就吃掉 300 ps ------28 nm FPGA 的 400 MHz 周期才 2.5 ns,12% 就这么没了

2 建立时间裕量(Setup Slack)拆解

直接贴图

  • 需要保持清醒的时,所有路径的计算延迟都是从约定好的0时刻开始(也就是主时钟约束的开始)

公式分析和记忆要点:

  • 建立时间:需求时间减去到达时间。因为需要时间是在下个时钟周期采样,所以要加上一个时钟周期。
  • 保持时间:源减去目的。注意这里是在同一周期的计算,所以不需要T
  • Tclk1和Tclk2,因为是系统同步,一般这两个时钟到达端口可以认为是相等或者近似的(源同步则不一定)



    这里整理的公式比较重要,为了后续做IO约束有帮助(IO延迟约束,计算的时板外的PCB走线的时间)
  • 其中注意是Tclk1减去Tclk2或者是Tclk2-Tclk1,就是要理解这个偏移量对求Max时是最差好事最好来计算,当然是求最差,要加上一个值来算(因为偏差时都有可能得,尽可能让这个值变大就行,下面保持时间就是经可能变小即可,不要死记硬背)

3 保持时间裕量(Hold Slack)拆解



  • 这里是求input_delay最小

由上面公式即可算出IO约束

  • 后面所有的时序约束都类似,学会一个,后面源同步,系统同步基本上分析套路都类似,只是一些小细节上不一样
相关推荐
LabVIEW开发1 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder1 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家2 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat
星夜离尘563 天前
ILA 在线调试:Vivado 抓取片内信号与定位下板问题(附完整实操)
fpga开发
jz_ddk3 天前
[学习] 深入理解 USB 通信与 FPGA 实现:从协议到逻辑设计
学习·fpga开发·xilinx·usb2.0
星夜离尘564 天前
PWM 信号生成与呼吸灯:占空比控制、按键调光与舵机扩展(附完整 Verilog 实操)
fpga开发
zlinear数据采集卡4 天前
ZLinear DABM-D223 通信协议与软件开发全解析:从 USB CDC 到 DDS 波形输出
arm开发·嵌入式硬件·fpga开发·开源