I2S协议及在verilog中实现——(一)I2S协议

  • I2S协议内容
    • 基本介绍
    • 常见标准
    • 时序图解析
      • 信号说明
    • 工作原理

参考文章: http://www.only2fire.com/archives/108.html
灵感来源&图源: https://blog.csdn.net/jackailson

I2S协议内容

基本介绍

I2S协议的作用:传输音频数据,即将音频的波(并行信号)转化成一位一位的数据(串行信号),也就是并行转串行的一个协议,通过2个时钟控制左右声道和串行数据传输。常用于AD采集卡、DA输出等。

优点:由于采用独立的导线分离时钟信号和数据,所以能够较好的控制数据输出的时刻,减小了音频抖动

常见标准

飞利浦原始标准

左对齐标准

右对齐标准

时序图解析

信号说明

I2S协议中必不可少的三个信号为LRCK、BCLK和DATA。常用信号还有主时钟信号CLK,使能信号in_valid,数据的首位或末位信号MSB和LSB。

LRCK:帧时钟,用于判断输出数据为左声道和右声道,例如飞利浦标准中的LRCK高电平则传输右声道数据,低电平则传输左声道数据。频率可以自行调节,但需要保证每个LRCK时钟周期内BCLK时钟的数量大于数据位数。

BCLK:串行时钟,用于传输数据的时钟,每个BCLK的下降沿传输一位DATA数据,BCLK的时钟频率一般为2×采样频率×采样位数,因为要保证每秒所采的数据要全部通过BCLK控制输出。

DATA:音频数据,通常为AD采集后发送过来的波形信号一位一位传输,即并行转串行。
*CLK:主时钟,频率至少为BCLK的一倍。
*in_valid:使能信号,自己依照整体的顶层模块设计,用于控制整体的使能开关。
*MSB和LSB信号用于判断输出数据的首位和末位,进而决定

工作原理

(标准对齐和左对齐)由LRCK信号的高、低电平来判断输出左声道或右声道,每个BCLK的下降沿进行一位数据的传输,通过BCLK来决定每一位数据的输出,即每个BCLK的下降沿将输入进来数据的某一位赋值给DATA进行输出,进行程序设计时不需要MSB信号进行判断首位,但是对于LSB信号也要根据需求判断是否需要。
(右对齐)工作原理与上述基本相同,但对于MSB和LSB的判断需要根据硬件进行设计。

I2S协议及在verilog中实现相关推荐

  1. FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析

    FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...

  2. 音频(二)——I2S 协议

    I2S 协议详解 信号线定义 各个信号线的功能及描述见下表 信号线 描述 MCLK 主时钟,也叫系统时钟(Sys Clock),为了使系统间能够更好的同步,MCLK的频率=256fs 或384fs(f ...

  3. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

  4. verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser

    前面提到用flex和bison开处理命令行参数,回顾一下:开源仿真工具Icarus Verilog中的命令行参数处理方法. 那么Verilog的parser又是怎么实现的呢?简单地说,与做命令行参数的 ...

  5. FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?

    前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维 ...

  6. Verilog初级教程(21)Verilog中的延迟控制语句

    文章目录 前言 正文 延迟控制语句 事件控制语句 Named Events Event or operator 往期回顾 参考资料及推荐关注 前言 Verilog中的延迟控制有两种类型–延迟和事件表达 ...

  7. Verilog初级教程(20)Verilog中的`ifdef 条件编译语句

    文章目录 前言 正文 语法 示例 Testbench文件 往期回顾 参考资料及推荐关注 前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使 ...

  8. Verilog初级教程(15)Verilog中的阻塞与非阻塞语句

    文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...

  9. Verilog初级教程(14)Verilog中的赋值语句

    文章目录 前言 正文 合理的左值 过程性赋值(Procedural assignment) 连续赋值 过程连续性赋值 往期回顾 前言 何为赋值语句?即将值放到线网或者变量上,这种操作称为赋值,英文:a ...

  10. Verilog初级教程(12)Verilog中的generate块

    文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...

最新文章

  1. rosetta软件_苹果 Mac 换用 ARM,但不用担心跑 X86 软件会卡
  2. 寻找项目中顶级Vue对象 (一)
  3. PHP 接口开发注意事项
  4. 解决 - java.lang.OutOfMemoryError: unable to create new native thread
  5. c语言语言教程0基础_C语言基础
  6. 在终端设备上实现语音识别:ARM开源了TensorFlow预训练模型
  7. matlab复杂网络仿真,matlab在复杂网络上的应用
  8. JUnit报错:Java.lang.Exception: No runnable methods解决方案
  9. jdk中java程序调试_jcmd:JDK14中的调试神器
  10. MySQL学习(二、简单查询和多行、单行函数)
  11. 天涯明月刀龙吟曲服务器维护,青龙大区合服公告 12月11进行数据互通
  12. 常见视频接口知识点汇总(精华)
  13. cmf5 excel 导入
  14. A slightly scary story on Amazons
  15. MediaWiki 在 CentOS 下的安装使用
  16. LG WebOS TV降级方法
  17. 我爱刷题001-2018.02.01
  18. android视频解码数据分辨率改变,Android实现任意分辨率视频编码的思考与实现
  19. 使用Google Analytics来统计网站流量
  20. 性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于破解了

热门文章

  1. 全面解析用户故事地图
  2. oppo r11s鸿蒙固件,OPPO R11s刷机包
  3. spss数据分析_相关分析
  4. 易语言超文本浏览框支持html5,易语言 修改ie版本:使超文本浏览框或互联网浏览器变成IE9 IE10 IE11等版本...
  5. React组件Input输入拼音时触发搜索的解决方案
  6. 一文搞懂 Java 中的 Native 方法
  7. PTA-Python题库(浙大版Python程序设计教材对应练习) 题解索引
  8. 华为盒子EC6110-T-通刷-免拆刷机固件及教程
  9. SPSS编程-统计自动化-Python脚本开发
  10. echarts地图自动轮播