PCM和I2S区别

I2S和PCM接口都是数字音频接口,而所见的蓝牙到cpu以及codec的音频接口都是用PCM接口,是不是两个接口有各自不同的应用呢?先来看下概念。
PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语音信号经过采样量化以及一定数据排列就是PCM了。理论上可以传输单声道,双声道立体声和多声道。是数字音频的raw data。
I2S是音频数字化后数据排列的一种格式,说传输的就是PCM,支持单声道和立体声。
以我理解PCM是一个通称、混称,I2S是对原始PCM进行数据排序处理,本质就是PCM,可以说I2S是PCM的子集。所以我想蓝牙芯片上的PCM接口同样可以用I2S来传输。CPU和codec上的PCM和I2S接口也是为支持更多硬件提供的资源。
从系统上讲,cpu的dsp出来的都是pcm信号,我称PCM_father,送到DAC可从speaker等放出,至PCM接口出来PCM_son1,至I2S接口出来PCM_son2,然后送至外部codec或其他外设,通话DAC I2S DAC分别对应。以前一直我有个误解,其实手机里常用的codec也就是对PCM和模拟声音信号的转换,不能解码mp3等压缩编码,这个还是要专用dsp或者软件解码来做的。
一点新知,理解上肯定还是有错误,以后慢慢积累,温故知新。

新的理解:
一般手机cpu到蓝牙的通话实时音频和mp3之类的音频都使用pcm,有的蓝牙芯片内置MP3codec,mp3走uart/usb更合适。

从蓝牙角度讲,蓝牙在制定协议的时候就特意为通话需求制定了一个协议层,专门定义了一种包结构(sco)用于通话,有很好的实时性。而通过uart传输的包一般为alc,用分组传输的方式。两种包的编解使用的软硬件都有些区别。sco包支持的基础码率也是8k的pcm.所以一般蓝牙芯片都会有一个pcm接口。

PCM和I2S最明显的一个不同就是PCM_SYNC信号和LRCLK信号这两个复用的pin
PCM_SYNC用来同步帧,有long fram sync和short frame sync等模式,但并不专门区分左右声道。
而I2S中,这个pin叫做LRCLK,专门用来区分左右声道,以此来同步。低电平代表左声道,高电平代表右声道。

同时,时钟的上升沿和下降沿哪个是输入采样和输出,在PCM和I2S是不同的,I2S还有自己特定的格式。

FYI:
http://blog.sina.com.cn/s/blog_4d5768e801000apo.html

http://blog.csdn.net/sepnic/article/details/6536855

I2S仅仅是PCM的一个分支,接口定义都是一样的, I2S的采样频率一般为44.1KHZ和48KHZ做,PCM采样频率一般为8K,16K。有四组信号: 位时钟信号,同步信号,数据输入,数据输出.

I2S总线标准
I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号:

串行时钟 SCLK,也叫做位时钟BCLK,即对应数字音频的每一位数据,SCLK的频率=2×采样频率×采样位数 ,呵呵,现在问题来了,有人会问这些东西到底是什么意思呢?其实,I2S一般是传输立体声,有两个声道channel,采样频率指得是采样数率,多久去采集一个点,每个点是几个bit组成。
帧时钟LRCK,用于切换左右声道的数据,LRCK为“0”表示正在传输的是左声道的数据,为“1”表示正在传输的是右声道的数据。LRCLK == FS,就是采样频率
串行数据SDATA,就是用二进制补码表示的音频数据,有时为了使系统间能够更好的同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(System Clock),是采样频率的256或384倍
I2S协议时序
I2S格式的信号无论有多少位数据,,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个BCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错。
在这里插入图片描述

从时序图可以看出,I2S左右声道分别为高低电平,PCM只有一个起始信号,左声道数据紧跟右声道.
PCM协议
PCM(PCM-clock、PCM-sync、PCM-in、PCM-out)脉冲编码调制,模拟语音信号经过采样量化以及一定数据排列就是PCM了。理论上可以传输单声道,双声道立体声和多声道。是数字音频的raw data.

在这里插入图片描述

从时序图可以看出,I2S左右声道分别为高低电平,PCM只有一个起始信号,左声道数据紧跟右声道.

音频基础之I2S、TDM、PCM传输

DSP

1、采样率
常用的表示符号是fs。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本。采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音,是衡量声卡采集、记录和还原声音文件的质量标准。

2、采样精度
模拟信号的幅度轴进行数字化,它决定了模拟信号数字化以后的动态范围。采样精度为24bit位即动态范围0~96dbfs。

