0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

音频总线I2S协议:I2S收发模块FPGA的仿真设计

454398 来源:FPGA开源工作室 作者:FPGA开源工作室 2020-12-14 17:34 次阅读

1 概述

I2S(Inter—IC Sound)总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。I2S采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。

在飞利浦公司的I2S标准中,I2S主要有三个信号。

1.位时钟 BICK(也叫串行时钟SCLK),即对应数字音频的每一位数据,BCLK都有1个脉冲。BCLK的频率=2×采样频率×采样位数。

2.帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK的频率等于采样频率。

3.串行数据SDATA,就是用二进制补码表示的音频数据。

有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍或384倍。随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使用)、I2S格式(即飞利浦规定的格式)和右对齐(也叫日本格式、普通格式)。

以下是I2S Sample rate 44.1Khz 和48Khz部分系列。

pIYBAF9uEeOAREfrAAKRy1tR9Ao056.png

2 模式

左对齐模式:SDATA 的MSB在BCLK的第一个上升获得根据LRCK的传输。

o4YBAF9uEeWARAAXAAGl6CEKTZg274.png

I2S模式:SDATA 的MSB在BCLK的第二个上升获得根据LRCK的传输。

o4YBAF9uEeeAGY26AAGcbdLDkXY934.png

右对齐模式。

pIYBAF9uEemAWzNQAAFoPItf77Q218.png

3 I2S收发模块FPGA仿真设计

i2s_test模块为i2s_in和i2s_out模块的顶层,i2s_in模块将输入的串行数据转换成并行的数据,然后i2s_out模块将并行数据转换成串行数据输出。

o4YBAF9uEeyAUlupAAJGwtkJOfI729.png

I2s_in模块和I2s_out模块的接口说明如下。

pIYBAF9uEe-AQo1RAAJbn1Mz3mk306.png

o4YBAF9uEfOAQjRFAAO5Na1gqnI467.png

I2s test bench设计

让i2s_out模块将并行转为串行,然后使用i2s_in模块将串行转为并行。验证数据是否正确。

Test bench源码:
1. // test bench

2.

3. `timescale 1ps/1ps

4.

5. module tb32bitmaster();

6.

7. initial begin #600000000 $finish; end //600us

8.

9. reg preset_n;

10. initial begin preset_n = 1; #10000 preset_n = 0; #100000 preset_n = 1; end

11.

12. reg pclk;

13. initial begin pclk = 0; #313333 pclk = 0; forever #11072.1 pclk = ~pclk; end

14.

15. reg start;

16. initial begin start = 0; #400000 start = 1; end

17.

18. reg clkd2, clkd4, clkd8, clkd16;

19. wire reset_n = preset_n;

20.

21. always @(posedge pclk or negedge reset_n)

22. if (0 == reset_n)

23. clkd2

24. else

25. clkd2

26.

27. always @(posedge clkd2 or negedge reset_n)

28. if (0 == reset_n)

29. clkd4

30. else

31. clkd4

32.

33. always @(posedge clkd4 or negedge reset_n)

34. if (0 == reset_n)

35. clkd8

36. else

37. clkd8

38. always @(posedge clkd8 or negedge reset_n)

39. if (0 == reset_n)

40. clkd16

41. else

42. clkd16

43.

44.

45. wire bck, lrck, sdata;

46. wire [31:0] y0, y1;

47.

48. i2s_in U_i2s_in(

49. .mclk(pclk),

50. .reset_n(reset_n),

51.

52. .in_bck(bck),

53. .in_lrck(lrck),

54. .in_sdata(sdata),

55. //controls

56. //output

57. .source_left(y0),

58. .source_right(y1)

59. );

60.

61. i2s_out u_i2s_out(

62. .in_bck(clkd16),

63. .reset_n(reset_n),

64. .source_left(32'h5555_aaaa),

65. .source_right(32'haaaa_5555),

66. .obck(bck),

67. .olrck(lrck),

68. .odata(sdata)

69. );

70. endmodule

71.

72. `include "i2s_out.v"

