This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-AM243:SPRADC3 -使用8b-10b 线路代码和可编程实时单元的8b/10b 内部驱动器通信-应用手册

Guru**** 2378650 points
Other Parts Discussed in Thread: AM4376, ISO7242M
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1277246/lp-am243-spradc3---8b-10b-intra-drive-communication-using-8b-10b-line-code-with-programmable-real-time-unit---application-note

器件型号:LP-AM243
主题中讨论的其他器件:AM4376ISO7242M

我正尝试使用具有可编程实时单元的8b-10b 线路代码来评估内部驱动器通信-应用手册。  是否会提供源代码文件?  这样可以节省大量时间、并为如何正确使用 PRU 提供一个很好的示例。   

我还一直在查看 AM243x Launch_Pad 的示例、但没有 PRU 示例。  通过共享 RAM 与 R5F 内核连接的 PRU 示例的最佳资源是什么?   

最终、我将要在两个 MCU 之间创建一个高串行链路、从 R5F 的角度来看、这基本上是一个无驱动的链路。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有多种选项可以使用 PRU 在两个 MCU 之间运行高速串行链路。

    标准接口:

    1.SPI (50Mbit、无编码)

    2. FSI (200Mbit、无编码)

    3. RGMII 交叉连接(1 Gbit,无编码)

    自定义接口:

    4.高达125Mbit、具有使用串行移位或3通道外设接口的8B/10B 线路编码器(请参阅应用手册)

    5.串行链路作为第4项、带有 DDR 和/或多条数据线。

    下面是我的基本问题:

    -所需的网络(未编码)数据速率是多少?

    -您可以使用时钟和数据线,或者每个方向只使用一条线吗?

    -您是否需要 LVDS 等外部收发器,或者您是否可以使用 LVCMOS (3.3V )在 MCU 之间进行直接连接?

    -您打算使用 CRC 帧校验吗? 哪个 CRC 策略是 PRU CRC16/32小工具支持的 CRC 策略?

    -"driverless"-您是指外部信号驱动程序还是软件驱动程序? 假设这是 ARM 软件驱动程序以允许存储器映射成帧、该组帧可由系统中的其他总线主控提供、如 PRU、DMA、ARM。

    -您是否需要主机端口功能,例如一个 MCU 可以读写到其他 MCU 存储器和 IO 空间。

    我们已开始在 https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am243x 上提供 PRU 示例和"PRU 入门指南" 

    我们还可以添加短期高速串行链路的示例。

    -托马斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的评分  回答您的以下问题:

    1.我试图用连接到 Flexbus 的双端口 RAM 替换连接了两个单核 Coldfire CPU 的设计。  这允许在两个 CPU 之间执行几乎同步的操作。  CPU 使用 DPRAM 来同步操作和交换少量数据 (每次遇到32字节)、无需使用驱动程序或任何类型的协议栈。  没有 DPRAM、我们永远无法实现 DPRAM 的性能、但我认为100 Mbs 至200 Mbs 的性能是可以接受的。  如果可能、从 R5F 的角度来看、它还需要非常确定且没有 SW 驱动。  

    2.我们需要在 CPU 之间进行隔离,以便任何信号都必须通过隔离元件,因此如果可能的话,需要限制信号的数量。 每个方向的数据和时钟都是可以接受的。  

    3. 我认为我们不需要外部收发器,因为 MCU 安装在同一张卡上的距离只有几英寸。   

    4.通过 CRC 校验可以提高接口的可靠性。  能够在网络层确认和重新传输失败的数据包会很好。  

    5.如果可能,没有来自 R5F 电平的 SW 电平驱动器。  在另一个使用 AM4376的实现中、我们尝试在 CPU 之间使用以太网来替换 DPRAM、但 RTOS +驱动程序+IPStack 导致确定性行为完全丢失。   

    6.主机端口功能有点像 DPRAM 接口、因此还是可取的。  

    如果您可以添加高速串行链路的示例、那将不胜感激。   您知道是否 将提供使用8b/10b 线路代码和可编程实时单元的8b/10b 内部驱动器通信的源代码-应用手册?   

    再次感谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Shawn、

     感谢您与我们分享您的要求。

    PRU 具有最小的存储器和 IO 延迟、可在芯片2芯片通信上为您提供双端口存储器性能。

    下图显示了 AM64x/AM243x 架构的各种数据路径和存储器延迟数据。 以两个极端为例。

    1.使用 PRU 或 PRU 和 RTU 共享的暂存存储器实现最快的读取延迟

    PRU0可以使用 XIN/XOUT 对最多120个字节的单周期进行读取/写入。 同一存储器与 PRU1共享、并可用于小型双端口 RAM 块。 120字节的3ns 延迟可转化为320Gbit/s 的超高带宽接口。 超快但仅限于较小的内存块。  

    2.最大容量的 DDR 存储器  

    XFR2VBUS 小工具可以从任何内存位置读取、包括 DDR 内存。 读取延迟通常在4个字节380ns 范围内。 在这种情况下、另一端必须等待 DMA 完成、以便从 DDR 发送数据。 任务管理器具有 xfr2vbus 读取完成触发器、可简化长延迟请求的编码。  

    针对共享 RAM 的其它选项为 ICSS 存储器、片载2MB RAM 或者 R5F TCM。

    通常、读取延迟会由外部 ISO 器件以及接口的串行至并行转换产生延迟。

    例如、如果您选择 ISO7242M 器件、则在每个方向上都有大约20ns 的延迟。 此器件的速率可高达150Mbit、并为您提供每个方向的两个信号。 无论您对每个方向执行2条数据线还是1条数据和1个 clk、都有几个依赖项。

    如果您可以通过单个振荡器为两个 Sitara 器件计时、则可能不需要时钟信号、因为如果两个 Sitara 上的 PRU 运行相同的时钟、推理不会发生漂移。 如果没有共享时钟同步和没有时钟信号、则需要在通信中添加同步模式和学习阶段。 我希望这个方案对于您的低延迟接口来说可能太长。 您还可以选择每个方向传输一条或两条数据线的双倍数据速率。 您可以将上升沿和下降沿数据扩展到两个 PRU、以防您想要在150 MHz 上运行接口。  

    从协议的角度来看、您可以使用/command/address/data 方案进行标准类型的传输、也可以进行任何以固定时间重复的定制、预制的数据传输。  例如、每4us 一次、两个芯片之间就会进行64字节的数据交换。

    CRC16/32是 PRU 提供的一个硬件小工具、称为使用宽边接口。 您还可以针对32字节寄存器范围发出单周期 CRC 计算。

    对于8B/10B 行代码、在 HDSL SDK 示例中有一个源代码参考。

    请参阅:C:\ti\mcu_plus_sdk_am243x_08_06_00_43\source\motor_control\position_sense HDSL\firmware\datalink.asm

    并搜索函数:recv_dec_10b。 它使用两步查找表、

    ;解码
       LDI    REG_TMP11、(PDMEM00+LUT_5b6b_DEC)
       lbbo &REG_FnC.b0、REG_TMP11、REG_FnC.w2、1

    ;解码
       和 REG_TMP0.w2、REG_FNC.w2、0x0F
       LDI REG_TMP11、(PDMEM00+LUT_3b4b_DEC)
       lbbo &REG_TMP0.b0、REG_TMP11、REG_TMP0.w2、1

    从 ARM 侧预加载 LUT:C:\ti\mcu_plus_sdk_am243x_08_06_00_43\source\motor_control\position_sense\HDSL\driver\HDSL_LUT.c

    在标准接口上、FSI 接口使用2条数据线 DDR (200Mbit)和一个时钟来满足您的要求。 不过、您仍可以使用 PRU 来读取和写入低延迟数据、并且不需要在接口中使用 ARM 内核。

    如果 您需要有关接口的进一步指导或讨论、请告诉我。 我们还可以一步一步地对其进行处理。  

    -托马斯