康賓 周玉娟
【摘 要】 I2C、SPI、SMI(MDC、MDIO)、SMBus等接口受時鐘頻率的限制,相對于高速運行的CPU芯片來說接口運行速度較慢。但并不是所有CPU芯片都支持這些串行接口,在很多系統(tǒng)中需要解決CPU芯片與串行接口芯片的互聯(lián)問題。本文提出三種CPU芯片與串行接口互聯(lián)方案,其中方案一使用CPU芯片的GPIO接口與串行接口芯片互聯(lián),方案二CPU芯片通過FPGA芯片與串行接口芯片間接互聯(lián),方案三FPGA的SOPC技術(shù)代替CPU芯片與串行接口芯片互聯(lián)。
【關(guān)鍵詞】 I2C SPI SMI(MDC、MDIO) SMBus FPGA SOPC
【Abstract】 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.
【Key words】 I2C SPI SMI SMBus FPGA SOPC
為了減小芯片的體積,減小布線的復(fù)雜度,提高系統(tǒng)的可靠性以及集成度,越來越多的芯片采用串行I2C接口、SPI接口、SMI(MDC、MDIO)接口、SMBus接口等;例如EEPROM、FLASH、以太網(wǎng)PHY芯片,鎖相環(huán)芯片,溫度測量芯片、光電轉(zhuǎn)換模塊等。
串行接口使用簡單,用2到4根信號就可以完成芯片初始化、配置、運行狀態(tài)查詢等操作。但在各種系統(tǒng)中,串行接口運行速率較慢,串行接口芯片與高速的CPU芯片如何互聯(lián)是一個亟待解決的問題。
1 I2C、SPI、SMI、SMBus串行接口簡介
I2C接口也就是通常所說的I2C串行總線,一般有兩根信號線,一根是雙向的數(shù)據(jù)線SDA,另一根是時鐘線SCL。所有I2C設(shè)備串行數(shù)據(jù)SDA都接到總線SDA上,各設(shè)備時鐘線SCL接到總線SCL上。
SPI接口的全稱是“Serial Peripheral Interface”,是一種高速、全雙工、同步的通信總線。SPI接口信號主要包括SDO(主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入)、SDI(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出),SCLK(時鐘信號,由主設(shè)備產(chǎn)生)、CS(從設(shè)備使能信號,由主設(shè)備控制)等信號。
SMI(MDC、MDIO)接口在以太網(wǎng)PHY芯片上比較常見,主要由MDC、MDIO兩個信號組成。CUP或以太網(wǎng)MAC芯片通過該接口可以完成以太網(wǎng)PHY芯片初始化、以太網(wǎng)接口配置、以太網(wǎng)接口狀態(tài)查詢等操作。SMI(MDC、MDIO)接口還可以提供中斷信號MDINT(由以太網(wǎng)PHY芯片產(chǎn)生的中斷)。
SMBus是System Management Bus的縮寫,由Intel于1995年提出,是一種二線制串行總線,信號主要包括SMBus_DATA(數(shù)據(jù)輸入輸出)、SMBus_CLK(時鐘信號,由主設(shè)備產(chǎn)生)。
接口原理框圖以及信號方向,如圖1所示:
2 串行接口互聯(lián)方案
CPU芯片可以直接支持I2C接口、SPI接口、SMI(MDC、MDIO)接口、SMBus接口其中一種接口或者兩種接口,硬件電路實現(xiàn)比較簡單。CPU芯片相應(yīng)使能管腳和串行接口芯片相應(yīng)管腳直接向連,然后根據(jù)相應(yīng)電氣特性匹配上下拉電阻;但也有一些CPU不支持這些接口,在這樣情況下,有三種方案可以解決CPU芯片與串行接口芯片互聯(lián)問題。
2.1 使用CPU的GPIO管腳互聯(lián)
CPU一般都有一些GPIO管腳,可以使用CPU的GPIO管腳模擬串行接口信號以及接口時序,從而解決CPU芯片與串行接口芯片互聯(lián)問題,以SPI接口為例說明其互聯(lián)原理,其框圖如圖2所示:
CPU作為主端,發(fā)起SPI讀寫操作,外圍芯片作為從端,接收CPU讀寫指令。SPI接口CS(從設(shè)備使能信號,由主設(shè)備控制)信號,可以由CPU空閑CS管腳或GPIO管腳來模擬實現(xiàn),當(dāng)CPU發(fā)起SPI讀寫操作時:
(1)首先CS信號有效,才開始后續(xù)讀寫操作,作為CS信號CPU的GPIO管腳在整個SPI讀寫操作過程中保持‘0電平。
(2)SCLK(時鐘信號,由主設(shè)備產(chǎn)生),由CPU的GPIO管腳經(jīng)過一定時間后反轉(zhuǎn)其管腳電平模擬實現(xiàn)SPI接口時鐘,輸出到SPI從設(shè)備。
(3)SDO(主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入)信號由CPU的GPIO管腳作為輸出管腳,在同步于SCLK的情況下,輸出相應(yīng)‘0、‘1電平實現(xiàn)相應(yīng)讀寫命令以及數(shù)據(jù)輸出。endprint
(4)當(dāng)進(jìn)行讀操作時SDI有效,SDI(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出)由CPU的GPIO管腳作為輸入管腳,同步于SCLK的情況下把其管腳輸入按位存儲到CPU內(nèi)存空間實現(xiàn)相應(yīng)數(shù)據(jù)的輸入。
I2C接口,SMI(MDC、MDIO)接口,SMBus接口等串行接口也可以采用類似的方法來實現(xiàn)。
從上述可以看出,此方案CPU需要全程參與串行接口的讀寫操作,讀寫操作過程不能被打斷,而且需要復(fù)雜的程序模擬串行接口時序,特別是對I2C,SMBus等接口在讀寫過程中需要ACK或NCK回應(yīng)的時序,程序設(shè)計顯得捉襟見肘。此方案缺點:CPU訪問串行接口芯片時,CPU會被完全占用,CPU無法處理其他工作,程序設(shè)計較復(fù)雜;優(yōu)點:CPU與串行接口芯片之間互聯(lián),不占用系統(tǒng)其它資源。
2.2 FPGA間接訪問串行接口
一般情況下,CPU芯片都有并行CPU接口,CPU芯片通過CPU接口與FPGA相連,由FPGA芯片來模擬串行接口時序;FPGA與相應(yīng)的串行接口芯片相連,代替CPU芯片完成串行接口芯片的讀寫訪問。原理框圖如圖3所示:
CPU芯片通過并行的CPU接口對FPGA的內(nèi)存空間進(jìn)行讀寫操作;FPGA根據(jù)其內(nèi)存中內(nèi)容模擬串行接口讀寫時序,完成由CPU芯片并行接口到串行接口的轉(zhuǎn)換。
以SMI(MDC、MDIO)接口為例來說明此方案具體實現(xiàn)方法。CPU芯片或以太網(wǎng)MAC芯片通過此SMI(MDC、MDIO)接口完成以太網(wǎng)PHY芯片初始化、以太網(wǎng)接口配置以及以太網(wǎng)接口狀態(tài)查詢等工作。其原理框圖如圖4所示:
SMI(MDC、MDIO)接口寫操作:
(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,以及要寫入到以太網(wǎng)PHY芯片的數(shù)據(jù),寫命令等寫入到FPGA內(nèi)存空間;
(2)然后再由FPGA把內(nèi)存中的數(shù)據(jù)按照SMI(MDC、MDIO)接口的寫時序?qū)懭氲揭蕴W(wǎng)PHY芯片,在此過程中由FPGA程序狀態(tài)機來負(fù)責(zé)寫開始、寫結(jié)束、是否空閑等狀態(tài)控制,接口時序完成由FPGA負(fù)責(zé)完成。
以太網(wǎng)PHY芯片的單次寫過操作完全可以交由FPGA完成;以太網(wǎng)PHY芯片多次寫操作,采用在FPGA里加入FIFO緩存CPU多次寫操作數(shù)據(jù),然后再由FPGA依次發(fā)起寫過程;在多次寫過程,F(xiàn)PGA也完全可以代替CPU芯片或以太網(wǎng)MAC芯片完成SMI(MDC/MDIO)接口寫操作。
SMI(MDC、MDIO)接口讀操作:(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,讀命令等寫入到FPGA的內(nèi)存空間;(2)然后再由FPGA模擬出SMI(MDC/MDIO)接口讀命令,通過MDIO信號把讀命令傳遞給以太網(wǎng)PHY芯;(3)以太網(wǎng)PHY芯片使用MDIO信號輸出相應(yīng)數(shù)據(jù),F(xiàn)PGA利用MDC的時鐘延把MDIO信號數(shù)據(jù)按bit存儲到FPGA內(nèi)存。
SMI(MDC/MDIO)接口讀操作,完全可以把讀出的數(shù)據(jù)暫存到FPGA、CPLD內(nèi)存中,CPU空閑時再讀入到CPU芯片;或者結(jié)合MDINT中斷信號,以太網(wǎng)PHY芯片狀態(tài)發(fā)生變化MDINT產(chǎn)生中斷時,CPU響應(yīng)中斷后再開始SMI(MDC/MDIO)接口讀操作。
此方案中串行接口芯片讀寫操作時序交由FPGA的狀態(tài)機完成,F(xiàn)PGA分擔(dān)CPU的時序模擬工作,CPU從大量模擬時序工作中解脫出來,節(jié)省CPU資源,CPU程序得到簡化,提高CPU運行效率;缺點是需要FPGA的支持,以及足夠的FPGA資源。
2.3 SOPC技術(shù)訪問串行接口
采用FPGA的SOPC技術(shù)單獨完成對串行接口芯片的初始化、模式配置、狀態(tài)查詢等工作;SOPC作為次CPU獨立的完成串行接口芯片的讀寫操作,主CPU需要進(jìn)行串行接口讀寫操作時,直接與SOPC進(jìn)行交互。采用此方案的系統(tǒng)中,SOPC完全可以代替主CPU完成系統(tǒng)中所有串行接口的讀寫訪問工作,原理框圖如圖5所示:
以Altera的FPGA為例說明具體實現(xiàn)方法:(1)使用Altera公司的SOPC BUILDER工具搭建NIOS系統(tǒng),配置NIOS嵌入式CPU,選擇相應(yīng)的Memory控制器,選擇相應(yīng)的串行接口IPcore,以及定時器等;(2)完成相應(yīng)的初始化程序,狀態(tài)查詢程序編寫;(3)完成程序調(diào)試后,啟動NIOS系統(tǒng)完成程序初始化,以及完成定時輪詢串行接口芯片狀態(tài)等工作。(4)把各串行接口芯片狀態(tài)存儲在NIOS系統(tǒng)的內(nèi)存空間;(5)主CPU需要串行接口芯片狀態(tài)時,NIOS系統(tǒng)通過其與主CPU之間的高速接口把串行接口芯片的狀態(tài)傳遞給主CPU。
SOPC模塊作為系統(tǒng)的次CPU,可以獨立完成系統(tǒng)中所有的串行接口芯片初始化、狀態(tài)采集、配置等工作;主CPU與SOPC次CPU之間通過高速接口交互消息。主CPU完全從繁瑣的串行接口芯片讀寫時序操作中解脫出來,優(yōu)點不言而喻。但此方案的整體系統(tǒng)相對來說比較復(fù)雜。
3 結(jié)語
三種方案都可以用來解決串行接口的互聯(lián)問題,有著各自的特點,應(yīng)用于不同的系統(tǒng)。CPU的GPIO管腳互聯(lián)方案,串行接口訪問過程中需要CPU芯片全程參與,所有的工作都由CPU負(fù)責(zé),此方案可以應(yīng)用在較為簡單,CPU比較空閑的系統(tǒng)中;FPGA間接訪問串行接口方案,CPU從串行接口讀寫訪問部分解脫出來,由FPGA模擬串行接口時序,以及完成串行接口讀寫狀態(tài)控制,此方案可以應(yīng)用在FPGA資源充足的系統(tǒng)中;SOPC技術(shù)訪問串行接口方案,CPU從串行接口訪問過程完全解脫出來,由SOPC預(yù)先對串行接口進(jìn)行讀寫訪問,此方案可以同時檢查較多的串行接口芯片,其可以應(yīng)用在可靠性要求較高,實時性要求較高的系統(tǒng)中。
參考文獻(xiàn)
[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標(biāo)準(zhǔn).endprint
(4)當(dāng)進(jìn)行讀操作時SDI有效,SDI(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出)由CPU的GPIO管腳作為輸入管腳,同步于SCLK的情況下把其管腳輸入按位存儲到CPU內(nèi)存空間實現(xiàn)相應(yīng)數(shù)據(jù)的輸入。
I2C接口,SMI(MDC、MDIO)接口,SMBus接口等串行接口也可以采用類似的方法來實現(xiàn)。
從上述可以看出,此方案CPU需要全程參與串行接口的讀寫操作,讀寫操作過程不能被打斷,而且需要復(fù)雜的程序模擬串行接口時序,特別是對I2C,SMBus等接口在讀寫過程中需要ACK或NCK回應(yīng)的時序,程序設(shè)計顯得捉襟見肘。此方案缺點:CPU訪問串行接口芯片時,CPU會被完全占用,CPU無法處理其他工作,程序設(shè)計較復(fù)雜;優(yōu)點:CPU與串行接口芯片之間互聯(lián),不占用系統(tǒng)其它資源。
2.2 FPGA間接訪問串行接口
一般情況下,CPU芯片都有并行CPU接口,CPU芯片通過CPU接口與FPGA相連,由FPGA芯片來模擬串行接口時序;FPGA與相應(yīng)的串行接口芯片相連,代替CPU芯片完成串行接口芯片的讀寫訪問。原理框圖如圖3所示:
CPU芯片通過并行的CPU接口對FPGA的內(nèi)存空間進(jìn)行讀寫操作;FPGA根據(jù)其內(nèi)存中內(nèi)容模擬串行接口讀寫時序,完成由CPU芯片并行接口到串行接口的轉(zhuǎn)換。
以SMI(MDC、MDIO)接口為例來說明此方案具體實現(xiàn)方法。CPU芯片或以太網(wǎng)MAC芯片通過此SMI(MDC、MDIO)接口完成以太網(wǎng)PHY芯片初始化、以太網(wǎng)接口配置以及以太網(wǎng)接口狀態(tài)查詢等工作。其原理框圖如圖4所示:
SMI(MDC、MDIO)接口寫操作:
(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,以及要寫入到以太網(wǎng)PHY芯片的數(shù)據(jù),寫命令等寫入到FPGA內(nèi)存空間;
(2)然后再由FPGA把內(nèi)存中的數(shù)據(jù)按照SMI(MDC、MDIO)接口的寫時序?qū)懭氲揭蕴W(wǎng)PHY芯片,在此過程中由FPGA程序狀態(tài)機來負(fù)責(zé)寫開始、寫結(jié)束、是否空閑等狀態(tài)控制,接口時序完成由FPGA負(fù)責(zé)完成。
以太網(wǎng)PHY芯片的單次寫過操作完全可以交由FPGA完成;以太網(wǎng)PHY芯片多次寫操作,采用在FPGA里加入FIFO緩存CPU多次寫操作數(shù)據(jù),然后再由FPGA依次發(fā)起寫過程;在多次寫過程,F(xiàn)PGA也完全可以代替CPU芯片或以太網(wǎng)MAC芯片完成SMI(MDC/MDIO)接口寫操作。
SMI(MDC、MDIO)接口讀操作:(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,讀命令等寫入到FPGA的內(nèi)存空間;(2)然后再由FPGA模擬出SMI(MDC/MDIO)接口讀命令,通過MDIO信號把讀命令傳遞給以太網(wǎng)PHY芯;(3)以太網(wǎng)PHY芯片使用MDIO信號輸出相應(yīng)數(shù)據(jù),F(xiàn)PGA利用MDC的時鐘延把MDIO信號數(shù)據(jù)按bit存儲到FPGA內(nèi)存。
SMI(MDC/MDIO)接口讀操作,完全可以把讀出的數(shù)據(jù)暫存到FPGA、CPLD內(nèi)存中,CPU空閑時再讀入到CPU芯片;或者結(jié)合MDINT中斷信號,以太網(wǎng)PHY芯片狀態(tài)發(fā)生變化MDINT產(chǎn)生中斷時,CPU響應(yīng)中斷后再開始SMI(MDC/MDIO)接口讀操作。
此方案中串行接口芯片讀寫操作時序交由FPGA的狀態(tài)機完成,F(xiàn)PGA分擔(dān)CPU的時序模擬工作,CPU從大量模擬時序工作中解脫出來,節(jié)省CPU資源,CPU程序得到簡化,提高CPU運行效率;缺點是需要FPGA的支持,以及足夠的FPGA資源。
2.3 SOPC技術(shù)訪問串行接口
采用FPGA的SOPC技術(shù)單獨完成對串行接口芯片的初始化、模式配置、狀態(tài)查詢等工作;SOPC作為次CPU獨立的完成串行接口芯片的讀寫操作,主CPU需要進(jìn)行串行接口讀寫操作時,直接與SOPC進(jìn)行交互。采用此方案的系統(tǒng)中,SOPC完全可以代替主CPU完成系統(tǒng)中所有串行接口的讀寫訪問工作,原理框圖如圖5所示:
以Altera的FPGA為例說明具體實現(xiàn)方法:(1)使用Altera公司的SOPC BUILDER工具搭建NIOS系統(tǒng),配置NIOS嵌入式CPU,選擇相應(yīng)的Memory控制器,選擇相應(yīng)的串行接口IPcore,以及定時器等;(2)完成相應(yīng)的初始化程序,狀態(tài)查詢程序編寫;(3)完成程序調(diào)試后,啟動NIOS系統(tǒng)完成程序初始化,以及完成定時輪詢串行接口芯片狀態(tài)等工作。(4)把各串行接口芯片狀態(tài)存儲在NIOS系統(tǒng)的內(nèi)存空間;(5)主CPU需要串行接口芯片狀態(tài)時,NIOS系統(tǒng)通過其與主CPU之間的高速接口把串行接口芯片的狀態(tài)傳遞給主CPU。
SOPC模塊作為系統(tǒng)的次CPU,可以獨立完成系統(tǒng)中所有的串行接口芯片初始化、狀態(tài)采集、配置等工作;主CPU與SOPC次CPU之間通過高速接口交互消息。主CPU完全從繁瑣的串行接口芯片讀寫時序操作中解脫出來,優(yōu)點不言而喻。但此方案的整體系統(tǒng)相對來說比較復(fù)雜。
3 結(jié)語
三種方案都可以用來解決串行接口的互聯(lián)問題,有著各自的特點,應(yīng)用于不同的系統(tǒng)。CPU的GPIO管腳互聯(lián)方案,串行接口訪問過程中需要CPU芯片全程參與,所有的工作都由CPU負(fù)責(zé),此方案可以應(yīng)用在較為簡單,CPU比較空閑的系統(tǒng)中;FPGA間接訪問串行接口方案,CPU從串行接口讀寫訪問部分解脫出來,由FPGA模擬串行接口時序,以及完成串行接口讀寫狀態(tài)控制,此方案可以應(yīng)用在FPGA資源充足的系統(tǒng)中;SOPC技術(shù)訪問串行接口方案,CPU從串行接口訪問過程完全解脫出來,由SOPC預(yù)先對串行接口進(jìn)行讀寫訪問,此方案可以同時檢查較多的串行接口芯片,其可以應(yīng)用在可靠性要求較高,實時性要求較高的系統(tǒng)中。
參考文獻(xiàn)
[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標(biāo)準(zhǔn).endprint
(4)當(dāng)進(jìn)行讀操作時SDI有效,SDI(主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出)由CPU的GPIO管腳作為輸入管腳,同步于SCLK的情況下把其管腳輸入按位存儲到CPU內(nèi)存空間實現(xiàn)相應(yīng)數(shù)據(jù)的輸入。
I2C接口,SMI(MDC、MDIO)接口,SMBus接口等串行接口也可以采用類似的方法來實現(xiàn)。
從上述可以看出,此方案CPU需要全程參與串行接口的讀寫操作,讀寫操作過程不能被打斷,而且需要復(fù)雜的程序模擬串行接口時序,特別是對I2C,SMBus等接口在讀寫過程中需要ACK或NCK回應(yīng)的時序,程序設(shè)計顯得捉襟見肘。此方案缺點:CPU訪問串行接口芯片時,CPU會被完全占用,CPU無法處理其他工作,程序設(shè)計較復(fù)雜;優(yōu)點:CPU與串行接口芯片之間互聯(lián),不占用系統(tǒng)其它資源。
2.2 FPGA間接訪問串行接口
一般情況下,CPU芯片都有并行CPU接口,CPU芯片通過CPU接口與FPGA相連,由FPGA芯片來模擬串行接口時序;FPGA與相應(yīng)的串行接口芯片相連,代替CPU芯片完成串行接口芯片的讀寫訪問。原理框圖如圖3所示:
CPU芯片通過并行的CPU接口對FPGA的內(nèi)存空間進(jìn)行讀寫操作;FPGA根據(jù)其內(nèi)存中內(nèi)容模擬串行接口讀寫時序,完成由CPU芯片并行接口到串行接口的轉(zhuǎn)換。
以SMI(MDC、MDIO)接口為例來說明此方案具體實現(xiàn)方法。CPU芯片或以太網(wǎng)MAC芯片通過此SMI(MDC、MDIO)接口完成以太網(wǎng)PHY芯片初始化、以太網(wǎng)接口配置以及以太網(wǎng)接口狀態(tài)查詢等工作。其原理框圖如圖4所示:
SMI(MDC、MDIO)接口寫操作:
(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,以及要寫入到以太網(wǎng)PHY芯片的數(shù)據(jù),寫命令等寫入到FPGA內(nèi)存空間;
(2)然后再由FPGA把內(nèi)存中的數(shù)據(jù)按照SMI(MDC、MDIO)接口的寫時序?qū)懭氲揭蕴W(wǎng)PHY芯片,在此過程中由FPGA程序狀態(tài)機來負(fù)責(zé)寫開始、寫結(jié)束、是否空閑等狀態(tài)控制,接口時序完成由FPGA負(fù)責(zé)完成。
以太網(wǎng)PHY芯片的單次寫過操作完全可以交由FPGA完成;以太網(wǎng)PHY芯片多次寫操作,采用在FPGA里加入FIFO緩存CPU多次寫操作數(shù)據(jù),然后再由FPGA依次發(fā)起寫過程;在多次寫過程,F(xiàn)PGA也完全可以代替CPU芯片或以太網(wǎng)MAC芯片完成SMI(MDC/MDIO)接口寫操作。
SMI(MDC、MDIO)接口讀操作:(1)CPU芯片通過并行CPU接口把以太網(wǎng)PHY芯片地址,以太網(wǎng)PHY芯片寄存器地址,讀命令等寫入到FPGA的內(nèi)存空間;(2)然后再由FPGA模擬出SMI(MDC/MDIO)接口讀命令,通過MDIO信號把讀命令傳遞給以太網(wǎng)PHY芯;(3)以太網(wǎng)PHY芯片使用MDIO信號輸出相應(yīng)數(shù)據(jù),F(xiàn)PGA利用MDC的時鐘延把MDIO信號數(shù)據(jù)按bit存儲到FPGA內(nèi)存。
SMI(MDC/MDIO)接口讀操作,完全可以把讀出的數(shù)據(jù)暫存到FPGA、CPLD內(nèi)存中,CPU空閑時再讀入到CPU芯片;或者結(jié)合MDINT中斷信號,以太網(wǎng)PHY芯片狀態(tài)發(fā)生變化MDINT產(chǎn)生中斷時,CPU響應(yīng)中斷后再開始SMI(MDC/MDIO)接口讀操作。
此方案中串行接口芯片讀寫操作時序交由FPGA的狀態(tài)機完成,F(xiàn)PGA分擔(dān)CPU的時序模擬工作,CPU從大量模擬時序工作中解脫出來,節(jié)省CPU資源,CPU程序得到簡化,提高CPU運行效率;缺點是需要FPGA的支持,以及足夠的FPGA資源。
2.3 SOPC技術(shù)訪問串行接口
采用FPGA的SOPC技術(shù)單獨完成對串行接口芯片的初始化、模式配置、狀態(tài)查詢等工作;SOPC作為次CPU獨立的完成串行接口芯片的讀寫操作,主CPU需要進(jìn)行串行接口讀寫操作時,直接與SOPC進(jìn)行交互。采用此方案的系統(tǒng)中,SOPC完全可以代替主CPU完成系統(tǒng)中所有串行接口的讀寫訪問工作,原理框圖如圖5所示:
以Altera的FPGA為例說明具體實現(xiàn)方法:(1)使用Altera公司的SOPC BUILDER工具搭建NIOS系統(tǒng),配置NIOS嵌入式CPU,選擇相應(yīng)的Memory控制器,選擇相應(yīng)的串行接口IPcore,以及定時器等;(2)完成相應(yīng)的初始化程序,狀態(tài)查詢程序編寫;(3)完成程序調(diào)試后,啟動NIOS系統(tǒng)完成程序初始化,以及完成定時輪詢串行接口芯片狀態(tài)等工作。(4)把各串行接口芯片狀態(tài)存儲在NIOS系統(tǒng)的內(nèi)存空間;(5)主CPU需要串行接口芯片狀態(tài)時,NIOS系統(tǒng)通過其與主CPU之間的高速接口把串行接口芯片的狀態(tài)傳遞給主CPU。
SOPC模塊作為系統(tǒng)的次CPU,可以獨立完成系統(tǒng)中所有的串行接口芯片初始化、狀態(tài)采集、配置等工作;主CPU與SOPC次CPU之間通過高速接口交互消息。主CPU完全從繁瑣的串行接口芯片讀寫時序操作中解脫出來,優(yōu)點不言而喻。但此方案的整體系統(tǒng)相對來說比較復(fù)雜。
3 結(jié)語
三種方案都可以用來解決串行接口的互聯(lián)問題,有著各自的特點,應(yīng)用于不同的系統(tǒng)。CPU的GPIO管腳互聯(lián)方案,串行接口訪問過程中需要CPU芯片全程參與,所有的工作都由CPU負(fù)責(zé),此方案可以應(yīng)用在較為簡單,CPU比較空閑的系統(tǒng)中;FPGA間接訪問串行接口方案,CPU從串行接口讀寫訪問部分解脫出來,由FPGA模擬串行接口時序,以及完成串行接口讀寫狀態(tài)控制,此方案可以應(yīng)用在FPGA資源充足的系統(tǒng)中;SOPC技術(shù)訪問串行接口方案,CPU從串行接口訪問過程完全解脫出來,由SOPC預(yù)先對串行接口進(jìn)行讀寫訪問,此方案可以同時檢查較多的串行接口芯片,其可以應(yīng)用在可靠性要求較高,實時性要求較高的系統(tǒng)中。
參考文獻(xiàn)
[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標(biāo)準(zhǔn).endprint