发新话题
打印

请教如何让两个rocketIO receiver同步

请教如何让两个rocketIO receiver同步

用的Virtex II pro ,10B/8B, comma之类的都bypass,只需要用两个RocketIO 接收两个serial data(这两个data在连接到RXP,RXN的时候是保证同步的),receiver deserialize过后FPGA对两个RXDATA做line by line的处理,比如RXDATA1 & RXDATA2, 因此要求读到FPGA core的数据同步。$ v. p* C9 e5 n$ v* _( g  }! B
做post route simulation时结果很好,两个receiver总是从某个bit同步开始读入,但是实际测试时两个RXDATA却不同步,而且每次重新program后RXDATA的错位还不一样。给两个rocektIO的refclock,usrclk,reset,power信号都是相同的,不知道是时钟/reset到达rocketIO的时候delay不一样导致deserializer从不同的bit开始读入?还是本来deserializer就是随机开始的?  : k' `% w, M  h4 h* _* G
请教是什么原因导致了这种情况,如果不使用channel bonding,有没有办法让两个receiver同步?

TOP

两个通道肯定还是要通道绑定的,8B/10B和comma不能bypass

TOP

一定要用通道绑定吗?

TOP

仔细研究了一下,8B/10B 跟deserializer无关,这个只是一种特定的编码,用于控制0和1的数量比来平衡信道能量,可以bypass6 W8 H8 ]7 Q" p/ Q8 f
要用channel bonding就得先用comma detection,因为只有先用comma detection把word align上,CB才可能认出来CBS.另外CB作用于elastic buffer,每次移位是移整个10-bit word,而不能做bit级的shift.
  B7 G2 I+ E* f" J: H5 l初步觉得我只用comma detection应该就可以了,这个是作用于deserializer上的,可以作bit级的shift,让deserializer从特定的bit开始读入。如果两个receiver接收到的serial data在外部已经很好的同步(误差不超过10-bit),应该单用comma就可以同步

TOP

8b/10b不能bypass,只有对数据进行这样的编码,产生足够的0 1 变换,接受器那边采用的pll才能根据接收到的串行数据恢复出时钟和数据。

TOP

没有做过,学习学习……
无限可能

TOP

首先你如果不需要CDR电路的话,我个人认为你完全不需要用ROCKETIO,因为不用8b/10b编码的话,你必须要在逻辑里实现自己的编码格式,否则CDR电路会不能正常恢复时钟;至于通道绑定只是为了拓展带宽来的功能,如果你的两个通道无相关联的数据,完全不需要通道绑定功能;至于comma检测的目的也是为了界定出串行数据流的分界,所以用不用完全看你的系统设计;

TOP

多谢上面两位对8B/10B的解释。目前我用于测试的自定义数据就是反复重复的1011000111这样的简单数据,没有特别长的1或者0。  _  h0 n3 B( ~  V
之所以用rocketIO是因为要对Gb/s数据进行一些编码解码,想用FPGA实现,而似乎只有带RocketIO的才能收发Gb/s数据流。, g! V! \* {) N" f
我的两个通道是相关的,必须要同步接收才能在FPGA core做类似解码的处理。comma监测本来是不需要的,因为我的数据不存在word或者byte,就是简单的PRBS或者自定义的binary sequence,用于物理层的光通信实验,但是要同步两个channel信号的话似乎就得先用上comma,才能用绑定.。$ R9 o9 w0 K7 ?% P" Q6 _
想请教如果CDR不能正常恢复时钟会有什么问题呢?是导致deserializer开始的时间不确定,还是rocketIO干脆就不工作了?我现在rocketIO单独都是能工作的,就是两个rocketIO 的deserializer似乎不能同步工作

TOP

发新话题