I2C通信協議主要同一塊板上芯片間的通信,因此速度不是很高。SCL為時鍾線,SDA為數據線。時鍾由主設備發送給從設備,數據可以在兩設備間互傳。
在測試DW_I2C模塊時,如果外面都包了一層,在tb中只有兩個inout類型的信號,那么驗證方法如下:
例化兩個完全相同的IIC模塊,一個設置為主設備另一個為從設備,那么將兩個設備的SCL線相接,SDA線相接即可。但接線的類型必須為tri1,即上拉電阻三態型,否則無法正常工作。具體為
tri1scl_iopad ;
tri1 sda_iopad ;
令iic0做主設備,iic1做從設備,從而驗證iic的基本收發功能是否正確。
.iic0_scl_iopad (scl_iopad ),
.iic0_sda_iopad (sda_iopad ),
.iic1_scl_iopad (scl_iopad ),
.iic1_sda_iopad (sda_iopad ),
驗證過程中需注意以下幾點:
- DW_I2C模塊有三個重要的寄存器,偏移0x00的配置寄存器,偏移0x10的DATA_CMD寄存器,偏移0x6C的使能寄存器。
- 此外還有中斷相關的狀態寄存器和CLEAR寄存器。
- DW_I2C清中斷的方式是讀CLEAR寄存器。
- 在寫配置寄存器之前必須先把DW_I2C使能關掉,否則無法寫入。
- DW_I2C可以設置為8位或10位模式尋址