FPGA时序约束学习笔记——IO约束(转)

一、参考模型

  • 图源来自《【抢先版】小梅哥FPGA时序约束从遥望到领悟》

二、参数分析

  • T(0)->(3) = Tclk1
  • T(3)->(4) = Tco
  • T(4)->(5) + T(5)->(6) = Tdata
    • T(4)->(5) = Tdata(Init)
    • T(5)->(6) = Tdata(Pcb)
  • T(5)->(6)
  • T(0)->(1) + T(1)->(7) = Tclk2
    • T(0)->(1) = Tclk2(Init)
    • T(1)->(7) = Tclk2(Pcb)

(4)->(5)的走线是在FPGA芯片内部(IC)
(5)->(6)的走线是在PCB板上

(0)->(1)的走线是在FPGA芯片内部(IC)
(1)->(7)的走线是在PCB板上

计算PCB板上电信号的传输时间,可以将电信号等效为光速,得到的电信号传输时间与长度关系的参数为5555mil/ns
1mil = 0.0254mm
5555mil/na -> 141.097mm/ns

三、建立时间余量分析 Slack(Tsu)

  • Data Require Time(数据要求时间) = Tclk2 - Tsu(芯片数据建立时间) + Latch edge(接收沿) = Tclk2(Init) + Tclk2(Pcb) - Tsu + Latch edge(接收沿)
  • Data Arrival Time(数据到达时间) = Tclk1 + Tco + Tdata + Launch edge(发送沿) = Tclk1 + Tco + Tdata(Init) + Tdata(Pcb) + Launch edge(发送沿)
  • Latch edge(接收沿) - Launch edge(发送沿) = Tclk(因为是一个时钟,所以相减就是时钟周期)
  • Slack(Tsu)
    • Data Require Time - Data Arrival Time = (Tclk2 - Tsu + Latch edge) - (Tclk1 + Tco + Tdata + Launch edge)
    • Data Require Time - Data Arrival Time = (Tclk2(Init) + Tclk2(Pcb) - Tsu + Latch edge) - (Tclk1 + Tco + Tdata(Init) + Tdata(Pcb) + Launch edge)
    • Data Require Time - Data Arrival Time = (Tclk2(Init) + Tclk2(Pcb) - Tsu) - (Tclk1 + Tco + Tdata(Init) + Tdata(Pcb)) + Tclk
    • Data Require Time - Data Arrival Time >= 0
    • Tclk2(Init) - Tclk1 -Tco - Tdata(Init) >= -Tclk2(Pcb) + Tsu +Tdata(Pcb) - Tclk (注:左边是未知量,右边是可知量)
    • Tclk2(Init) - Tclk1 -Tco - Tdata(Init) + Tclk >= -Tclk2(Pcb) + Tsu +Tdata(Pcb)
  • -Tclk2(Pcb) + Tsu +Tdata(Pcb)就是最大传输延迟:output delay max = Tdata(pcb) - Tclk2(pcb) + Tsu

四、保持时间余量分析 Slack(Th)

  • Data Require Time(数据要求时间) = Tclk2 + Th(芯片数据保持时间) + Latch edge(接收沿) = Tclk2(Init) + Tclk2(Pcb) + Th + Latch edge(接收沿)
  • Data Arrival Time(数据到达时间) = Tclk1 + Tco + Tdata + Launch edge(发送沿) = Tclk1 + Tco + Tdata(Init) + Tdata(Pcb) + Launch edge(发送沿)
  • Slack(Th)
    • Data Arrival Time(数据到达时间) - Data Require Time(数据要求时间)
    • 同样的,可以算出,最小输出延迟
    • Output delay min = Tdata(pcb) - Tclk2(pcb) - Th

五、综上所述

  • output delay max = Tdata(pcb) - Tclk2(pcb) + Tsu
  • Output delay min = Tdata(pcb) - Tclk2(pcb) - Th
    如果,PCB板上的数据走线长度与时钟走线长度一样,即:(5)->(6) = (1)->(7)
    那么,Tdata(pcb) = Tclk2(pcb)
  • output delay max = Tsu
  • Output delay min = -Th

六、步骤

  • 设计时钟约束

  • 设计输出延迟
    最大延迟
    最小延迟

七、时钟与数据反向输出


