这个i2c程序仿真错在哪了?

2019-03-25 10:37发布

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 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。