I2S协议及在verilog中实现
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中实现相关推荐
- FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析
FPGA学习之路--I2C协议详解+Verilog源码分析 定义 I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半导体(现被NXP收购)开发的两线时 ...
- 音频(二)——I2S 协议
I2S 协议详解 信号线定义 各个信号线的功能及描述见下表 信号线 描述 MCLK 主时钟,也叫系统时钟(Sys Clock),为了使系统间能够更好的同步,MCLK的频率=256fs 或384fs(f ...
- Objective-C 入门(七)协议 protocol(JAVA中的接口)
Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...
- verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser
前面提到用flex和bison开处理命令行参数,回顾一下:开源仿真工具Icarus Verilog中的命令行参数处理方法. 那么Verilog的parser又是怎么实现的呢?简单地说,与做命令行参数的 ...
- FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?
前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维 ...
- Verilog初级教程(21)Verilog中的延迟控制语句
文章目录 前言 正文 延迟控制语句 事件控制语句 Named Events Event or operator 往期回顾 参考资料及推荐关注 前言 Verilog中的延迟控制有两种类型–延迟和事件表达 ...
- Verilog初级教程(20)Verilog中的`ifdef 条件编译语句
文章目录 前言 正文 语法 示例 Testbench文件 往期回顾 参考资料及推荐关注 前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使 ...
- Verilog初级教程(15)Verilog中的阻塞与非阻塞语句
文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...
- Verilog初级教程(14)Verilog中的赋值语句
文章目录 前言 正文 合理的左值 过程性赋值(Procedural assignment) 连续赋值 过程连续性赋值 往期回顾 前言 何为赋值语句?即将值放到线网或者变量上,这种操作称为赋值,英文:a ...
- Verilog初级教程(12)Verilog中的generate块
文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...
最新文章
- rosetta软件_苹果 Mac 换用 ARM,但不用担心跑 X86 软件会卡
- 寻找项目中顶级Vue对象 (一)
- PHP 接口开发注意事项
- 解决 - java.lang.OutOfMemoryError: unable to create new native thread
- c语言语言教程0基础_C语言基础
- 在终端设备上实现语音识别:ARM开源了TensorFlow预训练模型
- matlab复杂网络仿真,matlab在复杂网络上的应用
- JUnit报错:Java.lang.Exception: No runnable methods解决方案
- jdk中java程序调试_jcmd:JDK14中的调试神器
- MySQL学习(二、简单查询和多行、单行函数)
- 天涯明月刀龙吟曲服务器维护,青龙大区合服公告 12月11进行数据互通
- 常见视频接口知识点汇总(精华)
- cmf5 excel 导入
- A slightly scary story on Amazons
- MediaWiki 在 CentOS 下的安装使用
- LG WebOS TV降级方法
- 我爱刷题001-2018.02.01
- android视频解码数据分辨率改变,Android实现任意分辨率视频编码的思考与实现
- 使用Google Analytics来统计网站流量
- 性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于破解了
热门文章
- 全面解析用户故事地图
- oppo r11s鸿蒙固件,OPPO R11s刷机包
- spss数据分析_相关分析
- 易语言超文本浏览框支持html5,易语言 修改ie版本:使超文本浏览框或互联网浏览器变成IE9 IE10 IE11等版本...
- React组件Input输入拼音时触发搜索的解决方案
- 一文搞懂 Java 中的 Native 方法
- PTA-Python题库(浙大版Python程序设计教材对应练习) 题解索引
- 华为盒子EC6110-T-通刷-免拆刷机固件及教程
- SPSS编程-统计自动化-Python脚本开发
- echarts地图自动轮播