HDMI协议介绍(五)--Audio
基础知识
I2S(inter-IC sound bus)飞利浦公司制定的标准,既规定了硬件接口规范,也规定了数字音频数据格式。
硬件接口规范
I2S接口有3个主要信号:
时钟信号 Serial Clock
串行时钟SCK,也叫位时钟(BCLK),对应数字音频的每一位数据。SCLK的频率=2×采样频率×采样位数
左右声道选择信号 Word Select
WS信号有时也称帧时钟LRCK,用于切换左右声道的数据。WS是声道选择信号,表明数据发送端所选择的声道。当:WS=0,表示选择左声道 ,WS=1,表示选择右声道。LRCK的频率等于采样频率
数据信号 Serial Data
串行数据SD在WS变化后的第一个SCK脉冲,先传输最高位MSB。
有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,是采样频率的256倍或384倍(具体倍数由codec决定)。
I2S 总线上同一时刻只能存在一个Master设备,提供时钟的设备是Master设备。
I2S接口模式
I2S硬件接口分为三种工作模式:
- I2S Phillips Standard I2S模式
- Left Justified Standard 左对齐模式
- Right Justified Standard 右对齐模式
左对齐模式:左声道数据MSB在WCLK上升沿之后BCLK的第一个上升沿有效;右声道数据MSB在WCLK下降沿之后SBCLK第一个上升沿有效。
右对齐模式:左声道数据LSB在WCLK下降沿前一个BCLK上升沿有效,右声道数据LSB在WCLK上升沿前一个BCLK上升沿有效。
左右对齐模式LRCK/WS高电平对应左声道,低电平对应右声道;而I2S模式低电平对应左声道,高电平对应右声道。
PCM
PCM (Pulse Code Modulation) 一种用数字表示采样模拟信号的方法。
Sampling(采样)
Sampling(采样)表示处理,实际上就是让采样数据能够完全表示原始信号,且采样数据能够通过重构还原成原始信号的过程。
- 蓝色曲线:表示音频原始信号。
- 黑色垂直线段:表示当前时间点对原始信号的一次采样
- 黑色点:表示采样获取的一系列离散样本。
采样率表示每秒采样的数量(单位:HZ),根据场景的不同,采样率也有所不同,采样率越高,声音的还原程度越高,质量就越好,同时占用空间会变大。
Quantization(量化)
原始信号采样后,需要通过量化来描述采样数据的大小。
量化处理过程,就是将时间连续的信号,处理成时间离散的信号,并用实数表示。这些实数将被转换为二进制数用于模拟信号的存储和传输。
上面的图片的例子是16bit位深量化过程。bit-depth(位深):用来描述存储数字信号值的bit数,较常用的模拟信号位深如下:
- 8-bit:2^8 = 256 levels,有256个等级可以用于衡量真实的模拟信号。
- 16-bit:2^16 = 65,536 levels,有65,536个等级可以用于衡量真实的模拟信号。
- 24-bit:2^24 = 16,666,216 levels,有16,666,216个等级可以用于衡量真实的模拟信号。
可以看到,位深越大,对模拟信号的描述将越真实,对声音的描述更加准确。
TDM
TDM(Time Division Multiplexing)时分复用,PCM接口支持同时传输多达N个声道的数据。
Mode A:数据在FSYNC有效后,BCLK的第2个上升沿有效
Mode B:数据在FSYNC有效后,BCLK的第1个上升沿有效
PCM vs I2S
PCM硬件接口上传输的是PCM编码的数据,I2S上传输的也是PCM编码的数据,I2S不过是PCM接口的特例。
应用PCM音频接口传输单声道数据(如麦克风)时,其接口名称为PCM;双声道经常使用I2S;而TDM则表示传输两个及以上声道的数据,同时区别于I2S特定的格式。
HDMI Audio
audio info frame
ACR
Audio Clock Regeneration 音频时钟重生成,Audio data是在HDMI Data Island周期以packet形式发送的,Data Island并没有发送Audio Clock,根据HDMI Spec规定,需要ACR来恢复Audio Clock。
TMDS Clock和Audio参考时钟(128倍采样率)的关系:
128 · f S = f TMDS_clock · N / CTS
N值需要发送给sink端,sink端根据公式恢复Audio Clock。
N值与Audio 采样率以及video mode有关,有寄存器需要配置,CTS值可以手动配置也可以自动计算。
某款HDMI Controller支持的I2S接口,I2S属于PCM的一个特例,延迟一个clock。MSB高位对齐。
I2S的bitmapping
不同位宽的对齐方式
Audio调的不多,写得简单。
相关文章:

