康賓 周玉娟
(中國電子科技集團公司第五十四研究所,河北石家莊 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—),中國電子科技集團公司第五十四研究所工程師,主要研究方向:通信系統,路由與交換設備。