第一次在知乎上发文章,一想到我只是个IP手册翻译大师就犯愁该怎么下笔,既然只会翻译IP手册,那么我就直接来分享一些IP core是怎么用的吧。因为某些原因恰好学习了一些高速接口的IP的使用,所以这个系列也主要讲高速接口方面的东西。

此次实验采用的FPGA平台为Xilinx的评估板KCU116,硬件开发平台采用的是vivado2018.3,IP为IBERT Ultrascale GTY(1.3),详见IP手册PG246


什么是IBERT?

IBERT就是Xilinx提供的集成比特误码率测试仪(Integrated Bit Error Ratio Tester),作为用户来说可以使用这个工具对自己设计的板子中的高速串行收发器进行简单测试,从而判断设计的接口是否有问题。因为这个工具是直接集成到FPGA上,这样一来直接使用这个工具来测试高速接口就方便很多了,它只需要JTAG和测试接口用的连接线就能完成对板子的测试。

当然,在开启高速接口之前得确保接口的传输信号得是正确的,尽管基带信号在信道的传输前进行了一定的信道编码,但是信道质量实在太差的话依旧会造成一定的误码,所以此次实验使用IBERT的主要目的就是要确保信号不受传输过程中的影响,使数据完整无误的从一台设备传到另一台设备。

怎么使用IBERT?

  • 新建工程

新建工程就不必多讲了,值得注意的是,本次实验中选用的是KCU116的评估板,在新建工程时注意直接勾选这块评估板就好了,可以在一些免去一些麻烦。

  • 配置IP

新建好工程之后,在使用IP之前肯定要先找到IP,既然叫“IBERT”,那我们直接在IP Catalog里面直接搜索“ibert”,搜出来的玩意有很多,由于是kcu116,板子上提供的收发器是GTY收发器,所以直接选中图1所示的就好了。(可单击图片查看高清无码画质)

图1 找到IBERT IP

双击进入IP后可以看到如下图2界面,需要设置的内容不多,还是非常友好的,接下来就是一一介绍这些选项是怎么设置的。

图2 IBERT IP界面

(1)首先是得为这个IP起个名字,比如它叫“kcu116_ibert_ultrascale_gty_0”,当然它叫“abc”也不是不行。

其次是Protocol Definition界面的设置,如下图3所示,主要的是注意LineRate和Refclk两个选项:LineRate,其中GTY收发器对应的速率最高可达32.75 Gbps,也就是在该速率内的选择,但是由于实际需求不同勾选的速率不同,像是把GTY收发器用作25G以太网接口的话其对应的速率为25.78125Gbps(其计算方法可详见以太网接口);Refclk就是GTY收发器所需要的参考时钟了,像是10G以太网对应156.25MHz参考钟,25G以太网对应161.1328125MHz参考钟,这里就选择25G对应的161.1328125MHz。

该页的其他选项诸如protocol的数量,即不同LineRate数量就不同,比如我想在一块板子上既测试10G以太网接口又测试25G以太网接口,可以选择数量2;Quad Count设置项,每一Quad对应4个GTY收发器,根据测试数量决定,这里选1;

图3 Protocol Definition 界面

(2)Advanced Settings这个界面主要设置收发器接收端的均衡等内容,保持默认就好了,如下图4所示;

图4 Advanced Settings 界面

(3)Protocol Selection这个页面主要选择要测试的GTY收发器所在位置,因为此次测试为25G以太网接口,根据KCU116的原理图可知板子的四个万兆口所在bank为226,连接的参考时钟为MGTREFCLK1 226,故按照下图勾选,当然也可以随便勾选一组,之后再按照自己的电路图再修改管脚约束;

图5 Protocol Selection 界面

(4)这个选项就是勾选系统时钟,此次使用的是KCU116的板子,其采用的是300M的时钟作为系统时钟,差分钟的p端连的是K22,故可按照下图6所示连接,当然也可以按照自己电路设计进行选择。

图6 Clock Settings 界面

(5)到此IBERT IP核的配置基本结束,在xilinx的板子中由于板子的不同,对应的IP也有所不同,但是大体设置基本一样,总之对于该IP的设置还是十分简单易懂的。

图7 Summary 界面
  • open IP example design

在完成好IP的设置之后,可以在工程下看到综合好的IP模块,单击右键点击open IP example design即可获得基于该IP生成的示例工程,具体操作如下图8所示。

图8 open IP example design

vivado自动生成的示例工程如下图9所示,可以简单观察其基本结构,可以发现该工程把所有的线都连上了并且约束也写好了,故可以直接对其综合和布局布线生成bit。到这一步为止,基本上IBERT测试工程就全部准备好了,接下来只要下载到板子上进行测试就行了。

