Line 100... |
Line 100... |
else
|
else
|
next_state = STATE_IDLE;
|
next_state = STATE_IDLE;
|
|
|
STATE_ADDR_BYTE: if( xmt_byte_done )
|
STATE_ADDR_BYTE: if( xmt_byte_done )
|
next_state = STATE_ADDR_ACK;
|
next_state = STATE_ADDR_ACK;
|
else if( start_detected | stop_detected )
|
else if( stop_detected )
|
next_state = STATE_ERROR;
|
next_state = STATE_ERROR;
|
else
|
else
|
next_state = STATE_ADDR_BYTE;
|
next_state = STATE_ADDR_BYTE;
|
|
|
STATE_ADDR_ACK: if(i2c_ack_out)
|
STATE_ADDR_ACK: if(i2c_ack_out)
|
Line 175... |
Line 175... |
else if( i2c_clk_fall )
|
else if( i2c_clk_fall )
|
bit_count <= bit_count + 1;
|
bit_count <= bit_count + 1;
|
|
|
|
|
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
|
// debug
|
|
wire i2c_start_error = (state == STATE_ADDR_BYTE) & start_detected;
|
|
|
|
|
|
// --------------------------------------------------------------------
|
// outputs
|
// outputs
|
|
|
assign state_out = state;
|
assign state_out = state;
|
|
|
assign tip_addr_byte = (state == STATE_ADDR_BYTE);
|
assign tip_addr_byte = (state == STATE_ADDR_BYTE);
|
Line 186... |
Line 191... |
assign tip_read_byte = (state == STATE_READ);
|
assign tip_read_byte = (state == STATE_READ);
|
assign tip_write_byte = tip_addr_byte | (state == STATE_WRITE);
|
assign tip_write_byte = tip_addr_byte | (state == STATE_WRITE);
|
assign tip_wr_ack = tip_addr_ack | (state == STATE_WR_ACK);
|
assign tip_wr_ack = tip_addr_ack | (state == STATE_WR_ACK);
|
assign tip_rd_ack = (state == STATE_RD_ACK);
|
assign tip_rd_ack = (state == STATE_RD_ACK);
|
|
|
assign i2c_error = (state == STATE_ERROR);
|
assign i2c_error = (state == STATE_ERROR) | i2c_start_error;
|
|
|
endmodule
|
endmodule
|
|
|
|
|
|
|
|
|
No newline at end of file
|
No newline at end of file
|