專利名稱:一種基于fpga實現多路i2c總線端口擴展的方法
技術領域:
本發明涉及通信、測控的設備,特別涉及一種基于FPGA實現多路I2C總線端口擴展的方法。
背景技術:
目前,隨著通信技術的發展,通信、測控設備電路的各電路板之間、器件之間的通信越來越多,因而對板級通信速度要求也越來越高。但現有技術還存在不足之處首先,因為一般通信設備的主控MCU僅有一個I2C總線端口,當該通信設備需要同時與系統間多個 I2C總線的從設備進行通信時,主控制設備要通過單一的I2C總線端口與所有從設備或從器件連接,只有一個I2C總線端口的主設備只能依次和從設備或從器件進行通信,當主設備和一個從設備或從器件進行通信時,其他從設備則處于等待狀態,不僅浪費了大量的時間,同時由于I2C的通信的標準頻率只有IOOKHz和400KHz (快速),因此主設備和從設備或從器件之間通信速度就會降低。其次,由于I2C總線協議規定的總線電容不能超過400pF,一個I2C總線上所能掛載的I2C器件是有限的,當系統中存在大量的I2C總線設備和器件時,一路I2C總線已不能滿足設備間通信的要求。
發明內容
鑒于現在技術存在的問題,本發明提供一種基于FPGA的多路I2C總線端口擴展技術方案,由FPGA擴展出I2C端口,并使擴展的端口完全符合I2C總線通信協議。本發明是通過這樣的技術方案實現的一種基于FPGA實現多路I2C總線端口擴展的方法,用于通信系統的主設備和從設備之間通信,其特征在于,將主設備的主控MCU通過高速并口連接一個FPGA,經編程構成FPGA內部電路,FPGA內部電路包括MCU接口模塊和多路I2C接口模塊;
所述MCU接口模塊用于FPGA和主控MCU外圍總線的通信,主控MCU和FPGA之間采用高速并口進行通信,每次通信傳輸一個Byte的數據; 主控MCU和FPGA之間的并口通信采用如下定義 ADDR_BUS[15:0]地址總線,表示FPGA中寄存器的地址; DATA_BUS[7:0]雙向的數據總線; WRB 寫控制信號,低電平有效; RDB :讀控制信號,低電平有效; RD_IRQ :讀中斷信號,低電平有效;
所述多路I2C接口模塊包括多路I2C接口 ;每路I2C接口用于連接外部I2C控制器和外部I2C總線;I2C接口主要由Mart/Mop及SCL發生器的狀態機和主狀態機組成Jtart/ Mop及SCL發生器的狀態機用于產生開始,停止信號,以及SCL信號;主狀態機用于執行發送和接收操作。
本發明的優點是,通信系統中的所有的從設備或者從器件的I2C通信端口和主設備電路中由FPGA擴展出來的I2C端口依次連接,既可以僅有一個設備連接到一個FPGA擴展出來的某個I2C端口,也可以有多個設備或器件分別連接到FPGA擴展的I2C端口,由 FPGA擴展出來的I2C端口完全符合I2C總線協議。在以I2C總線通信的系統中,通過在主設備中使用本發明的通信端口擴展的方法,可以極大的提高主設備和從設備或者從器件的通信速度。
圖1. FPGA總體示意圖; 圖2. I2C接口設計示意圖3. Start/Stop及SCL發生器的狀態機的狀態轉移圖; 圖4. I2C接口主狀態機的狀態轉移圖。
具體實施例方式為了更清楚的理解本發明,結合附圖和實施例詳細描述本發明
FPGA擴展的I2C端口在FPGA端口配置時需要把相應的管腳的電平選擇為I2C電平模式。MCU和FPGA之間采用高速并口進行通信,每次可以傳輸一個Byte的數據。傳輸速率取決于MCU的系統時鐘。M⑶和FPGA的并口采用如下定義 ADDR_BUS[15:0]地址總線(表示FPGA中寄存器的地址) DATA_BUS[7:0]雙向的數據總線
WRB 寫控制信號,低電平有效 RDB 讀控制信號,低電平有效 RD.IRQ 讀中斷信號,低電平有效
在FPGA中設置兩大類寄存器來實現MCU和FPGA之間交互。A)設置FPGA和MCU之間交互的寄存器控制寄存器,狀態寄存器和中斷寄存器。B)在FPGA中為每個I2C的擴展端口設置4類寄存器,即控制寄存器,數據寄存器, 地址寄存器,狀態寄存器。通過并口讀/寫這些寄存器來實現和掛接在該擴展端口上的 I2C從設備和器件的通信。RD_IRQ接在MCU的外部中斷,當MCU發出一系列的讀取I2C從設備或器件指令后, FPGA在完成了各擴展端口上掛接的從設備或器件數據讀取后,在RD_IRQ管腳上產生一個低脈沖信號來在MCU中產生一個中斷通知MCU已經完成讀取數據的操作。這時MCU就可以從數據寄存器中讀取需要的數據了。如圖1所示,FPGA單元是該技術的核心部分,分為MCU接口模塊和多路I2C接口模塊兩大部分
MCU接口模塊用于實現FPGA和MCU外圍總線的通信。如圖2所示,多路I2C接口模塊是FPGA的設計核心,I2C接口用于連接I2C控制器和I2C總線,由兩個狀態機構成1)一個是名為Mart/Mop及SCL發生器的狀態機,用于產生開始,停止信號,以及SCL 信號,其狀態轉移圖如圖3所示。2 )一個是I2C接口的主狀態機,用于執行發送和接收操作,其狀態轉移圖如圖4所
7J\ ο根據上述說明,結合本領域技術可實現本發明的方案。
權利要求
1. 一種基于FPGA實現多路I2C總線端口擴展的方法,用于通信系統的主設備和從設備之間通信,其特征在于,將主設備的主控MCU通過高速并口連接一個FPGA,經編程構成FPGA 內部電路,FPGA內部電路包括MCU接口模塊和多路I2C接口模塊;所述MCU接口模塊用于FPGA和主控MCU外圍總線的通信,主控MCU和FPGA之間采用高速并口進行通信,每次通信傳輸一個Byte的數據; 主控MCU和FPGA之間的并口通信采用如下定義 ADDR_BUS[15:0]地址總線,表示FPGA中寄存器的地址; DATA_BUS[7:0]雙向的數據總線; WRB 寫控制信號,低電平有效; RDB :讀控制信號,低電平有效; RD_IRQ :讀中斷信號,低電平有效;所述多路I2C接口模塊包括多路I2C接口 ;每路I2C接口用于連接外部I2C控制器和外部I2C總線;I2C接口主要由Mart/Mop及SCL發生器的狀態機和主狀態機組成Jtart/ Mop及SCL發生器的狀態機用于產生開始,停止信號,以及SCL信號;主狀態機用于執行發送和接收操作。
全文摘要
本發明涉及一種基于FPGA實現多路I2C總線端口擴展的方法,用于通信系統的主設備和從設備之間通信,將主設備的主控MCU通過高速并口連接一個FPGA,經編程構成FPGA內部電路,FPGA內部電路包括MCU接口模塊和多路I2C接口模塊;由FPGA擴展出來的I2C端口完全符合I2C總線協議,在以I2C總線通信的系統中,通過在主設備中使用本發明的通信端口擴展的方法,可以極大的提高主設備和從設備或者從器件的通信速度。
文檔編號G06F13/38GK102243619SQ20111017125
公開日2011年11月16日 申請日期2011年6月23日 優先權日2011年6月23日
發明者張天晶, 張睿, 朱力, 楊林, 王東鋒, 錢瑞杰, 陳偉峰 申請人:天津光電通信技術有限公司