图9 生成的example design
  • 进行测试

将上述生成好的bit和ltx下载到板子上后可以发现多了下图10这个玩意,这个就是IBERT测试工具;

图10 IBERT

有了这个工具之后,可以在IBERT上右键找到create links,一个GTY收发器包含一个发送端Tx和一个接收端Rx,故有四组Tx、Rx。如果测试是选择一个GTY收发器自发自收可以选择单个收发器的Tx和Rx直接连接;如果选择GTY两两相互收发,可以两个GTY收发器的Tx和Rx端交叉连接等等。这里选择两个收发器相互收发,所以选择如下图11连接。

图11 IBERT测试中Tx和Rx连接

选择了两个收发器连接之后,可在vivado下端看到下图12所示的界面。

图12 IBERT测试可设置界面

可以简单分为粉色框出的部分,在前文讲过,IBERT主要是用来测试收发器的信道质量的,对于传输质量不好容易产生码间串扰或是其他影响的信道可以通过这些设置来一定的改善。需要注意的是:

(1)Rx和Tx的PLL Status,如果显示locked即表示可以进行测试,如果显示其他则说明对应的参考时钟设置或参考时钟的管脚约束有问题,可以重新设置;

(2)Loopback Mode主要有四种模式,分为近端、远端的PCS和近端、远端PMA回环,如果选择其中一种回环方式则其在对应的位置回环了,如果选择none,则Tx端的码流将会输出,根据自行外部连接线在输入到Rx端去,这里采用外部连接故选择none,选择外部连接一定要注意连接线是否合适;

(3)Tx 的Pre-cursor、Post-cursor和Diff Swing就是收发器的Tx发送端的预加重等可以改善信号传输质量的一下参数,可以修改这些参数获取最优质量,而DFE Enable是收发器的Rx接收端的均衡器的使能信号,勾选有利补偿信号在信道传输中的损失;

(4)Tx和Rx pattern是测试时的伪随机码,接收端可以校验发送端发送的数据是否正确的来计算误码率,故需要Tx和Rx的伪随机码一致,这里可以选择PRBS 31-bit;

(5)Inject Error可以在测试过程中机型注入错误,可以模拟真实情况下有可能遇到的各种影响;

(6)在以上的每种操作后记得要reset下。

当设置好上述的参数或者其他设置之后就可以观察收发情况,情况如下图13所示,可以看到KCU116的收发器情况良好,但是如果是自己设计的一些高速板可能状况就不大好了,但也可以设置一些参数稍加改善。

图13 IBERT测试情况
  • 眼图

除了以上的使用方式外,还可以观察收发器的眼图情况,如下图14、图15所示,可以设置范围、误码率阈值等。

图14 设置眼图1
图15 设置眼图2

简单设置后,就可以得到眼图了,如下图16所示,观察眼图无非就是看该图长得是否像眼睛以及张开的面积是否大,如果张开的面积越大说明信道质量越好,这样一来就很轻松地可以判断设计的高速接口的质量了。

图16 眼图

除了这样单次查看眼图判断信道质量,还可以设置多组不同的预加重参数生成眼图的方式,这样就可以获取最佳预加重参数,这样一来在此后的接口设计当中就可以使用到这样的一组参数,以此提供信号传输的质量。具体如图17、18、19所示

图17 多组参数生成眼图 设置1
图18 多组参数生成眼图 设置2
图19 多组参数生成眼图

从这么多组参数排列组合得到眼图中选取眼睛张开面积最大的那张图所对应的参数就是最优参数了,当然有的是时间的话可以将所有情况都排列组合一遍。

  • 浴缸曲线

除了观察眼图之外还可以观察浴缸曲线,只要把图15的扫描类型换成1D Bathtub就可以得到下图20所示。

图20 浴缸曲线
  • 其他

如果你恰巧财力雄厚,还可以买两块KCU116的板子,这样一来,在两个收发器连接中也可以选择使用两块板子的GTY收发器对连。我经过两块板子对连发现,只要两块板子的码流速率和码型一致就可以连接测试,这样一来就使用这个工具去测试一些误码仪的功能(这个我实际测试发现是可行的)。

其他的想到之后再做补充了~


写在最后:

接下来有时间有机会简单介绍一下怎么使用一些高速接口,像是10G/25G以太网、PCIE等接口的IP的使用,当然行文介绍也会像这篇文章一样尽可能简单,易于上手!

当然,作为一个刚开始学习FPGA的新手,我也只能从我这个新手的角度出发去学习这些工具或者IP的使用,可能在很多地方还是认识不足或是学习不充分,会存在错误,欢迎批评指正~

