• Menu
  • Product
  • Email
  • PDF
  • Order now
  • DS160PR810 编程指南

    • ZHCUBH6 November   2023 DS160PR810

       

  • CONTENTS
  • SEARCH
  • DS160PR810 编程指南
  1.   1
  2.   摘要
  3. 1访问方法
    1. 1.1 通过 SMBus 对寄存器进行编程
    2. 1.2 通过外部 EEPROM 进行器件配置
  4. 2寄存器映射概述
  5. 3编程序列示例
    1. 3.1 设置 CTLE 增益电平
    2. 3.2 复位 RX 检测状态机
    3. 3.3 设置 CTLE 直流增益电平
    4. 3.4 设置 VOD 电平
  6. 4共享寄存器
  7. 5通道寄存器
  8. 6参考资料
  9. 7修订历史记录
  10. 重要声明
search No matches found.
  • Full reading width
    • Full reading width
    • Comfortable reading width
    • Expanded reading width
  • Card for each section
  • Card with all content

 

Programmer's Guide

DS160PR810 编程指南

本资源的原文使用英文撰写。 为方便起见,TI 提供了译文;由于翻译过程中可能使用了自动化工具,TI 不保证译文的准确性。 为确认准确性,请务必访问 ti.com 参考最新的英文版本(控制文档)。

摘要

本文档是 DS160PR810 八通道 PCI-Express 第 4 代线性转接驱动器的编程参考。本文档包含与 DS160PR810 高级配置选项相关的详细信息。目标受众包括从事系统诊断和控制软件工作的软件工程师。

TI 建议读者熟悉 DS160PR810 数据表。本文档以及与 DS160PR810 转接驱动器相关的所有其他配套资料数据(应用手册、模型等)可从 TI 网站下载。此外,可以联系您当地的德州仪器 (TI) 现场销售代表。

1 访问方法

设计人员可以通过两种方式来访问 DS160PR810。这两种方法为:

  • 通过串行管理总线 (SMBus) 进行寄存器控制
  • 通过外部 EEPROM 进行自动配置

1.1 通过 SMBus 对寄存器进行编程

可通过标准 SMBus 协议访问 DS160PR810 内部寄存器。DS160PR810 具有两个通道组,即组 0(通道 0 - 3)和组 1(通道 4-7),每个通道都具有单独的寄存器集并需要唯一的 SMBus 从地址。在上电时会根据 EQ0_0 / ADDR1 和 EQ1_0 / ADDR0 引脚的配置来确定 SMBus 从地址对(每个通道组一个)。当内部上电复位信号置为无效后,上电时读取引脚状态。

EQ0_0 / ADDR1 和 EQ1_0 / ADDR0 引脚以及 MODE、GAIN0、GAIN1、EQ0_1、EQ1_1 和 RX_DET 引脚均为 4 级输入引脚,用于控制器件的配置。这些四电平输入使用电阻分压器来帮助设置四个有效电平,如表 1-1 所示。

表 1-1 DS160PR810 4 级控制引脚设置
引脚电平引脚设置
L01kΩ 至 GND
L113kΩ 至 GND
L259kΩ 至 GND
L3浮点

可通过在 EQ0_0 / ADDR1 和 EQ1_0 / ADDR0 引脚上放置外部电阻器搭接,可以为器件分配 16 个唯一的 SMBus 从地址对(每个通道组一个地址),如表 1-2 所示。当多个 DS160PR810 器件位于同一 SMBus 接口总线上时,每个器件的每个通道组必须配置一个唯一的 SMBus 从地址对。

表 1-2 DS160PR810SMBus 地址映射
ADDR1 引脚电平ADDR0 引脚电平组 0:通道 0-3:
7 位地址 [HEX]
组 1:通道 4-7:
7 位地址 [HEX]
L0L00x180x19
L0L10x1A0x1B
L0L20x1C0x1D
L0L30x1E0x1F
L1L00x200x21
L1L10x220x23
L1L20x240x25
L1L30x260x27
L2L00x280x29
L2L10x2A0x2B
L2L20x2C0x2D
L2L30x2E0x2F
L3L00x300x31
L3L10x320x33
L3L20x340x35
L3L30x360x37

1.2 通过外部 EEPROM 进行器件配置

DS160PR810 可在上电时自动从 EEPROM 读取其初始配置。有关此器件的 EEPROM 十六进制文件生成的详细信息,请参阅了解 DS160PR810 PCI-Express 4.0 线性转接驱动器的 EEPROM 编程 应用报告。

2 寄存器映射概述

DS160PR810 具有两种类型的寄存器:

  • 共享寄存器 – 这种寄存器可随时访问,用于器件级配置、状态回读、控制或读回器件 ID 信息。
  • 通道寄存器 – 这种寄存器用于控制和配置每个单独通道的特定功能。所有通道采用同一通道寄存器组,可单独进行配置。

单个通道组的共享寄存器和通道寄存器都包含在单个寄存器页面中,如表 2-1 所示。