73. `include "i2s_in.v"

从仿真结果看我们的i2s_out和i2s_in模块仿真设计成功。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601652
  • I2S
    I2S
    +关注

    关注

    1

    文章

    63

    浏览量

    41833
收藏 人收藏

    评论

    相关推荐

    全面解析I2S、TDM、PCM音频总线

    I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设
    发表于 09-20 10:58 1.2w次阅读

    音频接口I2S实验

    实验目的 1.掌握有关音频处理的实验原理及说明;2.通过实验了解I2S(Inter–ICSound)音频接口的工作原理;3.通过实验掌握对处理器S
    发表于 12-29 00:07 116次下载

    基于FPGA和AD1836的I2S接口设计

    I2S(Inter IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,它既规定了硬件接口规范,也规定了数字
    发表于 03-29 11:02 6538次阅读
    基于<b class='flag-5'>FPGA</b>和AD1836的<b class='flag-5'>I2S</b>接口设计

    CAN、I2SI2C、SPI、SSP总线的介绍和比较

    CAN、I2SI2C、SPI、SSP总线的介绍和比较。
    发表于 07-14 16:20 53次下载

    I2S设备和MSP430器件的连接指南

    介绍 MSP430系列微处理器是快速强大的设备,非常适合用于各种无线收发器。在流式音频应用程序,但是,它是理想的微处理器支持音频总线,允许互连到音频
    发表于 05-19 15:56 32次下载
    <b class='flag-5'>I2S</b>设备和MSP430器件的连接指南

    i2s总线协议及结构配置

    I2S总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一
    发表于 01-29 15:45 6742次阅读
    <b class='flag-5'>i2s</b><b class='flag-5'>总线</b><b class='flag-5'>协议</b>及结构配置

    i2s音频总线学习

    I2S是飞利浦公司针对数字音频设备(如CD播放器、数码音效处理器、数字电视音响系统)之间的音频数据传输而制定的一种总线标准。它采用了独立的导线传输时钟与数据信号的设计,通过将数据和时钟
    发表于 01-29 16:29 4230次阅读
    <b class='flag-5'>i2s</b><b class='flag-5'>音频</b><b class='flag-5'>总线</b>学习

    I2S接口工作原理_I2S接口介绍

    I2S总线, 又称 集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一
    发表于 01-29 17:18 10.7w次阅读
    <b class='flag-5'>I2S</b>接口工作原理_<b class='flag-5'>I2S</b>接口介绍

    几种常见的I2S数据格式

    I2S总线简单有效,可以有效提升输出数据的质量,在各种嵌入式音频系统中有广泛应用。但是在嵌入式音频系统设计中,并不是所有的MCU都支持I2S
    发表于 01-29 19:18 1.2w次阅读
    几种常见的<b class='flag-5'>I2S</b>数据格式

    I2S音频总线基本知识科普

    I2S(Inter—IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的
    的头像 发表于 04-12 07:48 2.9w次阅读
    <b class='flag-5'>I2S</b><b class='flag-5'>音频</b><b class='flag-5'>总线</b>基本知识科普

    基于MM32F5270控制器的I2S音频播放

    MM32F5270 系列控制器支持 I2S 总线接口,本章节在接下来会对 MM32F5270 I2S进行介绍,并使用 MM32F5270 和 CS4344 芯片进行 I2S 通信来演示
    的头像 发表于 09-16 10:39 2227次阅读

    I2S、TDM、PCM音频总线

    I2S包括两个声道(Left/Right)的数据,在主设备发出声道选择/字选择(WS)控制下进行左右声道数据切换。通过增加I2S接口的数目或其它I2S设备可以实现多声道(Multi-Channels)应用。
    的头像 发表于 09-20 11:01 4740次阅读

    基于MM32F5270的I2S音频播放

    基于MM32F5270的I2S音频播放
    的头像 发表于 10-30 17:13 1109次阅读
    基于MM32F5270的<b class='flag-5'>I2S</b><b class='flag-5'>音频</b>播放

    基于I2S接口的Linux内核音频技术

    I2S是飞利浦定义的数字音频传输标准,用于数字音频数据在系统内部器件之间传输。
    发表于 02-27 14:00 2718次阅读
    基于<b class='flag-5'>I2S</b>接口的Linux内核<b class='flag-5'>音频</b>技术

    I2S总线的定义和特点

    I2S(Inter-IC Sound)总线,又称为集成电路内置音频总线,是飞利浦公司(现为恩智浦半导体)为了数字音频设备之间的
    的头像 发表于 09-03 14:08 754次阅读