USB音频声卡采用isochronous “等时传输模式”(或者同步传输、实时传输),能保证实时传输数据,允许一定误码率,出错不重传。

等时传输模式

实时传输,即 PC端发出多少速率的数据,USB接收端(USB声卡)就得接收多少速率。

比如电脑发送44.1KHZ的,声卡就固定接收44.1KHZ。

关于时钟同步

电脑内有一个晶振,可分频出一个44.1KHZ,进行音乐播放。

USB声卡自己得有一个晶振才能工作,它也可分频出一个44.1KHZ,供给I2S信号或DAC。

问题来了,晶振是有误差的,这两个44.1KHZ不可能完全一模一样,电脑可能是44.100KHZ,USB声卡可能是44.098KHZ,误差约50ppm,很正常的情况。

虽然声卡晶振分频出来是44.098KHZ,但声卡认为它就是工作在44.100KHZ下。

如果二者时钟独立运行,那么1个小时会误差0.2秒,会出现不同步! 即电脑播了1个小时的数据,USB声卡实际是无法播完的,要多0.2秒才能播完。 如果声卡也要1小时播完,那这1小时就需要丢掉0.2秒的数据。

所以二者的时钟必须要同步一致才行,因此USB音频规定了一是采用“等时传输模式”,二是设备需要指定为3种同步方式之一:同步(synchronous),适应(adaptive),异步(asynchronous)。(摘自USB2.0规范)

模式 说明
Synchronous同步方式 发送端Fs locked to SOF, Uses implicit feedback(SOF) 使用隐式反馈,数据速率Fs与SOF同步;接收端Fs locked to SOF, Uses implicit feedback(SOF) 使用隐式反馈,数据速率Fs与SOF同步;两种设备的时钟都需要通过PLL与USB的SOF时钟同步(1ms一个)。这样数据速率就同步了。可以工作在一个固定速率、数量有限的速率、或可编程速率。
Adaptive自适应方式 发送端Fs locked to sink, Uses explicit feedback(isochronous pipe) 使用显式反馈,数据速率Fs与接收端同步;接收端Fs locked to data flow, Uses implicitfeedforward (data stream) 使用隐式前馈,数据速率Fs与数据流同步;自适应发送端,它产生数据的速率由接收端控制,接收端提供反馈给发送端,发送端就知道目标数据速率。自适应接收端,数据速率信息是嵌入在接收到的数据流里的,即根据一段时间内接收到的样本数量来知道当前速率值。可工作在一个速率附近、在多个速率间选择、或多个速率段内。
Asynchronous异步方式 发送端Free running Fs, Provides implicitfeedforward (data stream) 提供隐式前馈,数据速率Fs自由运行;接收端Free running Fs, Provides explicit feedback(isochronous pipe) 提供显式反馈,数据速率Fs自由运行;异步发送端发送样本数据,一个帧内发送的数据量就隐性指出了数据速率。异步接收端则必须提供明确的反馈信息给驱动程序。发送端必须要从HOST接收明确的反馈信息,这样它才能准确生成HOST需要的样本数量。

分析

电脑播放器播放音乐时:是按一个固定的速率,比如44.1KHZ,发给USB的数据流速率固定。

如果USB声卡是Synchronous方式:那它的时钟将通过PLL直接与SOF时钟同步,即与电脑就同步了。

如果USB声卡是Adaptive方式:那么数据速率Fs是与来的数据流同步,即根据一段时间内的接收到的样本数量来知道当前速率值。因为电脑播放的数据速率是固定的,所以声卡的时钟就和电脑同步了,即与电脑的44.1KHZ实际时钟频率同步,把自己的44.098KHZ时钟通过PLL纠正成44.1KHZ时钟了。 如果电脑时钟是44.102KHZ,那就纠正成44.102KHZ,电脑发多快,它就收多快。

如果USB声卡是Asynchronous方式:那么Fs根据声卡自己的频率运行(名义上是44.1KHZ,但实际频率有误差,比如44.098KHZ),声卡必须反馈告诉电脑想接收的数据量,以进行流控。但电脑播放的数据速率是固定的,是按电脑自己的时钟的,不会改变,因此声卡要的数据总会偏多或偏少,时间久了都会造成缓冲区清空或溢出,从而影响播放,要重新同步下。所以用Asynchronous方式是不合适的。除非电脑的驱动程序单独编制,想一个办法以处理这种数据流不同步的情况。 这也许就是XMOS子卡需要单独安装驱动的原因。

摘自http://bbs.erji.net/forum.php?mod=viewthread&tid=2076674&page=1

