关于data保存时间的时序错误

描述

Q:  使用 zynq 器件, select io 解码串行数据, data 和 clock 直接进入, 未进行其他处理, 综合有关于 data 保存时间的时序错误, 请问什么问题? 实测接收功能基本正确

器件时序, 约束采用的是其中的 tframe = 1.3  - 1.9ns

Data

Data

Data

约束:

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -min -add_delay -1.300 [get_ports rxData_n]
set_input_delay -clock [get_clocks rxDco_p] -clock_fall -max -add_delay -1.900 [get_ports rxData_n]
set_input_delay -clock [get_clocks rxDco_p] -min -add_delay -1.300 [get_ports rxData_n]
set_input_delay -clock [get_clocks rxDco_p] -max -add_delay -1.900 [get_ports rxData_n]

set_input_delay -clock [get_clocks rxDco_p] -clock_fall -min -add_delay -1.300 [get_ports rxData_p]
set_input_delay -clock [get_clocks rxDco_p] -clock_fall -max -add_delay -1.900 [get_ports rxData_p]
set_input_delay -clock [get_clocks rxDco_p] -min -add_delay -1.300 [get_ports rxData_p]
set_input_delay -clock [get_clocks rxDco_p] -max -add_delay -1.900 [get_ports rxData_p]

A:  应该是 set_input_delay 约束写错了

参考 vivado language template 的话,这个 data 接口符合 source synchronous--> center aligned --> DDR 的模板

其中参数

dv_bre = dv_bfe = 1.3ns

dv_are = dv_afe = (1/2 period - 1.9)ns

所以约束里的

-max 值是(1/2 period - 1.3)

-min 值是(1/2 period - 1.9)

 

Language template在 vivado 图形界面 tools 菜单里。

关于 template 的介绍,可以先学习 inputdelay/output delay 的理论基础,结合实践琢磨一下,这套 template 使用的方法还是有点巧妙的

经验是通过时序图对比,找到最匹配的 template,确定里面对应参数的值,套用 template里面的约束模板就可以。

可以找出这个 source synchronous --> centeraligned --> DDR 模板,看里面的时序图跟用户手册里的时序图对比下

时序图里没有画出 data 有效数据跟无效数据(就是阴影部分)的范围,但 tFRAME 的值之所以是 1.3~1.9,就是因为 data 有有效数据跟无效数据范围的原因,把时序图的有效数据和无效数据范围画出来,就容易跟 template 里的时序图进行匹配了。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分