HDMI协议介绍(五)--Audio
基础知识 I2S(inter-IC sound bus)飞利浦公司制定的标准,既规定了硬件接口规范,也规定了数字音频数据格式。 硬件接口规范 I2S接口有3个主要信号: 时钟信号 Serial Clock 串行时钟SCK,也叫位时钟(BCLK)&…...

Centos7中安装Jenkins教程
1.必须先配置jdk环境,安装jdk参考 Linux配置jdk 2.先卸载Jenkins # rpm卸载 rpm -e jenkins # 检查是否卸载成功 rpm -ql jenkins # 彻底删除残留文件 find / -iname jenkins | xargs -n 1000 rm -rf 3.安装Jenkins 在 /usr/ 目录下创建 jenkins文件夹 mkdir -p je…...

十一、WSGI与Web框架
目录 一、什么是WSGI1.1 WSGI接口的组成部分1.2 关于environ 二、简易的web框架实现2.1 文件结构2.2 在web/my_web.py定义动态响应内容2.3 在html/index.html中定义静态页面内容2.4 在web_server.py中实现web服务器框架2.5 测试 三、让简易的web框架动态请求支持多页面3.1 修改…...

[idekCTF 2022]Paywall - LFI+伪协议+filter_chain
[idekCTF 2022]Paywall 一、解题流程(一)、分析(二)、解题 二、思考总结 一、解题流程 (一)、分析 点击source可以看到源码,其中关键部分:if (isset($_GET[p])) {$article_content…...

Python 自动化Web测试
限于作者水平有限,以下内容可能是管窥之见,希望大家高抬贵手,且让我斗胆抛砖引玉。 公司产品迪备主要是通过网页操作来进行数据库的备份与恢复,监控与管理,因此在测试的过程中,可以用python测试脚本来模拟…...

MM-Camera架构-Preview 流程分析
目录 文章目录 1 log开的好,问题都能搞2 lib3 preview3.1 打开视频流3.1.1 cpp\_module\_start\_session3.1.2 cpp\_thread\_create3.1.3 cpp\_thread\_funcsundp-3.1 cpp\_hardware\_open\_subdev(ctrl->cpphw)sundp-3.2 cpp\_hardware\_process\_command(ctrl-…...

科普文章|一文了解平行链及其优势
平行链是一种可以连接到更大规模的区块链网络(波卡)的独立区块链。不同于传统区块链(如比特币和以太坊)是孤立的并且无法在本地相互通信,平行链与其他平行链并行运行,并且相互可以无缝通信。平行链还使用波…...

Tomcat 9.0.41在IDEA中乱码问题(IntelliJ IDEA 2022.1.3版本)
1. 乱码的产生是由于编码和解码的编码表不一致引起的。 2. 排查乱码原因 2.1 在idea中启动Tomcat时控制台乱码排查 Tomcat输出日志乱码: 首先查看IDEA控制台,检查发现默认编码是GBK。 再查看Tomcat日志(conf文件下logging.properties)的默…...

在Kubernetes中实现gRPC流量负载均衡
在尝试将gRPC服务部署到Kubernetes集群中时,一些用户(包括我)面临的挑战之一是实现适当的负载均衡。在深入了解如何平衡gRPC的方式之前,我们首先需要回答一个问题,即为什么需要平衡流量,如果Kubernetes已经…...

Floorplanning with Graph Attention
Floorplanning with Graph Attention DAC ’22 目录 Floorplanning with Graph Attention摘要1.简介2.相关工作3.问题公式化4. FLORA的方法4.1 解决方案概述4.2 C-谱聚类算法 4.3 基于GAT的模型4.4 合成训练数据集生成 摘要 布图规划一直是一个关键的物理设计任务࿰…...

centos7 配置coreboot编译环境 以及编译问题解决
需要的配置 (有的资源在国外可能需要翻墙) 操作系统: centos7.9 参考文章 coreboot源码分析之编译和运行coreboot - 知乎 //coreboot编译总说明 https://www.coreboot.org/Build_HOWTO#Requirements https://poe.com/ChatGPT 注意: 因为github不稳定 所以gitee为主 1. 下载…...

大型语言模型:RoBERTa — 一种鲁棒优化的 BERT 方法
一、介绍 BERT模型的出现导致了NLP的重大进展。BERT的架构源自Transformer,在各种下游任务上实现了最先进的结果:语言建模,下一句预测,问答,NER标记等。 大型语言模型:BERT — 来自变压器的双向编码器表示 …...

解析navicate数据库密码
在线运行地址:代码在线运行 - 在线工具 <?php class NavicatPassword {protected $version 0;protected $aesKey libcckeylibcckey;protected $aesIv libcciv libcciv ;protected $blowString 3DC5CA39;protected $blowKey null;protected $blowIv null;public func…...

mysql字段类型与oracle字段类型对应关系
MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据类型的对应关系。 一、常见数据类型在MyS…...

linux 中 tar \ zip 解压错误后撤回
#zip zipinfo -1 path/xx.zip | xargs rm -rf#tar tar -tf xx.tar | xargs rm -rf...

对象图 UML从入门到放弃之四
1.劝退说明 对象图提供了系统在某个特定时刻的状态快照。这是一种有用的描述系统的方法,当系统的结构是动态构建起来而不是由其静态的类结构决定时,更是如此。不过,应该对画太多的对象图保持警惕。在大部分情况下,它们都可以从相应…...

FPGA实现HDMI输入转SDI视频输出,提供4套工程源码和技术支持
目录 1、前言免责声明 2、我目前已有的SDI编解码方案3、设计思路框架核模块解析设计框图IT6802解码芯片配置及采集ADV7611解码芯片配置及采集silicon9011解码芯片配置及采集纯verilog的HDMI 解码模块RGB888转YUV422SPMTE编码SDI模式图像缓存SPMTE SDIGTXGV8500 4、vivado工程1-…...

针对FTP的SSRF攻击
前言 ssrf中常用的协议有http,gopher等。但http协议在ssrf中的用处也仅限于访问内网页面,在可以crlf的情况下才有可能扩大攻击范围。gopher协议比较特殊,在部分环境下支持此协议,如:curl。但还有一些环境就不支持了&a…...

线性代数中涉及到的matlab命令-第一章:行列式
目录 1,逆序数 2,行列式定义和性质 2.1,常用特性及命令 2.2,求行列式 2.3,行列式的性质 2,行列式按行(列)展开 3,范德蒙德行列式 在学习线性代数过程中&#…...

QT编程,QT内存管理、信号与槽、
目录 一、QT工具 二、QT内存管理 三、信号与槽 1、信号与槽特点 2、信号 3、槽函数 4、连接 5、发送信号 6、取消连接 一、QT工具 1、Qt Designer:界面设计编辑工具 2、Qt Assistant: Qt技术文档浏览器 3、Qt Linguist: 国际化语言翻译工具 4、…...

springcloud之项目实战环境准备
写在前面 为了更好的学习springcloud,我们来一起开发一个实战项目,加深理解。 1:项目介绍 在开始项目实战之前先来做一个整体的项目介绍,从而能够让对项目的整体架构和模板有一个比较清晰的认知。 大家都知道双11,…...

Linux 部署 MinIO 分布式对象存储 配置为 typora 图床
前言 MinIO 是一款高性能的对象存储系统,它可以用于大规模的 AI/ML、数据湖和数据库工作负载。它的 API 与Amazon S3 云存储服务完全兼容,可以在任何云或本地基础设施上运行。MinIO 是开源软件,也提供商业许可和支持 MinIO 的特点有&#x…...

JVM Optimization Learning(四)
目录 一、调优 1、基础概念 2、什么是调优? 3、调优,从规划开始 4、调优案例 一、调优 1、基础概念 吞吐量:用户代码执行时间 /(用户代码执行时间 垃圾回收时间) 响应时间:STW越短,响应…...

新华三辅导笔记 2023/10/9-2023/10/13
新华三辅导笔记 一、需要用到的软件二、计算机网络概述1、计算机网络的定义和基本功能(1)什么是计算机网络(2)计算机网络的基本功能 2、(1)局域网、城域网和广域网(范围划分)&#x…...

边坡安全监测系统的功能优势
随着科技的进步,边坡安全监测系统在各种工程项目中发挥着越来越重要的作用。这款系统通过实时监测垂直、水平位移数据,以折线图的方式显示在监控平台中,为工程人员提供了直观、便捷的监控工具,从而能够及时掌握边坡稳定状况&#…...

【架构】研发高可用架构和系统设计经验
研发高可用架构和系统设计经验 从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑。 一、高可用架构和系统设计思想 1.可用性和高可用概念 可用性是一个可以量化的指标,计算的公…...

Linux线程安全
线程安全 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究 可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别 常见锁概念死锁死锁的四个…...

Windows安装Node.js
1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境,它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括: 1. 事件驱动: Node.js采用了事件驱动的编程模型,通…...

想要开发一款游戏, 需要注意什么?
开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项: 游戏概念和目标: 确定游戏开发的核心概念和目标…...

横向AlGaN/GaN基SBD结构及物理模型数据库的开发
GaN基功率器件凭借其临界电场高、电子饱和漂移速度大、热导率高等优良性能在大功率快充、充电桩、新能源汽车等领域具备广泛应用空间。为进一步助推半导体高频、高功率微电子器件的发展进程,天津赛米卡尔科技有限公司技术团队依托先进的半导体TCAD仿真平台成功开发出…...