I2S(Inter—IC Sound)总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的音频数据传输。I2S总线有三条数据信号线:
(1)BCLK:串行时钟,也叫位时钟,对应数字音频的每一位数据。
(2)WS:字段(声道)选择,用于选择左右声道。为“0”表示正在传输的是左声道的数据, 为“1”表示正在传输的是右声道的数据。
(3)SD:串行数据,用二进制补码来表示音频数据(数据传输从高位到低位)。

BLK=2*采样频率*采样位数
采样频率即WS的频率,采样位数即在WS的左右声道内采样的数据位数。

常见的I2S音频传输有48K,44.1Khz和32Khz三种采样率。传输的音频数据位宽常见的有16,20和24三种。I2S传输的数据是声音的模拟信号经过AD采样数字化后的数据,所以数据位宽越宽,数据的采样精度就越高。下图是I2S传输的波形图,I2S在BCLK的下降沿发送数据(发送),在上升沿进行数据采样(接收)。每次是先发送最高位,最后发送最低位。MSB在WS变化的下一个时钟周期有效。因此,最高位拥有固定的位置,而最低位的位置则是依赖于数据的有效位数。也就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位(常补足为零)。

I2S发送数据:发送是在每个时钟周期的下降沿发送数据,这样在WS沿变化开始后的第二个下降沿发送数据的最高位。接着在每个下降沿依次发送数据,直到发送完最低位。
I2S接收数据:在每个时钟周期的上升沿接收数据,在WS沿变化开始后的第二个上升沿接收数据的最高位。接着在每个位时钟上升沿依次接收数据,直到接收完最低位。

verilog实现I2S数据接收,下面是一个16位宽的I2S音频数据接收模块。主要通过移位的方式实现,由于接收时,数据是在第二个时钟上升沿采样MSB,所以L_count和R_count 都是从0计数到16计数了17次,相当于把第一个上升沿采样的无效数据删掉。

    reg [4:0]       L_count; //左声道接收数据计数reg [4:0]       R_count;//右声道接收数据计数reg [15:0]      L_data; //接收到的16位左声道数据reg [15:0]      R_data;//接收到的16位右声道数据reg             finish_flag;  //完成一次左右声道数据接收标志