Tsu

  • Data Require Time = Tclk2(Int) - Tsu + Latch Edge
  • Data Arrival Time = Tclk1(Pcb) + Tclk1(Int) + Tco + Tdata(Pcb) + Tdata(Int) + Lanch Edge
  • Slack(Tsu) = Data Require Time - Data Arrival Time
  • Slack(Tsu) = (Tclk2(Int) - Tsu + Latch Edge) - (Tclk1(Pcb) + Tclk1(Int) + Tco + Tdata(Pcb) + Tdata(Int) + Lanch Edge) >= 0
  • Tclk2(Int) - Tclk1(Int) -Tco - Tdata(Int) >= (Lanch Edge - Latch Edge) + Tsu + Tclk1(Pcb) + Tdata(Pcb)
  • output delay max = Tclk1(Pcb) - Tdata(Pcb) + Tsu

Th

  • Data Require Time = Tclk2(Int) + Th + Latch Edge
  • Data Arrival Time = Tclk1(Pcb) + Tclk1(Int) + Tco + Tdata(Pcb) + Tdata(Int) + Lanch Edge
  • Slack(Th) = Data Arrival Time - Data Require Time
  • Slack(Th) = (Tclk1(Pcb) + Tclk1(Int) + Tco + Tdata(Pcb) + Tdata(Int) + Lanch Edge) - (Tclk2(Int) + Th + Latch Edge) >= 0
  • (Lanch Edge - Latch Edge) + Tclk1(Pcb) + Tdata(Pcb) - Th >= -Tclk1(Int) - Tco - Tdata(Int) + Tclk2(Int)
  • output delay min = Tclk1(Pcb) + Tdata(Pcb) - Th

八、IO输出通用约束模型分析

Tskew = Tclk2 - Tclk1
Tskew(Pcb) = Tclk2(Pcb) - Tclk1(Pcb)

时钟与数据同向时

Tclk1(Pcb) = 0

  • output delay max = Tdata(pcb) - Tclk2(pcb) + Tsu = Tdata(pcb) - (Tclk2(pcb) - Tclk1(Pcb)) + Tsu = Tdata(pcb) - Tskew(Pcb) + Tsu
  • output delay min = Tdata(pcb) - Tclk2(pcb) - Th = Tdata(pcb) - (Tclk2(pcb) - Tclk1(Pcb)) - Th = Tdata(pcb) - Tskew(Pcb) - Th

时钟与数据反向时

Tclk2(Pcb) = 0

  • output delay max = Tdata(Pcb) + Tclk1(Pcb) + Tsu = Tdata(Pcb) - (Tclk2(Pcb) - Tclk1(Pcb)) + Tsu = Tdata(pcb) - Tskew(Pcb) + Tsu
  • output delay min = Tdata(Pcb) + Tclk1(Pcb) - Th = Tdata(Pcb) -(Tclk2(Pcb) - Tclk1(Pcb)) - Th = Tdata(pcb) - Tskew(Pcb) - Th

综上,IO输出约束通用公式为

  • output delay max = Tdata(pcb) - Tskew(Pcb) + Tsu
  • output delay min = data(pcb) - Tskew(Pcb) - Th
小梅哥FPGA时序约束从遥望到领悟,指的是他对FPGA时序约束的探索过程。在初期,小梅哥可能对时序约束的概念还不清楚,只是模模糊糊地了解到时序约束FPGA设计中重要的一环。他开始通过阅读相关文献和教材了解时序约束的概念和基本原理。 随着学习的深入,小梅哥逐渐理解了时序约束的作用和意义。他发现时序约束可以用来指定信号在设计中的时序要求,比如数据的到达时间、时钟边沿的延迟等,从而确保设计在运行时满足时序要求。他开始看到时序约束对设计稳定性和性能的重要性,并开始尝试在自己的设计中使用时序约束。 然而,小梅哥在使用时序约束的过程中遇到了一些问题。他发现,不恰当的时序约束设置可能导致设计不稳定、时序违反或者无法满足预期的性能要求。他开始思考如何更好地设置时序约束,以确保设计的正确性和性能。他参考了一些设计指南和案例,孜孜不倦地调试设计和调整时序约束,逐渐对如何设置合适的时序约束有了更深的理解。 随着实践的经验积累,小梅哥逐渐领悟到了时序约束的精髓。他明白了时序约束是设计中不可或缺的一环,它能够帮助他在设计过程中更好地控制时序,确保设计的正确性和性能。他开始善于根据具体的设计需求设置合适的时序约束,通过不断的迭代和优化来达到设计的最佳性能。 小梅哥通过自己的努力和不断地学习,从遥望到领悟,逐渐掌握了FPGA时序约束的技巧和方法。通过合理设置时序约束,他成功地实现了自己的设计,并在实践中不断优化和改进。他对于时序约束的认识也不断深入,逐渐成为一名优秀的FPGA设计工程师。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值