module i2c( input clk, input rst_n, input enable, output reg scl, inout sda, output reg[7:0] dout, output reg[3:0] state, output reg[2:0] cmd, output reg[4:0] i_state, output reg[4:0] i_next_state, output reg r_w, output reg next, output reg[3:0] bit_num );
reg ack_data; reg bit_num_check; reg bit_false; reg sda_reg; reg [ 7:0] sec_value; reg [19:0] delay_num; reg [ 3:0] next_state;
parameter idle = 4'd0; parameter start_1 = 4'd1; parameter sla_w = 4'd2; parameter sla_w_ack = 4'd3; parameter sec_addr = 4'd4; parameter sec_addr_ack = 4'd5; parameter start_2 = 4'd6; parameter sla_r = 4'd7; parameter sla_r_ack = 4'd8; parameter sec_data = 4'd9; parameter sec_data_ack = 4'd10; parameter stop = 4'd11; parameter delay = 4'd12;
parameter i_idle = 5'd0; parameter start_a = 5'd1; parameter start_b = 5'd2; parameter start_c = 5'd3; parameter bit_a = 5'd4; parameter bit_b = 5'd5; parameter bit_c = 5'd6; parameter ack_a = 5'd7; parameter ack_b = 5'd8; parameter ack_c = 5'd9; parameter stop_a = 5'd10; parameter stop_b = 5'd11; parameter stop_c = 5'd12; parameter stop_d = 5'd13; parameter stop_e = 5'd14; parameter stop_f = 5'd15; parameter i_delay = 5'd16;
parameter cmd_start = 3'd0; parameter cmd_byte = 3'd1; parameter cmd_ack = 3'd2; parameter cmd_stop = 3'd3; parameter cmd_delay = 3'd4;
[ 本帖最后由 andyandy 于 2010-11-5 09:44 编辑 ]
|