AN 509: 使用 Altera MAX 系列对 SDIO 器件进行多路复用

ID 683683
日期 9/22/2014
Public

1.2. 采用 MAX II 器件实现的 I2C 选择线路多路复用器

对具体实现的详细说明基于的是 MAX II 器件。 也可以在 MAX V 和 MAX 10 器件中实现此应用。

图 1 中的“MUX”代表着采用 MAX II 器件实现的单向多路复用器。 该多路复用器的选择线路通过一个 I2C 接口加以控制,该接口也在同一设备中实现。 因此,该多路复用器是一个 I2C 从器件,来自主机控制器的时钟线路连接到 SD 器件 A 或 SD 器件 B,具体取决于接收到的 I2C 数据。

图 2. MAX II 器件中的 I2C 选择线路 MUX 实现

MAX II 器件(I2C 从器件)中的 I2C 接口实现采用 7 位地址并遵循通用的 I2C 协议。 起始信号由主器件发送,后跟 7 位地址和一个读/写位。 当 I2C 总线上的地址广播与从器件的地址相匹配时,该器件就会发送一个 ACK(确认)信号。 根据主器件要求选择线路做出的选择,接下来会发送一个 DATA 字节。 然后,从器件会再发送一个 ACK 信号。 当主器件发送 Stop (P) 信号时,数据事务会话即告结束。

表 1.   I2C 接口引脚说明
信号 用途 方向
SCL I2C 时钟 输出
SDA I2C 串行数据 双向
图 3.  I2C 信号格式

本设计实例可以使用 EPM240G 或 EPM240 器件或者使用任何其他 MAX II 器件加以实现。 它在 I2C 总线环境中进行演示。 实现过程涉及到使用本设计实例的源代码,以及为 SD 器件 A 和 SD 器件 B 分配 I2C 总线线路、SD 主机控制器时钟线路、弹出线路及时钟线路。用于指示当前选择的 LED 指示灯连接到一个用来显示选择线路状态的已分配输出端口。 此 SD 多路复用器在 MDN-B2 演示电路板上借助于一个 I2C 仿真器加以演示。 该仿真器使用 PC 并行端口和接口硬件加以创建,用以创建符合 I2C 要求的双线式总线。MDN-B2 配有两个 SD 插槽以容纳两个 SD 器件(要进行多路复用);此外还配备一个 SD 卡形状的 PCB 适配器,该适配器可插入到 SD 主机的标准 SD 插槽中。

此实用程序使用并行端口及其硬件接口来与基于 MAX II 的多路复用器相连,并提供 I2C 双线式系统上所需的 SDA 和 SCL 连接。 实现后,此设计允许 I2C 主器件(或 Maxim 实用程序的控制面板)控制 MDN-B2 上基于 MAX II 的多路复用器的选择线路。 下表列出了本设计实例的 EPM240G 引脚分配情况。

表 2.  采用 MDN-B2 演示电路板的设计实例的 EPM240G 引脚分配情况请在 Quartus® II 软件中将未使用的引脚分配为三态输入。 还必须对 SCLKSDA 引脚启用 Auto Open-Drain 设置。 为此,请在 Assignments 菜单中,单击 Settings,然后选择 Analysis and Synthesis Settings 以启用 Auto Open-Drain 设置。 这些设置后紧跟着一个编译周期。
信号 引脚 信号 引脚
APD_inhibit 引脚 14 APD_inhibit_inv 引脚 12
eject 引脚 64 SCLK 引脚 39
SDA 引脚 40 sdA_clock 引脚 2
sdB_clock 引脚 7 sd_host_clock 引脚 28
sel 引脚 76