表 2-1 寄存器映射概述
地址范围 通道组 0 访问 通道组 1 访问
0x00 - 0x03 通道 0 寄存器 通道 4 寄存器
0x20 - 0x23 通道 1 寄存器 通道 5 寄存器
0x40 - 0x43 通道 2 寄存器 通道 6 寄存器
0x60 - 0x63 通道 3 寄存器 通道 7 寄存器
0x80 - 0x83 广播写入通道组 0 寄存器、读取通道 0 寄存器 广播写入通道组 1 寄存器、读取通道 4 寄存器
0xA0 - 0xA3 广播写入通道 0-1 寄存器、读取通道 0 寄存器 广播写入通道 4-5 寄存器、读取通道 4 寄存器
0xC0 - 0xC3 广播写入通道 2-3 寄存器、读取通道 2 寄存器 广播写入通道 6-7 寄存器、读取通道 6 寄存器
0xE2 - 0xE3、
0xF0 - 0xF1
组 0 共享寄存器 组 1 共享寄存器

3 编程序列示例

DS160PR810 具有高度的可编程性,并可针对多种应用进行定制。以下各节提供了针对某些常见应用对 DS160PR810 进行编程的指导。

每个序列中提供了以下信息:

  • 步骤:很多序列包含多个步骤。执行操作的顺序由步骤编号指示。
  • 寄存器组:操作旨在用于组 0 或组 1 的共用寄存器或通道寄存器。由于每个通道组都有自己的 SMBus 地址,因此无需明确选择通道组。
  • 操作:读取或写入。如果是读取操作,则与寄存器值或写入掩码无关。
  • 寄存器地址:选择要写入的寄存器。
  • 寄存器值:要写入寄存器地址的值。
  • 写入掩码:除非写入掩码为 0xFF,否则将所有写操作都作为读取/修改/写入操作执行。仅修改由掩码标识的位。

3.1 设置 CTLE 增益电平

DS160PR810 需要手动 CTLE 调优。可通过修改每个 CTLE 级(EQ1 和 EQ2)的值或绕过 EQ1 级来更改 CTLE 增益电平。CTLE 电平可针对每个通道单独设定或者广播至所有通道。表 3-1 显示了一个示例序列,通过对每个通道单独执行写入操作,将组 0 通道上的 CTLE 增益电平设置为 5.0dB(8GHz 时)(CTLE 指数 2),并将组 1 通道上的 CTLE 增益电平设置为 7.0dB(CTLE 指数 4)。使用表 3-3 中提供的寄存器值将 CTLE 增益电平设置为任何其他可用值。

表 3-1 用于分别在每个通道上设置 CTLE 电平的序列
步骤 寄存器组 操作 寄存器地址
[十六进制]
寄存器值
[十六进制]
写入掩码
[十六进制]
备注
1 组 0:通道 0 写入 0x01 0x08 0x3F 将通道 0 上的 CTLE 设为指数 2。
2 组 0:通道 1 写入 0x21 0x08 0x3F 将通道 1 上的 CTLE 设为指数 2。
3 组 0:通道 2 写入 0x41 0x08 0x3F 将通道 2 上的 CTLE 设为指数 2。
4 组 0:通道 3 写入 0x61 0x08 0x3F 将通道 3 上的 CTLE 设为指数 2。
5 组 1:通道 4 写入 0x01 0x11 0x3F 将通道 4 上的 CTLE 设为指数 4。
6 组 1:通道 5 写入 0x21 0x11 0x3F 将通道 5 上的 CTLE 设为指数 4。
7 组 1:通道 6 写入 0x41 0x11 0x3F 将通道 6 上的 CTLE 设为指数 4。
8 组 1:通道 7 写入 0x61 0x11 0x3F 将通道 7 上的 CTLE 设为指数 4。

假设 0x18 和 0x19 分别是通道组 0 和 1 的 SMBus 地址,以下是表 3-1 中序列的 XML 批处理脚本:

<i2c_write addr="0x18" count="0" radix"16">01 08</i2c_write>
<i2c_write addr="0x18" count="0" radix"16">21 08</i2c_write>
<i2c_write addr="0x18" count="0" radix"16">41 08</i2c_write>
<i2c_write addr="0x18" count="0" radix"16">61 08</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">01 11</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">21 11</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">41 11</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">61 11</i2c_write>

表 3-2 显示了一个示例序列,通过对每个通道组单独执行广播写入操作,将组 0 通道上的 CTLE 增益电平设置为 5.0dB(8GHz 时)(CTLE 指数 2),并将组 1 通道上的 CTLE 增益电平设置为 7.0dB(CTLE 指数 4)。

表 3-2 用于向所有通道广播 CTLE 电平的序列
步骤 寄存器组 操作 寄存器地址
[十六进制]
寄存器值
[十六进制]
写入掩码
[十六进制]
备注
1 组 0:通道 0-3 写入 0x81 0x08 0x3F 将通道 0-3 上的 EQ 设置为指数 2。
2 组 1:通道 4-7 写入 0x81 0x11 0x3F 将通道 4-7 上的 EQ 设置为指数 4。

