I2S控制模块AUDIO_IF.v实现的功能是用离散的正弦波数据创建的查找表来合成声音(生成I2S格式的音频数据流)。如下是该模块的RTL视图:

该模块采用的是I2S 标准音频时序,每通道16位,LRCLK为低电平时传输左通道,为高电平时传输右声道,数据由高位(MSB)到低位(LSB)依次进行传输:

所以该模块里面设置了左右声道数据位宽16-bit。 另外离散的正弦波数据是48个。

该模块系统时钟是1.536MHz,位时钟sclk也是1.536MHz。因寄存器设置0x15[7:4]=0010,ADV7513采样率为48KHz,所以lrclk经过sclk分频后也是48KHz。

这里设置sclk下降沿时数据改变,符合寄存器x0B[6]的设置(其默认设置是0,代表在下降沿时I2S数据发生变化,上升沿时数据保持不变锁存数据)。另外,这里Data_Count取反让数据由高位(MSB)到低位(LSB)依次进行传输:

该模块在lrclk下降沿的时候给出Data_Bit,在lrclk上升沿的时候数据保持没变,所以左右声道传输的是相同的数据:

关于正弦波离散数据的获取,用户可以通过python 或者matlab生成。本文不再赘述。

整个I2S控制模块AUDIO_IF.v的时序图如下:

往期阅读
1-DE10-Nano的HDMI方块移动案例------显示器时序(DMT)标准介绍
2-DE10-Nano的HDMI方块移动案例------HDMI接口介绍(含TMDS)
3-DE10-Nano的HDMI方块移动案例------ADV7513芯片解读
4-DE10-Nano的HDMI方块移动案例------I2C通信协议
5-DE10-Nano的HDMI方块移动案例------基于FPGA的I2C控制模块设计
6-DE10-Nano的HDMI方块移动案例------使用Modelsim仿真I2C控制器
7-DE10-Nano的HDMI方块移动案例的整体实现(含Quartus完整工程免费下载)
1- DE10-Nano的HDMI彩条显示案例(分辨率可切换)(含Quartus完整工程免费下载)
2-DE10-Nano的HDMI彩条显示案例(分辨率可切换)------ VGA显示控制器模块设计
3-DE10-Nano的HDMI彩条显示案例(分辨率可切换)------学会用Signal Tap逻辑分析仪查看信号波形
4-DE10-Nano的HDMI彩条显示案例(分辨率可切换)------ ALTPLL IP与ALTPLL RECONFIG IP介绍