3、帧长
DSP一次处理的音频采样点数,决定处理延时。如帧长64,采样率为48Kbps,DSP一次计算延时至少0.001333333s.

4、时钟
4.1、音频数据由I2S协议来传输,在I2S中,有很多时序都需要配置。
4.1.1、BCLK:位时钟 (Bitclock,BCK,也称串行时钟SCK):确立数据流中两个相邻位之间边界的信号
4.1.2、LRCK:左/右时钟 (LRCK)/字时钟 (Wordclock,也称WS):一个在采样速率下运行、占空比为 50% 的慢时钟,它确立数据流中两条相邻通道(左和右)之间的边界。
4.1.3、MCLK:主时钟,一般而言,DSP不需要音频主时钟,因为它们能够以一种完全不同的速率对数据进行处理,
例如: 设声音的采样频率为44.1 kHz,即声道选择信号(帧时钟)WS的频率必须也为44.1 kHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK的频率为:44.1 kHz×16×2=1.4112 MHz,SCK = 采样率 * 位宽 * 通道数,WS = 采样率

4.2、音频数据由TDM/PCM来传输,不像I2S有统一的标准,不同的IC厂商在应用TDM时可能略有差异,这些差异表现在时钟的极性、声道配置的触发条件和对闲置声道的处理等。
TDM/PCM与I2S接口对应关系见下表:
在这里插入图片描述

4.2.1、根据 SD相对帧同步时钟FSYNC的位置,TDM分两种基本模式:
Mode A: 数据在FSYNC有效后,BCLK的第2个上升沿有效
Mode B: 数据在FSYNC有效后,BCLK的第1个上升沿有效
在这里插入图片描述

注:不同厂商对Mode A和Mode B定义可能有所差别
应用中,总是以帧同步时钟FSYNC的上升沿表示一次传输的开始。帧同步时钟的频率总是等于音频的采样率,比如44.1 kHz,48 kHz等。多数应用只用到FSYNC的上升沿,而忽略其下降沿。根据不同应用FSYNC脉冲宽度的差别,PCM帧同步时钟模式大致分为两种:长帧同步 Long Frame Sync,短帧同步 Short Frame Sync。长帧同步,如图所示,FSYNC脉冲宽度等于1个Slot的长度。Slot在TDM中表示的是传输单个声道所占用的位数。如图所示TI McASP接口的TDM包括6个Slots,即它最多可包括6声道数据。注意,Slot的位数并不一定等于音频的量化深度。比如Slot可能为32 bit,其中包括24 bit有效数据位(Audio Word) + 8 bit零填充(Zero Padding)。
在这里插入图片描述

b. 短帧同步,FSYNC脉冲宽度等于1个BCLK周期长度;

4.2.2举例
FSYNC的频率等于音频的采样率(例如44.1 kHz,48 kHz等)。Frame每次传输包括所有声道的数据。PCM采样音频数据量化深度一般在16-32bit(最常见为16/24bit)。那么对于8声道,每个声道32bit音频数据,采样率48kHz的系统,TDM的系统时钟速率为:8 × 32 × 48kHz = 12.288 MHz
BCLK = 采样率 * 位宽 * 通道数,FYNC = 采样率。
————————————————

原文链接:https://blog.csdn.net/weixin_48408892/article/details/127282752

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础:TCP是什么?

1. TCP 是什么? TCP(Transmission Control Protocol 传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]定义。 TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机…

如何成为一名优秀的硬件工程师

求知若饥,大智如愚,这是乔布斯说的,很多工程师把这句话作为工程师的最基本的职业素养。 “工程师是科学家;工程师是艺术家;工程师也是思想家。”实际上,工程师是利用自然科学来创造工程的人。工程既是物质…

Docker容器化技术(使用Dockerfile制作镜像)

Docker中的镜像分层 Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。 1、Docker 镜像为什么分层 镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相…

智慧城市:提升城市治理能力的关键

目录 一、智慧城市的概念及特点 二、智慧城市在提升城市治理能力中的应用实践 1、智慧交通:提高交通治理效率 2、智慧政务:提升政府服务水平 3、智慧环保:加强环境监测与治理 4、智慧安防:提高城市安全水平 三、智慧城市在…

【PythonCode】力扣Leetcode6~10题Python版

【PythonCode】力扣Leetcode6~10题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台,很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题,可以选择各种主流的编程语言,如C、…

我的尝试:Codigger + Vim

