摘要 IBERT即集成式比特误码率测试仪,是Xilinx专门用于具有高速串行接口的FPGA芯片的调试和交互式配置工具。文中介绍了IBTERT基本功能、实现原理,并结合实例阐述用IBTERT调试FPGA时的具体方法和调试步骤。
关键词 误码率测试仪;高速串行接口;眼图
随着高速数字系统的发展,高速串行数据被广泛使用,内嵌高速串行接口的FPGA也得到大量应用,相应的高速串行信号质量的测试也越来越频繁和重要。通常用示波器观察信号波形、眼图、抖动来衡量信号的质量,Xilinx提供的IBERT(Integrated Bit Error Ratio Tester)作为一种高速串行信号测试的辅助工具,使得测试更便捷,其具有不占用额外的I/O管脚和PCB空间、不破环接口信号的完整性、无干扰、使用简单和价格低廉等特点。
1 IBERT简介
IBERT是Xilinx提供用于调试FPGA芯片内高速串行接口比特误码率性能的工具,具备实时调整高速串行接口的多种参数、与系统其他模块通信及测量多通道误比特率等功能,支持所有的高速串行标准,包括:PCI Express、RapidIO、千兆以太网、XAUI等。使用IBERT核测试,只需通过JTAG接口下载设计并测试硬件,无需额外的管教和接口;大幅缩减了高速串行接口测试场景的建立和调试时间,是高速串行接口开发中理想的调试工具。
文中所述使用方法基于Xilinx的工具CoreGenerator12.4和ChipScope Pro Analyzer12.4进行描述,下面介绍使用IBERT的步骤,IBERT的操作分为两个阶段。
1.1 配置IBERT核,生成配置文件
(1)打开Core Generator12.4工具,新建设计工程,指定待测器件类型、封装、速度等级,生成工程文件。在IP Catalog窗口\View by Function\DebugVerification\Chipscope Pro\下,双击IBERT,配置线速率、GTP位置和参考时钟、系统时钟等IBERT核参数,生成可JTAG加载的bit配置文件。与生成其他核不同,IBERT核不是插入到用户的设计中去的ngc或edn文件,而是生成自身的bit配置文件。
(2)IBERT核和ILA核(Integrated Logic Analyzercore),也需要连接到ICON核(Integrated Controllercore)上,但其自身具备控制、监控以及改变高速串行接口参数的逻辑,并能完成误比特性能测试。需注意的是,IBERT核只能作为一个独立的设计,不可在用户设计中例化。不同系列芯片的IBERT核在Core Generator中的配置不同。
1.2 IBERT核的主要组件
(1)BERT(比特误码率测试)逻辑:BERT逻辑中例化了高速串行接口组件,并包括了测试模式发生器和检查器。利用Comma和Comma检测器,可提供从简单的时钟信号到完全的PRBS模式以及成帧计数模式。可产生各种PRBS数据作为高速串行发送器的数据源,可设置多种环回,由接收通道接收,对高速串行接收器的接收数据进行相同编码的检测,计算比特误码率。
(2)DRP(动态重配置端口)逻辑:每个高速串行接口均有一个动态重配置端口,因此每个收发器属性都可在系统中改变。所有的属性和DRP地址在IBERT核中均可读可写,且可独立访问。
(3)控制盒状态逻辑:管理IBERT核的操作。
1.3 配置到FPGA中完成测试
测试时,建立JTAC连接,使用ChipScope Pro Analyze12.4下载bit配置文件。下载成功后,在New Project窗口会出现IBERT Console点击即进入Console Window,该窗口可以设置高速串行接口的参数,进行开环或闭环的误码测试,同时提供高速串行接口参数的控制和监视接口。Console Window有4个界面:MGT/BERT Settings、DRP Settings、Port Settings和Sweep Test Setting。下面分别介绍每个界面的功能。
(1)MGT/BERT Settings:MGT Settings部分可以设置摆幅、预加重、均衡以及接收采样点的位置等参数,同时可设置开环或闭环的测试方式,测试进行中可以显示线速率和所测试的高速串行接口的锁相环状态。BERT Settings部分可以设置测试发送和接收数据的编码方式,并显示测试的误码率结果。Clock Setting部分显示收发线路的时钟信息。
(2)DRP Settrags:可查看并设置高速串行接口的属性。
(3)Port Settings:可查看并设置高速串行接口的接口状态。
(4)Sweep Test Setting:本界面用于自动扫描测试,是IBERT提供的一项便利高效的测试方式,可设定发送和接收的可控制参数范围,自动逐个地进行遍历性的误码测试,参数包括发送摆幅、预加重、接收均衡器、CDR采样数据的位置等。用户可设定每组参数重复测试次数以及测试时间,最后点击Start即可进行扫描测试。测试数据保存在.csv文件中。只能在近端环回和远端环回测试模式中使用。
2 实例说明
设计实例使用Xilinx公司Spatan6系列的xc6slx150t-3fgg676芯片,根据上述使用说明,下面具体说明使用IBERT进行测试的过程。
(1)打开Xilinx ISE DesignSuite12.4/ISEDesignTools/Tools/Core Generator,新建工程,设置芯片信息如图1所示,点击确认,生成核的工程文件。
IBERT使用手册
使用环境:ise 14.4 +VirtexFLG 2000T -1925 -2c
1 IBERT简介
IBERT是Xilinx提供用于调试FPGA芯片内高速串行接口比特误码率性能的工具,具备实时调整高速串行接口的多种参数、与系统其他模块通信及测量多通道误比特率等功能,支持所有的高速串行标准,包括:PCI Express、RapidIO、千兆以太网、XAUI等。使用IBERT核测试,只需通过JTAG接口下载设计并测试硬件,无需额外的管教和接口;大幅缩减了高速串行接口测试场景的建立和调试时间,是高速串行接口开发中理想的调试工具。
2生成IBERT核
选择IBERT核
需注意的是,IBERT核只能作为一个独立的设计,不可在用户设计中例化,因此需要勾选Generate Bitstream using ISE Tools,在例化IBERT核的时候就可以生成bit文件了。时钟选项根据电路板上时钟来选择如果时钟来自于GTX的专用时钟管脚,那么无需勾选Use External clock source。Silicon Version根据FPGA芯片自身版本来选择。如果是用的工程样片就选择Initial ES或者General ES,如果是量产的成熟产品就选择production。
GT clocking mode selection
选择2个通道112和113,每个通道有4个channel。
Number of Protocols 如果设计所有通道跑一个速度的话,选择1就可以了。
GT count: 必须与channel数量一致,比如只例化了一个通道中2个channel,那么GT count就为2
Max Rate 根据你的需求选择
Quad PLL 如果Max Rate> 6G的话,那必须勾选Quad PLL
因为上面protocol 数目只等于1,故此处所有的channel只有一个速率。
Refclk source一定要和硬件工程师沟通知道时钟是连接到哪一个QUADS的哪一个channel上的专用refclk。 相邻3个QUAD可以合用中间QUAD的某一个channel上的refclk。此例QUAD112和QUAD113共用QUAD112上channel0上clk。因为是8G的速率故后面的QUAD PLL全部勾选。
此处GTX Source选用112通道的时钟
3 生成bin文件
注意IBERT核默认是生成bit文件,如果需要生成bin文件的话需要修改ise14_4\gtx\ipcore_dir\chipscope_ibert\implement \implement.sh文件。
STEP1:在implement.sh中添加 –g Binary:Yes
STEP2: 执行刚才修改的implement.sh文件
QUESTION:
can i make an ibert design to test the connection between two boards?
Please see what Xilinx FAE said:
After having generated the IBERT design for FPGA1 and FPGA2,you might open two Vivado tools in one PC, or if you prefer two Vivado tools on two PC.Then you will assign a USB number to the first FPGA connection, and another one to the second FPGA connection.
After having programmed FPGA1 and FPGA2 with the relative bit file, Vivado1 will be able to open a hardware session on FPGA1 and Vivado2 on FPGA2.Unfortunately vivado still cannot create the correct links from one FPGA to a different one: for example Vivado (1) will only create links from FPGA 1 drivers to FPGA1 receivers.
But this will not prevent us from making a good measurement: you just need to set the transmitters and receivers at the desired rate and PRBS.let's make an example.you want to test the link from FPGA1 where you have 6Gbps PRBS7 transmitters, to FPGA2 where you have 6Gbps PRBS7 receivers.Also you want to test the link from FPGA2 where you have 6Gbps PRBS31 transmitters, to FPGA1 where you have 6Gbps PRBS31 receivers.
In Vivado 1 you only see FPGA1, so you need to create a fake link from TX to RX both belonging to GTX on the same FPGA1 same stuff in Vivado2: you need to create a fake link from TX to RX both on the same FPGA2.You then need to program FPGA1 transmitters with PRBS7, FPGA1 receivers with PRBS31; FPGA2 transmitters with PRBS31, FPGA1 receivers with PRBS7.
Both links should be ok now. Please inject the error to double check if the error is correctly revealed by the receiver