module test_counter;

reg clk, SCL, SDA;
wire SDA_OUT, I2C_ACTIVITY, I2C_READ, ACK, WR; 
wire [7:0] received_byte, byte_to_transmit;
reg [7:0] to_tx = 8'hC5;
wire [8:0] i2c_counter;

reg [8:0] i, j;

reg [8:0] data_to [4:0]/* = { 9'h98, 9'h00, 9'h23, 9'h10, 9'h98 }*/;
//reg [8:0] data_to = 9'h98;

// CREATING MODULE INSTANCE
i2c_slave i2c(clk, SCL, SDA, SDA_OUT, I2C_ACTIVITY, I2C_READ, ACK, WR, received_byte, byte_to_transmit, i2c_counter);
//module i2c_slave (input CLK,
//                 input SCL, /*inout SDA,*/SDA_IN,  output SDA_OUT,	//	FOR TEST
//                  output IS_TRANSMISSION, output IS_READ, output IS_ACK, output WR, //output ACK_MASTER_CTRL,
//                  output reg [7:0] RECEIVED_BYTE, input [7:0] BYTE_TO_TRANSMIT,
//                  output [(MAX_I2C_TRANSACTION_EXP2-1):0] COUNTER);

// SIMULATING TACT SIGNAL
always
begin
  #1 clk = ~clk;


/*data_to[0] = 9'hd0;	//	TX (ADRESS 34)
data_to[1] = 9'h00;
data_to[2] = 9'h46;
data_to[3] = 9'h10;
data_to[4] = 9'h98;*/

data_to[0] = 9'hd2;	//	RX (ADRESS 34)
data_to[1] = 9'h1FE;
data_to[2] = 9'h1FE;
data_to[3] = 9'h1FE;
data_to[4] = 9'h1FF;

end

// I2C CLOCK PARAMS
parameter SDA_STT = 30;
parameter SCL_H = 100;
parameter SCL_L1 = 70;
parameter SCL_L2 = 30;

assign byte_to_transmit = to_tx;

initial
begin
  //byte_to_transmit = 8'hC5;
  clk = 0;
  SCL = 1;
  //SDA_CTRL = 1;
  to_tx = 8'hC5;
  SDA = 1;


	#500		SDA = 0;
	#SDA_STT	SCL = 0;
	for (i = 0; i < 5; i++)
		begin		
		#200 for (j = 0; j < 9; j++)
			begin
			#SCL_L1		SDA = data_to[i][8-j];	// first bit start
			#SCL_L2  	SCL = 1;  // CLOCK of first bit
			#SCL_H		SCL = 0;
			end
		end
	#200 	SDA = 0;
	#200	SCL = 1;
	#40	SDA = 1;
	
/*
	#SCL_L1		SDA = 1;	// first bit start
	#SCL_L2  	SCL = 1;  // CLOCK of first bit
	#SCL_H		SCL = 0;	// bit 7

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 6

  	#SCL_L1  	SDA = 1;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 5

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
 	#SCL_H  	SCL = 0; // 4

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 4

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 3

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 2

  	#SCL_L1  	SDA = 0;
  	#SCL_L2  	SCL = 1;
  	#SCL_H  	SCL = 0; // 1
*/
end

// END SIMULATION AT TIME "11500"
initial
begin
  #11500 $finish;
end

// CREATING VCD FILE FOR NEXT ANALYZE
initial
begin
  $dumpfile("out.vcd");
  $dumpvars(0,test_counter);
end

// WATCHING SOME SIGNALS
initial
$monitor($stime,, clk,,, SCL,, SDA,, I2C_ACTIVITY);

endmodule
