AN 502: 在 Altera MAX 系列中实现 SMBus 控制器

在 Altera MAX 系列中实现 SMBus 控制器
2014.09.22
AN-502
订阅
反馈
本设计实例说明如何为 Altera® MAX® II、MAX V 和 MAX 10 器件实现系统管理总线 (SMBus) 控
制器。
SMBus 作为 I2C 的一种衍生形式,是一种双线式接口;借助这种接口,各个系统组件可以相互通
信。 在任何时刻,都只能有一个器件以这种总线的主器件身份与一个或多个从器件执行事务。
借助 SMBus,可以:
• 使用 SMBus 作为控制总线来执行与系统和电源管理相关的任务
• 去除各条控制线路,因为使用 SMBus 即可与多个设备进行通信
采用这种设置时,可以减少引脚数量,确保设计在未来能够扩展。
相关链接
• MAX II 设计实例
提供与这篇应用笔记 (AN 502) 对应的 MAX II 设计文件。
• MAX 10 设计实例
提供与这篇应用笔记 (AN 502) 对应的 MAX 10 设计文件。
• 采用 MAX II CPLD 在便携式系统中实现电源管理
• MAX II CPLD 设计指南
使用 MAX II 器件作为 SMBus 控制器
对具体实现的详细说明基于的是 MAX II 器件。 也可以在 MAX V 和 MAX 10 器件中实现此应用。
可以使用 EPM1270 来实现这种设计。 设计源代码经过编译后会被编程到 MAX II 器件中。 主机接
口端口和 SMBus 线路会被映射到方便的 I/O 引脚。
MAX II 器件是一款低成本、低功耗器件。 SMBus 规范定义了两类电气特性: 低功耗与高功耗。
在 MAX II 器件中实现可确保 SMBus 以低功率运行的 SMBus 控制器在任何低功耗应用领域都是理
想的解决方案。
MAX II 器件在主机(例如,微控制器或微处理器)与 SMBus 之间起到桥接作用。 控制器纳入了
一个主机接口和一个 SMBus 接口,控制信号从前者传送到后者。 所设计的控制器既可用作主器
件,也可用作从器件。
SMBus 控制器位于通用微控制器总线(包含地址、数据和控制信号)与 SMBus 之间。 它将自己
以外设的形式呈现给微控制器,在 SMBus 上则呈现为 SMBus 器件(主器件或从器件)。
© 2015 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are
trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as
trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance
of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any
products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information,
product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device
specifications before relying on any published information and before placing orders for products or services.
www.altera.com
101 Innovation Drive, San Jose, CA 95134
ISO
9001:2008
Registered
2
AN-502
2014.09.22
SMBus 上的数据传输
图 1: SMBus 结构图
Microcontroller
Generic Interface
(ADD, DAT, CTRL)
Host interface
MAX II
Device
SMBus interface
SMBDAT
SMBCLK
SMBus 上的数据传输
这种总线上主器件与从器件间的通信包含 START 阶段、从地址阶段、数据传输阶段和 STOP 阶
段。
下面是各个通信阶段的具体流程:
1.
2.
3.
4.
在 START 阶段后,发送从地址。
只有地址与主器件所发送的地址相匹配的从器件才会通过发回确认位加以响应。
完成从器件寻址后,数据传输将逐字节进行。
主器件可以通过生成 STOP 信号来释放总线,从而终止通信。
总线接口逻辑执行以下功能:
•
•
•
•
•
在主模式与从模式之间切换
生成 START/STOP 信号
生成数据包错误代码 (PEC)
读/写模式
错误通知
在本设计实例中纳入了以下特性:
•
•
•
•
•
•
Altera 公司
通用且简单的微控制器接口
主和从操作模式
可自动从主模式切换到从模式的仲裁丢失中断机制
主模式下的 PEC 生成和验证
98.215 KHz 操作
主模式和从模式下的时钟低电平扩展
在 Altera MAX 系列中实现 SMBus 控制器
反馈
AN-502
2014.09.22
3
主机接口
图 2: SMBus 数据传输
A: SMBDAT
B: SMCLK
A
MSB
B
1
ack
2
7
8
ack
9
1
2
9
Clock line held low
while byte processed
START
主机接口
SMBus 控制器的主机接口使用接口信号和寄存器作为通用接口来与主机通信。
接口信号
SMBus 控制器采用由下表中所示信号组成的异步接口。
表 1: SMBus 控制器的异步接口信号
除了处于有效低电平的 CS 以外,所有信号都处于有效高电平。 当 CS 处于高电平时,除中断请求 (IRQ)
外,所有其他线路都会变为三态。
信号
连接
说明
ADDRESS BUS [8]
输入
用于选择所需寄存器的 μC 地址总线。
DATA BUS [8]
双向
μC 数据总线。
IRQ
输出
中断请求。
BUSY
输出
指示总线是处于空闲状态还是处于忙状态。
CS
输入
芯片选择。
RD
输入
将所选寄存器的数据放入数据总线。
WR
输入
将数据总线上存在的数据写入到所选的寄存器。
RESET
输入
将控制器复位。
寄存器
主机接口包含地址寄存器、数据寄存器和状态寄存器。 每个寄存器都有各自的对应地址。
表 2: 地址寄存器、数据寄存器和状态寄存器
A1 和 A0 是 8 位宽地址总线的最后两位,其中 A0 为最低有效位 (LSB)。 该总线的其他六个位全为零(如
有必要,可加以更改)。
A1
A0
1
1
在 Altera MAX 系列中实现 SMBus 控制器
反馈
所选的寄存器
地址寄存器
Altera 公司
4
AN-502
2014.09.22
地址寄存器
A1
A0
0
0
数据寄存器
1
0
状态寄存器
所选的寄存器
地址寄存器
地址寄存器是一种 8 位寄存器,用于存储控制器从模块的地址。
表 3: 地址寄存器
可以使用 LSB 来启用或禁用控制器以及作为控制器地址的其余 7 个位。 如果设置了 LSB,则控制器将处
于启用状态。 如果将其清零,则会强制控制器在检测到总线上当前正在发送其地址时不予响应。
位
名称
说明
7..1
从地址
控制器的地址(在从模式下)
0
启用/禁用
如果设置此位,则启用控制器
数据寄存器
数据寄存器包含要写入到 SMBDAT 线路或要从该线路读取的数据。 该寄存器用于在 SMBDAT 线
路与主机之间传送数据。
表 4: 数据寄存器
位
名称
7..0
数据寄存器
说明
SMBus 数据
状态寄存器
状态寄存器包含正在执行的进程的状态信息。
表 5: 状态寄存器的位
如果控制器生成 STOP 信号,则会将状态寄存器清零。 状态寄存器中只有位 4 至 0 是由主机写入的。 其
余位的值不应由主机更改。 所有寄存器都可供读取和/或写入。
Altera 公司
说明
位
名称
7
AM
在从模式下地址匹配时,由 SMBus 控
制器设置
6
DTE
如果仅在从模式下数据无法传送,则由 在下一项主/从操作前由主机清零
SMBus 控制器设置
5
AL
仲裁丢失
正常操作
4
M/S
SMBus 控制器正在以主器件身份工作
SMBus 控制器正在以从器件身份工
作
3
R/W
强制 SMBus 控制器从 SMBDAT 读取数
据
“强制 SMBus 控制器将数据写入到
SMBDAT”
设置
清零
完成要在从模式下执行的操作后,
由 SMBus 控制器清零
在 Altera MAX 系列中实现 SMBus 控制器
反馈
AN-502
2014.09.22
与 SMBus 控制器进行通信
位
名称
2
PEC
1
0
5
说明
设置
清零
“仅在从器件启用了 PEC 时才处于主
模式”
由微控制器清零
STOP
生成停止条件
正常操作
START
生成开始条件
正常操作
与 SMBus 控制器进行通信
每当主机需要与控制器进行通信时,它都应先读取状态寄存器来确定控制器的当前状态,并在必
要时向该寄存器中执行写入,然后再向其他寄存器中执行写入。
写周期
图 3: 写周期的时序图
indicates high impedance
CS
ADDRESS BUS
Z
Z
DATA BUS
Z
Z
tsu:min
WR
tHD:min
RD
下文对写周期进行了说明:
1. 将 CS 置低。
2. 将所需寄存器的地址置于地址总线上。
3. 将数据置于数据总线上。
在 Altera MAX 系列中实现 SMBus 控制器
反馈
Altera 公司
6
AN-502
2014.09.22
使用状态寄存器
读周期
图 4: 读周期的时序图
indicates high impedance
CS
ADDRESS BUS
Z
Z
tsu:min
RD
DATA BUS
Z
Z
WR
下文对读周期进行了说明:
1. 将 CS 置低。
2. 将所需寄存器的地址置于地址总线上。
3. 将 RD 置位以便从数据总线读取数据。
注意: 读/写操作始终会读取/写入整个寄存器。 无法对单个位执行操作。
使用状态寄存器
如果主机希望将控制器配置为主模式,以便在启用了 CRC 校验的情况下执行读取操作,则:
1. 主机会设置状态寄存器的 START、PEC、R/W 和 M/S 位。 将总线上传送的第一个数据字节
(要传送的从器件地址)写入到数据寄存器。
2. 控制器随后会以串行方式输出 SMBDAT 线路上的数据。
3. 控制器收到确认后,控制器会读取一个数据字节并中断主机,主机此时则应从数据寄存器读取
数据。
4. 如果主机当前未从数据寄存器读取数据,控制器将等待大约 32 毫秒,然后设置 IRQ 和
busy_bus 信号。
5. 如果主机希望控制器在读取一个数据字节后生成停止条件,主机会设置状态寄存器中的 STOP
位。 如果设置了 PEC 位,则会在读取两个字节后生成 STOP 位。 如果未设置 PEC 位,则仅读
取一个数据字节后就会生成 STOP 位。
IRQ 信号
如果 IRQ 信号走高,则意味着存在中断请求。 如果出现以下情况,IRQ 会在主写、主读和从模式
下变为高电平。
在主写模式下:
Altera 公司
在 Altera MAX 系列中实现 SMBus 控制器
反馈
AN-502
2014.09.22
BUSY 信号
7
• 如果写入到数据寄存器中的数据字节成功发送,则会向主机发出将下一字节写入到数据寄存器
的指示。
• 如果未收到从器件对所发送数据的确认。
• 如果仲裁丢失。
• 在 PEC 设置模式下,如果在设置 STOP 位后 IRQ 依然走高,则会指示接收自从器件的 PEC 与
控制器生成的 PEC 不匹配。
在主读模式下:
1. 如果未收到任何从器件对 SMBDAT 线路上传送的地址的确认。
2. 如果收到从器件发来的一个数据字节,从而向主机发出读取该字节的指示。
3. 如果仲裁丢失。
在从模式下(此控制器不支持在从模式下延长时钟低电平):
• 如果从主器件接收到的地址与地址寄存器中的数据相匹配。
• 如果完成了在 SMBDAT 线路上读/写一个数据字节的操作,从而向主机发出指示。
BUSY 信号
BUSY 信号指示的情况如下:
• 如果已置位,则 BUSY 信号指示数据正在 SMBDAT 线路上传送。
• 如果 IRQ 已置位且 BUSY 信号处于低电平,则指示当前模式在执行过程中未出现任何错误。
• 如果 BUSY 信号处于低电平时未在执行任何操作,则指示 SMBus 总线上无活动(即 SMBus 处
于空闲状态)。
• 如果 IRQ 与 BUSY 信号一起置位,则指示当前操作失败。
如果出现以下情况,则 BUSY 信号会在主模式和从模式下变为高电平。
在主模式下:
•
•
•
•
尚未收到来自从器件的确认。
仲裁丢失。
在 IRQ 置位后主机的响应耗时超过 32 微秒(近似值)。
在主读模式下收到的 PEC 与控制器计算的 PEC 不相同。
在从模式下:
• 在从写模式下尚未收到确认。
• IRQ 置位后,主机无法在 SMBCLK 线路上的时钟处于低电平期间做出响应。
• 在 SMBus 上检测到 STOP 条件。
版权声明
适合于 Altera MAX 10 FPGA 的设计实例的提供者为:
Orchid Technologies Engineering and Consulting, Inc.
Maynard, Massachusetts 01754
电话: 978-461-2000
在 Altera MAX 系列中实现 SMBus 控制器
反馈
Altera 公司
8
AN-502
2014.09.22
文档修订历史
网站: www.orchid-tech.com
电子邮件: info@orchid-tech.com
文档修订历史
日期
版本
2014 年 9 月
2014.09.22
2007 年 12 月
1.0
Altera 公司
更改内容
• 增加了器件
• 更新了模板
• 重新设计了文档结构
初始版本
在 Altera MAX 系列中实现 SMBus 控制器
反馈