通过并发实时编程实现定制

描述

要了解定制为何如此重要,请考虑以下三个示例,其中可以使用参考设计作为起点,但设计人员可能希望对设计进行更改,即使是在后期阶段:

设计实现了通信堆栈的一部分(例如,USB 音频),但音频端的硬件接口可以定制为与特定类型的编解码器(如 I2S 主或从 S/PDIF)进行通信,也可以定制带有一个额外的控制端点。

工业控制器实现许多标准协议之一;例如,工业电机供应商可能希望包含以太网 PHY,但推迟决定是否运行 EtherCAT 或任何其他实时以太网堆栈。

嵌入式 Web 服务器可用于配置上述任一示例,前提是设计人员可以在 Web 服务器内部实现控制逻辑。

定制设计的难易程度取决于用于实现设计核心的技术。它使用了 ASIC、FPGA 还是实时处理器?

如果设计实现为 ASIC,那么定制它的唯一可行方法是修改 ASIC 中内置的参数。考虑第一个示例,USB 音频 ASIC 将具有设置 USB 设备产品名称的方法,并可能提供左对齐和右对齐 I2S 之间的选择。但是,它可能不提供添加额外控制端点或使用 S/PDIF 作为输出接口的选项。事实上,开发支持所有合理接口的 ASIC 是不可能的,开发支持精心挑选的小型接口集的 ASIC 家族也不经济。

如果设计是在 FPGA 中实现的,那么理论上,定制可以像用户想要的那样极端。但是,硬件设计流程可能会使定制成为一个不那么简单的过程。对于硬件设计人员来说,实现一个额外的接口(如 S/PDIF)并不困难,但实现一个额外的控制端点需要将软件重新实现为一个硬件。此外,必须综合结果,在定制设计完全综合、布局和布线之前,尚不清楚是否仍能满足原始时序约束。

第三种选择是将设计完全实现为软件。由于涉及许多相互冲突的实时要求,这通常被认为难以完成。但是,只要程序员可以将问题分解为一组独立的实时任务,这些任务在一组独立的实时处理器上运行,软件实现就可以完美地管理。

这使设计人员能够灵活地将硬件协议简单地作为软件任务来实现,方法是专门使用一个实时处理器来实现该硬件协议。例如,可以通过以适当的方式摆动时钟和数据线,在软件中实现 I2S。此外,USB 可以通过向 USB PHY 读取和写入数据来实现。如果这两个活动作为两个独立的任务执行,那么所有的实时期限都可以单独满足。

后者是一种称为并发实时编程的编程模型。图 1 显示了单个 XMOS XCore 处理器如何同时执行八个线程。每个线程都可以看作是一个独立的处理器,具有保证的实时执行率。每条指令将在已知的时间内执行;因此,程序员可以预测程序是否会满足时间期限。

图 1:并发实时编程同时执行多个线程。

解码器

这个模型的美妙之处在于时间预测完全独立于任务。例如,考虑前面提到的 I2S 任务。一旦程序以某种方式编写,它将在例如 50 MIPS 处理器上执行,那么无论对其他线程进行修改,该 I2S 线程将始终满足其时序。打破时间安排的唯一方法是不以适当的速率提供数据。这是可以预料的;如果未提供 48 kHz 的数据,则无法为编解码器提供 48 kHz 的数据,并且某些东西必须中断。

软件不是灵丹妙药。两个明显的限制是需要太多瞬时带宽的接口和需要非常短周转时间的硬件接口。例如,在当今的处理硬件上用软件编写多 GHz SERDES 是不可行的,但许多常见的接口可以用软件来制定。

软件实现优于硬件接口的原因有以下三个:

1. 经济性:不可能提供所有可用的接口作为硬件块。处理器可以根据需要对任何类型的接口进行建模。

2、适应性:在硅片上设置硬件内置接口。如果标准不断发展,或者如果特定设备不完全兼容或需要执行一些额外的操作,那么硅接口将无法完成这项工作。可以调整软件定义的接口以满足要求。

3. 优化:可以优化软件定义的界面来解决手头的问题。考虑前面提到的 EtherCAT 应用程序。如果使用硬件媒体独立接口(MII),则数据包被存储和转发,这不满足例如延迟要求。如果接口是在软件中定义的,那么缓冲需求可以针对问题进行定制。

第三个原因很重要,因为许多处理 UART、I2S、MII 和其他标准的标准模块必须具有内置的 FIFO 缓冲区来解耦接口,而这些缓冲区在许多情况下是不需要的,因为它们会增加延迟。

一旦设计师选择了基于软件的设计流程,可能性就无穷无尽。图 2 显示了一个 USB 板,它同时支持使用立体声 I/O 编解码器(通过 I2S)、差分数字接口(使用 S/PDIF)和乐器数字接口 (MIDI) 的模拟接口。

图 2:在 USB 板上,同一处理器只需更改软件即可驱动任何混合接口。

解码器

嵌入式处理器实现 USB 堆栈和 USB 音频协议。在此特定配置中,驱动三个音频接口:MIDI、I2S/模拟和 S/PDIF。后者可以仅通过软件更改更改为不同的协议,例如 ADAT。更重要的是,产品的变化可以通过不同的接口集进行,例如大量的同轴输出或基于 I2S 的编解码器。嵌入式处理器上的软件只需稍作改动即可根据接口的具体情况进行定制。每个接口没有预定义的编号。

灵活的硬件可以实现更大的产品差异化,使开发人员和产品经理能够为他们的客户提供与众不同的价值。并发实时编程可以保证严格的时序要求,XMOS XCore 等嵌入式处理器提供了利用这种编程方法所需的芯片和开发工具。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分