USB声卡之时钟模式分析相关推荐

  1. USB声卡噪音问题,USB声卡中文名设置,基于STM32F411

    目录 1.USB声卡噪音问题 1.1USB声卡噪音问题解决 1.2USB消除噪声测试 2.USB声卡中文名设置 2.1USB想要中文名,咋整 3.晒晒板子 1.USB声卡噪音问题 使用STM32F41 ...

  2. 高品质USB声卡/音频芯片SSS1700|SSS1700设计96 KHz 24位采样率USB耳机麦克风方案|SSS1700中文设计方案讲解

    高品质USB声卡/音频芯片SSS1700|SSS1700设计96 KHz 24位采样率USB耳机麦克风方案|SSS1700中文设计方案讲解 台湾鑫创在2021年新推的一款SSS1700,是一款高品质U ...

  3. STM32 USB声卡录音(USB Microphone),基于CubeMX修改

    目录 说明 CubeMX配置 Pinout Clock Configuration Configuration 工程设置 代码工程修改 修改USB设备描述符 修改数据传输配置 声卡测试 说明 Cube ...

  4. usb声卡驱动_来自MOTU的温馨提示:如果你的声卡在Windows系统下不稳定,你可以这样做!...

    武汉大学来自MOTU的温馨提示:如果你的声卡在Windows系统下不稳定,你可以这样做! 在我们日常使用外置声卡时,特别是USB接口的外置声卡,相信绝大多数朋友都遇到过声卡掉线.卡死.无故停止工作等各 ...

  5. usb声卡驱动_iCON ProDrive第三代USB声卡驱动全新发布!

    2019年3月,iCON官方发布了一款全球首创--全新一代"ProDrive III"USB声卡驱动,iCON所有系列USB声卡(包括带声卡的MIDI键盘)已全面启用ProDriv ...

  6. 主板声卡坏了会不会有电流声_不要小瞧十几块钱的USB声卡!

    USB声卡是通过连接电脑USB孔的音频处理硬件,严谨地说是通过USB总线与电脑系统连接,区别于电脑主板集成声卡.不要小看十几元的USB声卡,其对音频的处理能力比很多主板集成声卡都要好.因为USB声卡在 ...

  7. ubuntu18 usb耳机,ubuntu18.04 调试USB声卡

    由于项目需要进行声音播放,但是主板上没有声卡模块就使用USB外接声卡来实现音频播放. (项目使用ubuntu18.04的系统) 首先我们在主板上插入USB声卡,在终端中输入:lsusb $ lsusb ...

  8. Linux - UAC USB声卡

    Linux - UAC USB声卡 USB-HID定义 UAC定义 UAC设置 UAC 测试 最近项目里需要做一个linux平台的USB声卡,及通过USB插入Android设备,可识别成为一个USB声 ...

  9. Deepin禁用usb声卡

    笔者用的是漫步者声卡支持3.5mm和USB两种接口.USB接口虽然能识别出来,但是没有声音.故禁止usb声卡驱动,usb口仅仅用作供电. 添加/etc/modprobe.d/blacklist-usb ...

最新文章

  1. 计算机组成原理实验认识多思网络虚拟实验系统_3D全息投影,裸眼3D,全息互动投影系统...
  2. 基于python的移动物体检测_感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python)...
  3. MySQL学习(四)
  4. 计算机技能需求新排名:C语言仅排第 8,第 1 名你想不到!
  5. 华软计算机网络技术,[计算机硬件及网络]计算机网络技术专业自评报告华软.doc...
  6. 【转载保存】网页提取正文算法汇总
  7. 再问数据中台-数据中台和数据仓库,数据平台的关系是什么?
  8. js 时间获取格式化 fmt
  9. [IDDFS+背包] 洛谷P2744 [USACO5.3]量取牛奶Milk Measuring
  10. sql转java对象_关于hibernate中使用sql语句时,类对象的转换问题。
  11. python滤波器的截面图_Python OpenCV学习笔记之:图像滤波处理
  12. 【转】所需即所获:像 IDE 一样使用 vim
  13. C语言中的strcmp函数的作用是什么,c语言strcmp函数用法是什么?
  14. ADPCM 音频压缩算法
  15. python pandas按照行数切分文件
  16. gopher对mysql的利用_gopher协议的攻击利用
  17. 虚拟存储器的基本概念
  18. 攻击重放技术以及什么是重放攻击?
  19. winpe 能否修复服务器系统,教你如何使用winpe来修复系统
  20. 用Prophet预测USDCNY走势--------仿照forecasting-stock-perfomance-with-prophet对美元人民币走势进行预测

热门文章

  1. android6.0最新补丁,谷歌发布安卓补丁修复漏洞 支持6.0之后所有版本
  2. 如何针对企业产品进行有效分析,看大佬用SQL分析淘宝用户行为
  3. ASP做paypal支付接口详细代码和实例
  4. JAVA程序设计:摘樱桃(LeetCode:741)
  5. oracle access advisor,oracle11g新特性-SQL Access Advisor
  6. 服务器上的run在哪个位置,UO服务器RunUO《服务端的建立以及修改》.doc
  7. numa节点间CPU利用率不均衡 - wakeup affinity
  8. linux 系统下通过 pid 查看相关进程信息的方法
  9. 有关手机app开发价格的一些决定因素
  10. Windows 10系统中,如何重命名用户文件夹