//Bclk 为I2S的位时钟,sdata为I2S 位数据,LRclk为字段选择信号
always @(posedge    Bclk ,posedge RESET)beginif(RESET==1'b1)beginL_count <=  5'd0;R_count <=  5'd0;   L_data  <=  16'd0;R_data  <=  16'd0;finish_flag <=  1'b0;end else beginfinish_flag <=  1'b0;if(LRclk==1'b0)beginR_count <=  5'd0;if(L_count< 5'd17)beginL_count <=  L_count+1'b1;L_data  <=  {L_data[14:0],sdata};end             end else beginL_count <=  5'd0;if(R_count< 5'd17)beginR_count <=  R_count+1'b1;R_data  <=  {R_data[14:0],sdata};               endif(R_count==5'd16)beginfinish_flag <=  1'b1;endendend
end

I2S接口以及Verilog实现数据接收相关推荐

  1. I2S音频总线学习(四)I2S接口设计

    I2S音频总线学习(四)I2S接口设计 一.数据发送端的设计 图1 发送端 随着WS信号的改变,导出一个WSP脉冲信号,进入并行移位寄存器装入DATA LEFT或DATA RIGHT,从而输出数据被激 ...

  2. 酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章)...

    酷友观点/经验:支付接口返回数据接收地址,session数据丢失(或者说失效)的问题浅析(原创文章) 最近手头在开发一个游戏官网,在支付模块采用神州付技术支持,神州付数据表单中要求提供服务器返回地址和 ...

  3. 【ALB学习笔记】基于事件触发方式的串行通信接口数据接收案例

    基于事件触发方式的串行通信接口数据接收案例 广东职业技术学院  欧浩源 1.案例背景 之前写过一篇<基于多线程方式的串行通信接口数据接收案例>的博文,讨论了采用轮询方式接收串口数据的情况. ...

  4. 【精华贴】数字音频接口详解-I2S接口PCM/TDM接口PDM接口

    一.概述 数字音频接口DAI,即Digital Audio Interfaces,顾名思义,DAI表示在板级或板间传输数字音频信号的方式.相比于模拟接口,数字音频接口抗干扰能力更强,硬件设计简单,DA ...

  5. php接口 汉字出错 空,php接口开发时,数据解析失败问题,字符转义,编码问题(示例代码)...

    php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...

  6. STM32CubeMX HAL库串口+DMA数据发送不定长度数据接收

    参考资料:1.ST HAL库官网资料 2.https://blog.csdn.net/u014470361/article/details/79206352#comments 一.STM32CubeM ...

  7. matlab制作以太网数据接收上位机_Python制作串口通讯上位机

    串口通讯具有简单易用的特点广泛应用于测试设备的通讯和数据传递.单片机与计算机的通讯等,本案例基于Python语言制作一个用于接收燃油质量流量计的串口通讯上位机,实现数据的读取和保存. 1. 相关知识点 ...

  8. C# 三种方式实现Socket数据接收(经典)

    Stream.Read 方法 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数. 语法: public abstract int Read(byte[] buffer, in ...

  9. Spark之性能优化(重点:并行流数据接收)

    问题导读 1.如何减少批数据的执行时间? 2.Spark有哪些方面的性能优化? 3.有哪些错误我们需要关心? (一)减少批数据的执行时间 在Spark中有几个优化可以减少批处理的时间.这些可以在优化指 ...

  10. Linux:TTY串口驱动数据接收设置

    Linux的uart串口,无论是rs232格式的还是rs485格式的 ,最终都封装为tty接口.一般串口驱动都是芯片厂商开发好的.我们基本只要正确使用就能正常工作. 我这边开发的时候,使用应用层的测试 ...

最新文章

  1. Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
  2. [译]5.1. System Initialization Overview 系统初始化简介
  3. html不间断滚动图片,Javascript实现图片不间断滚动的代码
  4. python零基础入门建模_python基础教程之Python 建模步骤|python基础教程|python入门|python教程...
  5. 在Redhat 5.0 上安装Eclipse 3.6
  6. Fast RCNN 训练自己数据集 (1编译配置)
  7. VI和VIM编辑器深入学习笔记--基本vi命令
  8. python mapreduce函数_Map-reduce在Python高阶函数中的应用,python,用法,之,mapreduce
  9. Office Communication Server(OCS)2007 Communicator Web Access(CWA)的部署
  10. 减少if else的使用
  11. RPM ,yum工具
  12. 杭电oj 1000 c++ 版本
  13. 高级版本VS打开低版本VS工程,无法调试的问题
  14. java jni编译_从源码编译Android系统的Java类库和JNI动态库的方法
  15. SSI(Server Side Includeds)使用详解(转载)
  16. sphinx下的max_matches取值对SetLimits的影响
  17. ASP.NET Trick文章系列--使用State Server管理Session状态的另类经济用法
  18. 清闲逛论坛,发个我们团队常用的开发资源整理,跟兄弟们共享
  19. 循环map 取得键和值_Java 从 Map 到 HashMap 的一步步实现
  20. delphi代码在linux编译运行,[教程] Delphi 10.2 Linux 程序开发环境部署的基本步骤

热门文章

  1. educoder平台哪里有答案_GRE机经哪里找?如何获取准确的GRE机经资料
  2. 送给前端的干货 ,绝对经典的学习资料大全,js框架,css
  3. 亲测可用|奥维互动地图加载谷歌地图等图源的方法
  4. There is no more space for virtual disk. db_ sqlserver , vmdk.You might be able to continue this ses
  5. nodejs+vue+elementui宠物医院管理系统php-java-python
  6. 从闪迪的一个U盘看整个行业
  7. jsp连接MYSQL数据库教程(文字+图)
  8. 台式机安装黑苹果-新手教程
  9. Neat Download Manager-ndm下载器:短小精悍的mac下载工具
  10. HTML5+js+css3开心消消乐手机pc端通用源码|H5小游戏