原创 IIS与采样率的关系

2011-10-20 20:01 4030 6 9 分类: FPGA/CPLD

看IIS的spec的时候 知道他是有SCLK、LRCLK、CDCLK,可是到底为什么要有这些信号,他们对于IIS有什么样的作用,其实自己一直都不是很清晰,应该对于这个进行整理一下。

我们知道,IIS是有5个引脚——IISDI(数字音频信号输入)、IISDO(数字音频信号输出)、IISSCLK、IISLRCLK、IISCDCLK,前两个是用于数字音频信号的输入和输出,另外三个都是时钟信号。这三个信号对于IIS有着重要的作用。

IISSCLK为串行时钟,每一个时钟信号传送一位音频信号,因此IISSCLK的频率=声道数×采样频率×采样位数,如采样频率fs44.1kHz,采样的位数为16位,声道数2个(左、右两个声道),则IISSCLK的频率=32fs1411.2kHz

IISLRCK为帧时钟,用于切换左、右声道,如IISLRCK为高电平表示正在传输的是左声道数据,为低电平表示正在传输的是右声道数据,因此IISLRCK的频率应该正好等于采样频率。

由于IIS只负责数字音频信号的传输,而要真正实现音频信号的放、录,还需要额外的处理芯片(在这里,我们使用的是UDA1341),CDCLK为该芯片提供系统同步时钟,即编解码时钟,主要用于音频的A/DD/A采样时的采样时钟,一般CDCLK256fs384fs。(Fs为采样率)

fs不是任意设置的,一般基于不同的应用场合和听觉效果,而设置不同的几个固定的值,如8kHz16kHz22.05kHz44.1kHz48kHz96kHz等。

用于IIS的时钟源有???PCLKMPLLin???经过两个预分频器处理后分别得到IISSCLKIISLRCKCDCLK(预分频器A得到IISSCLKIISLRCK,预分频器B得到CDCLK)。寄存器IISPSRIIS预分频器寄存器,5~9位是预分频器A0~4位是预分频器B,一般来说,这两个预分频器的值N相等。

我们可以通过CDCLK来计算预分频器B的值N的,即CDCLKPCLK / (N1)PCLKFCLK有一定的比例关系,而FCLK又是由输入频率Fin得到。在这里,我们为了简化计算,不改变PCLKFCLK的比例关系(即维持在启动代码中定义的1:8的关系),那么由Fin而得到CDCLK一共涉及到四个参数:???MDIVPDIVSDIV和前面公式中的N???,涉及到的寄存器有MPLLCONIISPSR。因此要得到这四个参数值,就需要一点耐心地计算,原则是误差最小,其中需要注意的是,计算的结果(包括中间过程的结果)不要溢出,即不要超过32位。例如Fin12MHz,我们设置采样频率fs44.1kHz,而CDCLK384fs16.9344MHz,那么经过计算,最终得到N3MDIV150PDIV5SDIV0,即IISPSR = (3<<5) | 3;MPLLCON = (150<<12) | (5<<4) | 0;

有关IIS的寄存器除了IISPSR外,还包括:

1//IIS控制寄存器IISCON,主要用于控制数据传输的方式、预分频器和IIS接口是否开启;

2//IIS模式寄存器IISMOD,主要用于设置IIS的时钟源、主从方式、接收发送方式、串行接口方式、每个声道串行数据位数和各种频率值;

3//IISFIFO接口寄存器IISFCON用于设置和判断数据传输的FIFO状态;

4//寄存器IISFIFO则用于音频数据的传输。

由于s3c2440要实现IIS的录、放音,还需要UDA1341芯片。

s3c2440UDA1341之间除了我们前面介绍过的IIS接口相连接外,还有一个称之为L3总线的连接,用于s3c2440配置UDA1341内部的寄存器。由于s3c2440不具备L3总线接口,因此我们是用三个通用IO口来模拟L3,从而实现L3总线的传输。

UDA1341有两种模式:地址模式和数据传输模式。地址模式表示传输的是地址信息,它的高6位永远是000101,低两位表示的是传输的模式,是状态模式、数据0模式还是数据1模式,其中状态模式主要用于配置UDA1341的各类初始状态,数据模式主要用于改善音频输入、输出的效果。

 

 

文章评论3条评论)

登录后参与讨论

用户751325 2015-4-21 10:44

非常棒的讲解!!!!

用户377235 2013-1-26 18:28

非常不错。谢谢

用户377235 2012-4-11 20:43

讲的很详细,正好用上,非常感谢。。。
相关推荐阅读
用户1626069 2012-06-13 18:00
评论:@山水嘉宁 博客中提到的“FPGA学习的一些误区”
虽然我不是做FPGA的 也只是在工作中将FPGA作为一种工具 而且这里面有很多经验总结 我也只是一知半解 但是 还是要多学习 多总结的...
用户1626069 2012-02-01 18:33
2012-02-01日记
今天是星期三 要不是下午seminar的时候zhuo提醒要weekly report 我都忘记了 这个不可忘记 要记得 然后 shao今天seminar的格式挺好的 在知识介绍完后 再加上自己...
用户1626069 2012-01-31 18:18
2012-1-31日记
果然不出所料 PWM一天的时间就搞定了 可是做完以后却没有心思继续去做I2C了 恩 那就不做了吧 整理了一下旁边的书架 发现了好些还蛮不错但被自己忘却的资料 现在全都整理了一遍 恩 有时间的话可以...
用户1626069 2012-01-31 13:54
2012-1-30日记
唉 每天睡晚了以后就会变得很困 其实应该是早上的时候喝点咖啡的 就像昨天 喝完咖啡以后一整天都还是很精神的 而今天什么都没喝 所以就感觉脑子都不想工作的样子 得知 这次去韩国的日子又推迟了 变...
用户1626069 2011-12-26 17:19
评论:@longhaihai's Blog 博客中提到的“【转】基于ARM的SoC设计入门”
这篇文章写得很好 让我对于SoC的设计流程有了较为系统的理解 虽然很多地方还不是很清楚 但是要我知道了努力的方向 有时候刻意去寻找的东西倒是没有不经意间的发现让自己更收益 转发收藏 需要时不时的拿...
用户1626069 2011-12-26 15:03
评论:@xubuwei's Blog 博客中提到的“ROM、SDRAM、RAM、DRAM、SRAM、FLASH的区别”
最近在看存储器方面的内容 概念很不清晰 需要像这样的文章来指点~...
我要评论
3
6
关闭 站长推荐上一条 /2 下一条