一種基于fpga的控制i2c通信的系統及方法
【技術領域】
[0001]本發明屬于通信控制領域,涉及一種基于FPGA的控制I2C通信的系統及方法。
【背景技術】
[0002]隨著通信技術、傳感器技術、嵌入式操作技術和微電子等技術的高速發展,智能產品的集成度越來越高,因此產品的板級電路的通信速度要求也不斷提高。I2C協議作為芯片間的一種基本的通信方式被電子設備廣泛應用。因此,提高器件之間I2C的通信速度對提高系統速度有至關重要的意義。
[0003]目前,研宄者在設計系統時,將定制電路的主設備和有限個I2C接口的從設備連接在一起,只有一個I2C接口的主設備只能依次和多個I2C從設備進行通信,主設備和其中的一個I2C從設備通信時,其他設備則需要等待,這樣以來就大大降低了器件之間通信的效率,其次,I2C總線協議規定一個I2C總線所掛載的從設備的數量是有限的,因此,主設備通過單個I2C總線和多個從設備連接是無法滿足高速通信的要求。
[0004]FPGA作為ASIC專用集成電路領域的一種半定制電路,以其高度靈活性、可重構性,高速且資源豐富等優點給現有的速度慢、性能差的定制電路技術帶來了變革,通過FPGA豐富的資源來編程重構主控I2C接口和多個從器件的I2C接口,可以實現CPU與外設之間同時交互通信,然而作為使用I2C通道的設備來說,它們要求的通信方式不盡相同,有的設備一次操作只能執行讀或者只能寫,而有的設備要求讀和寫在一次操作中完成,目前的應用中只是根據從設備的時序要求來進行設計。
[0005]因此,如何研發一種基于FPGA的控制I2C通信的系統及方法,便成為亟待解決的技術問題。
【發明內容】
[0006]本發明的目的在于克服上述不足,提供一種基于FPGA的控制I2C通信的系統及方法,其可以簡便、高效地實現對步進電機運行狀態的實時調整。
[0007]為了實現上述目的,本發明采用的技術方案為:
[0008]一種基于FPGA的控制I2C通信的系統,用于通信系統中從設備與主設備之間的通信,其特征在于,將從設備的MCU通過主控I2C模塊連接一個FPGA,經編程構成FPGA單元,所述FPGA單元包括:主控I2C模塊、控制模塊和第一存儲模塊,所述主控I2C模塊分別與所述控制模塊和所述第一存儲模塊連接,其中,
[0009]所述主控I2C模塊包括:
[0010]開始標志寄存器,用于設置主控I2C模塊的開始標志值;
[0011]時鐘寄存器,用于設置主控I2C模塊傳輸數據的時鐘頻率值;
[0012]數據長度寄存器,用于設置主控I2C模塊的一次讀取或寫入數據的長度值;
[0013]讀寫標志寄存器,用于設置主控I2C模塊的讀寫標志值;
[0014]地址寄存器,用于設置從設備的地址值;
[0015]寫寄存器,用于設置寫入的數據值;
[0016]讀寄存器,用于設置讀取的數據值;
[0017]連續讀寫標志寄存器,用于設置連續讀寫主控I2C模塊的標志值;
[0018]連續數據長度寄存器,用于設置連續讀寫時讀取數據的長度值。
[0019]進一步地,還包括:第二存儲模塊和從屬I2C模塊,所述從屬I2C模塊與所述第二存儲模塊連接。
[0020]進一步地,所述第一存儲模塊與所述第二存儲模塊通過地址映射實現互通。
[0021]進一步地,還包括CPU接口模塊,所述CPU接口模塊通過總線與外部CPU進行通信。
[0022]進一步地,所述主控I2C模塊還連接有從設備。
[0023]進一步地,所述從屬I2C模塊還連接有主設備。
[0024]—種基于FPGA的控制I2C通信的方法,其特征在于,包括:
[0025]開始標志寄存器,設置主控I2C模塊的開始標志值;
[0026]時鐘寄存器,設置主控I2C模塊傳輸數據的時鐘頻率值;
[0027]數據長度寄存器,設置主控I2C模塊的一次讀取或寫入數據的長度值;
[0028]讀寫標志寄存器,設置主控I2C模塊的讀寫標志值;
[0029]地址寄存器,設置從設備的地址值;
[0030]寫寄存器,設置寫入的數據值;
[0031]讀寄存器,設置讀取的數據值;
[0032]連續讀寫標志寄存器,設置連續讀寫主控I2C模塊的標志值;
[0033]連續數據長度寄存器,設置連續讀寫時讀取數據的長度值。
[0034]進一步地,所述開始標志寄存器的設置步驟還包括:
[0035]當I2C_start由O到I跳變時,表示發起操作。
[0036]進一步地,所述讀寫標志寄存器的設置步驟還包括:
[0037]當I2C_wen寫入O時,表示此次操作為寫操作;
[0038]當I2C_wen寫入I時,表示此次操作為讀操作。
[0039]進一步地,所述連續讀寫標志寄存器的設置步驟還包括:
[0040]當I2C_sr寫入O時,表示此次操作只執行讀或寫操作;
[0041]當I2C_sr寫入I時,表示此次操作為連續讀寫操作。
[0042]與現有技術相比,本發明所述的一種基于FPGA的控制I2C通信的系統及方法,達到了如下效果:
[0043](I)本發明提出了一種基于FPGA的控制I2C通信的系統,該系統為I2C模塊設計了九個特殊寄存器用以實現讀寫功能,使I2C模塊具有高度的靈活性和可移植性,可以適用于各種I2C從設備,避免了設計者浪費大量時間來根據不同的I2C從設備進行重新設計,可移植性強。
[0044](2)本發明提出了一種基于FPGA的控制I2C通信的方法,該方法即可以實現一次性讀寫操作,也可以實現讀操作與寫操作單獨立執行,采用該種方法能夠實現高度集成和高速通信的目的。
【附圖說明】
[0045]此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
[0046]圖1是本發明的基于FPGA的控制I2C通信的系統的結構原理示意圖;
[0047]圖2是本發明的基于FPGA的控制I2C通信的方法的示意圖。
【具體實施方式】
[0048]如在說明書及權利要求當中使用了某些詞匯來指稱特定組件。本領域技術人員應可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權利要求并不以名稱的差異來作為區分組件的方式,而是以組件在功能上的差異來作為區分的準則。如在通篇說明書及權利要求當中所提及的“包含”為一開放式用語,故應解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內,本領域技術人員能夠在一定誤差范圍內解決所述技術問題,基本達到所述技術效果。說明書后續描述為實施本申請的較佳實施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護范圍當視所附權利要求所界定者為準。
[0049]實施例1
[0050]請參照圖1,本發明提供的一種基于FPGA的控制I2C通信的系統,用于通信系統中從設備與主設備之間的通信,將從設備的MCU (Micro Control Unit,微控制模塊)通過主控I2C模塊連接一個FPGA,經編程構成FPGA單元,所述FPGA單元包括:主控I2C模塊、控制模塊和第一存儲模塊,其中,
[0051 ] 所述主控I2C模塊包括:
[0052]I2C_start,開始標志寄存器,用于設置主控I2C模塊的開始標志值;
[0053]I2C_DIV,時鐘寄存器,用于設置主控I2C模塊傳輸數據的時鐘頻率值;
[0054]I2C_data_len,數據長度寄存器,用于設置主控I2C模塊的一次讀取或寫入數據的長度值;
[0055]I2C_wen,讀寫標志寄存器,用于設置主控I2C模塊的讀寫標志值;
[0056]I2C_addr,地址寄存器,用于設置從設備的地址值;
[0057]I2C_wdata,寫寄存器,用于設置寫入的數據值;
[0058]I2C_rdata,讀寄存器,用于設置讀取的數據值;
[0059]I2C_sr,連續讀寫標志寄存器,用于設置連續讀寫主控I2C模塊的標志值;
[0060]I2C_rdata_len,連續數據長度寄存器,用于設置連續讀寫時讀取數據的長度值。[0061 ] 優選地,所述FPGA單元還包括:第二存儲模塊和從屬I2C模塊,所述從屬I2C模塊與所述第二存儲模塊連接。
[0062]優選地,所述第一存儲模塊與所述第二存儲模塊通過地址映射實現互通。
[0063]優選地,所述FPGA單元還包括CPU接口模塊,所述CPU接口模塊通過總線與外部CPU進行通信。
[0064]優選地,所述主控I2C