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.

[FAQ] [参考译文] [常见问题解答]什么是 PRU 内核? PRU GPIO 信号为何与常规 GPIO 不同?

Guru**** 2539500 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1269989/faq-what-is-a-pru-core-why-are-pru-gpio-signals-different-from-regular-gpios

什么是 PRU 内核? 它为何适用于通常需要 FPGA 或 CPLD 才能正常工作的应用?

简介

许多系统需要连接不使用标准协议的外部器件。 这些外部器件的范围可以从模数转换器(ADC)阵列到具有专有总线接口的外设。 带有可编程实时单元(PRU)内核的 TI Sitara 处理器旨在与这些器件进行通信、而无需在设计中添加 FPGA、ASIC、CPLD 等。

此常见问题解答适用于所有具有 PRU 子系统的 Sitara 处理器、包括 AM243x、AM263x、AM335x、AM437x、 AM57x、AM62x、AM64x、AM65x。 有关 PRU 的更多信息、请参阅  Sitara 多核开发和文档常见问题解答中的 PRU 开发部分。

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

    PRU 的替代产品

     如果设计需要与外部器件进行非标准通信、设计人员通常会在系统中添加现场可编程门阵列(FPGA)或定制可编程逻辑器件(CPLD)。 但是、添加 FPGA 会增加设计的成本和复杂性。 在设计中添加额外芯片也增加了产品受到供应链问题影响的可能性、这些问题会导致较长的交货周期。

    另一种方法是使用微控制器(MCU)本身来连接外部器件。 没有灵活外部逻辑的 MCU 使用软件通过其通用输入/输出(GPIO)来控制外部器件。 然而、使用 CPU 内核(如 Arm Cortex M 或 RISC-V)来操作 GPIO 引脚也存在根本的缺点。 像片上网络(NOC)这样的芯片基础设施存在于 CPU 内核和 GPIO 引脚之间(即、没有与 GPIO 的"直接连接")。 CPU 内核可能有流水线。 这些因素和其他因素意味着、与 FPGA 相比、标准 MCU 在与 GPIO 交互时将具有更长的延迟和更低的确定性(即更高的信号抖动)。

    假设您只需要使用特定波形驱动一些输出。 在这种情况下、软件会执行背对背写入、以在 SOC 引脚上创建所需的模式。 该模式通过 NOC 基础设施从 CPU 的内部寄存器写入、以连接 GPIO。 NOC 能够使 GPIO 写入命令增加数十纳秒到甚至数百纳秒的延迟和抖动。 因此、系统可能无法满足外设对于输出信号占空比、输出之间的关系等的时序要求。

    这些自定义接口的另一个典型需求是请求/确认。 例如、CPU 发送的输出数据或命令由输入命令或来自外设的数据触发。 由于从 GPIO 读取输入、处理输入、然后将输出写回 GPIO 的往返延迟、CPU 读取/写入交互的延迟是其2倍。

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

    TI 的 PRU 解决方案

     TI 的 PRU 内核是一流的定制 CPU、旨在在 GPIO 读取和写入过程中实现最低的延迟和最高的确定性。 与许多其他 CPU 内核一样、PRU 内核中也包含32个32位寄存器。 但是、其中两个寄存器专用于 GPIO 功能。 一个寄存器直接连接到通用输出(GPO)信号。 通过对寄存器执行写操作可切换 GPO 信号。 另一个寄存器直接连接到通用输入(GPI)信号。 读取寄存器即可读取 GPI 信号。

    由于寄存器和引脚之间没有 NOC 电路、因此从内核到处理器引脚的信号延迟显著降低。 由于信号路径引起的输出信号抖动被100%移除。 PRU 可提供出色的性能、同时不会失去灵活性。

    输入信号性能也得到改善。 PRU 包含命令、用于在发生 GPI 事件之前停止编程。 这提供了理想情况下的延迟、以便在观察输入上的触发后产生输出响应。 由于 GPI/GPO 寄存器嵌入在 PRU 中、因此 PRU 允许单个输入和输出之间以及多个输入信号或多个输出信号之间产生完全确定的时序关系。