数字音频接口之I2S总线协议详解

一、应用场景

I2S(Inter-IC Sound)是一种广泛应用于数字音频传输的串行接口标准。它最初由飞利浦(Philips)公司开发,用于解决在集成电路之间传输音频数据的问题。I2S协议定义了音频数据的传输格式、时序和控制信号。在工作中音频采集和输出,AD和主芯片之间的通信均是通过I2S进行通信的,其应用场景如下:

  • I2S RX方向:麦克风在机械振动下将声音信号转变为电压信号,电压信号经过放大等处理,给到ADC采样,将模拟信号转化为数字信号;音频在ADC与DSP之间的传输协议就是使用的I2S协议。
  • I2S TX方向:数字信号经过编码、存储、压缩等技术后,发送给解码器-DAC(DSP、专用解码器),将数字信号还原为模拟信号,最后给到喇叭完成声音/音频的播放。音频在DAC与DSP之间的传输就是使用I2S协议。

I2S的应用

二、I2S基本信号

1.I2S基本信号线

I2S协议基本时序关系

如上图I2S接口通常由三类信号线组成,分别是:

  • 时钟线(Continues Serial Clock,SCK):SCK线提供了同步音频数据传输的时钟信号。确定了数据传输的速度和时序。该时钟也称为Bit Clock(BCLK)。SCK的频率=2x采样频率x位宽
  • 左/右声道线(Left-Right Clock,LRCK):LRCK线指示了当前传输的是左声道的音频数据还是右声道的音频数据。它被称为帧同步信号。LRCK的频率=采样频率
  • 数据线(Serial Data,SD ):SD线用于传输实际的音频数据。数据的位宽可以根据具体应用而变化,通常为16位或32位。TX方向为:Serial Data Out(SDOUT);RX方向为:Serial Data In(SDIN)。

2.I2S协议中常见的参数

  • 位宽(Word Length):位宽指定每个采样数据的位数,通常为16位或32位。较大的位宽可以提供更高的分辨率和动态范围。
  • 时钟极性(Clock Polarity):时钟极性确定了数据位传输的时钟沿。根据具体的I2S设备和系统设置,可以定义在时钟上升沿或下降沿开始数据传输
  • 帧同步极性(Frame Sync Polarity):帧同步极性确定了帧同步信号的有效电平。帧同步信号指示音频数据的帧起始和结束位置。
  • 传输格式(Data Format):传输格式定义了音频数据的编码方式,传输格式还可以指定数据的顺序,如左声道先传输还是右声道先传输

三、主从工作模式

I2S工作模式可以是主模式(Master Mode)或从模式(Slave Mode)。两者唯一的区别是:Master Mode提供时钟信号(SCK)和帧同步信号(LRCK)。如下图所示,一共存在三种工作模式,分别是:

1.发射器(transmitter)为Master,接收器(receiver)为Slave,此时由发射器提供SCK和LRCK

2.接收器(receiver)为Master,发射器(transmitter)为Slave,此时由接收器提供SCK和LRCK

3.发射器(transmitter)和接收器(receiver)均为Slave,由系统中其他模块提供SCK和LRCK

I2S的主从工作模式

四、数据传输模式

I2S接口标准中,存在三种数据传输模式,分别是:飞利浦标准模式(I2S mode),左对齐(Left Justified)和右对齐(Right Justified)三种传输模式。

1.飞利浦标准(I2S)模式

I2S标准模式接口时序

其主要特点如下:

(1)LRCK(左右声道选择信号):LRCK信号用于指示当前数据帧是左声道数据还是右声道数据。飞利浦格式中,当LRCK为低时,表示当前传输的数据是左声道数据;当LRCK为高时,表示当前传输的数据为右声道数据

(2)SCK(位时钟):数据传输的时钟信号。在SCK下降沿发送数据,在SCK上升沿采样数据

(3)Data Delay:发送的有效数据相对于LRCK的跳变沿(从0到1或从1到0)延迟一个时钟周期

(4)数据发送从MSB开始;数据MSB与LRCK delay 1个SCK的边沿对齐

2.左对齐(Left Justified)模式

左对齐模式接口时序

其主要特点如下

(1)在左对齐格式中,LRCK为高时,表示当前传输的数据为左声道数据;当LRCK为低时,表示当前传输的数据为右声道数据

(2)在SCK下降沿发送数据,在SCK上升沿接收数据

(3)无data delay:发送的有效数据相当于LRCK跳变沿(从0到1或从1到0)不延迟

