FPGA SERDES的应用需要考虑到板级硬件,SERDES参数和使用,应用协议等方面。由于这种复杂性,SERDES的调试工作对很多工程师来说是一个挑战。本文将描述SERDES的一般调试方法,便于工程师准确快速定位和解决问题。

1. 硬件检测
硬件检测可以分为原理图/PCB检查和板上硬件检查。这一部分的工作相对简单,但是很多时候问题是由这些看起来很不起眼的地方导致的。

a) 原理图/PCB检查
根据SERDES应用手册要求检查原理图和PCB设计。例如对于Xilinx 7系列GTX/GTH SERDES,可以参考UG476的Board Design Guidelines检查原理图和PCB设计。

b) 板上硬件检查
使用示波器/万用表等仪器设备实际测量板上硬件,确认提供给SERDES的工作环境正常。

i. 检查电源的电压/精度/纹波/上电顺序是否符合数据手册的要求。例如对于Xilinx 7系列GTX SERDES,需要对照DS182检查。

ii. 检查SERDES参考时钟频率/摆幅是否符合数据手册的要求,以及参考时钟的管脚位置是否正确。

iii. 物理通道的检查,例如确认AC耦合电容的容值是否正确,光模块是否兼容,焊接是否正常。

2. 使用IBERT
IBERT是一个强有力的调试工具,可以用于调整参数设置和确认系统余量,也可以用于故障现象判断。IBERT在CORE generator里产生工程和BIT文件。将BIT文件下载到FPGA后,使用ChipScope Analyzer连接到FPGA上,就会出现IBERT的GUI调试界面。

a) 检查PLL是否LOCK,如果没有,需要检查时钟和电源。比如时钟频率是否正确,SERDES是否选择了正确的时钟源。

b) 将SERDES的TX和RX设为相同的数据pattern,例如PRBS-31。设置SERDES为Near-end PMA模式。如果这一步不能工作,检查TX/RX极性是否反转;检查TXUSRCLK/TXUSRCLK2/RXUSRCLK/RXUSRCLK2上的时钟频率是否正常。通过这一步保证SERDES内部工作正常。

c) 将SERDES设置为Far-end PMA和Far-end PCS模式,确认远端设备的SERDES是否收发正常。通过这一步排除和时钟OFFSET相关的问题。

d) 如果这些步骤工作正常,但是误码率很高,有可能是参数设置有问题。需要通过调整TX/RX的参数设置来解决。也可以通过EYE SCAN功能来得到最佳设置和判断系统余量。

3. 通用的调试步骤
通常会使用一定的调试步骤来定位问题,避免重复工作。一开始,一般不进行整个工程的测试,而是基于SERDES的Wrappers工程,以方便定位问题。一般可以使用CORE generator里的Transceivers Wizard产生的Example Design。在Core generator里产生Transceivers Wizard的Example Design后,会输出源文件和scripts。利用scripts可以直接产生运行结果。Example Design里的数据产生和检测都是基于BRAM,可以很方便的修改数据。在工程里面,Chipscope VIOs and ILAs必须被加入到工程里面,进行控制和调试分析。

a) 进行Near-end PCS测试。
i. 启动SERDES复位(VIO)。
ii. 确认复位结束(VIO)。
iii. 检查SERDES状态信号(VIO)。
iv. 使用计数器确认时钟频率(VIO)。

b) 进行Near-end PMA测试。
i. 确认CDR工作正常,检测CDR产生的恢复时钟(VIO)。
ii. Comma alignment和8B/10B状态检查(ILA)。

c) 正常操作检测
i. 确认clock correction电路状态(ILA)。
ii. 确认Channel bonding电路状态(ILA)。
iii. 链路通讯检查(ILA和VIO)。

转载:http://xilinx.eetrend.com/article/3803

一步步教你如何进行Xilinx SerDes调试的更多相关文章

  1. 一步步教你搭建VS环境下用C#写WebDriver脚本

    一步步教你搭建VS环境下用C#写WebDriver脚本http://www.automationqa.com/forum.php?mod=viewthread&tid=3529&fro ...

  2. 我写了个教程《一步步教你把ubuntu安装到U盘》

    一步步教你把ubuntu安装到U盘 作者 Val 2452013147@qq.com 原因: 由于某些原因(学生党),需要把ubuntu安装到U盘到处走,百度了一下,教程都不是很好,要么很复杂,要么不 ...

  3. 一步步教你读懂NET中IL(附带图)

    一步步教你读懂NET中IL(附带图) 接触NET也有1年左右的时间了,NET的内部实现对我产生了很大的吸引力,在msdn上找到一篇关于NET的IL代码的图解说明,写的挺不错的.个人觉得:能对这些底部的 ...

  4. 一步步教你轻松学奇异值分解SVD降维算法

    一步步教你轻松学奇异值分解SVD降维算法 (白宁超 2018年10月24日09:04:56 ) 摘要:奇异值分解(singular value decomposition)是线性代数中一种重要的矩阵分 ...

  5. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  6. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  7. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  8. 一步步教你轻松学关联规则Apriori算法

    一步步教你轻松学关联规则Apriori算法 (白宁超 2018年10月22日09:51:05) 摘要:先验算法(Apriori Algorithm)是关联规则学习的经典算法之一,常常应用在商业等诸多领 ...

  9. 一步步教你轻松学K-means聚类算法

    一步步教你轻松学K-means聚类算法(白宁超  2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...

随机推荐

  1. Problem I: 零起点学算法30——输出四位完全平方数

    #include<stdio.h> int main() { int a,b,c,d,s,i; ;i<;i++){ s=i*i; a=s/; b=s%/; c=s%/; d=s%; ...

  2. nginx+php-fpm 报错Primary script unknown

    报错信息(nginx日志): // :: [crit] #: * stat() : Permission denied), client: 172.21.205.25, server: localho ...

  3. hadoop LineRecordReader

    /** * * @param job 配置信息 * @param split split * @param recordDelimiter 分列的字符 * @throws IOException */ ...

  4. u-boot中添加mtdparts支持以及Linux的分区设置

    简介 作者:彭东林 邮箱:pengdonglin137@163.com u-boot版本:u-boot-2015.04 Linux版本:Linux-3.14 硬件平台:tq2440, 内存:64M   ...

  5. Coherence装载数据的研究 - Invocation Service

    这里验证第三个方法,原理是将需要装载的数据分载在所有的存储节点上,不同的地方是利用了存储节点提供的InvocationService进行装载,而不是PreloadRequest, 原理如图 前提条件是 ...

  6. hdu 1863 畅通project

    #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm& ...

  7. Objective-C:Objective-C 和 Core Foundation 对象相互转换的内存管理

    Objective-C 和 Core Foundation 对象相互转换的内存管理 iOS允许Objective-C 和 Core Foundation 对象之间可以轻松的转换,拿 NSString ...

  8. PHP文件包含漏洞总结

    0x00 前言 PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入. 最常见的就属于本 ...

  9. fedora25安装和docker-ce_清华源

    docker-ce_清华源 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/fedora/ fedora25 docker-ce版本: htt ...

  10. Fillrate

    http://xionggf.com/articles/graphic/misc/mobile_gpu_term.html IMR Immediate Mode Rendering 立即渲染模式 TB ...