前言
IIS(Inter-IC Sound)协议在 1986 年左右提出,其主要用于在音频设备(如数字信号处理器、数模转换器、编解码器等)之间传送数字音频数据。是一种专门用于音频数据传输的串行总线标准,其设计目标是简单高效地在数字音频设备之间传输音频数据。
一、IIS信号介绍
IIS主要是由MCLK、SCLK(BCLK)、LRCK(WS)、DATA(SD)四根信号信号线组成,其中MCLK被称为主时钟用于同步整个芯片内部的音频采样与转换过程,SCLK被称为位时钟,其为数据传输提供比特级的时序基准。每传输一位数据,BCLK 脉冲就会出现一次,其频率决定了数据传输速率;LRCK被称为左右时钟,该信号指示当前传输的是左声道还是右声道数据,当LRCK == 0时表示左时钟数据,在LRCK == 1 时表示右声道音频数据;而DATA是串行数据传输线,其数据是按位传输,通常 MSB(最高有效位)先传。
这里着重介绍一下SCLK和LRCK,LRCK为左右时钟,其采样速率在市面上大多为48K和44.1K,少数为32K或者其它,而SCLK的速率依据需要传递的采样速率和数据位宽决定,其计算公式为SCLK == 2 * LRCK * DATA_WIDTH ,例如LRCK == 48K,IIS_DATA == 32bit,则SCLK == 2 * 48K * 32 == 3.072M.
二、IIS数据格式
市面上常见的IIS音频格式主要有三种,分别为标准IIS模式(也称Phillip Standard)、左对齐模式和右对齐模式;其中标准IIS音频时序如下:
由图可看知,其在数据传输周期中,其数据是在LRCK的第二个周期上升沿有效
左对齐IIS音频时序如下:
由图可看知,其在数据传输周期中,其数据是在LRCK的第一个周期上升沿有效
右对齐模式如下:
IIS右对齐模式也叫sony模式,也称日本模式,具体传输模式如图。
三、PCM音频
PCM 音频作为数字音频处理中最基本的编码方式,通过对模拟音频信号进行采样和量化,将音频信号转换为数字数据,使得声音可以高保真地存储、处理和传输。虽然 PCM 数据量较大,但其无损和简单高效的特性使其在数字音频领域中占有重要地位。无论是在家庭娱乐、专业录音还是数字通信中,PCM 都扮演着关键角色,其音频格式如下:
四、代码设计
首先我们得明白,在FPGA中去接收ADC的数据需要考虑时钟同步的问题,之前已知时钟同步时靠MCLK进行同步,但是这是几个音频芯片的控制,FPGA的工作时钟将要大于MCLK的时钟,故接收时得先进行时钟同步以避免异步导致的数据回复异常问题,IIS音频是单bit的串行协议,所以对于单bit而言做时钟同步的最好方法是打两拍过渡即可,代码如下:
module iis_sync #
(
parameter TAP = 2 // 延时拍数
)
(
input clk_sys,
input i2s_bclki,
input i2s_lrcki,
input i2s_sdati,
output reg i2s_bclko,
output reg i2s_lrcko,
output reg i2s_sdato
);
//*****************************************************************************
// Signals
//*****************************************************************************
wire bclk_pedge;
wire i2s_lrcki_w;
wire i2s_sdati_w;
//*****************************************************************************
// Processes
//*****************************************************************************
always @( posedge clk_sys )
begin
i2s_bclko <= bclk_pedge;
end
always @( posedge clk_sys )
begin
if ( bclk_pedge == 1'b1 )
i2s_lrcko <