GTY多核共享与例程分析
GTY 配置和使用
GTY配置非常简单,通过调用IP方式使用,这里只对重点配置讲解,GTY IP核配置如下:
GTY 的多核使用
一个工程可调用多个GTY,且共用一对差分时钟源,也就是GTY的多核使用,构成级联和主从搭配,以工程4路GTY使用为例,多核主从架构如下:
其中主GTY的共享逻辑配置如下:
从GTY的共享逻辑配置如下:
以工程4路GTY使用为例,多核主从代码架构如下:
GTY example design分析
这个例程提供了完整的GTY收发器使用示例,包括:
- 基本收发功能
- PRBS测试能力
- 链路管理机制
- 调试接口
- 完整的时钟复位控制
适合作为GTY收发器应用的参考设计。
example_stimulus_inst0
PRBS测试模块发送端:
- PRBS数据生成
- 发送数据控制
为什么使用PRBS数据作为测试源数据?
PRBS (伪随机二进制序列 Pseudo-Random Binary Sequence) 用于测试有以下几个重要原因: - 信号特性优势
具有类似随机数据的统计特性,但又是确定性序列
包含各种数据模式组合(连续0、连续1、交替等)
频谱分布均匀,能够充分测试系统带宽
自相关性好,易于同步和错误检测
- 测试覆盖全面
可测试不同码型的传输特性
能验证系统在各种数据模式下的性能
覆盖最差情况的数据跳变
可检测系统的带宽限制问题
- 错误检测能力
接收端可以自动生成期望值进行比对
容易计算误码率(BER)
能快速定位传输中的错误
支持实时错误监测
// PRBS-based data stimulus module for transceiver channel 0
(* DONT_TOUCH = "TRUE" *)
gtwizard_ultrascale_0_example_stimulus_raw example_stimulus_inst0 (
.gtwiz_reset_all_in (hb_gtwiz_reset_all_int),
.gtwiz_userclk_tx_usrclk2_in (hb0_gtwiz_userclk_tx_usrclk2_int),
.gtwiz_userclk_tx_active_in (hb0_gtwiz_userclk_tx_active_int),
.txdata_out (hb0_gtwiz_userdata_tx_int)
);
example_checking_inst0
PRBS测试模块接收端:
- PRBS数据检查
- 错误检测
gtwizard_ultrascale_0_example_checking_raw example_checking_inst0 (
.gtwiz_reset_all_in (hb_gtwiz_reset_all_int || ~hb0_gtwiz_reset_rx_done_int ),
.gtwiz_userclk_rx_usrclk2_in (hb0_gtwiz_userclk_rx_usrclk2_int),
.gtwiz_userclk_rx_active_in (hb0_gtwiz_userclk_rx_active_int),
.rxdata_in (hb0_gtwiz_userdata_rx_int),