首页 > 编程知识 正文

usb转console,sdn交换机基于什么实现转发

时间:2023-05-05 06:49:34 阅读:58851 作者:164

讨论粘贴:

http://www.erji.net/read.php? tid=767228fpage=0toread=page=1

参考资料:

33558 www.usbd ACS.com/concept/concept.html

A:

别多嘴,直奔主题吧。

USB音频传输有“标准USB音频标准”标准。 这个规范有什么用,有好处吗?

其有用性是实现了通过USB接口实时传输音频信号。 (汗)

其好处是直接集成到WINDOWS系统中。 这意味着,符合此标准的USB音频产品可以直接支持WINDOWS系统中的集成驱动程序,而无需制造商另行开发驱动程序。 相反,如果USB音频产品有自己的驱动程序,则不支持此规范。 (但是,并不表示这个产品不好,自己开发驱动本身就是研发力所能及的表现。 )

在该标准USB音频规范下,有三种传输模式。 同步、自适应、异步。

同步:标准同步模式实际上很少见,很少使用,所以这里省略。

适应:大多数产品都使用自适应传输模式,如TI PCM270X和PCM290X系列。

异步:这里的异步才是AYRE QB9真正大肆宣传的异步USB传输模式。

所以严格来说,“异步USB传输”的大前提是基于标准USB音频规格。

那么,自适应传输模式和异步传输模式有什么区别呢?

这里首先需要知道USB音频处理的大致流程。 电脑通过USB接口将音频数据传递到DAC上的USB接收芯片,USB接收芯片在接收数据的同时合成时钟信号,转换为标准的I2S或SPDIF信号,传递到后续的数据接收芯片,后续流程为普通的

在此过程中,影响USB音频音质的关键是由USB接收芯片合成的时钟信号。

在自适应模式下,USB接收芯片在合成时钟信号的过程中根据USB传输率的变化,实时调整时钟信号。 也就是说,在这种情况下,USB传输速度的变化直接影响合成的时钟信号。

举个夸张的例子,比如现在播放44.1K的音频,当然要求USB接收芯片合成44.1K的时钟。 另一方面,该44.1K的时钟对应于USB传输的速度,例如,若胡乱地说一个,则为每秒200个数据包。

也就是说,USB接收芯片想要稳定地合成44.1K的时钟,USB传输速率也必须稳定在每秒200个包中。

但是,现在的问题是,USB传输的速度并不是那么稳定。 也许,这一秒钟传输200个数据包,到下一秒,突然增加到400个。 此时,USB接收芯片怎么办? 将实际合成的时钟提高到88.2K。 此外,如果下一秒的USB速率为100个数据包每秒,则相应的合成时钟为22.05K。 当然,这是一个极端夸张的例子。

但是为什么USB接收芯片要这样做? 很简单。 因为如果USB接收芯片只是简单地合成44.1K的时钟,每秒处理200个数据包,那么如果真的接收到400个或100个数据包,缓存就会溢出或中断。

因此,在自适应模式下,USB接收芯片合成的时钟信号根据USB端口的传输率实时变化,传输率为主,时钟信号为从,USB传输率的变化直接影响合成的时钟信号那么,请想想这个时钟信号的抖动有多大。 因此,也可以理解更换质量良好的USB电缆会提高音质的理由。

异步传输是如何工作的呢? 更简单地说,USB接收芯片当前只需要稳定地合成44.1K的时钟。 也就是说,当前,该时钟与USB传输速度无关。

但是,如果是的话,如何解决缓存问题? 答案是软件控制。 通过一系列软件,根据缓存负载情况实时控制USB端口的传输速度,以避免缓存溢出或中断。 在此情况中,主要是时钟信号,并且传输率次要,并且时钟信号不受传输率的变化的影响。 理论上,此时的抖动源只有动作晶体振子自身的误差。

该方案是AYRE QB9大力宣传的“异步USB传输”模式。 该实现方法通过名为TAS1020B的芯片、本地6M晶体振动以及控制重要传输速度的固件来进行。

另一方面,名为TAS1020B的芯片是可编程芯片,使用该芯片并不一定是异步USB传输。 DAC1 USB、DA11也使用了该芯片,但都只使用其自适应模式。 主要取决于固件的写法。 所以从某种意义上说,现在的直流设计不再是硬件,而是软件。

B:

USB声卡的播放流程如下

在主机APP应用程序中播放音乐之前,USB声卡从主机端接收两个数据包:设置数据包和控制数据包

基于USB音频系统协议对Setup分组进行分解表明,此次传输控制的作用是设置USB声卡的采样频率,播放音乐前需要适当设置I2S控制器的采样频率。 可以与主机端同步。

这是主机开始播放音乐时做的事情。

然后在播放中

USB音频类规定的USB同步传输周期为1ms,USB设备每隔1ms接收来自主机的数据。 USB设备位于接收缓存中

暂时性的存储这些数据。(TAS1020B的接受缓存刚好能存储24BIT/96K的数据)然后再进行处理,然后送到I2S控制器。在这个过程中,USB1.1因为带宽和优先度的原因,系统其他操作比较繁忙的时候容易出现丢包的状况,在丢包的状况下,USB芯片会把生成一个空数据包(就是全部都是0000000)。因此USB1.1的USB声卡经常出现小爆音。

异步模式的USB DAC中,I2S控制器自己生成时钟,然后向USB芯片发出反馈,USB芯片再对音频数据流进行采样的转换(SRC),转换成I2S控制器所需要的采样,再发给I2S控制器。这时I2S控制器的时钟是自己生成的。没有和USB总线时钟同步,所以很在接收USB处理后的数据时,容易受时钟误差和抖动等影响。在《USB协议及规范》中这样的处理是十分不推荐的。

“Such slips/stuffs will cause audible degradation in audio applications. ”

自适应模式的USB DAC中,USB芯片会对数据包进行处理,根据播放开始前主机端发来的采样信息,加进数据包中,而I2S信号控制器在读取数据包后,会根据采样信息建立相应的时钟,并解包,装载音频数据。

就从USB本身的协议来看,作为“目的”端来说,自适应模式无疑比异步模式更加适合音频。

从电路上来看,QB9是通过FPGA读取播放前主机发来的采样格式信号,然后选择相应频率的时钟,在FPGA上对TAS1020B输出的信号进行时钟重整。而TAS1020B异步模式时所采用的时钟依然是内置的时钟。

参考资料:

《USB协议及规范》

《USB Audio Class协议规范》

同步类型

——异步:不同步、但目的(sink)能提供数据速率反馈

——同步:同步到USB的SOF时钟

——可调:用反馈或feed forward 的数据速率信息实现同步

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。