;
[0130]S5:判斷讀寫標志寄存器(I2C_wen)中的讀寫標志值,若I2C_wen為I時,則進入步驟S6 ;若I2C_wen為O時,則進入步驟S7 ;
[0131]S6:進入讀數據狀態,讀取讀寄存器(I2C_rdata)中的數據,每讀一個字節I2C_data_len自動減一,至到讀完所有數據,則轉入步驟S8 ;
[0132]S7:進入寫數據狀態,將寫寄存器(I2C_wdata)中的數據輸出到從設備中,輸出一個字節I2C_data_len自動減一,當數據長度減為O時,則進入步驟S8 ;
[0133]S8:判斷連續讀寫標志寄存器(I2C_sr)中的標志值,當為I時,則進入步驟S9,當為O時,則轉入步驟Sll ;
[0134]S9:判斷連續數據長度寄存器(I2C_rdata_len)中的讀取數據的長度值,當不為O時,則進入步驟S10,當為O時,則轉入步驟Sll ;
[0135]SlO:進入讀數據狀態,讀取讀寄存器(I2C_rdata)中的數據值,每讀一個字節I2C_rdata_len自動減一,當I2C_rdata_len為O時,數據讀完,轉入步驟S11。
[0136]Sll:結束操作。
[0137]實施例3
[0138]請參照圖1和圖2,本發明提供的一種基于FPGA的控制I2C通信的系統及方法,用于通信系統中從設備與主設備之間的通信,將從設備的MCU(Micrc) Control Unit,微控制模塊)通過主控I2C模塊連接一個FPGA,經編程構成FPGA單元,所述FPGA單元包括..CPU接口模塊、多個主控12C模塊、控制模塊、第一存儲模塊、第二存儲模塊、多個從屬12C模塊,其中,
[0139]所述CPU接口模塊通過CPU總線與外部CPU進行通信,外部CPU通過CPU總線讀寫FPGA內部開辟的寄存器發起和終止I2C的起操,以達到控制和查詢狀態的目的;
[0140]所述主控I2C模塊包括以下九個特殊寄存器來實現一次讀寫的功能:開始標志寄存器(I2C_start),用于設置主控I2C模塊的開始標志值;時鐘寄存器(I2C_DIV),用于設置主控I2C模塊傳輸數據的時鐘頻率值;數據長度寄存器(I2C_data_len),用于設置主控I2C模塊的一次讀取或寫入數據的長度值;讀寫標志寄存器(I2C_wen),用于設置主控I2C模塊的讀寫標志值;地址寄存器(I2C_addr),用于設置從設備的地址值;寫寄存器(I2C_wdata),用于設置寫入的數據值;讀寄存器(I2C_rdata),用于設置讀取的數據值;連續讀寫標志寄存器(I2C_sr),用于設置連續讀寫主控I2C模塊的標志值;連續數據長度寄存器(I2C_rdata_len),用于設置連續讀寫時讀取數據的長度值,進一步地,每個主控I2C模塊還鏈接有外部從設備,以此控制I2C從設備,并實現高度集成和高速通信的目的。
[0141]所述控制模塊,通過總線與外部CPU鏈接,所述控制模塊的工作狀態由CPU直接控制,同時,所述控制模塊與主控I2C模塊連接,用于控制FPGA內部實現對I2C模塊的命令傳輸,按照設置產生各個協議命令、相應動作及工作模式。
[0142]所述第一存儲模塊分別與所述主控I2C模塊和外部CPU連接,用于所述主控I2C模塊與外部CPU之間的數據的緩存。
[0143]所述第二存儲模塊與所述從屬I2C模塊連接,用于所述從屬I2C模塊中數據的緩存,所述第二存儲模塊與所述第一存儲模塊之間與通過地址映射實現互通,且每個從屬I2C模塊還連接有外部主設備。
[0144]與現有技術相比,本發明所述的一種基于FPGA的控制I2C通信的系統及方法,達到了如下效果:
[0145](I)本發明提出了一種基于FPGA的控制I2C通信的系統,該系統為I2C模塊設計了九個特殊寄存器用以實現讀寫功能,使I2C模塊具有高度的靈活性和可移植性,可以適用于各種I2C從設備,避免了設計者浪費大量時間來根據不同的I2C從設備進行重新設計,可移植性強。
[0146](2)本發明提出了一種基于FPGA的控制I2C通信的方法,該方法即可以實現一次性讀寫操作,也可以實現讀操作與寫操作單獨立執行,采用該種方法能夠實現高度集成和尚速通?目的目的。
[0147]上述說明示出并描述了本申請的若干優選實施例,但如前所述,應當理解本申請并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環境,并能夠在本文所述申請構想范圍內,通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本申請的精神和范圍,則都應在本申請所附權利要求的保護范圍內。
【主權項】
1.一種基于FPGA的控制I2C通信的系統,用于通信系統中從設備與主設備之間的通信,其特征在于,將從設備的MCU通過主控I2C模塊連接一個FPGA,經編程構成FPGA單元,所述FPGA單元包括:主控I2C模塊、控制模塊和第一存儲模塊,所述主控I2C模塊分別與所述控制模塊和所述第一存儲模塊連接,其中, 所述主控I2C模塊包括: 開始標志寄存器,用于設置主控I2C模塊的開始標志值; 時鐘寄存器,用于設置主控I2C模塊傳輸數據的時鐘頻率值; 數據長度寄存器,用于設置主控I2C模塊的一次讀取或寫入數據的長度值; 讀寫標志寄存器,用于設置主控I2C模塊的讀寫標志值; 地址寄存器,用于設置從設備的地址值; 寫寄存器,用于設置寫入的數據值; 讀寄存器,用于設置讀取的數據值; 連續讀寫標志寄存器,用于設置連續讀寫主控I2C模塊的標志值; 連續數據長度寄存器,用于設置連續讀寫時讀取數據的長度值。
2.根據權利要求1所述的基于FPGA的控制I2C通信的系統,其特征在于,還包括:第二存儲模塊和從屬I2C模塊,所述從屬I2C模塊與所述第二存儲模塊連接。
3.根據權利要求1或2所述的基于FPGA的控制I2C通信的系統,其特征在于,所述第一存儲模塊與所述第二存儲模塊通過地址映射實現互通。
4.根據權利要求1所述的基于FPGA的控制I2C通信的系統,其特征在于,還包括CPU接口模塊,所述CPU接口模塊通過總線與外部CPU進行通信。
5.根據權利要求1所述的基于FPGA的控制I2C通信的系統,其特征在于,所述主控I2C模塊還連接有從設備。
6.根據權利要求2所述的基于FPGA的控制I2C通信的系統,其特征在于,所述從屬I2C模塊還連接有主設備。
7.一種基于FPGA的控制I2C通信的方法,其特征在于,包括: 開始標志寄存器,設置主控I2C模塊的開始標志值; 時鐘寄存器,設置主控I2C模塊傳輸數據的時鐘頻率值; 數據長度寄存器,設置主控I2C模塊的一次讀取或寫入數據的長度值; 讀寫標志寄存器,設置主控I2C模塊的讀寫標志值; 地址寄存器,設置從設備的地址值; 寫寄存器,設置寫入的數據值; 讀寄存器,設置讀取的數據值; 連續讀寫標志寄存器,設置連續讀寫主控I2C模塊的標志值; 連續數據長度寄存器,設置連續讀寫時讀取數據的長度值。
8.根據權利要求7所述的基于FPGA的控制I2C通信的方法,其特征在于,所述開始標志寄存器的設置步驟還包括: 當I2C_start由O到I跳變時,表示發起操作。
9.根據權利要求7所述的基于FPGA的控制I2C通信的方法,其特征在于,所述讀寫標志寄存器的設置步驟還包括: 當I2C_wen寫入O時,表示此次操作為寫操作; 當I2C_wen寫入I時,表示此次操作為讀操作。
10.根據權利求7所述的基于FPGA的控制I2C通信的方法,其特征在于,所述連續讀寫標志寄存器的設置步驟還包括: 當I2C_sr寫入O時,表示此次操作只執行讀或寫操作; 當I2C_sr寫入I時,表示此次操作為連續讀寫操作。
【專利摘要】一種基于FPGA的控制I2C通信的系統及方法,用于通信系統中從設備與主設備之間的通信,將從設備的MCU通過主控I2C模塊連接一個FPGA,經編程構成FPGA單元,所述FPGA單元包括:主控I2C模塊、控制模塊和第一存儲模塊,主控I2C模塊分別與所述控制模塊和所述第一存儲模塊連接,其中,主控I2C模塊包括:開始標志寄存器;時鐘寄存器;數據長度寄存器;讀寫標志寄存器;地址寄存器;寫寄存器;讀寄存器;連續讀寫標志寄存器;連續數據長度寄存器。本發明提供的I2C模塊設計了九個特殊寄存器用以實現讀寫功能,具有高度的靈活性和可移植性,即可以實現一次性讀寫操作,也可以實現讀操作與寫操作單獨立執行。
【IPC分類】G06F13-38
【公開號】CN104598418
【申請號】CN201510040806
【發明人】朱天全, 鮑勝青, 范少蕾
【申請人】北京奧普維爾科技有限公司
【公開日】2015年5月6日
【申請日】2015年1月27日