假设 0x18 和 0x19 分别是通道组 0 和 1 的 SMBus 地址,以下是表 3-2 中序列的 XML 批处理脚本:

<i2c_write addr="0x18" count="0" radix"16">81 08</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">81 11</i2c_write>

表 3-3 提供了 CTLE 控制寄存器值与 CTLE 指数 (0 - 15) 之间的函数关系图。表 3-1 和表 3-2 中提供了示例 CTLE 控制寄存器地址。

表 3-3 CTLE 控制寄存器值与 CTLE 指数之间的函数关系图
CTLE 指数 4GHz 时的 CTLE 增益 (dB) 8GHz 时的 CTLE 增益 (dB) CTLE 控制寄存器值
[十六进制]
0 0.0 -0.2 0x40
1 1.5 4.5 0x43
2 2.0 5.5 0x08
3 2.5 6.5 0x0A
4 2.7 7.0 0x11
5 3.0 8.0 0x12
6 4.0 9.0 0x13
7 5.0 10.0 0x1A
8 6.0 11.0 0x1B
9 7.0 12.0 0x23
10 7.5 13.0 0x2B
11 8.0 13.5 0x2C
12 8.5 15.0 0x2D
13 9.5 16.5 0x35
14 10.0 17.0 0x36
15 11.0 18.0 0x3F

3.2 复位 RX 检测状态机

可为所有通道手动复位 RX 检测状态机。

表 3-4 用于复位 RX 检测状态机的序列
步骤 寄存器组 操作 寄存器地址 [十六进制] 寄存器值 [十六进制] 写入掩码 [十六进制] 备注
1 组 0:通道 0-3 写入 0x89 0x04 0x04 将 RX 检测复位位设置为:1(复位 RX 检测状态机)
2 组 1:通道 4-7 写入 0x89 0x00 0x04 将 RX 检测复位位设置为:0(清除设置位)

假设 0x18 和 0x19 分别是通道组 0 和 1 的 I2C/SMBus 地址,以下是表 3-4 中用于复位所有通道上 RX 检测状态机的序列的 XML 批处理脚本:

<i2c_write addr="0x18" count="0" radix"16">89 04</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">89 04</i2c_write>
<i2c_write addr="0x18" count="0" radix"16">09 00</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">09 00</i2c_write>

3.3 设置 CTLE 直流增益电平

CTLE 直流增益值可针对每个通道单独设定或者广播至所有通道。

表 3-5 用于向所有通道广播直流增益电平的序列
步骤 寄存器组 操作 寄存器地址
[十六进制]
寄存器值
[十六进制]
写入掩码
[十六进制]
备注
1 组 0:通道 0-3 写入 0x82 0x00 0x04 将组 0 通道上的直流增益设置为:0dB(默认值)。
0x04 0x04 将组 0 通道上的直流增益设置为:3.5dB。
2 组 1:通道 4-7 写入 0x82 0x00 0x04 将组 1 通道上的直流增益设置为:0dB(默认值)。
0x04 0x04 将组 1 通道上的直流增益设置为:3.5dB。

假设 0x18 和 0x19 分别是通道组 0 和 1 的 I2C/SMBus 地址,以下是表 3-5 中用于将直流增益广播为 3.5dB 的序列的 XML 批处理脚本:

<i2c_write addr="0x18" count="0" radix"16">82 04</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">82 04</i2c_write>

3.4 设置 VOD 电平

如果需要,可修改 DS160PR810 驱动器的差分输出电压。

表 3-6 用于向所有通道广播 VOD 电平的序列
步骤 寄存器组 操作 寄存器地址
[十六进制]
寄存器值
[十六进制]
写入掩码
[十六进制]
备注
1 组 0:通道 0-3 写入 0x82 0x00 0x03 将组 0 通道上的 VOD 设置为:-6dB
0x01 0x03 将组 0 通道上的 VOD 设置为:-3.5dB
0x10 0x03 将组 0 通道上的 VOD 设置为:-1.6dB
0x11 0x03 将组 0 通道上的 VOD 设置为:0dB(默认值)
2 组 1:通道 4-7 写入 0x82 0x00 0x03 将组 1 通道上的 VOD 设置为:-6dB
0x01 0x03 将组 1 通道上的 VOD 设置为:-3.5dB
0x10 0x03 将组 1 通道上的 VOD 设置为:-1.6dB
0x11 0x03 将组 1 通道上的 VOD 设置为:0dB(默认值)

假设 0x18 和 0x19 分别是通道组 0 和 1 的 I2C/SMBus 地址,以下是表 3-6 中用于通过广播将 VOD 设为 -3.5dB 的序列的 XML 批处理脚本:

<i2c_write addr="0x18" count="0" radix"16">82 01</i2c_write>
<i2c_write addr="0x19" count="0" radix"16">82 01</i2c_write>

 

Texas Instruments

© Copyright 1995-2025 Texas Instruments Incorporated. All rights reserved.
Submit documentation feedback | IMPORTANT NOTICE | Trademarks | Privacy policy | Cookie policy | Terms of use | Terms of sale