L-Tile和H-Tile收发器PHY用户指南

ID 683621
日期 3/29/2021
Public
文档目录

2.4.4.4.3. 扫描水平眼开

请执行以下步骤来扫描水平眼开:

  1. 0x144[2]设置成0x00x156[0]设置成0x0,以捕获眼的下半部的零交叉。
  2. 0x143[7:2]设置成0x00以将垂直步长设置为0。
  3. 如果DFE禁用 26,那么将0x14D[0]设置为0。
  4. 如果DFE使能26,那么将0x14D[0]设置成0x1以选择正推测(positive speculation)。
    1. 如果DFE_tap1_sign = 0,那么将0x156[1]设置成0x1
    2. 如果DFE_tap1_sign = 1,那么将0x156[1]设置成0x0
  5. 如果目标器件是H-tile产品或者H-tile ES3:
    1. 0x100[4]设置成1。
    2. 0x000[7:0]设置成0x01以请求PreSICE校准ODI采样器。
    3. 读取0x481[2],直到它变成0。
  6. 0x171[4:1]设置成0xB以配置 Avalon® memory-mapped interface testmux。
  7. 定义一个包含128个成员的浮点数组,称为ODI_error_count,并将所有值设置为 0。
  8. L-tile和H-tile有两个眼:奇数眼和偶数眼。您必须捕捉这两个眼。首先,将0x157[3:2]设置成0x2来捕捉奇数眼。
  9. 创建一个称为horizontal_phase的整数,并将其设为1。在递增horizontal_phase直到变成128的过程中重复Step 10Step 23
  10. 0x145[6:0]设置成表 95中的编码相位,例如:0x71 for horizontal_phase = 1。
  11. 0x168[2]设置成0x0以复位串行比特计数器。
  12. 0x168[2]设置成0x1以释放串行比特计数器上的复位。
  13. 0x149[5:0]设置成0x1C以能够读取ODI状态。
  14. 读取0x17E[1] 27直到它变成0x1,表明ODI已接收到选定的比特数并已完成。
  15. 0x149[5:0]设置成0x1B以读出ODI错误比特的数量。
  16. 读取0x17E[7:0] 27,将此值保存为一个整数ODI_count_A
  17. 0x149[5:0]设置成0x1A
  18. 读取0x17E[7:0] 27,将此值保存为一个整数ODI_count_B
  19. 0x149[5:0]设置成0x19
  20. 读取0x17E[7:0] 27,将此值保存为一个整数ODI_count_C
  21. 0x149[5:0]设置成0x18
  22. 读取0x17E[7:0] 27,将此值保存为一个整数ODI_count_D
  23. ODI_error_count[horizontal_phase] = ODI_count_A * 224 + ODI_count_B * 216 + ODI_count_C * 28 + ODI_count_D + ODI_error_count[horizontal_phase]
    如果器件不是H-tile产品,那么ODI_error_count可能比实际计数大1。
  24. 现在,将0x157[3:2]设置成0x1以捕捉偶数眼,并重复Step 9
  25. 扫描ODI_error_count数组,找到没有错误的相位,然后确定左眼开和右眼开。将相位存储为left_phaseright_phase
26 通过读取0x161[6]来确定DFE模式。当0x161[6] = 1时,DFE禁用(disabled)。
27 在设置寄存器0x149[5:0]和读取0x17E或 0x17F之间等待25 µs。