针对Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX之间的差异性,需对预/去加重和接收均衡值、接收终端电压以及发送差分电压值等参数作出灵活调整,才能适应二者间的数据通信。利用ChipsCope Pro_IBERT测得的实际通信参数来设置GTP/GTX的收发端,再通过自定义通信协议定义数据帧结构,设计出一种新的RocketIO数据收发接口控制器。分析了接收端高频时钟的不稳定以及漂移等不确定性因素引起的前后字节错位的现象,并在自定义协议中加入了数据错位校正模块,大大降低了数据传输误码率。通过实验表明:Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX间可实现数据的高速串行匹配通信,同时该数据收发接口控制器具有数据传输稳定、误码率低、通用性好等优点。
中国论文网 /8/view-4880897.htm
  关键词:RocketIO;GTX;GTP;高速串行通信;现场可编程门阵列
  中图分类号: TP302; TP211.5
  文献标志码:A
  Research and application of matching communications between
  Virtex-5 GTP and Virtex-6 GTX
  Abstract:
  For the differences between Virtex-5 RocketIOTM GTP and Virtex-6 RocketIOTM GTX adjustments should be made on pre-emphasis/de-emphasis values and reception equalization values,the receiving terminal voltage and differential voltage transmission values, so as to adapt to the data communication between GTP and GTX. By using ChipsCope Pro_IBERT to measure the actual communication parameters to set GTP/GTX transceiver side, this paper defined the data frame structure through custom communication protocol, and designed a new RocketIO data transceiver interface controller. By analyzing the phenomenon of byte misalignment caused by some uncertainty such as high frequency instability, and clock drift, this paper added a data misalignment correction module in custom communication protocol, thus greatly reducing the error rate of data transmission. The experimental results show that high speed serial communication between Virtex-5 RocketIOTM GTP and Virtex-6 RocketIOTM GTX can be implemented, and the data transceiver interface controller is of data transmission stability, low bit error rata and good generality.
  Key words:
  RocketIO; GTX; GTP; high-speed serial communication; Field Programmable Gate Array (FPGA)
  0 引言
  RocketIOTM是Xilinx 公司现场可编程门阵列(Field Programmable Gate Array,FPGA)内嵌的可编程全双工高速串行收发器,在Virtex-5 和Virtex-6等系列 FPGA中改称为吉比特收发器(Gigabit Transceiver,GT),因有部分差异又分为P型和X型,即GTP和GTX,用以实现FPGA与外部设备间数据的高速串行通信 [1]。目前工程上普遍使用相同RocketIO进行相互间数据通信,比如GTP与GTP、GTX与GTX进行相互间数据通信。尽管这样设计可以得到稳定可靠的数据通信,但是在FPGA升级或FPGA板卡更换后会出现通信匹配问题,这就大大缩小了FPGA板卡中FPGA变更的范围,降低了系统的可扩展性。
  本文对Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX内部结构进行了比较分析,通过对收发端的预/去加重和接收均衡、发送差分电压大小匹配、接收终端电压、接收数据错位问题等进行分析,找到了合适的通信参数。然后在此基础上通过自定义通信协议,设计出了具有接收数据前后字节错位校正功能的数据收发接口控制器,实现了GTP与GTX间数据的高速串行通信。GTP与GTX的匹配通信使得多片FPGA电路系统的升级方便了许多,直接更换FPGA板卡即可,现已在某型雷达信号模拟器中成功应用。
  1 RocketIOTM GTP/GTX差异性分析   GTP和GTX都由物理媒介适配 (Physical Media Attachment,PMA)和物理编码子层 (Physical Coding Sublayer,PCS)两个子层组成,但是内部结构存在部分差异 [2-3]。
  通过比较可知:Virtex-5 RocketIOTM GTP支持100Mb/s至3.75Gb/s的线速,Virtex-6 RocketIOTM GTX支持750Mb/s至6.5Gb/s的线速。GTP仅支持预加重技术,而GTX还支持去加重技术,GTP预加重仅为8级可控,而GTX为16级可控;GTP差分输出幅度为8级可控,而GTX为16级可控。GTP的接收端没有去加重模型和判定反馈均衡器。GTP接收终端电压有2/3AVTTRX(analog voltage supply for the receiver circuitsand termination)、AVTTRX、接地(Ground,GND),GTX有GND、Float、MGTAVTT_*(analog voltage supply for the transmitter and receiver termination circuits of Multi-Gigabit Transceiver)[2-3]。GTP和GTX在结构上大体是相同的,说明二者在匹配通信上是完全可行的,但是二者之间存在的差异要求在使用过程中注意诸多细节,比如线速匹配、差分输出电压值的匹配、预/去加重大小、接收均衡值大小、接收终端电压等。
  2 匹配通信参数调整与问题分析
  从GTP和GTX间差异可推知, GTP和GTX收发端的阻抗、电气等特性上必然存在一定差异,那么二者间的匹配通信通过调整GTP和GTX收发端的参数就可以实现。本文充分利用Xilinx公司FPGA开发软件ISE中自带的集成比特错误率测试仪(Integrated Bit Error Ratio Tester,IBERT)工具,通过对硬件通道进行测试,测试出了适合该硬件通道的预/去加重和接收均衡值、接收终端电压以及合适的发送端差分输出电压值等参数,这些参数对数据收发接口控制器的设计具有重要参考价值。
  2.1 预/去加重和接收均衡的调整
  为了补偿信号在传输过程中的高频损耗,提高信号质量, GTX中集成了预/去加重和接收均衡电路,GTP仅集成了预加重电路。文献[4]研究了预/去加重和接收均衡对信号质量的影响,认为只有合适的预/去加重和线性均衡的比例或者两者之间的组合才能达到改善接收信号质量的目的,并认为存在一个无误码采样区。对于不同硬件电路与不同传输通道,由于其阻抗、电气特性的差异,使得通道损耗补偿会有所不同,因此对于不同硬件通道,预/去加重值和接收均衡值需作出适当调整 [5]
  2.2 接收终端电压的选择
  文献[2]对GTP接收终端电压的配置进行了说明,若数据线速在2.5Gb/s以上,在接收端外部需做交流耦合,此时内部若不使用交流耦合,则接收终端电压可任意选择2/3AVTTRX、AVTTRX、GND之一;文献[3]对GTX接收终端电压的配置也作了具体说明,同样若数据线速在2.5Gb/s以上,接收端需做外部交流耦合,内部若进行交流耦合,则接收终端可任意选择GND、Float、MGTAVTT_*之一。但是对于不同硬件通道,因其损耗差异等原因,存在一个最佳匹配问题,本文通过IBERT工具测试出了所应用的雷达信号模拟器中的最佳接收终端电压类型 [6]
  2.3 发送差分电压值的分析
  接收终端电压作为接收数据的参考电压,不同的接收终端电压会影响对接收数据高低电平的判决,从而对发送差分电压值的大小有一定的要求。不同硬件系统间的阻抗、电气特性的差异以及信道的损耗不同,使得发送差分电压值需作出相应调整 [5]
  2.4 接收数据前后字节错位分析
  由于GTP/GTX接收端数据组合规则是以字节为单位的[1-2],即每个时钟沿只采集一个字节数据,然后再组装成RXDATA[15:0]。由于高频时钟不稳定以及时钟漂移等不确定性因素的影响,使得采集时钟的边沿有时会发生偏移,这就可能造成对某个字节的采集遗漏,从而使GTP/GTX的输出RXDATA[15:0]前后两个字节错位 [7]。如图1所示,在时钟上升沿时刻锁存数据,假设在某时刻时钟发生抖动或偏移,造成该时刻数据“95”丢失,使得组装后的数据发生前后字节错位的现象。为了进行正常通信,需进行校正处理。
  3 GTP和GTX匹配通信的应用
  本文所应用的雷达信号模拟器由接口板和信号生成板组成。板间内部需进行FPGA间的数据通信,其中接口板上FPGA为Virtex-5系列xc5vsx95t,信号生成板上为Virtex-6系列xc6vsx315t,如图2所示。根据上文分析,现利用GTP和GTX,自定义通信协议,设计数据收发接口控制器来实现两片FPGA间的数据通信。
  3.1 自定义通信协议
  通信协议定义了发送和接收端的工作内容,如图3所示。发送端主要由先入先出队列(First Input First Output,FIFO)、帧封装、逻辑控制和GTP/GTX组成,接收端主要由GTP/GTX、帧解封、逻辑控制、数据校正和FIFO组成,接收端在FPGA外部进行了交流耦合。
  此处帧封装的主要工作是在用户数据前后插入用于时钟校正 [8]和数据对齐[2-3]的帧头、帧尾字符。这里的帧头和帧尾都由时钟校正序列“BC95”充当 [7],“BC95”既作Comma对齐字符,也可作时钟校正序列,如图4所示。每帧数据中帧头“BC95”数目不是固定的,当发送FIFO空标志显示没有用户数据时,一直会发送“BC95”,直到有用户数据。同时为了确保时钟的精准性,需定义每帧用户数据不超过512字节,然后及时插入帧尾“BC95”来校正时钟。这样可以保持接收端GTP/GTX处于稳定工作状态,从而整个链路一直处于正常工作状态。在接收端,针对接收的16位数据前后两字节错位的现象,设计的数据校正模块专门用于解决字节错位的问题。数据校正后需进行帧解封,去掉帧头和帧尾,将用户数据写入接收FIFO缓存。这样就完成了数据的发送与接收,具体操作流程如图5所示。   与基于协议(如Aurora协议)的可靠通信模型相比,该数据帧组成结构比较简单。在实时传输系统中,要求数据一旦开始传输就不能中断,但基于协议的可靠通信模型在链路出错后,其接收端会自动进行复位,同时会通知发送端停止发送数据,复位完成后再重新建立可靠链路,这样就会出现短暂的传输错误,从而影响整个系统正常工作。而该自定义的通信协议则刚好可以满足实时传输系统的要求 [9]
  3.2 数据收发接口控制器设计
  根据自定义协议的工作内容,如图3所示,所设计的数据收发接口控制器主要由发送/接收FIFO、帧封装逻辑控制模块、帧解封逻辑控制模块、数据校正模块和GTP/GTX模块组成。
  发送/接收FIFO 主要用于数据的位宽转换和缓冲。
  帧封装逻辑控制模块 在FIFO非空时读取FIFO数据,并将FIFO中的用户数据传输给GTP/GTX的发送端TXDATA[15:0],并置GTP/GTX的K码特性标志txcharisk[1:0]=00;在FIFO空时,置txcharisk [1:0]=10,同时给GTP/GTX发送端TXDATA[15:0]插入“BC95”(与GTP/GTX内设置的时钟校正序列一致),表示此时TXDATA[15:0]高字节“BC”具有K码特性,接收端能根据具有K码标志的rxcharisk[1:0]来校正本地时钟,使接收端的时钟同步[2-3,10]。
  数据校正模块 先判断rxcharisk [1:0]的值,若rxcharisk[1:0]=10,此时对应接收的帧头“BC95”接收正确,则不需作校正处理;若rxcharisk[1:0]=01,此时对应接收的帧头变为 “95BC”,出现了字节错位,这样后面的用户数据也相应错位,这时先将接收的数据RXDATA [15:0]放入另一个寄存器中,然后在下一个用户时钟上升沿到来时刻,将当前时刻数据的低8位和寄存器中数据高8位重新组成16位数据输出,这样就纠正了错位的数据,如图1所示。
  帧解封逻辑控制模块 接收端rxcharisk [1:0]=00时,将校正后的数据写入接收FIFO,否则丢弃数据(rxcharisk[1:0]=00对应用户数据,其他值对应“BC95”),这样就能保证写进FIFO的数据为用户数据。
  GTP/GTX 收发数据的线速均设置为2.5Gb/s,数据宽度选为16bit,采用8B/10B编码,参考时钟在GTP中选择125MHz,在GTX中选择100MHz。GTP虽可借用相邻3个坐标内的GTP所连接的参考时钟,但是需要对二者之间的GTP进行例化,而GTX则无此要求[1-2]。收发端均需选择缓冲功能,GTX发送和接收方向的用户时钟选择TXOUTCLK,GTP均选择REFCLKOUT,复位信号选择TXRESET和RXRESET,Comma检测对齐选用K28.5测试码。选择时钟修正功能,根据之前设置的数据宽度,此时需选择2个字长的时钟修正序列,并设置时钟修正序列为“BC95”来修正时钟,但其中只将高8位“BC”标记为K码特性,以避免可能存在的高低位对齐错误 [11]。对GTP/GTX进行上电复位,复位信号由时钟锁相环的锁定信号LOCKED取反生成,再经过两级移位寄存器的操作与处理可以滤除复位信号的抖动,同时这样也可以保证锁相环输出稳定时钟在GTP/GTX复位后才送给下一级逻辑[12-13]。
  4 实验结果与分析
  IBERT测试过程中,对于不同的GTP/GTX接收终端电压,测得的发送差分电压值—接收端误码率曲线如图6所示。从图6可知,当GTP作发送端,GTX接收终端电压为MGTAVTT,发送差分电压值在400~800mV间时,误码率很低。GTX接收终端电压为GND、Float,发送差分电压值在400~1070mV时,误码率很低;当GTX作发送端,GTP接收终端电压为2/3AVTTRX、AVTTRX、GND,发送差分电压在130~1070mV时,接收端误码率很低。结合以上分析,将GTX接收终端电压设置为GND,GTP端设置为2/3AVTTRX,GTX发送差分电压值设为600mV、GTP发送差分电压值设为590mV为最佳。
  经过IBERT测试,同时还可得到合适的预/去加重、接收均衡值。GTX的预加重大小为0.15dB(0000),GTP设置为2%(000)。GTP/GTX均不使用接收均衡,通信误码率依然很低,故本设计直接参考了这些参数值。
  数据通信测试是在DSP的配合下进行的。图7为FPGA间数据双向通信测试的Chipscope截图。
  从图7(d)可以看出,K码标志位rxcharisk[1:0]=01,同时对应的帧头变为“95BC”,明显GTP/GTX接收到的数据出现了前后两字节错位的现象,经过校正,数据得到恢复,如图7(d)方框标记所示。通过比较图7(a)和图7(b)、图7(d)和图7(e),可以看出各发送和接收端数据相同,说明xc5vsx95t和xc6vsx315t间数据双向传输正确。
  在数据通信连续通信12h后,经两块板卡中DSP TMS320C6416和ADSP-TS201S数据比对、统计,未检测到错误数据。
  5 结语
  综合以上分析,本文在研究了Virtex-5 RocketIOTM GTP和Virtex-6 RocketIOTM GTX的差异对二者间通信的影响后,通过IBERT工具寻找到适合该硬件通道的最佳通信参数,自定义通信协议,最终设计出的数据收发接口控制器实现了GTP和GTX间数据高速串行通信。结果表明了GTP与GTX在一定条件下可以匹配通信,从而在今后的电路设计与升级中可以不再考虑二者能否兼容通信的问题。该研究已在某升级后的雷达信号模拟器中成功应用,实现了板间2.5Gb/s的数据通信,数据传输稳定可靠,完全满足该雷达信号模拟器数据通信要求。   参考文献:
  [1] TANG Q, JIANG J. High-level design and application of Xilinx FPGA[M].Beijing:Electronic Industry Press, 2012.(汤琦,蒋军敏. Xilinx FPGA 高级设计及应用[M].北京:电子工业出版社,2012.)
  [2] Xilinx. Virtex-5 FPGA RocketIO GTP Transceiver User Guide.[S.l.]:Xilinx, 2008.
  [3] Xilinx. Virtex-6 FPGA GTX Transceivers User Guide.[S.l.]:Xilinx 2009.
  [4] LI L, WANG Y. Virtex5-based system design and validation for serial transmission[J]. Electronic Design & Application,2009(12):43-45. (李林军,王勇. 基于Virtex-5的串行传输系统设计与验证[J].电子设计应用,2009(12):43-45.)
  [5] LAI W. Pre-emphasis and equalization technology applied in designing high-speed backplane[J].Electronic Engineering & Product World, 2008(11):100-101.(赖万玖.预加重和均衡技术在高速背板设计中的应用[J].电子产品世界,2008(11):100-101.)
  [6] SUN K, ZHOU W, WU Q. Realization of high-speed real-time optical fiber image transmission system[J].Opticals and Precision Engineering,2011,19(9):2228-2235.(孙科林,周维超,吴钦章.高速实时光纤图像传输系统的实现[J].光学精密工程,2011,19(9):2228-2235.)
  [7] ZHAO Z,LAN J.Solution of several key problems about RocketIO[J].Application of Electronic Technique,2005,31(12):51-53.(赵峥嵘,兰巨龙.RocketIO几个关键问题的解决方案[J].电子技术应用,2005,31(12):51-53.)
  [8] JI L,QIN Z,GONG H. The application of FPGA GTP in optical transmission equipment backplane hybird bus transmission[J].Optical Communication Technology,2012, 36(2):57-59.(嵇凌,秦志辉,龚华达.FPGA GTP技术在光传输设备背板总线的应用[J].光通信技术,2012,36(2):57-59.)
  [9] WU R,SU T,LIANG Z. Application of RocketIO in high-speed data communication[J].Communications Technology, 2010, 43(11):9-11.(吴荣伟,苏涛,梁中英.RocketIO在高速数据通信中的应用[J].通信技术,2010, 43(11):9-11.)
  [10] SUN K, ZHOU W, WU Q. FPGA-based detection platform for optical fiber image transmission[J]. Semiconductor Optoelectronics,2012,33(2):283-287.(孙科林,周维超,吴钦章.基于FPGA的高速串行光纤图像传输检测平台[J].半导体光电,2012,33(2):283-287.)
  [11] ZENG H, ZHOU G. Design and implementation of high speed multi-channel optical fiber image transmission system[J]. Semiconductor Optoelectronics,2013,34(2):326-329,333.(曾瀚,周国忠.多路高速光纤图像传输系统设计及实现[J].半导体光电,2013,34(2):326-329,333.)
  [12] YANG J, ZHANG G, HAO M. Implement of SATA physical layer on RocketIO[J].Video Engineering,2013,37(3):70-72,77.(杨佳朋,张刚,郝敏.基于RocketIO的SATA物理层实现[J].电视技术,2013,37(3):70-72,77.)
  [13] WU W, SU H. RocketIO channel design and validation for high-speed serial transmission[J]. Microcontrollers & Embedded Systems,2008(2):9-11.(吴威,苏海冰. RocketIO的高速串行通道设计与验证[J].单片机与嵌入式系统应用,2008(2):9-11.)

