Hi,
I went through your code for bit_controller state machine. I am not able to comprehend why have you used scl_oen and sda_oen instead of scl_o or sda_o as them outputs of the state machine. scl_o and sda_o are the actual outputs, scl_oen, sda_oen are just the enable signals.
Sinppet from code: wr_c: begin c_state <= #1 wr_d; scl_oen <= #1 1'b1; // keep SCL high sda_oen <= #1 din; sda_chk <= #1 1'b1; // check SDA output end
why are we using sda_oen ? we need to put data on sda_o.
Also, I have a query - why should sda_o and scl_o be always=1 ?
Read the manual