diff --git a/src/cndm/board/KCU105/fpga/rtl/fpga_core.sv b/src/cndm/board/KCU105/fpga/rtl/fpga_core.sv index 66c51fa..d07c4fe 100644 --- a/src/cndm/board/KCU105/fpga/rtl/fpga_core.sv +++ b/src/cndm/board/KCU105/fpga/rtl/fpga_core.sv @@ -415,6 +415,7 @@ localparam logic [DEV_CNT-1:0][31:0] DEV_ADDR_CFG = {32'h00_00_0000, 32'h00_00_0 localparam logic [DEV_CNT-1:0][MUX_CNT-1:0][7:0] DEV_MUX_MASK = {{8'h00, 8'h01}, {8'h07, 8'h00}, {8'h00, 8'h08}, {8'h00, 8'h04}}; localparam I2C_PRESCALE = SIM ? 2 : 250000/(400*4); +localparam I2C_TBUF_CYC = SIM ? 10 : 1000; taxi_axis_if #( .DATA_W(32), @@ -455,7 +456,8 @@ cndm_brd_ctrl_i2c #( .DEV_ADDR_CFG(DEV_ADDR_CFG), .DEV_MUX_MASK(DEV_MUX_MASK), - .I2C_PRESCALE(I2C_PRESCALE) + .I2C_PRESCALE(I2C_PRESCALE), + .I2C_TBUF_CYC(I2C_TBUF_CYC) ) board_ctrl_i2c_ch_inst ( .clk(pcie_clk), diff --git a/src/cndm/rtl/cndm_brd_ctrl_i2c.sv b/src/cndm/rtl/cndm_brd_ctrl_i2c.sv index 6bf0bc5..056554e 100644 --- a/src/cndm/rtl/cndm_brd_ctrl_i2c.sv +++ b/src/cndm/rtl/cndm_brd_ctrl_i2c.sv @@ -74,7 +74,9 @@ module cndm_brd_ctrl_i2c # parameter logic [DEV_CNT-1:0][MUX_CNT-1:0][7:0] DEV_MUX_MASK = '0, // Prescaler for I2C master - parameter I2C_PRESCALE = 125000/(400*4) + parameter I2C_PRESCALE = 125000/(400*4), + // tBUF in I2C clock cycles + parameter I2C_TBUF_CYC = 10 ) ( input wire logic clk, @@ -243,6 +245,7 @@ i2c_master_inst ( * Configuration */ .prescale(16'(I2C_PRESCALE)), + .tbuf_cyc(16'(I2C_TBUF_CYC)), .stop_on_idle(1'b0) ); diff --git a/src/cndm/tb/cndm_brd_ctrl_i2c/test_cndm_brd_ctrl_i2c.sv b/src/cndm/tb/cndm_brd_ctrl_i2c/test_cndm_brd_ctrl_i2c.sv index cefd82a..041ab51 100644 --- a/src/cndm/tb/cndm_brd_ctrl_i2c/test_cndm_brd_ctrl_i2c.sv +++ b/src/cndm/tb/cndm_brd_ctrl_i2c/test_cndm_brd_ctrl_i2c.sv @@ -47,7 +47,8 @@ module test_cndm_brd_ctrl_i2c # parameter logic [DEV_CNT-1:0][31:0] DEV_ADDR_CFG = {32'h00_00_0000, 32'h00_00_0040, 32'h7e_7f_0070, 32'h7e_7f_0070}, parameter logic [DEV_CNT-1:0][MUX_CNT-1:0][7:0] DEV_MUX_MASK = {{8'h00, 8'h01}, {8'h07, 8'h00}, {8'h00, 8'h08}, {8'h00, 8'h04}}, - parameter I2C_PRESCALE = 2 + parameter I2C_PRESCALE = 2, + parameter I2C_TBUF_CYC = 10 /* verilator lint_on WIDTHTRUNC */ ) (); @@ -102,7 +103,8 @@ cndm_brd_ctrl_i2c #( .DEV_ADDR_CFG(DEV_ADDR_CFG), .DEV_MUX_MASK(DEV_MUX_MASK), - .I2C_PRESCALE(I2C_PRESCALE) + .I2C_PRESCALE(I2C_PRESCALE), + .I2C_TBUF_CYC(I2C_TBUF_CYC) ) uut ( .clk(clk),