【米尔-Xilinx XC7A100T FPGA开发板试用】+03.SFP光口测试(zmj)
随着数字通信技术的进一步发展,各类数据的传输方案对带宽的需求迅猛增长,传统的并行总线的数据传输方式已经远远不能满足如万兆以太网、PCI-Express、SRIO、SFP等技术方案的需求,此种情况促使高速串行数据开始被广泛地使用。
除了Spartan系列,Xilinx其他系列FPGA内部集成了能实现高速数据收的发串并/并串转换、预加重、接收均衡、CDR、8B/10B线路编解码、弹性buffer、通道绑定和时钟修正等模块,可极大地减小时钟扭曲、信号衰减和线路噪声对接收性能的影响,从而使传输速率进一步提高,可用于实现万兆以太网、PCI-Express、SRIO、SFP等常用接口。在内嵌高速串行接口技术的FPGA被大量应用的同时,高速串行的信号质量测试也变得越来越重要,通常用示波器观察信号波形、眼图、抖动来衡量信号的质量。串行信号的抖动,反映在时域上,信号的稳定时间会变小,眼图宽度会变窄;信号的噪声,反映在信号幅度上,眼图高度变小。通俗点讲眼图的眼睛张开得越大,越端正,表示高速串行数据传输的越稳定。
为了方便用户使用,vivado中提供了一个IBERT(Integrated Bit Error Ratio Tester)的测试工具用于对Xilinx FPGA芯片的高速串行收发器进行板级硬件测试。通过IBERT我们可以直接获取误码率,观察眼图,调节串行收发器的参数,从而有助于判断可能存在的问题,便于验证硬件的稳定性和信号完整性。
IBERT中的BERT是Bit Error Ratio Test的缩写,指比特出错概率测试,简而言之就是误码率测试。Vivado中IBERT工具的测试原理是通过收发器由外部回环进行自收自发而实现。就是将同一组收发器的TX和RX进行短接,TX发送端通过发送某种特定序列的数据流,在RX接收端接收后,通过比对发送和接收的数据,从而得出误码率和眼图信息,来验证开发板GTP部分工作的稳定性和可靠性。
Xilinx 具有集成高速 MGT (Multi-Gigabit Transceiver)的 BANK,可以通过使用相应 IP在芯片端实现 SFP+的物理层。
核心板 FPGA GTP 收发器接口⽀持 4 lanes,最大速率 6.6G/s,可用来扩展 PCIe、SATA、SFP、QSFP 等高速接口,BANK时钟100MHz。
核心板配套的开发板设计了 2 路 SFP+ 接口,其最大速率高达6.5Gb/s,连接器位号为 J4,J5,插入 SFP 光模块可实现光纤通信。
具体 BANK 信息如下(使用Lane2和Lane3,未用Lane0和Lane1):
序号 | BANK名称 | 信号名 | 功能 |
---|---|---|---|
1 | MGTP_B216_TX_P2 | RDP2 | Lane2-TX-P |
2 | MGTP_B216_TX_N2 | RDN2 | Lane2-TX-N |
3 | MGTP_B216_RX_P2 | TDP2 | Lane2-RX-P |
4 | MGTP_B216_RX_N2 | TDN2 | Lane2-RX-N |
5 | MGTP_B216_TX_P3 | RDP3 | Lane3-TX-P |
6 | MGTP_B216_TX_N3 | RDN3 | Lane3-TX-N |
7 | MGTP_B216_RX_P3 | TDP3 | Lane3-RX-P |
8 | MGTP_B216_RX_N3 | TDN3 | Lane3-RX-N |
9 | MGTP_B216_REF_CLK_P0 | 100MHz差分时钟(未用) | |
10 | MGTP_B216_REF_CLK_N0 | 100MHz差分时钟 | |
11 | MGTP_B216_REF_CLK_P1 | 125MHz差分时钟(常用) | |
12 | MGTP_B216_REF_CLK_N1 | 125MHz差分时钟 |
【图】SFP接口参考电路原理图
SFP-0和SFP-1通过光纤及光模块进行直连。
【图】光纤是万兆多模双芯LC-LC光纤线(3m)
【图】光模块是万兆多模光模块
【图】光纤与光模块连接
【图】SFP-0与SFP-1互连
在vivado的IP Catalog中找到IBERT 7 Series GTP这个IP核。
iBERT测试协议选择Custom1,GTP参考时钟频率选择125MHz,只需要测试与SFP连接的2对GTP,Quad Count选择1。传输速率设置为为3.125Gbps,PLL类型选择PLL0即可。
由于与SFP连接的GTP都位于BANK 216,所以在QUAD_216中选择使能协议。从上面的硬件电路分析中可以看到,底板时钟芯片输出的差分时钟是与GTP_216_CLKP1连接,所以参考时钟要选择为MGTREFCLK1 216。
IBERT内部逻辑的工作时钟选择GTP的输入时钟125MHz,这样就可以不使用额外的外部时钟,当然,用户也可以将该时钟设置为外部时钟,例如通过FPGA板卡的时钟晶振提供,大家可以自行尝试。
IBERT的example design通常无需修改就可以直接使用对GTP进行测试,因此在IBERT IP核配置完成后,右击打开example design工程。接着,编译工程,生成bit文件即可。
在vivado中打开hardware manager,将刚才生成的bit文件下载到开发板中。下载完成后,点击auto-detec links。点击Reset按钮,使IBERT进行复位,可以看到此时的Errors变为0,代表接收端没有检测到错误,仔细观察有如下结论:
没有连接的GTP,状态显示为"No Link";
已经连接的GTP,状态显示设置速率,经过长时间测试,可以发现Errors一直为0,这代表,测试过程中没有出现任何误码,这说明板级层面的GTP硬件工作稳定;
在测试进行时用户也可以修改测试数据类型,例如PRBS 23-bit,PRBS 7-bit等等,接收与发送所使用的数据类型必须完全一致,修改完成后,务必点击Reset按钮,复位Errors为0。
误码率可以从数学统计的角度判断GTP的硬件稳定性,vivado还提供了一种更直观的方式来观察GTP的信号完整性,那就是眼图。vivado生成的眼图如下图所示:
【图】Link状态及正常眼图
从信号完整性的角度来看,眼图中间的蓝色区域越大,GTP所对应的PCB高速电路的信号完整性越好。
同样的,还可以切换到浴缸曲线观察信号完整性(浴缸越大,等效于眼图越大,信号完整性越好):
【图】Link状态及正常浴缸曲线
【视频】眼图测试
【视频】眼图测试
更多回帖