当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:随着I2C总线应用的越来越广泛,其电路简单,编程方便,易于系统标准化与维护的优点也日益显现出来。 文章在分析了I2C总线的基本概念和工作原理的基础上,重点介绍了基于Wolfson音频SoC的I2C总线接口的系统结 构和程序设计方法。

引言

I2C(Inter-IntegratedCommunication),单线是Philips公司开发的一种高效、简单、双向、两线制同步串行总线,它仅需要两根线(串行数据线SDA和串行时钟线SCL)即可为连接到总线的设备提供简单有效的数据交换方式该总线可将各电路分割成各种功能的模块,并进行软件化设计,各个功能模块电路内部都集成有一个I2C总线接口电路,故可连接在总线上,从而很好地进行众多功能模块与MCU之间的输入输出接口,并使连接方式变得简便,同时可灵活地实现在线配置。本文采用VerilogHDL设计了一个FC总线的控制模块,该模块能够实现FC的所有功能。此外,该模块可作为一个软核来方便地嵌入到音频SoC系统中,这就是当前非常流行的两线总线。

1 I2C总线原理

通常将FC总线主从机之间的一次数据传送称为一帧,一帧数据一般由启动信号、地址码、若干数据 字节、应答信号位以及停止信号等组成。SDA SCL都通过一个电流源或者上拉电阻连接到正的电 源电压,图1所示是rc总线上标准模式器件和快速 模式器件之间的连接电路,由图1可见,当总线空闲 时,这两条线路都是高电平,连接到总线的器件输出 级必须是漏极开路或者集电极开路才能执行“线与” 的逻辑功能。串行8位双向数据传输位速率在rc 总线的标准模式下,其速率可达100 Kb/s,快速模式 下可达400 Kb/s,高速模式下可达3. 5 Mb/s。

基于Wolfson音频SoC的I2C总线接口设计

I2C总线可构成多主和多从系统。在系统结构中,系统通过硬件或者软件仲裁获得总线控制权。在应用系统中,I2C总线多采用主从结构。I2C总线上的设备寻址由器件地址线决定,与总线相连的每个器件都对应一个特定的地址,同时采用软件寻址方式,并且可以通过访问地址最低位来控制W/R方向。I2C总线的数据传输格式如图2所示。

基于Wolfson音频SoC的I2C总线接口设计

I2C总线上发送数据的操作(针对WM8731/8731L类似的设备)过程一般可为4步:

第一步,启动START信号,接着写一个字节的设备地址,地址字节的高7位是设备有效地址,地址字节的最低1位代表准备写(低电平),然后等待ACK应答;

第二步,应继续写一个字节的rc设备内部数据访问地址,然后等待发出ACK;

第三步即可开始发送数据,发送的数据可以是一个字节,也可以连续发送N个字节,每发送完一个字节的数据,都需要等待一个应答ACK信号;

最后发送的是一个STOP信号,以结束发送操作。

在I2C总线上接收数据的操作(针对WM8731/8731L类似的设备)过程如下:

第一步,也是启动START信号,接着写一个字节的设备地址,地址字节的高7位是设备有效地址,地址字节的最低位代表准备写(低有效),然后等待ACK应答;

第二步,继续写一个字节的I2C器件内部数据访问地址,并等待ACK;

第三步,再次启动START信号,此时再写一个字节的设备地址,这个设备地址字节的最低1位若为高电品,则代表准备接收数据;

第四步,开始接收数据,数据可以是接收一个字节,也可以连续接收N个字节。在接收前面的N—1个字节后,每接收一个字节数据,都要产生一个ACK;

第五步,在接收最后一个字节数据前停止控制器生成ACK信号,然后等待最后一个字节的数据就绪后,再读取;

最后,发送一个STOP信号,以停止接收操作。

2 I2C总线的接口设计

2.1  总体内部架构设计

图3所示为rc总线接口中ip核的总体结构。该接口主要包括时钟发生器,字节命令控制器、位命令寄存器、数据I/O移位寄存器、发送与接收寄存器等几部分。

基于Wolfson音频SoC的I2C总线接口设计

时钟发生器可用于产生时钟使能信号,该信号可触发位命令控制器的所有时钟同步操作。

字节命令控制器承担着I2C接口字节数据的传输任务。它从I2C寄存器中的命令寄存器中读取操作命令。这些命令可通过设置该寄存器中的某些位来完成,并且都是以字节为单位。

位命令寄存器负责总线上实际的数据传输工作,包括START和STOPo这些操作可通过控制SCL和SDA线来实现。

数据I/O移位寄存器中存储着当前数据传输所需要的数据。如果是读操作,移位寄存器将接收从SDA线上的逐位数据;如果是写操作,移位寄存器则将该数据逐位发送到SDA线上。