若您愿意耐心投入,学习 Vim 的过程其实远比想象中轻松。我对 Vim 产生兴趣,主要是源于它对提升生产力的巨大潜力。我尝试了 Neovim、NvChad 以及 Codigger Vim 插件,如今我的工作效率已远超从前。 那么,Vim 究竟是什么呢&#xff…

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras_学习率选择-CSDN博客文章浏览阅读9.2k次,点赞6次,收藏55次。keras 版本的LRFinder,借鉴 fast.ai Deep Learning course。前言学习率lr在神经网络中是最难调的全局参数&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Navigator)

路由容器组件,提供路由跳转能力。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Navigator(value?: {target: string, type?: NavigationType}) …

包冲突解决之-invalid constant type: 18

背景 现象一:引入了一个包A,服务突然起不来了,后台有报错信息,Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type xxx available: expected at least 1 bean which quali…

Day44-sersync企业实时复制实战

Day44-sersync企业实时复制实战 1. sersync实时复制工具介绍1.1 sersync工具简介1.2 sersync特点1.3 sersync图解原理1.4 sersyncrsync实时复制方案项目实践1.4.1 图解项目方案架构及实现原理1.4.2 确保远程数据传输服务部署完成1.4.3 检查当前系统nfs01是否支持inotify实时监控…

vue使用elementPlus ui框架,如何给Dialog 对话框添加Loading 自定义类名显示隐藏

vue使用elementPlus ui框架时&#xff0c;如何给Dialog 对话框添加Loading 自定义类名&#xff0c;想要实现dialog对话框区域有loading效果 官方给出的这个API配置项customClass&#xff0c;使用不太明确。暂时无法实现绑定class。 最后的实现方式&#xff1a; <template&…

吐槽FineDataLink工具Format函数处理日期转字符串格式的说明文档

一.背景 为公司师带徒的任务做些记录。 二.文档存在的问题 1.文档情况 FORMAT-格式转换- FineBI帮助文档 FineBI帮助文档 函数定义&#xff1a; FORMAT(object,format) formart的格式有哪些呢&#xff1f;我们截图看看&#xff1a; 2.文档说明不足问题 同事的需求是把时…

AI人工智能培训讲师ChatGPT讲师叶梓培训简历及提纲ChatGPT等AI技术在医疗领域的应用

叶梓&#xff0c;上海交通大学计算机专业博士毕业&#xff0c;高级工程师。主研方向&#xff1a;数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家&#xff0c;市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

免费阅读篇 | 芒果YOLOv8改进109:注意力机制SimAM:用于卷积神经网络的简单、无参数注意力模块

免费阅读篇|芒果YOLOv8改进109&#xff1a;注意力机制篇SimAM&#xff1a;用于卷积神经网络的简单、无参数注意力模块 &#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#x…

RocketMQ学习笔记四(黑马)项目

课程地址&#xff1a; 1.Rocket第二章内容介绍_哔哩哔哩_bilibili &#xff08;视频35~88&#xff0c;搭建了一个电商项目&#xff09; 待学&#xff0c;待完善。

找准方向选CRM客户管理系统!2023年排行榜推荐

本文将为大家带来2023有哪些好用CRM客户管理系统&#xff1f;CRM系统排行榜基于品牌知名度、功能、产品实力、系统稳定性、用户体量等多重因素考量。其中Zoho CRM、红圈CRM等产品市场表现优异入选此次榜单。 1.Zoho CRM 公司成立时间&#xff1a;1996年 Zoho&#xff08;卓豪…

【算法】AC自动机的优化:增量更新与删除

一、概述 AC自动机&#xff08;Aho-Corasick Automation&#xff09;是著名的多模匹配算法&#xff0c;源于贝尔实验室&#xff0c;并且在实际应用中得到广泛的引用&#xff0c;且具有以下特点&#xff1a; 只需要扫描一次文本&#xff0c;即可获取所有匹配该文本的模式串复杂…

CSS扩展选择器

文章目录 1. 并集选择器2. 交集选择器3. 后代选择器4. 子代选择器5. 兄弟选择器5.1. 相邻兄弟选择器5.2. 通用兄弟选择器 6. 属性选择器7. 伪类选择器7.1. 动态伪类7.2. 结构伪类7.3. 否定伪类 8. 伪元素选择器9. Google 改进案例 1. 并集选择器 选中多个选择器对应的元素。一…

如何在Linux上使用git远程上传至gitee托管(add-commit-push指令详解)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

力扣209. 长度最小的子数组

思路&#xff1a;题目是 数组和 > target&#xff0c;不是等于target 双指针法&#xff1a;用for循环中的 r 来界定右边界的下标&#xff0c;右边界每移动一位&#xff0c;左边界可能需要移动多位&#xff0c;所以内部再用while, 当满足 数组和>target时&#xff0c;记录…