7系列GTX串行收发器vivado仿真的疑惑
时间:10-02
整理:3721RD
点击:
仿真gtx,数据还没发送,接收端就已经收到了
今天学习7系列gtx,用vivado13.4自带的ip核,v3.4,模板的aurora
协议。
生成后例化,并对时钟和复位做了相应处理。用vivado仿真,自发自收,或者一个模块发另一个模块收。
各信号看着貌似正常。就是有一点非常疑惑,颠覆了我对世界的认识:
发送数据: txdata: 0607 0809 0a0b 0c0d 0e0f 1011 1213 1415
接收数据: rxdata: 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819
接收到的数据比发送的数据还早,也就是说我还没等发那个数据,接收端就已经收到了,这是怎么回事?
上述数据直接在最最底层的原语那儿看到
今天学习7系列gtx,用vivado13.4自带的ip核,v3.4,模板的aurora
协议。
生成后例化,并对时钟和复位做了相应处理。用vivado仿真,自发自收,或者一个模块发另一个模块收。
各信号看着貌似正常。就是有一点非常疑惑,颠覆了我对世界的认识:
发送数据: txdata: 0607 0809 0a0b 0c0d 0e0f 1011 1213 1415
接收数据: rxdata: 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819
接收到的数据比发送的数据还早,也就是说我还没等发那个数据,接收端就已经收到了,这是怎么回事?
上述数据直接在最最底层的原语那儿看到
肯定是有延时的,板子测量,线连起来,有十几个周期延时,这种内部环回,虽然延时少,但还是有的,你应该看你发的起始数据,按你例子,从0607往后看,以前收到的忽略,至于0607以前的就不要考虑
不是延时啊,比如说发送数据0c0d是在时刻4发送的,而接收端在时刻2就收到了0c0d这个数据,这显然不应该。我还没发,他就收到了?反因果关系了
那在时刻4之后,还能收到0c0d不?
不能
那你就没通啊,先不考虑发数据之前时刻收到了,这肯定是不可能的,那你发数据之后,接收不到,这就是没通啊,既然没通,更谈不上发之前就接收到了
如果TX delay 很大,大过了发送这几个数据的时间,而且你发送的数据有事周期的,很自然会出现这种情况呀
