ZHCACT4 june   2023 AM2431 , AM2432 , AM2434 , AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1 , AM263P4 , AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3358-EP , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL , AM5726 , AM5728 , AM5729 , AM5746 , AM5748 , AM5749 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442 , AM6526 , AM6528 , AM6546 , AM6548

 

  1.   1
  2.   摘要
  3.   商标
  4. 18b-10b 线路编码简介
  5. 2用于数据发送和接收的 PRU 实现
    1. 2.1 编码和解码数据
    2. 2.2 PRU 模块接口和 GPIO 模式
    3. 2.3 用于通信的 PRU GPIO 移出和移入模式
    4. 2.4 用于通信的三通道外设接口
    5. 2.5 LVDS 和 M-LVDS 接口
  6. 3具有 CRC 模块和开销优化的系统解决方案
    1. 3.1 PRU CRC16/32 模块
    2. 3.2 编码和解码开销优化
  7. 4验证
  8. 5总结
  9. 6参考文献

验证

节 2.3节 2.4 说明了如何验证数据传输准确性和 LVDS 接口延迟。本节介绍如何测试 PRU GPIO 侧的抖动,以及发送和接收的处理时间。图 4-1 显示了 125MHz 时的发送数据速率。图 4-2图 4-3 显示了在上升沿和下降沿期间 GPO 侧的抖动仅为 60ps。

GUID-20230606-SS0I-PP5W-D1PC-04S6KJBJJ1RJ-low.png图 4-1 发送数据速率
GUID-20230606-SS0I-KNNS-X5FJ-DQWT1RSN3R5F-low.png图 4-2 上升沿上的 PRU GPO 抖动
GUID-20230606-SS0I-QK75-WQTW-M0PBVNFHBSPK-low.png图 4-3 下降沿上的 PRU GPO 抖动

发送数据的处理时间包括对数据进行编码、数据 CRC16 校验和 IPC 暂存区存储器共享(可选)。在最大 250MHz PRU 内核时钟下,对 8 位数据进行编码的处理时间为 48ns,处理 32 位 CRC16 校验的时间为 20ns。64 位宽度的发送周期模式需要 404ns,其中编码时间为 384ns,CRC 时间为 20ns。接收处理时间包括对数据进行解码、数据 CRC16 校验和 IPC 暂存区存储器共享(可选)。在最大 250MHz PRU 内核时钟下,解码 10 位数据的处理时间为 60ns,处理 32 位 CRC16 校验的时间为 20ns。64 位宽度的接收周期模式需要 500ns,其中编码时间为 480ns,CRC 时间为 20ns。图 4-4图 4-6 显示了使用 PRU_GPO 切换处理时间的测试结果。由于 PRU_GPIO 一次只能配置为一种模式,因此将测试条件与通信周期分开,仅测试相关代码指令的时间。

GUID-20230606-SS0I-D6N7-XVDM-ZBBSRW9Q0P4T-low.png图 4-4 8 位数据编码的处理时间
GUID-20230606-SS0I-ZVF7-BCPX-CL9NSRTPT3DS-low.png图 4-5 CRC16 的处理时间
GUID-20230606-SS0I-XVLT-0ZGX-5SC95LWCV2HW-low.png图 4-6 10 位数据解码的处理时间

在 RTU_PRU0 和 RTU_PRU1 辅助内核的支持下,可以并行实现数据传输和处理。IPC 模块可用于通过 XFR 指令在 PRU 和 RTU 之间交换数据。暂存区(寄存器 R2:R9)为 32 字节宽,将一个片内的 PRU 和 RTU_PRU 内核连接在一起。XFR 指令定义操作的开始、大小、方向和器件 ID。图 4-7 显示了 PRU 和 IPC 暂存区的集成。

GUID-20230614-SS0I-B3FB-48FG-WSCFRXCCXGVQ-low.svg图 4-7 PRU 和 IPC 暂存区的集成

XFR2VBUS 硬件加速器可以支持在磁阻随机存取存储器 (MRAM) 或紧密耦合随机存取存储器 (TCRAM) 之间来回移动数据。XFR2VBUS TX 和 RX 缓冲器均为 64 字节深,可通过单个寄存器传入 (XIN) 或寄存器传出 (XOUT) 指令传输 64 字节数据。以下代码示例显示如何使用 XFR2VBUS 小工具将数据移入和移出 TCRAM。

; Read wait
wait_till_read_busy_0?:
  xin XFR2VBUSP_RD0_XID, &r18, 1
  qbbs wait_till_read_busy_0?, r18, 3    ; R18.3 :RD_MST_REQ Wait until Last Data has been latched

; TCM to XFR2VBUS RX buffer
  ldi   r18, 6                           ; 64 bytes
  ldi32 r19, CSL_R5FSS0_CORE0_ATCM_BASE  ; TCM Address
  ldi   r20, 0
  xout  XFR2VBUSP_RD0_XID, &r18, 10      ; transfer address
  xin   XFR2VBUSP_RD0_XID, &r2, 65       ; transfer data

; Write wait
wait_till_write_done_0?:
  xin   XFR2VBUSP_WR0_XID, &r20, 1
  qbbs  wait_till_write_done_0?, r20, 0  ; R20.0 : WR_BUSY Wait until Idle

; XFR2VBUS TX buffer to TCM
  ldi32 r18, CSL_R5FSS0_CORE0_ATCM_BASE  ; TCM Address
  ldi   r19, 0
  xout  XFR2VBUSP_RD0_XID, &r18, 10      ; transfer address
  xin   XFR2VBUSP_RD0_XID, &r2, 65       ; transfer data

PRUn 可在 RTU_PRUn 对前 16 位原始数据进行编码之后开始发送数据。类似地,接收路径中的 RTU_PRUn 可以在 PRUn 接收到前 20 位编码数据之后开始解码数据。64 位宽周期模式的发送处理时间可以从 404ns 减少到 96ns(16 位数据编码),64 位宽周期模式的接收处理时间可以从 500ns 减少到 120ns(20 位数据解码)。表 4-1 总结了在有和没有 RTU_PRUn 内核支持情况下的处理时间。

表 4-1 使用和不使用 RTU_PRUn 内核的处理时间
PRU 内核 采样时钟
(MHz)
数据长度
(位)
TX 模块数据处理时间
(ns)
数据传输时间
(ns)
RX 模块数据处理时间
(ns)
总时间
(ns)
PRU 125 64 404 640(1) 500 1544
PRU + RTU 125 64 96 640(1) 120 856

用于数据传输的 80 位编码数据宽度