导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]什么是解耦?[liufengzhong]

 *第36085篇: [转帖]什么是解耦?

  
楼 主:liufengzhong 2014年8月19日12:28
 [转帖]什么是解耦?
你好,我看了大部分的音频软件设计参考手册,大部分的时候,他们提出了一些所谓的解耦。根据USB音频软件的设计指南,解耦的作用是:“在端点缓冲器组件和音频组件间管理交付音频数据包,也可以处理的音量控制处理。”

我知道这是一个技术问题,但它真的帮助帮助我理解交付的意思。不能在音频组件简单地读取到缓冲区?另外,我还看到了AVB设计采用了解耦。难道他们两个是一回事吗?就个人而言,我认为它跟排队样本分为先进先出,但更详细的解释将会受到欢迎。提前致谢!


回答:

你是在正确的轨道。这是所有关于缓冲。你会看到,在参考设计,既分离和缓冲(这是在Their授权修建自己的核上运行的任务)所属的usb_buffer目录。究其原因,他们需要如下 - 无论是audio.xc(基本上是一个I2S核心,如I2C配置和DSD模式附加功能)和XUD(处理所有低级别的USB交易)是服务器的任务是阻止敏感。

这是因为他们都是非常高的性能(USB = 480Mbps或I2S可处理20路192KHz的了,32B音)等任何通信都必须是短期和非阻塞(即你想不到的有关数据的请求太长)。如果你有其中任一摊位的通信,那么你可以在I2S或USB突破时机,因为Their授权修建的内环路必须以一定的速率提供服务的I / O。

突破时机坏,无论是USB不能满足规范或I2S会有差距流动。因此,USB / I2S每个人都有任务,以服务他们,这始终是有求必应,让他们顺利运行。 

然而,USB音频,USB和I2S不完全相同的速度运行,因此你需要他们之间的缓冲区。这两个缓冲区和去耦通过它们之间的共享存储器FIFO交谈。因此,有效的正在运行的逻辑核心/任务:

USB   < - >  缓存  < - >  去耦  < - >   I2S

实际是这样的:

服务器  < - >  客户端  < - FIFO->  客户端  < - >  服务器

你会发现,解耦也可以处理其他任务,如打包/解包(如USB音频类1,其中24B样本不长字对齐)和音量控制。因此,有一点松弛为这些东西缓冲任务,只要他们总是响应Their授权修建相应的服务器。这就是为什么我们用一个中断处理程序中解耦。

如果该系统的性能要低得多,那么有可能增加缓冲到服务器的任务,但高速USB和I2S与许多信道和数据速率按下定时预算,所以我们添加缓冲剂,以保证所有的工作可靠。
 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]在USB音频软件有可能得到反向的一个通道数据输出?

[下一篇主题]:[转帖]相对于企业版用户,社区版用户失去哪些功能?