ZHCACT4 june 2023 AM2431 , AM2432 , AM2434 , AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1 , AM263P4 , AM263P4-Q1 , 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
节 2.3 和节 2.4 说明了如何验证数据传输准确性和 LVDS 接口延迟。本节介绍如何测试 PRU GPIO 侧的抖动,以及发送和接收的处理时间。图 4-1 显示了 125MHz 时的发送数据速率。图 4-2 和图 4-3 显示了在上升沿和下降沿期间 GPO 侧的抖动仅为 60ps。
发送数据的处理时间包括对数据进行编码、数据 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 一次只能配置为一种模式,因此将测试条件与通信周期分开,仅测试相关代码指令的时间。
在 RTU_PRU0 和 RTU_PRU1 辅助内核的支持下,可以并行实现数据传输和处理。IPC 模块可用于通过 XFR 指令在 PRU 和 RTU 之间交换数据。暂存区(寄存器 R2:R9)为 32 字节宽,将一个片内的 PRU 和 RTU_PRU 内核连接在一起。XFR 指令定义操作的开始、大小、方向和器件 ID。图 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 内核支持情况下的处理时间。
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 位编码数据宽度