0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Henk Muller 2022-06-28 15:33 次阅读

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

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

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

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

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

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

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

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

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

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

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

pYYBAGK6ruCADQ4mAADK6hKTZck288.jpg

这个模型的美妙之处在于时间预测完全独立于任务。例如,考虑前面提到的 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 板上,同一处理器只需更改软件即可驱动任何混合接口。

poYBAGK6ruKAOSGKAAIaStHNduw823.jpg

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    18269

    浏览量

    222118
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40156
  • 嵌入式
    +关注

    关注

    4981

    文章

    18278

    浏览量

    288374
收藏 人收藏

    评论

    相关推荐

    Lite Actor:方舟Actor并发模型的轻量级优化

    并发模型是用来实现不同应用场景中并发任务的编程模型,通过合理地使用多线程,可以缩减应用程序的开发和维护成本,同时还能更好地提升应用程序在多核
    发表于 07-18 12:00

    移动应用高级语言开发——并发探索

    );在IOS上,Swift 5.5实现了结构化编程和Actor,Swift整体并发的演进思路是默认安全的编程模型。 04►OpenHarmony高级语言的
    发表于 08-28 17:08

    嵌入式实时数据库系统并发控制技术研究

    嵌入式实时数据库系统是近几年才兴起的一项新的数据管理技术。本文首先描述了实时事务并发控制并发控制协议,然后探讨了具有功能替代性和补偿性的实时
    发表于 06-01 15:17 8次下载

    信号准实时处理的VC++实现

    本文介绍了在Visual C++编程环境中,通过Win32的内存管理、多线程和重叠 I/O技术,实现对信号的准实时处理。
    发表于 09-02 17:28 21次下载

    负荷管理系统中的并发通信设计与实现

    负荷管理系统中的并发通信设计与实现摘 要 大规模并发通信的管理与控制是计算机监控领域研究的热点与难点之一。本文以厦门电业局负荷管理系统为例,对大规模并发通信
    发表于 11-01 09:50 13次下载

    如何通过STM32的串口实现简易脱机编程

    如何通过STM32的串口实现简易脱机编程器如何通过STM32的串口实现简易脱机编程器如何
    发表于 04-25 09:38 59次下载

    Java并发编程实战

    Java并发编程实战
    发表于 03-19 11:24 7次下载

    java并发编程实战之辅助类用法

    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore2017-09-18 13:07程序设计/58 在java 1.5中,提供了一些非常有用的辅助类来帮助
    发表于 09-27 16:50 0次下载

    七种常见的并发编程模型简介

    1. 线程与锁 线程与锁模型有很多众所周知的不足,但仍是其他模型的技术基础,也是很多并发软件开发的首选。 2. 函数式编程 函数式编程日渐重要的原因之一,是其对并发
    的头像 发表于 03-15 17:21 4413次阅读

    JAVA并发编程实践

    JAVA并发编程实践资料免费下载。
    发表于 06-01 15:31 14次下载

    Java并发编程的艺术

    Java并发编程的艺术说明。
    发表于 06-01 15:31 16次下载

    Go并发模型的实现原理

    Go语言是为并发而生的语言,Go语言是为数不多的在语言层面实现并发的语言;也正是Go语言的并发特性,吸引了全球无数的开发者。
    的头像 发表于 04-15 08:49 1056次阅读

    关于Actor并发模型的解析

    并发模型是用来实现不同应用场景中并发任务的编程模型,通过合理地使用多线程,可以缩减应用程序的开发和维护成本,同时还能更好地提升应用程序在多核
    的头像 发表于 07-18 09:23 1427次阅读

    如何通过SCL来实现编程

    SCL作为IEC61131-3编程语言的一种,由于其高级语言的特性,特别适合复杂运算、复杂数学函数应用的场合。本文以FactoryIO软件中的物料分拣案例作为硬件基础,介绍如何通过SCL来实现
    的头像 发表于 10-26 16:12 1952次阅读

    并发内存池项目实现

    本项目实现了一个高并发内存池,参考了Google的开源项目tcmalloc实现的简易版;其功能就是实现高效的多线程内存管理。由功能可知,高并发
    的头像 发表于 11-09 11:16 279次阅读
    高<b class='flag-5'>并发</b>内存池项目<b class='flag-5'>实现</b>