2.2 I2C接口控制器

I2C总线是通过二根线来连在器件之间进行通信的总线,它可根据地址识别每个器件。每个I2C设备都有自己固定的硬件地址。对于芯片WM8731/WM8731L的FC总线它的两个从地址为001_1011和001_1010oWM8731设备的控制操作可以描述为:首先发出该设备地址,和该设备建立连接,再向该设备读或写2个字节的数据,最后发出停止信号以结束I2C通讯。

对WM8731的控制实际上就是控制FC设备读/写数据,本文不涉及读数据而只介绍部分rc总线写数据的关键Verilog程序设计。

2.3  启动与停止程序

检测通讯启动与停止的Verilog程序如下:

always@(posedge mclk or negedge reset_n)

基于Wolfson音频SoC的I2C总线接口设计

在主机方式下,完成启动与地址信号发送后,即开始发送数据。发送数据时,并串数据在SCL的下降沿移位,这样可保证SCL高电平时SDA数据的稳定。发送的进程由WR信号和从机的应答信号启动。为了保证时序正确和控制的可靠,软件程序可采用有限状态机来设计。其Verilog程序如下:

基于Wolfson音频SoC的I2C总线接口设计

基于Wolfson音频SoC的I2C总线接口设计

基于Wolfson音频SoC的I2C总线接口设计

3 仿真结果

设计时,可以釆用Xilinx公司的集成开发工具ISE9.0,仿真工具使用SYNPOSYS的VCS仿真软件,图4所示是其仿真波形,由图可见,该设计是正确的。整个设计可以采用Verilog语言描述在LINUX平台上完成系统的仿真、综合、映射、布局。在得到正确的仿真结果后,通过器件编程(即通过编程器将设计下载到实际芯片中)来进行系统调试,直到最后实现。

基于Wolfson音频SoC的I2C总线接口设计

4  结语

本文介绍了一种简易的音频soc的I2c总线接口的软件设计方法。该设计可以作为一个ip核方便地嵌入音频SoC的系统设计中,以用于对具有I2c接口的芯片ic芯片进行数据读写。目前,本设计已经在实践项目中投片,并已经通过实际系统的测试。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

西门子数字化工业软件推出 Veloce™ CS 硬件辅助验证和确认系统。该系统融合了硬件仿真、企业原型验证和软件原型验证,并依托于两个先进的集成电路 (IC) ——用于硬件仿真的西门子专用 Crystal 加速器芯片,以...

关键字: SoC 加速器

芯科科技推出其迄今最高能量效率且支持能量采集功能的无线SoC

关键字: 物联网 能量采集 SoC

Bluespec支持加速器功能的RISC-V处理器将Achronix的FPGA转化为可编程SoC

关键字: RISC-V处理器 FPGA SoC

· Ceva-Waves™ Links™ IP系列提供完全集成的多协议连接解决方案,包括Wi-Fi、蓝牙、UWB、Thread、Zigbee和Matter,为下一代连接协议丰富的MCU和SoC简化开发工作并加快上市时间

关键字: 人工智能 MCU SoC

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

2024 年 4 月 9 日,德国纽伦堡(国际嵌入式展)——AMD(超威,纳斯达克股票代码:AMD)今日宣布扩展 AMD Versal™ 自适应片上系统( SoC )产品组合,推出全新第二代 Versal AI Edge...

关键字: AI SoC ADAS

加利福尼亚州桑尼维尔,2024年3月29日–新思科技(Synopsys, Inc.,纳斯达克股票代码:SNPS)近日宣布完成对Intrinsic ID的收购,后者是用于系统级芯片(SoC)设计中物理不可克隆功能(PUF)...

关键字: 硅片 半导体 SoC

全球知名半导体制造商罗姆(总部位于日本京都市)与领先的车规芯片企业芯驰科技面向智能座舱联合开发出参考设计“REF66004”。该参考设计主要覆盖芯驰科技的智能座舱SoC*1“X9M”和“X9E”产品,其中配备了罗姆的PM...

关键字: 智能座舱 SoC LED驱动器

TrustFLEX 器件搭配可信平台设计套件,将简化从概念到生产的信任根启用过程,适用于广泛的应用领域

关键字: 控制器 闪存器件 SoC

Arm Neoverse S3 是 Arm 专门面向基础设施的第三代系统 IP,应用范围涵盖高性能计算 (HPC)、机器学习 (ML)、边缘和显示处理单元,是新一代基础设施系统级芯片 (SoC) 的理想技术根基。Neov...

关键字: 机器学习 SoC 系统 IP
关闭
关闭