Intel® Arria® 10收发器PHY用户指南

ID 683617
日期 11/06/2017
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

7.1. 具有PreSICE校准引擎的重配置接口和仲裁

在Arria 10器件中,使用精密信号完整性校准引擎(PreSICE)进行校准。PreSICE包括一个Avalon-MM接口来访问收发器通道和PLL可编程寄存器。该Avalon-MM接口包括一个通信机制,使您能够从校准控制器中请求特定的校准序列。

PreSICE Avalon-MM接口和用户Avalon-MM重配置接口一起共享一个内部配置总线。该总线进行仲裁以获取访问收发器通道和PLL可编程寄存器,以及校准寄存器。

有两种方法可以检查哪一个可以访问内部配置总线:

  • 使用reconfig_waitrequest
  • 使用功能寄存器

Native PHY IP内核和PLL默认设置为使用reconfig_waitrequest。当PreSICE控制内部配置总线时,内部配置总线中的reconfig_waitrequest为高。被授予用户访问权限时,内部配置总线中的reconfig_waitrequest变低。在Avalon-MM重配置接口,reconfig_waitrequest可以来自Native PHY Ip内核的几个地方。例如:它可以来自内部配置总线、串流器等等。它们被捆绑在一起成为Avalon-MM重配置接口上的单一reconfig_waitrequestreconfig_address确定哪一个reconfig_waitrequest显示在Avalon-MM重配置接口。返回内部配置总线到PreSICE后,内部配置总线中的reconfig_waitrequest为高。如果在校准期间,在Avalon-MM重配置接口上将reconfig_address设置成串流器偏移地址,那么在校准结束之前,reconfig_waitrequest会为低。如果在校准期间保持reconfig_address与内部配置总线偏移地址相同,那么Avalon-MM重配置接口上的reconfig_waitrequest将会变高,直到PreSICE返回内部配置总线。校准期间保持reconfig_address静态非常重要。

要使用性能寄存器来检查总线仲裁,请执行下面的操作来生成IP:

  1. Dynamic Reconfiguration选项卡上选择Enable dynamic reconfiguration
  2. 选择Separate reconfig_waitrequest from the status of AVMM arbitration with PreSICEEnable control and status registers选项。

可以读取功能寄存器0x281[2]来检查谁控制着通道访问,也可以读取功能寄存器0x280[2]来检查谁控制着PLL访问。当使能了Separate reconfig_waitrequest from the status of AVMM arbitration with PreSICEEnable control and status registers时,在PreSICE控制内部配置总线时,reconfig_waitrequest将不会被置位高。

要返回内部配置总线至PreSICE:

  • 为了触发用户重新校准:
    • 写入0x01到偏移地址0x000 [7:0],用户重新校准必须要求通过偏移地址0x100。
  • 为了触发DFE自适应:
    • 写入0x03到偏移地址0x000 [7:0],DFE自适应触发必须使能通过0x100[6]。
  • 如果不再需要使用内部重配置总线:
    • 写入0x03到偏移地址0x000 [7:0]。

要检查是否运行校准进程,请执行下列操作之一:

  • 监控pll_cal_busytx_cal_busyrx_cal_busy信号。
  • 从功能寄存器中读取*_cal_busy信号状态。

只要运行校准过程,*_cal_busy信号就会保持置位。要检查是否完成校准,可以读取性能寄存器或者检查*_cal_busy信号。Avalon-MM重配置接口中的reconfig_waitrequest不是一个可靠的指标来检查是否完成校准。如果在校准期间将0x2写入到0x0,那么PreSICE可以停止校准过程,并返回内部配置总线,因此,在reconfig_waitrequest为低时,校准没有完成。PMA tx_cal_busyrx_cal_busy都来自相同的内部节点,它们不能从硬件中分开。配置性能寄存器0x281[5:4],通过Avalon-MM重配置接口,单独地使能或禁用tx_cal_busy或者rx_cal_busy