Virtex—5 GTP和Virtex—6 GTX间匹配通信研究及应用相关推荐

  1. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  2. 同步线程和进程间的通信

    最近回去学习了一下进程和进程间的通信,有时候很多东西久不看了也就一下子忘了== 这里面有好几个互斥对象使用线程的 1 void mListText(CString str) 2 { 3 m_list_ ...

  3. Java 多线程(七) 线程间的通信

    Java 多线程(七) 线程间的通信--wait及notify方法 线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务. Object类中相关的方法有两个notify方法 ...

  4. Android开发之Service通过Messenger实现线程间的通信

    Messenger信使其实在真正使用中用到的并不多,但是面试的时候考官还是十分想要考察一下你的基本功的.那我们现在先来看一下Messenger的使用场景.如果你需要你的Service与远程线程通信,那 ...

  5. 线程间的通信 共享数据安全问题

    1 //线程间的通信:线程的任务不同,但是线程操作的数据相同. 2 3 //描述数据 4 class Resource 5 { 6 public String name; 7 public Strin ...

  6. java http连接_Java中通过方法创建一个http连接并请求(服务器间进行通信)

    服务器间进行通信只能通过流(Stream)的方式进行,不能用方法的返回值. 1.Java代码创建一个连接并请求该连接返回的数据 doGet()方法,execute()方法中调用 package dem ...

  7. Android 使用AIDL实现进程间的通信

    在Android中,如果我们需要在不同进程间实现通信,就需要用到AIDL技术去完成. AIDL(android Interface Definition Language)是一种接口定义语言,编译器通 ...

  8. 三层交换机解决不同VLAN间的通信—Vecloud微云

    交换机的转发过程 交换机工作于OSI参考模型的第二层,即数据链路层.交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表.交换机根据MAC地址表转发数据. 路由器的转 ...

  9. 高并发编程-使用wait和notifyAll进行线程间的通信3_多线程下的生产者消费者模型和notifyAll

    文章目录 概述 解决办法 概述 高并发编程-线程通信_使用wait和notify进行线程间的通信2_多生产者多消费者导致程序假死原因分析 中分析了假死的原因,这里我们来看下改如何解决在多线程下出现的这 ...

最新文章

  1. 机器学习算法基础知识
  2. jQuery (DOM篇)
  3. win32按钮按下不弹起_为什么厨房插座都不装五孔插座了?听电工一说,懊悔没早知道...
  4. 40_自定义泛型方法及其应用
  5. LayoutInflater.inflate()方法两个参数和三个参数
  6. php pdo效率,php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
  7. linux grub内核选择,UBUNTU GRUB没有内核选项,怎么回事啊?
  8. html网页自动提示框代码,多种网页弹出窗口代码
  9. php多语言商城,Ecshop商城多国语言修改方法
  10. 日本人布置工作至少说5遍
  11. 腾讯2020校园招聘笔试
  12. ip纯真 mysql_纯真ip导入mysql
  13. linux qt中文输入法,解决 Ubuntu 14.04 下 Qt5 中文显示和中文输入法问题
  14. 清理Win11磁盘的方法
  15. Google与k8s
  16. JVM调优实战:to-space exhausted Evacuation Failure
  17. vue项目中scrollTop如何使用
  18. HDU - 1495 非常可乐
  19. ES聚合查询报 can‘t load fielddata on because fielddata is unsupported on fields of type x,use doc value..
  20. 动作一键制作ps信号干扰故障效果

热门文章

  1. 转生活中的各种食品安全问题
  2. eclipse 左侧导航栏不见怎么办
  3. EBS杂项出库事务处理
  4. 矢量数据下载【道路路网(公路、铁路)、水系、建筑物轮廓、地名等等】
  5. windows10计算机里输入法,Win10电脑输入法图标不见了怎么办?
  6. cgns matlab,MATLABSimulink系统建模与仿真实验报告(详细解析)(word文档良心出品).docx...
  7. 【统计建模与R软件】第二章 R软件的使用 课本课后习题 答案 解析 代码
  8. 用python3+ PyQt5写一个NFC模块的串口小工具的一星期
  9. C语言_统计单词长度
  10. js网页动画,如何做一款高逼格不失真的动画