ZHCSUP0A March 2024 – September 2024 DLPC964
PRODUCTION DATA
AMD Aurora 64B/66B 高速串行 (HSS) 接口是一种通用数据传输链路,没有任何关于如何排列 DMD 块数据结构的概念。要定义 DMD 块的开始,APPS FPGA 逻辑必须先通过 Aurora 64B/66B User-K 数据端口的通道 0 发送块控制字数据包,然后才能开始 DMD 数据传输。
下面的表 7-1 包含有关 Aurora User-K 接口端口的详细信息。User-K 接口端口用于实现应用特定控制功能,独立于数据接口,且优先级高于数据接口。
| 名称 | 方向 | 时钟域 | 说明 |
|---|---|---|---|
| USER_S_S_AXIS_TX | |||
| s_axi_user_k_tx_tdata[0:(64n-1)] 或 s_axi_user_k_tx_tdata[(64n-1):0](1) | 输入 | user_clk | USER-K 块数据为 64 位对齐。每个信道的信号映射: |
| 默认值: | |||
| s_axi_user_k_tx_tdata={{4'h0,user_k_blk_no[0:3],user_k_data[55:0]}*n} | |||
| 小端字节序格式: | |||
| s_axi_user_k_tx_tdata={{user_k_data[55:0],4'h0,user_k_blk_no[3:0]}*n} | |||
| s_axi_user_k_tx_tvalid | 输入 | user_clk | 指示 s_axi_userk_tx_tdata 端口上的有效 User-K 数据。 |
| s_axi_user_k_tx_tready | 输出 | user_clk | 指示 Aurora 64B/66B 内核已为接受 s_axi_user_k_tx_tdata 接口上的数据做好准备。 |
| USER_K_M_AXIS_RX | |||
| m_axi_rx_user_k_tvalid | 输出 | user_clk | 指示 m_axi_user_k_tx_tdata 端口上的有效 User-K 数据。 |
| m_axi_rx_user_k_tdata 或 m_axi_rx_user_k_tdata[(64n-1):0](1) | 输出 | user_clk | 从 Aurora 64B/66B 信道接收到的 USER-K 块为 64 位对齐。 |
| 每个信道的信号映射: | |||
| 默认值: | |||
| m_axi_rx_user_k_tdata= {{4'h0,user_k_blk_no[0:3],user_k_data[55:0]}*n} | |||
| 小端字节序格式: | |||
| m_axi_rx_user_k_tdata= {{user_k_data[55:0],4'h0,user_k_blk_no[3:0]}*n} | |||
如下面的表 7-2 所示,DLPC964 的 HSS 接口有四个 User-K 端口接口通道向 APPS FPGA 用户逻辑公开。只有通道 0 用于发送块控制字。DLPC964 控制器不会使用通过通道 1、2 和 3 的 User-K 端口发送的任何控制字数据包,而是将这些数据包忽略。
| 信号名称 | 信号方向 | DLPC964 应用使用情况 |
|---|---|---|
| gt0_s_axi_user_k_tx_tdata[191:0] | Aurora 通道 0 的输入 | 要发送的 192 位块控制字数据包 |
| gt0_s_axi_user_k_tx_tvalid | Aurora 通道 0 的输入 | 用户逻辑将此信号置为高电平有效以向 Aurora 内核指示块控制字有效,因此可进行发送。Aurora 内核在 TVALID 未置为有效时会忽略字。 |
| gt0_s_axi_user_k_tx_tready | Aurora 通道 0 接收的输出 | 当接受块控制字时,Aurora 内核将此信号置为高电平有效。当忽略字时(例如内核未准备好接受输入字),该信号被置为无效。 |
| gt1_s_axi_user_k_tx_tdata[191:0] | Aurora 通道 1 的输入 | 未使用 |
| gt1_s_axi_user_k_tx_tvalid | Aurora 通道 1 的输入 | 未使用 |
| gt1_s_axi_user_k_tx_tready | Aurora 通道 1 接收的输出 | 未使用 |
| gt2_s_axi_user_k_tx_tdata[191:0] | Aurora 通道 2 的输入 | 未使用 |
| gt2_s_axi_user_k_tx_tvalid | Aurora 通道 2 的输入 | 未使用 |
| gt2_s_axi_user_k_tx_tready | Aurora 通道 2 接收的输出 | 未使用 |
| gt3_s_axi_user_k_tx_tdata[191:0] | Aurora 通道 3 的输入 | 未使用 |
| gt3_s_axi_user_k_tx_tvalid | Aurora 通道 3 的输入 | 未使用 |
| gt3_s_axi_user_k_tx_tready | Aurora 通道 3 接收的输出 | 未使用 |
表 7-3 介绍了 192 位块控制字中的各种字段。块控制字不仅定义了 DMD 块的开始,还包含指导 DLPC964 控制器处理从 APPS FPGA 接收的 DMD 块数据的指令和信息。
| 字段位置 | 字段类型 | 字段说明 |
|---|---|---|
| gt0_s_axi_user_k_tx_tdata[7:0] | USER_K_BLOCK_NUMBER | 必须设置为零 (0x00)。非 0x00 的值均无效。如果该字段未设置为 0x00,则 DLPC964 控制器会忽略整个 192 位控制字。 |
| gt0_s_axi_user_k_tx_tdata[11:8] | BLOCK_ADDRESS | 指示 DLPC964 将操作应用到的 DMD 块地址:0000:DMD 块 0,0001:DMD 块 1,0010:DMD 块 2,… 1110:DMD 块 14,1111:DMD 块 15 |
| gt0_s_axi_user_k_tx_tdata[15:7] | 保留,未使用 | |
| gt0_s_axi_user_k_tx_tdata[24:16] | ROW_LENGTH | DLPC964 要加载的 DMD 行数。DLP991U DMD 在每个块中有 136 行,因此有效范围为 1-136。包括 0 在内的所有其他值均无效。设置为 136 表示执行全块操作。设置为 1–135 表示执行非全块操作。 |
| 注意:仅在 LOAD_TYPE = 000 时使用此字段。 | ||
| gt0_s_axi_user_k_tx_tdata[34:32] | LOAD_TYPE | 000:块加载。DLPC964 将用户数据加载到由 BLOCK_ADDRESS 和 ROW_LENGTH 定义的 DMD 阵列中。 |
| 001:块清除。DLPC964 将 DMD 阵列中由 BLOCK_ADDRESS 定义的整个块清零。 | ||
| 010:块置位。DLPC964 将 DMD 阵列中由 BLOCK_ADDRESS 定义的整个块设置为 1。 | ||
| 其他值:保留,请勿使用。 | ||
| 注意:在 001(块清除)或 010(块置位)操作中,ROW_LENGTH 和 NORTH_SOUTH_FLIP 字段被忽略。清除和置位操作会影响整个 DMD 块阵列。不支持对非全块执行清除和置位操作。 | ||
| gt0_s_axi_user_k_tx_tdata[36] | NORTH_SOUTH_FLIP | 控制 DMD 块内的数据加载方向。 |
| 0:DLPC964 从第 1 行开始加载数据并向上计数。 | ||
| 1:DLPC964 从第 136 行开始加载数据并向下计数。 | ||
| 注意:仅在 LOAD_TYPE 为 000 时使用此字段。 | ||
| gt0_s_axi_user_k_tx_tdata[29:28] | DMD_SEGMENT | 当 SINGLE_CHANNEL_MODE =“1”时,DMD_SEGMENT 用于选择要为操作选择的 DMD 段。 |
| 00:分段 0 | ||
| 01:分段 1 | ||
| 10:分段 2 | ||
| 11:分段 3 | ||
| 注意:如果 SINGLE_CHANNEL_MODE =“0”,则此字段被忽略。 | ||
| gt0_s_axi_user_k_tx_tdata[30] | SINGLE_CHANNEL_MODE | 1:单通道运行。仅在 Aurora 通道 0 上接收 DMD 的 DLPC964 输入数据。 |
| 0:正常运行。在全部四个 Aurora 通道上接收 DMD 的 DLPC964 输入数据。 | ||
| gt0_s_axi_user_k_tx_tdata[191:31] | 保留,未使用 |
图 7-4 显示了 Aurora 64B/66B 数据块传输开始时通过通道 0 User-K 端口进行的 192 位块控制字传输。在该示例中,正在加载 DMD 块 1 的 136 行。
图 7-4 块以块控制字开始的波形