康宾 周玉娟
(中国电子科技集团公司第五十四研究所,河北石家庄 050081)
I2C,SPI,SMI,SMBus串行接口实现方法
康宾 周玉娟
(中国电子科技集团公司第五十四研究所,河北石家庄 050081)
I2C、SPI、SMI(MDC、MDIO)、SMBus等接口受时钟频率的限制,相对于高速运行的CPU芯片来说接口运行速度较慢。但并不是所有CPU芯片都支持这些串行接口,在很多系统中需要解决CPU芯片与串行接口芯片的互联问题。本文提出三种CPU芯片与串行接口互联方案,其中方案一使用CPU芯片的GPIO接口与串行接口芯片互联,方案二CPU芯片通过FPGA芯片与串行接口芯片间接互联,方案三FPGA的SOPC技术代替CPU芯片与串行接口芯片互联。
I2C SPI SMI(MDC、MDIO) SMBus FPGA SOPC
为了减小芯片的体积,减小布线的复杂度,提高系统的可靠性以及集成度,越来越多的芯片采用串行I2C接口、SPI接口、SMI
(MDC、MDIO)接口、SMBus接口等;例如EEPROM、FLASH、以太网PHY芯片,锁相环芯片,温度测量芯片、光电转换模块等。
串行接口使用简单,用2到4根信号就可以完成芯片初始化、配置、运行状态查询等操作。但在各种系统中,串行接口运行速率较慢,串行接口芯片与高速的CPU芯片如何互联是一个亟待解决的问题。
I2C接口也就是通常所说的I2C串行总线,一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有I2C设备串行数据SDA都接到总线SDA上,各设备时钟线SCL接到总线SCL上。
图1 串行接口框图
图2 GPIO模拟SPI接口原理框图
SPI接口的全称是“Serial Peripheral Interface”,是一种高速、全双工、同步的通信总线。SPI接口信号主要包括SDO(主设备数据输出,从设备数据输入)、SDI(主设备数据输入,从设备数据输出),SCLK(时钟信号,由主设备产生)、CS(从设备使能信号,由主设备控制)等信号。
SMI(MDC、MDIO)接口在以太网PHY芯片上比较常见,主要由MDC、MDIO两个信号组成。CUP或以太网MAC芯片通过该接口可以完成以太网PHY芯片初始化、以太网接口配置、以太网接口状态查询等操作。SMI(MDC、MDIO)接口还可以提供中断信号MDINT(由以太网PHY芯片产生的中断)。
SMBus是System Management Bus的缩写,由Intel于1995年提出,是一种二线制串行总线,信号主要包括SMBus_DATA(数据输入输出)、SMBus_CLK(时钟信号,由主设备产生)。
接口原理框图以及信号方向,如图1所示:
CPU芯片可以直接支持I2C接口、SPI接口、SMI(MDC、MDIO)接口、SMBus接口其中一种接口或者两种接口,硬件电路实现比较简单。CPU芯片相应使能管脚和串行接口芯片相应管脚直接向连,然后根据相应电气特性匹配上下拉电阻;但也有一些CPU不支持这些接口,在这样情况下,有三种方案可以解决CPU芯片与串行接口芯片互联问题。
图3 FPGA串并接口转换
图4 MDIO、MDC接口原理框图
图5 SOPC串行接口原理框图
CPU一般都有一些GPIO管脚,可以使用CPU的GPIO管脚模拟串行接口信号以及接口时序,从而解决CPU芯片与串行接口芯片互联问题,以SPI接口为例说明其互联原理,其框图如图2所示:
CPU作为主端,发起SPI读写操作,外围芯片作为从端,接收CPU读写指令。SPI接口CS(从设备使能信号,由主设备控制)信号,可以由CPU空闲CS管脚或GPIO管脚来模拟实现,当CPU发起SPI读写操作时:
(1)首先CS信号有效,才开始后续读写操作,作为CS信号CPU的GPIO管脚在整个SPI读写操作过程中保持‘0’电平。
(2)SCLK(时钟信号,由主设备产生),由CPU的GPIO管脚经过一定时间后反转其管脚电平模拟实现SPI接口时钟,输出到SPI从设备。
(3)SDO(主设备数据输出,从设备数据输入)信号由CPU的GPIO管脚作为输出管脚,在同步于SCLK的情况下,输出相应‘0’、‘1’电平实现相应读写命令以及数据输出。
(4)当进行读操作时SDI有效,SDI(主设备数据输入,从设备数据输出)由CPU的GPIO管脚作为输入管脚,同步于SCLK的情况下把其管脚输入按位存储到CPU内存空间实现相应数据的输入。
I2C接口,SMI(MDC、MDIO)接口,SMBus接口等串行接口也可以采用类似的方法来实现。
从上述可以看出,此方案CPU需要全程参与串行接口的读写操作,读写操作过程不能被打断,而且需要复杂的程序模拟串行接口时序,特别是对I2C,SMBus等接口在读写过程中需要ACK或NCK回应的时序,程序设计显得捉襟见肘。此方案缺点:CPU访问串行接口芯片时,CPU会被完全占用,CPU无法处理其他工作,程序设计较复杂;优点:CPU与串行接口芯片之间互联,不占用系统其它资源。
一般情况下,CPU芯片都有并行CPU接口,CPU芯片通过CPU接口与FPGA相连,由FPGA芯片来模拟串行接口时序;FPGA与相应的串行接口芯片相连,代替CPU芯片完成串行接口芯片的读写访问。原理框图如图3所示:
CPU芯片通过并行的CPU接口对FPGA的内存空间进行读写操作;FPGA根据其内存中内容模拟串行接口读写时序,完成由CPU芯片并行接口到串行接口的转换。
以SMI(MDC、MDIO)接口为例来说明此方案具体实现方法。CPU芯片或以太网MAC芯片通过此SMI(MDC、MDIO)接口完成以太网PHY芯片初始化、以太网接口配置以及以太网接口状态查询等工作。其原理框图如图4所示:
SMI(MDC、MDIO)接口写操作:
(1)CPU芯片通过并行CPU接口把以太网PHY芯片地址,以太网PHY芯片寄存器地址,以及要写入到以太网PHY芯片的数据,写命令等写入到FPGA内存空间;
(2)然后再由FPGA把内存中的数据按照SMI(MDC、MDIO)接口的写时序写入到以太网PHY芯片,在此过程中由FPGA程序状态机来负责写开始、写结束、是否空闲等状态控制,接口时序完成由FPGA负责完成。
以太网PHY芯片的单次写过操作完全可以交由FPGA完成;以太网PHY芯片多次写操作,采用在FPGA里加入FIFO缓存CPU多次写操作数据,然后再由FPGA依次发起写过程;在多次写过程,FPGA也完全可以代替CPU芯片或以太网MAC芯片完成SMI(MDC/MDIO)接口写操作。
SMI(MDC、MDIO)接口读操作:(1)CPU芯片通过并行CPU接口把以太网PHY芯片地址,以太网PHY芯片寄存器地址,读命令等写入到FPGA的内存空间;(2)然后再由FPGA模拟出SMI(MDC/MDIO)接口读命令,通过MDIO信号把读命令传递给以太网PHY芯;(3)以太网PHY芯片使用MDIO信号输出相应数据,FPGA利用MDC的时钟延把MDIO信号数据按bit存储到FPGA内存。
SMI(MDC/MDIO)接口读操作,完全可以把读出的数据暂存到FPGA、CPLD内存中,CPU空闲时再读入到CPU芯片;或者结合MDINT中断信号,以太网PHY芯片状态发生变化MDINT产生中断时,CPU响应中断后再开始SMI(MDC/MDIO)接口读操作。
此方案中串行接口芯片读写操作时序交由FPGA的状态机完成,FPGA分担CPU的时序模拟工作,CPU从大量模拟时序工作中解脱出来,节省CPU资源,CPU程序得到简化,提高CPU运行效率;缺点是需要FPGA的支持,以及足够的FPGA资源。
采用FPGA的SOPC技术单独完成对串行接口芯片的初始化、模式配置、状态查询等工作;SOPC作为次CPU独立的完成串行接口芯片的读写操作,主CPU需要进行串行接口读写操作时,直接与SOPC进行交互。采用此方案的系统中,SOPC完全可以代替主CPU完成系统中所有串行接口的读写访问工作,原理框图如图5所示:
以Altera的FPGA为例说明具体实现方法:(1)使用Altera公司的SOPC BUILDER工具搭建NIOS系统,配置NIOS嵌入式CPU,选择相应的Memory控制器,选择相应的串行接口IPcore,以及定时器等;
(2)完成相应的初始化程序,状态查询程序编写;(3)完成程序调试后,启动NIOS系统完成程序初始化,以及完成定时轮询串行接口芯片状态等工作。(4)把各串行接口芯片状态存储在NIOS系统的内存空间;
(5)主CPU需要串行接口芯片状态时,NIOS系统通过其与主CPU之间的高速接口把串行接口芯片的状态传递给主CPU。
SOPC模块作为系统的次CPU,可以独立完成系统中所有的串行接口芯片初始化、状态采集、配置等工作;主CPU与SOPC次CPU之间通过高速接口交互消息。主CPU完全从繁琐的串行接口芯片读写时序操作中解脱出来,优点不言而喻。但此方案的整体系统相对来说比较复杂。
三种方案都可以用来解决串行接口的互联问题,有着各自的特点,应用于不同的系统。CPU的GPIO管脚互联方案,串行接口访问过程中需要CPU芯片全程参与,所有的工作都由CPU负责,此方案可以应用在较为简单,CPU比较空闲的系统中;FPGA间接访问串行接口方案,CPU从串行接口读写访问部分解脱出来,由FPGA模拟串行接口时序,以及完成串行接口读写状态控制,此方案可以应用在FPGA资源充足的系统中;SOPC技术访问串行接口方案,CPU从串行接口访问过程完全解脱出来,由SOPC预先对串行接口进行读写访问,此方案可以同时检查较多的串行接口芯片,其可以应用在可靠性要求较高,实时性要求较高的系统中。
[1]The I2C-Bus Specification.VERSION 2.1,2000-01.
[2]System Management Bus (SMBus) Specification Version 2.0,2000-03.
[3]The Freescale SPI Bus Specification.VERSION 4.01,2004-09.
[4]IEEE802.3u标准.
I2C, SPI, SMI(MDC、MDIO)and SMBus limited by the interface clock frequency, relative to the CPU chip for high-speed operation of the interface to run slower; But not all CPU chips support these serial interfaces, in many systems interconnected issues need to be resolved with the CPU chip and serial interface chip; This paper proposes three CPU chip interconnect solutions with serial interface,Which program to use a CPU chip GPIO interface with serial interface chip interconnect, Option II CPU chip FPGA chip by indirect interconnection with serial interface chip, Option III FPGA SOPC technology instead of the CPU chip interconnect with a serial interface chip.
I2C SPI SMI SMBus FPGA SOPC
康宾,男,(1981—),中国电子科技集团公司第五十四研究所工程师,主要研究方向:通信系统,路由与交换设备。