周婷婷
(同濟大學電子科學與技術系,上海 201804)
I2C總線最早由PHILIPS公司推出,是兩線式串行總線,具有連線少、控制方式簡單、通信速率比較高等優點,被廣泛應用于IC器件之間的連接。如今I2C總線協議已經成為芯片間低速串行通信的事實標準,應用范圍將會越來越廣[1]。因此,對于I2C總線協議的分析工具需求越來越多[2]。本設計基于SOPC技術對I2C總線協議分析儀的設計和實現進行探索研究,并在XILINX公司的spantan3e開發板上進行了驗證。
I2C總線通過兩根線(串行數據線SDA和串行時鐘線SCL)在連接到總線的器件間傳輸信息。連接到I2C總線的每個器件都有一個唯一的地址識別標志,都可以根據自身的功能決定作為發送器或者接收器。比如,連接到I2C總線上的微控制器、存儲器和LED驅動器等都可以通過各自唯一的一個地址來尋址,存儲器既可以作為發送器也可以作為接收器,而LED驅動器只能作為一個接收器使用。另外,器件也有主機和從機之分,主機是發出控制信號初始化傳輸并產生時鐘信號的器件,從機一般是被主機尋址的器件[1]。圖1顯示了7位尋址條件下I2C數據的傳輸過程。

圖1 7位尋址時I2C總線上的數據傳輸過程
I2C總線是一個支持多主機的總線,當多個主機同時嘗試控制總線時可能會產生數據沖突,因此產生了仲裁機制。I2C總線上的仲裁分為兩步,一是SCL線上的時鐘同步,二是SDA線上的競爭仲裁。它們都是基于“線上”的邏輯功能實現的,兩個時鐘的同步過程如圖2所示,當連接到I2C總線的兩個主機都發送高電平時,SCL線才表現為高電平,只要有一個主機發送低電平,SCL線就會被拉低,表現為低電平,這就是時鐘同步實現的原理[1]。

圖2 時鐘同步過程
仲裁的功能是保證通信正常進行,避免數據沖突和丟失。在一個時間點,仲裁只允許一個主機占據總線[3]。每個主機在發送完一位數據后,將總線上的數據和自己發送的數據進行比較,如果一致,該主機可以繼續發送數據,如果不一致,則該主機丟失仲裁,不再發送數據。圖3給出了兩個主機的仲裁過程。

圖3 兩個主機的仲裁過程
SOPC技術致力于把盡可能大而完整的電子系統,包括嵌入式處理器系統、接口系統、存儲系統等在單一FPGA中實現,從而實現規模、結構、可靠性、體積和成本各項系統性能指標的最優化。SOPC的設計以IP為基礎,以硬件描述語言為主要設計手段,借助以計算機為平臺的EDA工具,自動化、智能化地自頂向下進行,是一種可編程系統,具有靈活的設計方式[4]。Xilinx作為全球領先的FPGA完整解決方案的供應商,提供相應的軟硬件設計工具以及作為預定義系統功能IP CORE,以構建整個SOPC嵌入式系統[5]。
本系統的設計是基于Xilinx公司的嵌入式開發套件EDK和spartan3e型FPGA開發板,采用了其提供的microblaze軟核作為處理器。EDK工具自帶了豐富的IP核,方便用戶構建復雜的嵌入式系統,用戶也可以通過其提供的CIP(create or import)向導來構建自己的IP核來實現特定的功能[6]。本系統中既利用了一些系統提供的IP如和上位機進行通信的RS232 模塊,也通過向導自行設計了能夠連接到OPB總線上的I2C IP核。利用設計向導進行設計的好處是簡單方便,用戶不需要考慮自定義IP與OPB總線的連接時序等問題。本系統的整體框架如圖4所示,主要分為主控制器模塊、I2C總線邏輯模塊、通信模塊等。

圖4 基于XILINX FPGA的SOPC系統整體框架
系統中I2C 功能模塊的接口分為與處理器的接口和與外部I2C總線的接口兩部分,與微處理器的接口采用SOPC系統提供的OPB總線接口,如圖5所示。

圖5 I2C模塊接口示意圖
I2C總線的功能實現中,除了有開始、數據發送接收和結束等基本操作外,還包括了時鐘同步和仲裁等重要過程。在運用硬件描述語言實現這些復雜邏輯時,結構設計和功能劃分尤為重要。以I2C主模式為例,其IP核內部結構包括了時鐘發生器模塊、時鐘同步器模塊和仲裁邏輯模塊等,還有控制寄存器、命令寄存器、發送和接收寄存器等寄存器組[7]。I2C主模式下的結構設計如圖6所示。

圖6 I2C主模式內部結構圖
控制寄存器用于存儲微處理器發出的控制信號,如使能、中斷等,在這些控制信號的作用下微處理器與I2C模塊建立起通信連接[8]。當開始通信時,處理器就可以通過命令控制I2C模塊與外部的通信,命令寄存器就是用來存儲命令信號的。控制邏輯用于生成一系列相關的控制信號,實現對內部各個模塊的協調和控制。
程序設計中,I2C模塊的傳輸過程是通過狀態機實現的,圖7給出了其主要狀態及狀態跳轉關系圖。

圖7 數據傳輸過程的狀態跳轉圖
為驗證本設計主要功能的正確性,在modelsim環境中對其進行了功能仿真。仿真過程中,重點觀測了7位尋址下數據的發送和接收,時鐘同步和仲裁邏輯等。經過一系列分析驗證之后,結果表明本文所設計系統能夠實現I2C協議中的主要控制邏輯,滿足設計所要求的功能。部分仿真結果如圖8所示。

圖8 功能仿真
設計在XILINX的spantan3e開發板上進行了驗證,驗證平臺結構如圖9所示。驗證結果滿足設計要求。

圖9 FPGA驗證平臺搭建
本文介紹了基于SOPC技術的I2C總線協議分析平臺的設計原理和方法,很好地實現了設計要求,所設計系統實用性強,在教學實踐和工程實際中都能夠發揮重要作用。
[1] Philips Semiconductors.The I2C-bus Specification[R].version 2.1.2000.
[2] 董春霞,安連祥,張勝利,等.I~2C總線技術及其在智能儀表中的應用[J].中國儀器儀表,2003, 04.
[3] 劉莎莎.I2C總線在SOC系統中的設計與實現[D].電子科技大學,2010.
[4] 白楊. SOPC設計策略的研究[J].電腦開發與應用,2007,11.
[5] Xilinx Inc. MicroBlaze Microcontroller Reference Design User Guide[R]. 2005.
[6] 丁浩.數字信號處理系統的硬件加速設計[J].電子測量技術,2010, 12.
[7] 陳光建,賈金玲.基于單片機的I2C總線系統設計[J].儀器儀表學報,2006, 27(z3).
[8] 梁穎.SOPC中FPGA IP核配置方案研究與實現[D].西安電子科技大學,2010.