jtag接口原理图_在开始高速接口前,我们来试试IBERT测试吧!相关推荐

  1. java的接口理解_原来Java的接口可以这样理解

    为什么写这篇文章 今天有人问了我这样一个问题 Java中为什么要使用接口呢? 还要先定义了一个接口,类还要实现接口的方法,还不如直接在这个类中写实现方法呢,根本没必要定义接口啊. 大概就是这样一个问题 ...

  2. lcd屏幕有mipi接口吗_液晶屏mipi接口能用的最大分辨率是多少

    1.什么是HDMI HDMI:HDMI的英文全称是"High Definition Multimedia",中文的意思是高清晰度多媒体接口.HDMI接口可以提供高达5Gbps的数据 ...

  3. java 机机接口定义_【JAVA】接口

    先问一个问题,为什么需要接口? 看例子: 需求:要求实现防盗门的功能.门有"开"和"关"的功能,所有"上锁"和"开锁"的 ...

  4. lcd屏幕有mipi接口吗_液晶屏MIPI接口与LVDS接口到底有什么区别详细资料说明

    液晶屏接口类型有LVDS接口.MIPIDSIDSl接口(下文只讨论液品屏LVDS接口,不讨论其它应用的LVDS接口,因此说到LVDS接口时无特殊说明都是指液晶屏LVDS接口),它们的主要信号成分都是5 ...

  5. 耳机接口规则_耳机母座接口定义及使用注意事项

    耳机母座接口定义 关于耳机母座接口定义,一般区分有两种不同的耳机母座接口定义,首先一种是三段式耳机母座,其三段式耳机母座接口定义(从耳机母座内部末端开始顺序)为:左声道.右声道.地线.对于三段式的耳机 ...

  6. java 接口 属性_浅谈java接口中定义属性

    package com.supan.reflact; public interface PersonObject { /** * 在接口中定义属性的知识点: * 1,属性默认的修饰词是:public ...

  7. 语音合成接口整理_各平台语音合成接口

    目前语音合成接口比较成熟,可以使用的平台也比较多,使用方式和价格也打不相同. 一.腾讯云(推荐) 功能: 1.基础语音合成API(短文本合成API) 2.长文本语音合成API 3.实时语音合成API ...

  8. 接口测试用例_【学习】接口测试用例编写和测试关注点

    一.为什么要做接口测试 在日常开发过程中,有人做前端开发,有人负责后端开发.接口就是连接前后台,由于前端开发和后端开发的速度可能不一样,例如后端开发好了,但是前端没有开发.那么我们是不是就不需要测试呢 ...

  9. java调接口传值_关于调用第三方接口时传递参数是File类型的解决方式

    正版编程与类型系统讲解基于的应用 77.35元 (需用券) 去购买 > 最近项目,需要我调用另一个项目中的某个接口,接口的入参为File类型,要拿到此接口返回的数据@ApiOperation(& ...

最新文章

  1. 跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP
  2. 【干货书】深度学习合成数据
  3. 【机器学习】机器学习Top10算法,教你选择最合适的那一个!一文读懂ML中的解析解与数值解...
  4. 域客户端的计算机更名
  5. LeetCode Algorithm 1290. 二进制链表转整数
  6. CodeForces - 1284C New Year and Permutation(组合数学+思维)
  7. 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
  8. 浅谈jquery之on()绑定事件和off()解除绑定事件
  9. SAP License:SAP中的PRC增值税概念
  10. 计算机信息管理专业教学改革,计算机信息管理专业实践教学改革探索
  11. BestCoder Round #4 之 Miaomiao's Geometry(2014/8/10)
  12. python微博爬虫实战_爬虫实战2--微博爬取
  13. 80题题目+AC代码汇总 ~ 南阳 NYOJ
  14. 正当防卫指导性案例以及研析
  15. E45: ‘readonly‘ option is set (add ! to override)解决办法
  16. 识别文字的软件哪个好呢?不如试试这几款
  17. 成功解决WebMediaCfg.ini文件被清空引起的“没有找到数据库”
  18. RabbitMQ介绍和安装以及当下发展现状
  19. 坚定、信心和进取是成功的基石
  20. 数据治理系列:浅谈数据质量管理

热门文章

  1. DAY13 Matlab实现图像镜像
  2. linux 内核 第二周 操作系统是如何工作的
  3. 你可能不需要 jQuery!使用原生 JavaScript 进行开发
  4. 巧用svn create patch(打补丁)方案解决定制版需求
  5. GCT之数学公式(平面解析几何)
  6. myeclipse jsp头
  7. IT公司比较流行的10种编程语言
  8. PTA-7-1 矩阵运算 (20分)(C语言)
  9. 训练日志 2019.1.31
  10. 信息学奥赛C++语言: 选夏令营旗手1