自动协商
要启用自动协商,请执行以下操作:
-
ctl_autoneg_enable
= 1 -
ctl_autoneg_bypass
= 0
设置 ctl_an_*
以播发所期望的自动协商设置。
使用控制和状态接口时,设计示例会将 ctl_an_*
值绑定到有效设置。如果使用的是寄存器接口,请参阅 使用 AXI4‑Lite 接口进行自动协商和链路训练的开发板测试步骤 以了解寄存器顺序。
链路训练
要启用链路训练,请将 ctl_lt_training_enable
设置为 1。
- 这样核不会实际执行任何训练。它仅提供第 72.6.10 条所需的控制协议。训练算法由用户负责。
- 该核不会监控 RX 眼,也不会向链路伙伴 TX 发送任何预置、初始化或系数控制请求。建议将
ctl_lt_rx_trained
设为 1。设置ctl_lt_rx_trained
即可告知链路伙伴,您的 RX 训练已完成,并且您将不会发送任何其他预置、初始化或系数更改。 - 该核不会对任何 GT TX 振幅或系数控制设置进行调整以响应从链路伙伴接收到的任何训练消息。设计示例链路训练 Place_Holder 逻辑会指示已达到最大限制。这样应可允许链路训练成功完成。
随机数
nonce_seed
必须设置为非零值。
- 如果要连接同一开发板上含相同随机数种子的 2 个端口,那么复位释放时间必须不同。
- 如果 nonce_seed 发生更改,则需通过
an_reset
来加载新的值。这包括使用 AXI4‑Lite 寄存器更改nonce_seed
。
下一页信号
如果链路伙伴发送下一页信号,ctl_an_lp_np_ack
必须设置为高电平,以确认下一页信号并允许自动协商完成操作。接收到下一页信号或始终绑定到高电平后,此控制信号即可设置为高电平。
有关阶段和状态信号的详细信息
- 自动协商启动时处于 TX 禁用状态,不显示任何数据,这样可以确保两端链路均处于中断状态。
stat_an_stat_tx_disable
信号将进行切换并保持 1 个周期,以指示此阶段开始。 - TX 禁用状态后,将交换自动协商信息。在此阶段中,
stat_an_rxcdrhold
保持高电平。stat_an_lp_autoneg_able
和stat_an_lp_ability_valid
信号会切换至高电平并保持 1 个时钟周期,以指示何时stat_an_lp*
信息有效。 - 链路训练开始时,
stat_an_start_an_good_check
信号将切换至高电平并保持 1 个时钟周期。stat_an_rxcdrhold
信号将断言无效并切换gtwiz_reset_rx_datapath
。链路训练开始后,将采用 500 毫秒定时器来执行训练和块锁定、以任务模式建立连接并完成正常 PCS 操作,否则自动协商会重新启动。当链路训练块完成帧同步后,stat_lt_frame_lock
信号会变为高电平,stat_lt_rx_sof
将进行切换。在训练帧边界处,stat_lt_rx_sof
信号将继续切换至高电平,并保持 1 个时钟周期。 - 当链路训练完成时,
stat_lt_signal_detect
信号将断言有效,指示开始正常 PCS 操作。 - 当块锁定、同步并对齐(对应多通道核),
stat_rx_status
和stat_rx_valid_ctrl_code
(stat_rx_valid_ctrl_code
仅适用于单通道 10G/25G 核)转至高电平时,an_autoneg_complete
信号会转至高电平。 -
an_autoneg_complete
信号必须在 500 ms 超时范围内转至高电平,否则自动协商会重新启动。如果stat_rx_status
在任何时间返回至低电平,那么自动协商会重新启动。
仿真与环回
自动协商 TX 禁用状态需耗时 50 毫秒才能完成仿真。使用不含预编译的 IP 库的 SIM_SPEED_UP 选项可缩短等待时间。请参阅答复记录 73518 以获取有关关闭预编译库的更多信息。
自动协商无法在环回过程中完成,因为它要求从链路伙伴接收到的随机数值必须与发送给链路伙伴的随机数值不同。
可添加到 ILA 以供调试的起始信号列表如下所示:
- sys_reset
- an_reset
- ctl_an_*
- ctl_lt_*
- stat_an_start_tx_disable
- stat_an_rxcdrhold
- stat_an_lp_autoneg_able
- stat_an_lp_ability_valid
- stat_an_start_an_good_check
- stat_lt_frame_lock
- stat_lt_signal_detect
- stat_lt_link_training
- stat_lt_link_training_fail
- stat_rx_block_lock
- stat_rx_synced(仅在多通道核上可用)
- stat_rx_aligned(仅在多通道核上可用)
- stat_rx_valid_ctrl_code(仅在 10G/25G 核上可用)
- stat_rx_status
- stat_rx_bad_code
- stat_rx_hi_ber
如果使用的线速率支持第 74 条法尔码 FEC,则此信号列表如下:
- stat_fec_inc_cant_correct_count
- stat_fec_lock_error
- stat_fec_rx_lock
- stat_fec_inc_correct_count
- ctl_an_fec_10g_request
- ctl_fec_rx_enable
- ctl_fec_tx_enable
- stat_an_fec_enable
- stat_an_lp_fec_10g_ability
- stat_an_lp_fec_10g_request
如果使用的线速率支持 RS-FEC,则此信号列表如下:
- ctl_tx_rsfec_enable
- ctl_rx_rsfec_enable
- stat_rx_rsfec_am_lock
- stat_an_rs_fec_enable
注释: 如果链路伙伴发送下一页信号,那么必须设置
ctl_an_lp_np_ack
信号。此端口可绑定到高电平。