(4)数据发送从MSB开始;数据MSB与LRCK跳变沿对齐

3.右对齐(Right Justified)模式

右对齐模式接口时序

其主要特点如下

(1)右对齐格式中,LRCK为高电平时,表示当前传输的数据为右声道数据;当LRCK为低电平时,表示当前传输的数据为左声道数据

(2)在SCK下降沿发送数据,在SCK上升沿接收数据

(3)无Data delay:发送的有效数据相当于LRCK跳变沿(从0到1或从1到0)不延迟

(4)数据发送从MSB开始;数据LSB与LRCK跳变沿对齐

五、数据位宽与位深

(1)位宽:根据SCK与LRCK的关系:

采样频率位宽位宽

位宽

位宽一般为16位或32位

(2)位深:表示音频数据量化后的精度

需要注意的是,I2S中位宽和位深都是由Master决定的。因此在使用时需要先确定本模块在系统中的工作模式(Master or Slave)。下面以32位位宽,32/24/20/16位位深为例,说明位宽与位深的区别(以下例子的数据格式均为I2S格式)。

1.32位位宽,32位位深

位宽=32bit,位深=32bit

2.32位位宽,24位位深

位宽=32bit,位深=24bit

3.32位位宽,20位位深

位宽=32bit,位深=20bit

4.32位位宽,16位位深

位宽=32bit,位深=16bit

六、I2S初始化配置

①,i2s的时钟使能和GPIO口配置
②,配置为i2s模式
③,i2s标准,无论有多少位有效数据,即数据的最高位总是出现在WS变化(也就是一帧开始)后的第2个CK脉冲处。
④,i2s数据长度,包括16位,16位扩展(16位数据以32位包发送),24位,32位。
⑤,设置i2s时钟
⑥,设置i2s空闲状态下时钟电平
⑦,i2s使能,设置I2S的采样率。采样率一般在8K-192K之间。

七、总结

1、SDATA,也就是串行数据信号,使用二进制传输数字信号。请注意数据的传输形式为补码的方式

2、例如音频的采样率是8K,一s内存采样8K个点,一个点包含一个左声道,一个右声道,所以LRCK是8K,BCLK是2×采样频率×采样位数

3、同时双向(TX和RX)音频流:串行数据同步移位到时钟信号SCK和LRCK。在SCK的下降沿将TX数据写入SDOUT引脚,并在SCK的上升沿从SDIN引脚读取RX数据。始终首先发送最高有效位(MSB);TX和RX均可在主模式和从模式下使用。

4、MCLK:主时钟(也名过采样率),一般是采样频率[不是bclk而是LRCK]的128、或256、或384或512倍。

八、普通IO模拟IIS接口

  • 29
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I2S总线接口的设计可以使用Verilog语言来实现。在设计中,需要考虑到FPGA与数字音频芯片之间的信号连接和时序。引用提到了设计一个FPGA与数字音频芯片的I2S接口时序,这意味着需要设计和实现与I2S总线相关的时钟信号(MCLK,BCLK)和数据信号(LRCK,SDATA)的生成和处理。 在Verilog代码中,可以定义输入和输出端口来连接FPGA和音频芯片。引用提到了常见的信号,如MCLK(主时钟),SCLK(数据时钟),LRCK(左右声道选择),SDAT(音频数据),RST(复位信号)和MODE(工作模式选择)。可以根据具体需求在代码中定义这些信号。 接下来,需要根据I2S总线的时序要求来生成时钟和数据信号。例如,可以使用计数器来生成BCLK(位时钟)信号,根据BCLK的边沿来采样和传输音频数据。还可以根据LRCK的边沿来选择左右声道。 随后,需要根据数据要求来处理音频数据。可以使用移位寄存器来将音频数据从SDAT输入并移位到输出端口。在代码中还可以实现复位功能,以及根据MODE信号来选择不同的工作模式。 在设计I2S总线接口时,还需要考虑时序同步和时钟域的问题,以确保数据的准确传输。可以使用FPGA的时钟域划分和时钟同步技术,以及适当的寄存器和状态机来实现。 总的来说,设计I2S总线接口的Verilog代码需要考虑与FPGA和音频芯片之间的信号连接和时序要求,并且根据具体的应用需求来生成和处理时钟和数据信号。可以参考引用中提到的时序设计和引用中给出的Verilog代码作为参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[Craftor原创] I2S总线接口设计(Verilog)](https://blog.csdn.net/weixin_30527143/article/details/96956435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [I2S DAC的Verilog实现](https://blog.csdn.net/snutqq/article/details/120347969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值