4. PCIe 接口时序

在上一篇中,大致介绍IPcore接口。总的来说接口如下图

 

 数据的接收和发送通过 transmit TLP interface和Receive TLP interface。收发数据的时序也只是描述这几个接口的关系。从手册上截取PCIe x1的接口时序

数据发送

上图是x4接口,我们使用的5G的IP,时序和这个差不多,只是tx_val会间隔有效。上述时序

EP发送数据之前,首先发送tx_req_vc0为高,表示请求发送,等待tx_rdy_vc0为高表示可以开始发送,当tx_rdy_vc0为高时,在下一个时钟的上升沿在yx_data_vc0上放置数据,并拉高tx_st_vc0信号. tx_rdy_vc0一致保持高电平,直到TLP包的最后一个数据,所以这个tx_rdy_vc0信号可以作为一个读使能信号使用,用于非流水的fifo。

tx_end_vc0,指示数据线上是TLP最后一个数据。

tx_ca_*h_vc0 和 tx_ca_*d_vc0在每次发送请求之前必须检查,发送完成后对应的值会减一,这两个类型的标志是指示上端口是否有资源转发你的发送数据

 上图是发送两个数据的时序

 上图发送时序是只有头,不存在数据对应tx_ca_*d_vc0没有变化

 上图发送的数据最后一个不够64bit,此时dwen信号指示63:32位有效

 burst模式,发送两个TLP包,req信号保持到最后一个TLP包发送rdy信号有效

 作废TLP包,在任何时候拉高 tx_nlfy信号,作废此TLP包,不需要再发tx_end信号

 

上图x4降级为x1的时候时序图,我们工程使用的x1,时序图和上面一样。此图中tx_val为高的时候,信号才发生变化

数据接收

当一个TLP数据包发送过来时,rx_st_vc0会被拉高,此时第一个数据会出现在数据线上,每一个时钟一个数据,当rx_end_vc0为高时,表示此时数据线上是最后一个数据。如果出现ECRC错误,则在最后一个数据时刻rx_ecrc_err_vc0会被拉高;如果TLP的长度有问题,则rx_malf_tlp_vc0会被拉高

 tlp接收数据

 接收ECRC错误

TLP长度有问题

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jjinl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值